swift
Loading...
Searching...
No Matches
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
5
6#include <QStringList>
7
8#include "gui/guiutility.h"
9#include "misc/stringutils.h"
10
11using namespace swift::misc;
12using namespace swift::gui;
13
14SWIFT_DEFINE_VALUEOBJECT_MIXINS(swift::gui::settings, CDockWidgetSettings)
15
16namespace swift::gui::settings
17{
19 {
20 // this->setMarginsWhenFloating(QMargins(0, 3, 15, 35)); // found by trial and error on windows
21 this->setMarginsWhenFloating(QMargins(0, 0, 0, 0));
23 this->setMarginsWhenDocked(QMargins(0, 0, 0, 0));
24 }
25
27 {
29 m_geometry = "";
30 m_frameless = false;
31 m_floating = false;
32 }
33
35 {
36 m_floatingFramelessMargins = CGuiUtility::marginsToString(margins);
37 }
38
40 {
41 return CGuiUtility::stringToMargins(m_floatingFramelessMargins);
42 }
43
45 {
46 m_floatingMargins = CGuiUtility::marginsToString(margins);
47 }
48
53
55 {
56 m_dockedMargins = CGuiUtility::marginsToString(margins);
57 }
58
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
88 {
89 if (index.isMyself())
90 {
91 return QVariant::fromValue(*this);
92 }
93 const auto i = index.frontCasted<ColumnIndex>();
94 switch (i)
95 {
96 case IndexFloatingMargins: return QVariant::fromValue(m_floatingMargins);
97 case IndexFloatingFramelessMargins: return QVariant::fromValue(m_floatingFramelessMargins);
98 case IndexDockedMargins: return QVariant::fromValue(m_dockedMargins);
99 case IndexFrameless: return QVariant::fromValue(m_frameless);
100 case IndexFloating: return QVariant::fromValue(m_floating);
101 default: return CValueObject::propertyByIndex(index);
102 }
103 }
104
106 {
107 if (index.isMyself())
108 {
109 (*this) = variant.value<CDockWidgetSettings>();
110 return;
111 }
112
113 const auto i = index.frontCasted<ColumnIndex>();
114 switch (i)
115 {
116 case IndexFloatingMargins: m_floatingMargins = variant.toString(); break;
117 case IndexFloatingFramelessMargins: m_floatingFramelessMargins = variant.toString(); break;
118 case IndexDockedMargins: m_dockedMargins = variant.toString(); break;
119 case IndexFloating: m_floating = variant.toBool(); break;
120 case IndexFrameless: m_frameless = variant.toBool(); break;
121 default: CValueObject::setPropertyByIndex(index, variant); break;
122 }
123 }
124} // namespace swift::gui::settings
static QMargins stringToMargins(const QString &str)
Convert from string.
static QString marginsToString(const QMargins &margins)
Convert to string.
CDockWidgetSettings()=default
Default constructor.
void setMarginsWhenFloating(const QMargins &margins)
Set margins for given dock widget.
void resetMarginsToDefault()
Reset margins to default.
QVariant propertyByIndex(swift::misc::CPropertyIndexRef index) const
Property by index.
QMargins getMarginsWhenDocked() const
Margins for given dock widget.
QMargins getMarginsWhenFloating() const
Margins for given dock widget.
QString convertToQString(bool i18n=false) const
Cast as QString.
void setMarginsWhenFramelessFloating(const QMargins &margins)
Set margins for given dock widget.
void setGeometry(const QByteArray &ba)
Set geometry.
QMargins getMarginsWhenFramelessFloating() const
Margins for given dock widget.
void setMarginsWhenDocked(const QMargins &margins)
Set margins for given dock widget.
void setPropertyByIndex(swift::misc::CPropertyIndexRef index, const QVariant &variant)
Set property by index.
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:167
QVariant propertyByIndex(CPropertyIndexRef index) const
Property by index.
Definition mixinindex.h:180
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