swift
directories.h
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: Copyright (C) 2018 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_DIRECTORIES_H
7 #define SWIFT_MISC_DIRECTORIES_H
8 
9 #include <QString>
10 
11 #include "misc/propertyindexref.h"
12 #include "misc/settingscache.h"
13 #include "misc/swiftmiscexport.h"
14 #include "misc/valueobject.h"
15 
17 
18 namespace swift::misc
19 {
24  class SWIFT_MISC_EXPORT CDirectories : public CValueObject<CDirectories>
25  {
26  public:
29  {
30  IndexDirFlightPlan = CPropertyIndexRef::GlobalIndexCDirectories,
31  IndexDirFlightPlanOrDefault,
32  IndexDirLastViewJson,
33  IndexDirLastViewJsonOrDefault,
34  IndexDirLastModelJson,
35  IndexDirLastModelJsonOrDefault,
36  IndexDirLastModelStashJson,
37  IndexDirLastModelStashJsonOrDefault,
38  IndexDirMatchingScript
39  };
40 
42  CDirectories() = default;
43 
45  const QString &getFlightPlanDirectory() const { return m_dirFlightPlan; }
46 
48  QString getFlightPlanDirectoryOrDefault() const;
49 
51  void setFlightPlanDirectory(const QString &dir) { m_dirFlightPlan = dir; }
52 
54  const QString &getLastViewJsonDirectory() const { return m_dirLastViewJson; }
55 
57  bool hasLastViewJsonDirectory() const { return !m_dirLastViewJson.isEmpty(); }
58 
60  QString getLastViewJsonDirectoryOrDefault() const;
61 
63  void setLastViewJsonDirectory(const QString &dir) { m_dirLastViewJson = dir; }
64 
66  const QString &getLastModelDirectory() const { return m_dirLastModelJson; }
67 
69  QString getLastModelDirectoryOrDefault() const;
70 
72  void setLastModelDirectory(const QString &dir);
73 
75  bool hasLastModelDirectory() const { return !m_dirLastModelJson.isEmpty(); }
76 
78  const QString &getLastModelStashDirectory() const { return m_dirLastModelStashJson; }
79 
81  QString getLastModelStashDirectoryOrDefault() const;
82 
84  void setLastModelStashDirectory(const QString &dir);
85 
87  QString getMatchingScriptDirectoryOrDefault() const;
88 
90  void setMatchingScriptDirectory(const QString &dir) { m_dirMatchingScript = dir; }
91 
93  QString convertToQString(bool i18n = false) const;
94 
96  QVariant propertyByIndex(CPropertyIndexRef index) const;
97 
99  void setPropertyByIndex(CPropertyIndexRef index, const QVariant &variant);
100 
102  static QString fileNameToDirectory(const QString &fileName);
103 
104  private:
105  QString m_dirFlightPlan;
106  QString m_dirLastViewJson;
107  QString m_dirLastModelJson;
108  QString m_dirLastModelStashJson;
109  QString m_dirMatchingScript;
110 
112  QString existingOrDefaultDir(const QString &checkDir, const QString &defaultDir) const;
113 
115  CDirectories,
116  SWIFT_METAMEMBER(dirFlightPlan),
117  SWIFT_METAMEMBER(dirLastViewJson),
118  SWIFT_METAMEMBER(dirLastModelJson),
119  SWIFT_METAMEMBER(dirLastModelStashJson),
120  SWIFT_METAMEMBER(dirMatchingScript));
121  };
122 
123  namespace settings
124  {
126  struct TDirectorySettings : public TSettingTrait<CDirectories>
127  {
129  static const char *key() { return "swiftdirectories"; }
130 
132  static const QString &humanReadable()
133  {
134  static const QString name("swift directories");
135  return name;
136  }
137  };
138  } // namespace settings
139 } // namespace swift::misc
140 
141 Q_DECLARE_METATYPE(swift::misc::CDirectories)
142 
143 #endif // SWIFT_MISC_DIRECTORIES_H
Directories (swift data directories)
Definition: directories.h:25
bool hasLastModelDirectory() const
Has a model JSON directory?
Definition: directories.h:75
const QString & getFlightPlanDirectory() const
Flight plan directory.
Definition: directories.h:45
void setMatchingScriptDirectory(const QString &dir)
Matching script directory.
Definition: directories.h:90
const QString & getLastModelDirectory() const
Last view JSON model stash directory.
Definition: directories.h:66
ColumnIndex
Properties by index.
Definition: directories.h:29
void setFlightPlanDirectory(const QString &dir)
Flight plan directory.
Definition: directories.h:51
CDirectories()=default
Constructor.
bool hasLastViewJsonDirectory() const
Has a view JSON directory?
Definition: directories.h:57
const QString & getLastViewJsonDirectory() const
Last view JSON directory.
Definition: directories.h:54
void setLastViewJsonDirectory(const QString &dir)
Last view JSON directory (default if not more specific)
Definition: directories.h:63
const QString & getLastModelStashDirectory() const
Last view JSON model directory.
Definition: directories.h:78
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.
Base class for traits to be used as template argument to swift::misc::CSetting.
static const QString & humanReadable()
Optional human readable name.
Definition: directories.h:132
static const char * key()
Key string of the value. Reimplemented in derived class.
Definition: directories.h:129
#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