From 076006f65de95ce5606cc2fbfb6229140b697099 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaakko=20Kera=CC=88nen?= Date: Sun, 19 Nov 2017 22:11:44 +0200 Subject: [PATCH] Widgets|libappfw: ToggleWidget configurable with no icon --- .../include/de/widgets/togglewidget.h | 10 +++++++- .../sdk/libappfw/src/widgets/togglewidget.cpp | 25 ++++++++++++------- .../src/widgets/variabletogglewidget.cpp | 6 +++-- 3 files changed, 29 insertions(+), 12 deletions(-) diff --git a/doomsday/sdk/libappfw/include/de/widgets/togglewidget.h b/doomsday/sdk/libappfw/include/de/widgets/togglewidget.h index 4ae29e5f52..bc9d464597 100644 --- a/doomsday/sdk/libappfw/include/de/widgets/togglewidget.h +++ b/doomsday/sdk/libappfw/include/de/widgets/togglewidget.h @@ -34,6 +34,12 @@ class LIBAPPFW_PUBLIC ToggleWidget : public ButtonWidget Q_OBJECT public: + enum Flag { + DefaultFlags = 0, + WithoutIndicator = 0x1, + }; + Q_DECLARE_FLAGS(Flags, Flag) + enum ToggleState { Active, Inactive @@ -45,7 +51,7 @@ class LIBAPPFW_PUBLIC ToggleWidget : public ButtonWidget DENG2_DEFINE_AUDIENCE2(Toggle, void toggleStateChanged(ToggleWidget &toggle)) public: - ToggleWidget(String const &name = String()); + ToggleWidget(Flags const &flags = DefaultFlags, String const &name = String()); /** * Sets the toggle state of the widget. @@ -73,6 +79,8 @@ class LIBAPPFW_PUBLIC ToggleWidget : public ButtonWidget DENG2_PRIVATE(d) }; +Q_DECLARE_OPERATORS_FOR_FLAGS(ToggleWidget::Flags) + } // namespace de #endif // LIBAPPFW_TOGGLEWIDGET_H diff --git a/doomsday/sdk/libappfw/src/widgets/togglewidget.cpp b/doomsday/sdk/libappfw/src/widgets/togglewidget.cpp index fabc251d42..001c4ddbab 100644 --- a/doomsday/sdk/libappfw/src/widgets/togglewidget.cpp +++ b/doomsday/sdk/libappfw/src/widgets/togglewidget.cpp @@ -114,13 +114,12 @@ DENG2_OBSERVES(ButtonWidget, Press) ToggleProceduralImage *procImage; // not owned bool hasBeenUpdated = false; - Impl(Public *i) - : Base(i), - state(Inactive), - procImage(new ToggleProceduralImage(*i)) + Impl(Public *i, Flags const &flags) + : Base(i) + , state(Inactive) + , procImage(!(flags & WithoutIndicator)? new ToggleProceduralImage(*i) : nullptr) { - self().setImage(procImage); // base class owns it - + if (procImage) self().setImage(procImage); // base class owns it self().audienceForPress() += this; } @@ -137,7 +136,9 @@ DENG2_OBSERVES(ButtonWidget, Press) DENG2_AUDIENCE_METHOD(ToggleWidget, Toggle) -ToggleWidget::ToggleWidget(String const &name) : ButtonWidget(name), d(new Impl(this)) +ToggleWidget::ToggleWidget(Flags const &flags, String const &name) + : ButtonWidget(name) + , d(new Impl(this, flags)) { setTextAlignment(ui::AlignRight); setTextLineAlignment(ui::AlignLeft); @@ -148,7 +149,10 @@ void ToggleWidget::setToggleState(ToggleState state, bool notify) if (d->state != state) { d->state = state; - d->procImage->setState(state, hasBeenUpdated()); + if (d->procImage) + { + d->procImage->setState(state, hasBeenUpdated()); + } if (notify) { @@ -165,7 +169,10 @@ ToggleWidget::ToggleState ToggleWidget::toggleState() const void ToggleWidget::finishAnimation() { - d->procImage->finishAnimation(); + if (d->procImage) + { + d->procImage->finishAnimation(); + } } } // namespace de diff --git a/doomsday/sdk/libappfw/src/widgets/variabletogglewidget.cpp b/doomsday/sdk/libappfw/src/widgets/variabletogglewidget.cpp index 31adc238f2..84cfd21a8a 100644 --- a/doomsday/sdk/libappfw/src/widgets/variabletogglewidget.cpp +++ b/doomsday/sdk/libappfw/src/widgets/variabletogglewidget.cpp @@ -79,11 +79,13 @@ DENG2_OBSERVES(ToggleWidget, Toggle ) }; VariableToggleWidget::VariableToggleWidget(Variable &variable, String const &name) - : ToggleWidget(name), d(new Impl(this, variable)) + : ToggleWidget(DefaultFlags, name) + , d(new Impl(this, variable)) {} VariableToggleWidget::VariableToggleWidget(String const &label, Variable &variable, String const &name) - : ToggleWidget(name), d(new Impl(this, variable)) + : ToggleWidget(DefaultFlags, name) + , d(new Impl(this, variable)) { setText(label); }