swift
applicationinfo.h
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: Copyright (C) 2016 swift Project Community / Contributors
2 // SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-swift-pilot-client-1
3 
5 
6 #ifndef SWIFT_MISC_APPLICATIONINFO_H
7 #define SWIFT_MISC_APPLICATIONINFO_H
8 
9 #include <QFlags>
10 #include <QMetaType>
11 #include <QString>
12 
13 #include "misc/processinfo.h"
14 
16 
17 namespace swift::misc
18 {
25  class SWIFT_MISC_EXPORT CApplicationInfo : public CValueObject<CApplicationInfo>
26  {
27  public:
30  {
31  Unknown,
32  Launcher,
33  PilotClientCore,
34  PilotClientGui,
35  MappingTool,
36  UnitTest,
37  Sample
38  };
39 
42  {
43  IndexApplication = CPropertyIndexRef::GlobalIndexCApplicationInfo,
44  IndexApplicationAsString,
45  IndexApplicationDataPath,
46  IndexCompileInfo,
47  IndexExecutablePath,
48  IndexExecutablePathExisting,
49  IndexPlatformInfo,
50  IndexProcessInfo,
51  IndexVersionString,
52  IndexWordSize
53  };
54 
56  CApplicationInfo() = default;
57 
60 
62  void setApplication(Application app) { m_app = static_cast<int>(app); }
63 
65  Application getApplication() const { return static_cast<Application>(m_app); }
66 
68  const QString &getApplicationAsString() const;
69 
71  void setExecutablePath(const QString &exePath) { m_exePath = exePath; }
72 
74  const QString &getExecutablePath() const { return m_exePath; }
75 
79  bool isExecutablePathExisting() const;
80 
83  void setApplicationDataDirectory(const QString &appDataDir) { m_applicationDataDir = appDataDir; }
84 
87  const QString &getApplicationDataDirectory() const { return m_applicationDataDir; }
88 
90  void setVersionString(const QString &version) { m_version = version; }
91 
93  const QString &getVersionString() const { return m_version; }
94 
96  void setProcessInfo(const CProcessInfo &process) { m_process = process; }
97 
99  const CProcessInfo &getProcessInfo() const { return m_process; }
100 
102  void setPlatformInfo(const QString &platform) { m_platform = platform; }
103 
105  const QString &getPlatform() const { return m_platform; }
106 
108  int getWordSize() const { return m_wordSize; }
109 
111  void setWordSize(int size) { m_wordSize = size; }
112 
114  const QString &getCompileInfo() const { return m_compileInfo; }
115 
117  void setCompileInfo(const QString &info) { m_compileInfo = info; }
118 
120  bool isSampleOrUnitTest() const;
121 
123  bool isUnitTest() const;
124 
126  bool isNull() const;
127 
129  QString asOtherSwiftVersionString(const QString &separator = " | ") const;
130 
132  QString convertToQString(bool i18n = false) const;
133 
135  CIcons::IconIndex toIcon() const;
136 
138  QVariant propertyByIndex(CPropertyIndexRef index) const;
139 
141  void setPropertyByIndex(CPropertyIndexRef index, const QVariant &variant);
142 
144  int comparePropertyByIndex(CPropertyIndexRef index, const CApplicationInfo &compareValue) const;
145 
147  static const QString &swiftPilotClientGui();
148 
150  static const QString &swiftLauncher();
151 
153  static const QString &swiftMappingTool();
154 
156  static const QString &swiftCore();
157 
159  static const CApplicationInfo &autoInfo();
160 
162  static const QString &fileName();
163 
165  static const CApplicationInfo &null();
166 
167  private:
168  int m_app = static_cast<int>(Unknown);
169  int m_wordSize {};
170  QString m_exePath;
171  QString m_applicationDataDir;
172  QString m_version;
173  QString m_compileInfo;
174  QString m_platform;
175  CProcessInfo m_process;
176 
178  static Application guessApplication();
179 
181  CApplicationInfo,
182  SWIFT_METAMEMBER(app),
183  SWIFT_METAMEMBER(wordSize),
184  SWIFT_METAMEMBER(exePath),
185  SWIFT_METAMEMBER(applicationDataDir),
186  SWIFT_METAMEMBER(version),
187  SWIFT_METAMEMBER(compileInfo),
188  SWIFT_METAMEMBER(platform),
189  SWIFT_METAMEMBER(process));
190  };
191 } // namespace swift::misc
192 
193 Q_DECLARE_METATYPE(swift::misc::CApplicationInfo)
194 
195 #endif // SWIFT_MISC_APPLICATIONINFO_H
Description of a swift application.
Application getApplication() const
Get application.
void setVersionString(const QString &version)
Set version string.
void setProcessInfo(const CProcessInfo &process)
Set process info.
const QString & getExecutablePath() const
Get executable path.
Application
Enumeration of application roles.
ColumnIndex
Properties by index.
const QString & getPlatform() const
Get platform.
int getWordSize() const
Word size.
void setExecutablePath(const QString &exePath)
Set executable path.
CApplicationInfo()=default
Default constructor.
const QString & getApplicationDataDirectory() const
Set application data dir.
const QString & getVersionString() const
Get version string.
void setCompileInfo(const QString &info)
Compile info.
const CProcessInfo & getProcessInfo() const
Get process info.
void setWordSize(int size)
Word size.
void setApplication(Application app)
Set application.
void setApplicationDataDirectory(const QString &appDataDir)
Set application data dir.
const QString & getCompileInfo() const
Compile info.
void setPlatformInfo(const QString &platform)
Set platform.
IconIndex
Index for each icon, allows to send them via DBus, efficiently store them, etc.
Definition: icons.h:32
Value class identifying a process, with a PID and a name.
Definition: processinfo.h:22
Non-owning reference to a CPropertyIndex with a subset of its features.
Mix of the most commonly used mixin classes.
Definition: valueobject.h:114
#define SWIFT_METAMEMBER(MEMBER,...)
Macro to define an element within a metaclass.
Definition: metaclass.h:73
#define SWIFT_METACLASS(CLASS,...)
Macro to define a nested metaclass that describes the attributes of its enclosing class.
Definition: metaclass.h:53
Free functions in swift::misc.
#define SWIFT_MISC_EXPORT
Export a class or function from the library.
#define SWIFT_DECLARE_VALUEOBJECT_MIXINS(Namespace, Class)
Explicit template declaration of mixins for a CValueObject subclass to be placed near the top of the ...
Definition: valueobject.h:65