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