SingleIntervalInteraction page in MVP refactor 24/207724/2
authorTomasz Fejcak <t.fejcak@partner.samsung.com>
Tue, 11 Jun 2019 10:47:52 +0000 (12:47 +0200)
committerLukasz Wlazly <l.wlazly@partner.samsung.com>
Wed, 19 Jun 2019 06:18:26 +0000 (08:18 +0200)
Change-Id: I0675e7cef5e64311e4f997c33d4c95ac9d92b985

src/model/SingleInteractionIntervalModel.cpp [new file with mode: 0644]
src/model/SingleInteractionIntervalModel.hpp [new file with mode: 0644]
src/presenter/SingleInteractionIntervalPresenter.cpp [new file with mode: 0644]
src/presenter/SingleInteractionIntervalPresenter.hpp [new file with mode: 0644]
src/presenter/UniversalSwitchSettingsPagePresenter.cpp

diff --git a/src/model/SingleInteractionIntervalModel.cpp b/src/model/SingleInteractionIntervalModel.cpp
new file mode 100644 (file)
index 0000000..3eabb5d
--- /dev/null
@@ -0,0 +1,22 @@
+#include "SingleInteractionIntervalModel.hpp"
+
+#include "setting-accessibility.h"
+
+SingleInteractionIntervalModel::SingleInteractionIntervalModel()
+{
+       stateHandle_ = Singleton<VConfInterface>::instance().registerAndGet<bool>(VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_SGL_IACTION_INT_STATE, defaultState_, [this](auto val) {
+               this->state_ = val;
+       });
+
+       state_.attach([](auto val) {
+               Singleton<VConfInterface>::instance().set(VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_SGL_IACTION_INT_STATE, val);
+       });
+
+       valueHandle_ = Singleton<VConfInterface>::instance().registerAndGet<double>(VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_SGL_IACTION_INT_VALUE, defaultValue_, [this](auto val) {
+               this->value_ = val;
+       });
+
+       value_.attach([](auto val) {
+               Singleton<VConfInterface>::instance().set(VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_SGL_IACTION_INT_VALUE, val);
+       });
+}
\ No newline at end of file
diff --git a/src/model/SingleInteractionIntervalModel.hpp b/src/model/SingleInteractionIntervalModel.hpp
new file mode 100644 (file)
index 0000000..0889429
--- /dev/null
@@ -0,0 +1,28 @@
+#ifndef SINGLE_INTERACTION_INTERVAL_HPP_
+#define SINGLE_INTERACTION_INTERVAL_HPP_
+
+#include "ObservableProperty.hpp"
+#include "VConf.hpp"
+#include "utils.hpp"
+
+class SingleInteractionIntervalModel
+{
+       public:
+       SingleInteractionIntervalModel();
+       ObservableProperty<bool> state_;
+       ObservableProperty<double> value_;
+
+       const utils::Range<double> range_ = {0.1, 2.5};
+
+       const double step_ = 0.1;
+       const double defaultValue_ = 1.0;
+
+       const bool editable_ = true;
+       const bool defaultState_ = false;
+
+       private:
+       VConfInterface::CallbackHandle stateHandle_;
+       VConfInterface::CallbackHandle valueHandle_;
+};
+
+#endif
\ No newline at end of file
diff --git a/src/presenter/SingleInteractionIntervalPresenter.cpp b/src/presenter/SingleInteractionIntervalPresenter.cpp
new file mode 100644 (file)
index 0000000..5edc583
--- /dev/null
@@ -0,0 +1,40 @@
+#include "SingleInteractionIntervalPresenter.hpp"
+
+SingleInteractionIntervalPresenter::SingleInteractionIntervalPresenter()
+       : SpinnerPresenterWithToggle("IDS_ACCS_UNIVERSAL_SWITCH_SETTINGS_GROUP_ADD_SETTINGS_SGL_IACTION_INT")
+{
+       state_ = model_.state_.value();
+       state_.attach([this](auto state) {
+               model_.state_ = state;
+       });
+
+       value_ = model_.value_.value();
+       value_.attach([this](auto val) {
+               model_.value_ = val;
+       });
+}
+
+utils::Range<double> SingleInteractionIntervalPresenter::getRange()
+{
+       return model_.range_;
+}
+
+bool SingleInteractionIntervalPresenter::isEditable()
+{
+       return model_.editable_;
+}
+
+double SingleInteractionIntervalPresenter::getStep()
+{
+       return model_.step_;
+}
+
+std::string SingleInteractionIntervalPresenter::getFormat()
+{
+       return "%1.1f seconds";
+}
+
+std::string SingleInteractionIntervalPresenter::getLabel()
+{
+       return "IDS_ACCS_UNIVERSAL_SWITCH_SETTINGS_GROUP_ADD_SETTINGS_SGL_IACTION_INT";
+}
\ No newline at end of file
diff --git a/src/presenter/SingleInteractionIntervalPresenter.hpp b/src/presenter/SingleInteractionIntervalPresenter.hpp
new file mode 100644 (file)
index 0000000..11a9f8a
--- /dev/null
@@ -0,0 +1,21 @@
+#ifndef SINGLE_INTERACTION_INTERVAL_PRESENTER_HPP_
+#define SINGLE_INTERACTION_INTERVAL_PRESENTER_HPP_
+
+#include "SingleInteractionIntervalModel.hpp"
+#include "SpinnerPresenterWithToggle.hpp"
+
+class SingleInteractionIntervalPresenter : public SpinnerPresenterWithToggle
+{
+       public:
+       SingleInteractionIntervalPresenter();
+
+       utils::Range<double> getRange() override;
+       double getStep() override;
+       bool isEditable() override;
+       std::string getLabel() override;
+       std::string getFormat() override;
+
+       private:
+       SingleInteractionIntervalModel model_;
+};
+#endif
\ No newline at end of file
index 6f828b1f6801a35bf098cece7da6d37ae8055170..625c0b87f16d02961ec17458bfccb665eb54e5a6 100644 (file)
@@ -3,19 +3,22 @@
 #include "AutoMoveIntervalPresenter.hpp"
 #include "AutoScanIntervalPresenter.hpp"
 #include "AutoTapPresenter.hpp"
+#include "AppContext.hpp"
+#include "AutoScanIntervalPresenter.hpp"
+#include "AutoTapPresenter.hpp"
 #include "ManageMenuOptionsPagePresenter.hpp"
 #include "NumberOfAutoScanLoopsPresenter.hpp"
 #include "PauseOnFirstPresenter.hpp"
 #include "PointScanSpeedPresenter.hpp"
 #include "SoundPresenter.hpp"
 #include "TapDurationPresenter.hpp"
-#include "AutoTapPresenter.hpp"
 #include "AutoMoveIntervalPresenter.hpp"
 #include "VoicePresenter.hpp"
+#include "SingleInteractionIntervalPresenter.hpp"
+#include "TapDurationPresenter.hpp"
 
 UniversalSwitchSettingsPagePresenter::UniversalSwitchSettingsPagePresenter()
 {
-       setTitle("IDS_ACCS_UNIVERSAL_SWITCH_SETTINGS");
        createSwitchesGroup();
        createScanningGropu();
        createAdditionalSettingsGroup();
@@ -176,6 +179,7 @@ void UniversalSwitchSettingsPagePresenter::createAdditionalSettingsGroup()
                                                                                                           : std::string{"IDS_ACCS_UNIVERSAL_SWITCH_SETTINGS_OFF"},
                [this](auto item) {
                        DEBUG("single interaction interval widget");
+                       Singleton<AppContext>::instance().push(std::make_unique<SingleInteractionIntervalPresenter>());
                },
                ListItem::WidgetType::toggle,
                [this](auto item) {