swift
navigatorsettings.cpp
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 
4 #include "navigatorsettings.h"
5 
6 #include <QStringList>
7 
8 #include "gui/guiutility.h"
9 #include "misc/stringutils.h"
10 
11 using namespace swift::misc;
12 using namespace swift::gui;
13 
14 SWIFT_DEFINE_VALUEOBJECT_MIXINS(swift::gui::settings, CNavigatorSettings)
15 
16 namespace swift::gui::settings
17 {
18  void CNavigatorSettings::reset() {}
19 
20  void CNavigatorSettings::setMargins(const QMargins &margins)
21  {
22  this->m_margins = CGuiUtility::marginsToString(margins);
23  }
24 
25  QMargins CNavigatorSettings::getMargins() const { return CGuiUtility::stringToMargins(this->m_margins); }
26 
27  QByteArray CNavigatorSettings::getGeometry() const { return QByteArray::fromHex(this->m_geometry.toLatin1()); }
28 
29  void CNavigatorSettings::setGeometry(const QByteArray &ba) { this->m_geometry = ba.toHex(); }
30 
31  QString CNavigatorSettings::convertToQString(bool i18n) const { return convertToQString(", ", i18n); }
32 
33  QString CNavigatorSettings::convertToQString(const QString &separator, bool i18n) const
34  {
35  Q_UNUSED(i18n);
36  QString s("margins: ");
37  s.append(this->m_margins);
38  s.append(separator);
39  s.append("frameless: ");
40  s.append(boolToTrueFalse(this->m_frameless));
41  s.append(separator);
42  s.append("columns: ");
43  s.append(QString::number(this->m_columns));
44  return s;
45  }
46 
47  QVariant CNavigatorSettings::propertyByIndex(CPropertyIndexRef index) const
48  {
49  if (index.isMyself()) { return QVariant::fromValue(*this); }
50  const auto i = index.frontCasted<ColumnIndex>();
51  switch (i)
52  {
53  case IndexMargins: return QVariant::fromValue(this->m_margins);
54  case IndexFrameless: return QVariant::fromValue(this->isFramless());
55  case IndexColumns: return QVariant::fromValue(this->m_columns);
56  default: return CValueObject::propertyByIndex(index);
57  }
58  }
59 
60  void CNavigatorSettings::setPropertyByIndex(CPropertyIndexRef index, const QVariant &variant)
61  {
62  if (index.isMyself())
63  {
64  (*this) = variant.value<CNavigatorSettings>();
65  return;
66  }
67 
68  const auto i = index.frontCasted<ColumnIndex>();
69  switch (i)
70  {
71  case IndexMargins: this->m_margins = variant.toString(); break;
72  case IndexColumns: this->m_columns = variant.toInt(); break;
73  case IndexFrameless: this->m_frameless = variant.toBool(); break;
74  default: CValueObject::setPropertyByIndex(index, variant); break;
75  }
76  }
77 } // namespace swift::gui::settings
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.
void setPropertyByIndex(CPropertyIndexRef index, const QVariant &variant)
Set property by index.
Definition: mixinindex.h:158
QVariant propertyByIndex(CPropertyIndexRef index) const
Property by index.
Definition: mixinindex.h:165
GUI related classes.
Free functions in swift::misc.
SWIFT_MISC_EXPORT const QString & boolToTrueFalse(bool v)
Bool to true/false.
QByteArray fromHex(const QByteArray &hexEncoded)
QByteArray toHex(char separator) const const
QString & append(QChar ch)
QString number(double n, char format, int precision)
QVariant fromValue(T &&value)
bool toBool() const const
int toInt(bool *ok) const const
QString toString() const const
T value() const &const
#define SWIFT_DEFINE_VALUEOBJECT_MIXINS(Namespace, Class)
Explicit template definition of mixins for a CValueObject subclass.
Definition: valueobject.h:67