swift
directories.cpp
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 
4 #include "misc/directories.h"
5 
6 #include <QDir>
7 #include <QFileInfo>
8 
10 
12 
13 namespace swift::misc
14 {
16  {
17  return this->existingOrDefaultDir(this->getFlightPlanDirectory(), CSwiftDirectories::documentationDirectory());
18  }
19 
21  {
22  return this->existingOrDefaultDir(this->getLastViewJsonDirectory(),
24  }
25 
27  {
28  return this->existingOrDefaultDir(this->getLastModelDirectory(), this->getLastViewJsonDirectoryOrDefault());
29  }
30 
31  void CDirectories::setLastModelDirectory(const QString &dir)
32  {
33  m_dirLastModelJson = dir;
34  if (this->hasLastViewJsonDirectory()) { return; }
35  this->setLastViewJsonDirectory(dir);
36  }
37 
39  {
40  return this->existingOrDefaultDir(this->getLastModelStashDirectory(), this->getLastModelDirectoryOrDefault());
41  }
42 
44  {
45  m_dirLastModelStashJson = dir;
46  if (this->hasLastModelDirectory()) { return; }
47  this->setLastModelDirectory(dir);
48  }
49 
51  {
52  if (m_dirMatchingScript.isEmpty()) { return CSwiftDirectories::shareMatchingScriptDirectory(); }
53  return m_dirMatchingScript;
54  }
55 
56  QString CDirectories::convertToQString(bool i18n) const
57  {
58  Q_UNUSED(i18n);
59  return m_dirFlightPlan;
60  }
61 
63  {
64  if (index.isMyself()) { return QVariant::fromValue(*this); }
65  const ColumnIndex i = index.frontCasted<ColumnIndex>();
66  switch (i)
67  {
68  case IndexDirFlightPlan: return QVariant::fromValue(m_dirFlightPlan);
69  case IndexDirFlightPlanOrDefault: return QVariant::fromValue(this->getFlightPlanDirectoryOrDefault());
70  case IndexDirLastViewJson: return QVariant::fromValue(m_dirLastViewJson);
71  case IndexDirLastViewJsonOrDefault: return QVariant::fromValue(this->getLastViewJsonDirectoryOrDefault());
72  case IndexDirLastModelJson: return QVariant::fromValue(m_dirLastModelStashJson);
73  case IndexDirLastModelJsonOrDefault: return QVariant::fromValue(this->getLastModelDirectoryOrDefault());
74  case IndexDirLastModelStashJson: return QVariant::fromValue(m_dirLastModelStashJson);
75  case IndexDirMatchingScript: return QVariant::fromValue(this->getMatchingScriptDirectoryOrDefault());
76  case IndexDirLastModelStashJsonOrDefault:
77  return QVariant::fromValue(this->getLastModelStashDirectoryOrDefault());
78  default: return CValueObject::propertyByIndex(index);
79  }
80  }
81 
82  void CDirectories::setPropertyByIndex(CPropertyIndexRef index, const QVariant &variant)
83  {
84  if (index.isMyself())
85  {
86  (*this) = variant.value<CDirectories>();
87  return;
88  }
89  const ColumnIndex i = index.frontCasted<ColumnIndex>();
90  switch (i)
91  {
92  case IndexDirFlightPlan: this->setFlightPlanDirectory(variant.toString()); break;
93  case IndexDirLastViewJsonOrDefault:
94  case IndexDirLastViewJson: this->setLastViewJsonDirectory(variant.toString()); break;
95  case IndexDirLastModelJsonOrDefault:
96  case IndexDirLastModelJson: this->setLastModelDirectory(variant.toString()); break;
97  case IndexDirLastModelStashJsonOrDefault:
98  case IndexDirLastModelStashJson: this->setLastModelStashDirectory(variant.toString()); break;
99  case IndexDirMatchingScript: this->setMatchingScriptDirectory(variant.toString()); break;
100  default: CValueObject::setPropertyByIndex(index, variant); break;
101  }
102  }
103 
104  QString CDirectories::fileNameToDirectory(const QString &fileName)
105  {
106  const QFileInfo fi(fileName);
107  return fi.dir().absolutePath();
108  }
109 
110  QString CDirectories::existingOrDefaultDir(const QString &checkDir, const QString &defaultDir) const
111  {
112  if (checkDir.isEmpty()) { return defaultDir; } // empty dir returns true ????
113  const QDir d(checkDir);
114  if (d.exists()) { return checkDir; }
115  return defaultDir;
116  }
117 } // namespace swift::misc
Directories (swift data directories)
Definition: directories.h:25
QString getLastModelDirectoryOrDefault() const
Last view JSON model directory or default.
Definition: directories.cpp:26
void setLastModelDirectory(const QString &dir)
Last view JSON model directory.
Definition: directories.cpp:31
void setPropertyByIndex(CPropertyIndexRef index, const QVariant &variant)
Set property by index.
Definition: directories.cpp:82
bool hasLastModelDirectory() const
Has a model JSON directory?
Definition: directories.h:75
QVariant propertyByIndex(CPropertyIndexRef index) const
Property by index.
Definition: directories.cpp:62
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
static QString fileNameToDirectory(const QString &fileName)
Convert to directory.
void setLastModelStashDirectory(const QString &dir)
Last view JSON model stash directory.
Definition: directories.cpp:43
QString getFlightPlanDirectoryOrDefault() const
Flight plan directory or default.
Definition: directories.cpp:15
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
QString getMatchingScriptDirectoryOrDefault() const
Matching script directory.
Definition: directories.cpp:50
QString getLastViewJsonDirectoryOrDefault() const
Last view JSON directory or default.
Definition: directories.cpp:20
QString getLastModelStashDirectoryOrDefault() const
Last view JSON model stash directory or default.
Definition: directories.cpp:38
const QString & getLastModelStashDirectory() const
Last view JSON model directory.
Definition: directories.h:78
QString convertToQString(bool i18n=false) const
Cast as QString.
Definition: directories.cpp:56
Non-owning reference to a CPropertyIndex with a subset of its features.
CastType frontCasted() const
First element casted to given type, usually the PropertIndex enum.
bool isMyself() const
Myself index, used with nesting.
static const QString & shareMatchingScriptDirectory()
Matching script examples directories.
static const QString & documentationDirectory()
Directory where data can be stored.
void setPropertyByIndex(CPropertyIndexRef index, const QVariant &variant)
Set property by index.
Definition: mixinindex.h:160
QVariant propertyByIndex(CPropertyIndexRef index) const
Property by index.
Definition: mixinindex.h:167
Free functions in swift::misc.
#define SWIFT_DEFINE_VALUEOBJECT_MIXINS(Namespace, Class)
Explicit template definition of mixins for a CValueObject subclass.
Definition: valueobject.h:67