Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
qqmltoolingsettings_p.h
Go to the documentation of this file.
1// Copyright (C) 2021 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
3// Qt-Security score:significant
4
5#ifndef QQMLTOOLINGSETTINGS_P_H
6#define QQMLTOOLINGSETTINGS_P_H
7
8//
9// W A R N I N G
10// -------------
11//
12// This file is not part of the Qt API. It exists purely as an
13// implementation detail. This header file may change from version to
14// version without notice, or even be removed.
15//
16// We mean it.
17//
18
19#include <QtCore/qstring.h>
20#include <QtCore/qhash.h>
21#include <QtCore/qvariant.h>
22#include <QtCore/qmutex.h>
23#include <QtCore/qset.h>
24#include <QtCore/qdir.h>
25
26QT_BEGIN_NAMESPACE
27
28class QQmlToolingSettings
29{
30public:
31 QQmlToolingSettings(const QString &toolName);
32 struct SearchOptions
33 {
34 QString settingsFileName;
35 bool verbose;
36 };
37 struct SearchResult
38 {
39 enum class ResultType { Found, NotFound };
40 ResultType type = ResultType::NotFound;
41 QString iniFilePath;
42 bool isValid() const { return type == ResultType::Found && !iniFilePath.isEmpty(); }
43 };
44
45 class Searcher
46 {
47 public:
48 Searcher(const QString &localSettingsFile, const QString &globalSettingsFile)
49 : m_localSettingsFile(localSettingsFile), m_globalSettingsFile(globalSettingsFile)
50 {
51 }
52 SearchResult search(const QString &path);
53
54 QString localSettingsFile() const { return m_localSettingsFile; }
55
56 private:
57 SearchResult searchDefaultLocation(const QSet<QString> *visitedDirs);
58 SearchResult searchCurrentDirInCache(const QString &dirPath);
59 SearchResult searchDirectoryHierarchy(QSet<QString> *visitedDir, const QString &path);
60
61 const QString m_localSettingsFile;
62 const QString m_globalSettingsFile;
63 QHash<QString, QString> m_seenDirectories;
64 };
65
66 void addOption(const QString &name, const QVariant &defaultValue = QVariant());
67 SearchResult search(const QString &path, const SearchOptions &options = {});
68 bool writeDefaults() const;
69
70 QVariant value(const QString &name) const;
71 bool isSet(const QString &name) const;
72
73 bool reportConfigForFiles(const QStringList &files);
74
75private:
76 QString m_currentSettingsPath;
77 QVariantHash m_values;
78 Searcher m_searcher;
79
80 SearchResult read(const QString &settingsFilePath);
81};
82
83class QQmlToolingSharedSettings : private QQmlToolingSettings
84{
85public:
86 QQmlToolingSharedSettings(const QString &toolName) : QQmlToolingSettings(toolName) { }
87
88 void addOption(const QString &name, const QVariant &defaultValue = QVariant())
89 {
90 QMutexLocker lock(&m_mutex);
91 QQmlToolingSettings::addOption(name, defaultValue);
92 }
93
94 bool writeDefaults() const
95 {
96 QMutexLocker lock(&m_mutex);
97 return QQmlToolingSettings::writeDefaults();
98 }
99
100 SearchResult search(const QString &path, const SearchOptions &options = {})
101 {
102 QMutexLocker lock(&m_mutex);
103 return QQmlToolingSettings::search(path, options);
104 }
105
106 QVariant value(const QString &name) const
107 {
108 QMutexLocker lock(&m_mutex);
109 return QQmlToolingSettings::value(name);
110 }
111
112 bool isSet(const QString &name) const
113 {
114 QMutexLocker lock(&m_mutex);
115 return QQmlToolingSettings::isSet(name);
116 }
117
118private:
119 mutable QMutex m_mutex;
120};
121
122QT_END_NAMESPACE
123
124#endif // QQMLTOOLINGSETTINGS_P_H
QQmlToolingSharedSettings(const QString &toolName)
QVariant value(const QString &name) const
SearchResult search(const QString &path, const SearchOptions &options={})
void addOption(const QString &name, const QVariant &defaultValue=QVariant())
bool isSet(const QString &name) const
static QString findIniFile(const QString &local, const QString &global)