swift
dockwidgetsettings.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 "dockwidgetsettings.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, CDockWidgetSettings)
15 
16 namespace swift::gui::settings
17 {
18  void CDockWidgetSettings::resetMarginsToDefault()
19  {
20  // this->setMarginsWhenFloating(QMargins(0, 3, 15, 35)); // found by trial and error on windows
21  this->setMarginsWhenFloating(QMargins(0, 0, 0, 0));
22  this->setMarginsWhenFramelessFloating(QMargins(0, 0, 0, 0));
23  this->setMarginsWhenDocked(QMargins(0, 0, 0, 0));
24  }
25 
26  void CDockWidgetSettings::reset()
27  {
28  this->resetMarginsToDefault();
29  m_geometry = "";
30  m_frameless = false;
31  m_floating = false;
32  }
33 
34  void CDockWidgetSettings::setMarginsWhenFramelessFloating(const QMargins &margins)
35  {
36  m_floatingFramelessMargins = CGuiUtility::marginsToString(margins);
37  }
38 
39  QMargins CDockWidgetSettings::getMarginsWhenFramelessFloating() const
40  {
41  return CGuiUtility::stringToMargins(m_floatingFramelessMargins);
42  }
43 
44  void CDockWidgetSettings::setMarginsWhenFloating(const QMargins &margins)
45  {
46  m_floatingMargins = CGuiUtility::marginsToString(margins);
47  }
48 
49  QMargins CDockWidgetSettings::getMarginsWhenFloating() const
50  {
51  return CGuiUtility::stringToMargins(m_floatingMargins);
52  }
53 
54  void CDockWidgetSettings::setMarginsWhenDocked(const QMargins &margins)
55  {
56  m_dockedMargins = CGuiUtility::marginsToString(margins);
57  }
58 
59  QMargins CDockWidgetSettings::getMarginsWhenDocked() const { return CGuiUtility::stringToMargins(m_dockedMargins); }
60 
61  QByteArray CDockWidgetSettings::getGeometry() const { return QByteArray::fromHex(m_geometry.toLatin1()); }
62 
63  void CDockWidgetSettings::setGeometry(const QByteArray &ba) { m_geometry = ba.toHex(); }
64 
65  QString CDockWidgetSettings::convertToQString(bool i18n) const { return convertToQString(", ", i18n); }
66 
67  QString CDockWidgetSettings::convertToQString(const QString &separator, bool i18n) const
68  {
69  Q_UNUSED(i18n);
70  QString s("floating: ");
71  s.append(m_floatingMargins);
72  s.append(separator);
73  s.append("floating, frameless: ");
74  s.append(m_floatingFramelessMargins);
75  s.append(separator);
76  s.append("docked: ");
77  s.append(m_dockedMargins);
78  s.append(separator);
79  s.append("frameless: ");
80  s.append(boolToTrueFalse(m_frameless));
81  s.append(separator);
82  s.append("floating: ");
83  s.append(boolToTrueFalse(m_floating));
84  return s;
85  }
86 
87  QVariant CDockWidgetSettings::propertyByIndex(CPropertyIndexRef index) const
88  {
89  if (index.isMyself()) { return QVariant::fromValue(*this); }
90  const auto i = index.frontCasted<ColumnIndex>();
91  switch (i)
92  {
93  case IndexFloatingMargins: return QVariant::fromValue(m_floatingMargins);
94  case IndexFloatingFramelessMargins: return QVariant::fromValue(m_floatingFramelessMargins);
95  case IndexDockedMargins: return QVariant::fromValue(m_dockedMargins);
96  case IndexFrameless: return QVariant::fromValue(m_frameless);
97  case IndexFloating: return QVariant::fromValue(m_floating);
98  default: return CValueObject::propertyByIndex(index);
99  }
100  }
101 
102  void CDockWidgetSettings::setPropertyByIndex(CPropertyIndexRef index, const QVariant &variant)
103  {
104  if (index.isMyself())
105  {
106  (*this) = variant.value<CDockWidgetSettings>();
107  return;
108  }
109 
110  const auto i = index.frontCasted<ColumnIndex>();
111  switch (i)
112  {
113  case IndexFloatingMargins: m_floatingMargins = variant.toString(); break;
114  case IndexFloatingFramelessMargins: m_floatingFramelessMargins = variant.toString(); break;
115  case IndexDockedMargins: m_dockedMargins = variant.toString(); break;
116  case IndexFloating: m_floating = variant.toBool(); break;
117  case IndexFrameless: m_frameless = variant.toBool(); break;
118  default: CValueObject::setPropertyByIndex(index, variant); break;
119  }
120  }
121 } // 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)
QVariant fromValue(T &&value)
bool toBool() 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