UniversalSwitchSettingsPageModel::UniversalSwitchSettingsPageModel()
{
- synchronizePropertyWithVConf(autoScanState_, VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_AUTO_SCAN_ENABLED, DEFAULT_AUTO_SCAN_STATE);
- synchronizePropertyWithVConf(autoScanInterval_, VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_AUTO_SCAN_INT, DEFAULT_AUTO_SCAN_INTERVAL);
- synchronizePropertyWithVConf(autoScanInterval_, VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_AUTO_SCAN_INT, DEFAULT_AUTO_SCAN_INTERVAL);
- synchronizePropertyWithVConf(autoScanLoopsNumber_, VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_NUM_OF_SCANS, DEFAULT_AUTO_SCAN_NUMBER);
synchronizePropertyWithVConf(scanMethod_, VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_SCAN_METHOD, DEFAULT_SCAN_METHOD);
synchronizePropertyWithVConf(scanDirection_, VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_SCAN_DIR_VERTICAL, DEFAULT_SCAN_DIR);
- synchronizePropertyWithVConf(pointScanSpeed_, VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_SCAN_PT_SPEED, DEFAULT_SCAN_PT_SPEED);
- synchronizePropertyWithVConf(pauseOnFirstState_, VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_PAUSE_ON_FIRST_STATE, DEFAULT_PAUSE_ON_FIRST_STATE);
- synchronizePropertyWithVConf(pauseOnFirstTime_, VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_PAUSE_ON_FIRST_VALUE, DEFAULT_PAUSE_ON_FIRST_VALUE);
- synchronizePropertyWithVConf(tapDurationState_, VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_TAP_DURATION_STATE, DEFAULT_TAP_DURATION_STATE);
- synchronizePropertyWithVConf(tapDurationValue_, VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_TAP_DURATION_VALUE, DEFAULT_TAP_DURATION_VALUE);
- synchronizePropertyWithVConf(singleInteractionIntervalState_, VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_SGL_IACTION_INT_STATE, DEFAULT_SGL_IACTION_INT_STATE);
- synchronizePropertyWithVConf(singleInteractionIntervalValue_, VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_SGL_IACTION_INT_VALUE, DEFAULT_SGL_IACTION_INT_VALUE);
- synchronizePropertyWithVConf(autoTapState_, VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_AUTO_TAP_STATE, DEFAULT_AUTO_TAP_STATE);
- synchronizePropertyWithVConf(autoTapValue_, VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_AUTO_TAP_VALUE, DEFAULT_AUTO_TAP_VALUE);
- synchronizePropertyWithVConf(autoMoveState_, VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_AUTO_MOVE_INT_STATE, DEFAULT_AUTO_MOVE_INT_STATE);
- synchronizePropertyWithVConf(autoMoveValue_, VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_AUTO_MOVE_INT_VALUE, DEFAULT_AUTO_MOVE_INT_VALUE);
synchronizePropertyWithVConf(autoTapKeyboardState_, VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_AUTO_TAP_KBD_STATE, DEFAULT_AUTO_TAP_KEYBOARD_STATE);
vconfHandles_.push_back(Singleton<VConfInterface>::instance().registerAndGet<int>(
Singleton<VConfInterface>::instance().set(VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_FEEDBACK_CURSOR_COLOR, newValue.toABGRInt());
});
- synchronizePropertyWithVConf(feedbackSoundState_, VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_FEEDBACK_SOUND_STATE, DEFAULT_FEEDBACK_SOUND_STATE);
- synchronizePropertyWithVConf(feedbackVoiceState_, VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_FEEDBACK_VOICE_STATE, DEFAULT_FEEDBACK_VOICE_STATE);
-
connectionPtr_ = DBus::getDBusConnectionByType(DBus::ConnectionType::SESSION);
dBusClient_ = DBus::DBusClient{BUS, PATH, IFACE, connectionPtr_};
auto reply = dBusClient_.method<DBus::ValueOrError<std::vector<std::tuple<std::string, std::string, std::string, int32_t>>>()>("getAllSwitchConfigurationItems").call();
#include "UniversalSwitchSettingsPagePresenter.hpp"
-#include "AutoMoveIntervalPresenter.hpp"
-#include "AutoScanIntervalPresenter.hpp"
-#include "AutoTapPresenter.hpp"
#include "AppContext.hpp"
+#include "AutoMoveIntervalPresenter.hpp"
#include "AutoScanIntervalPresenter.hpp"
#include "AutoTapPresenter.hpp"
#include "ManageMenuOptionsPagePresenter.hpp"
#include "NumberOfAutoScanLoopsPresenter.hpp"
#include "PauseOnFirstPresenter.hpp"
#include "PointScanSpeedPresenter.hpp"
+#include "SingleInteractionIntervalPresenter.hpp"
#include "SoundPresenter.hpp"
#include "TapDurationPresenter.hpp"
-#include "AutoMoveIntervalPresenter.hpp"
#include "VoicePresenter.hpp"
-#include "SingleInteractionIntervalPresenter.hpp"
-#include "TapDurationPresenter.hpp"
UniversalSwitchSettingsPagePresenter::UniversalSwitchSettingsPagePresenter()
{
ListItem::WidgetType::toggle,
std::function<void(ListItem * item)>{},
std::function<void(ListItem * item)>{},
- model_.autoScanState_.value()));
+ autoScanModel_.enabled_.value()));
auto item = items.back().get();
- model_.autoScanState_.attach([item](auto value) {
+ autoScanModel_.enabled_.attach([item](auto value) {
item->widgetState_ = value;
});
items.push_back(std::make_unique<ListItem>(
std::string{"IDS_ACCS_UNIVERSAL_SWITCH_SETTINGS_GROUP_SCANNING_AUTO_SCAN_INT"},
- TranslatedString::create("IDS_ACCS_UNIVERSAL_SWITCH_SETTINGS_SECONDS", model_.autoScanInterval_.value()).str(),
+ TranslatedString::create("IDS_ACCS_UNIVERSAL_SWITCH_SETTINGS_SECONDS", autoScanModel_.interval_.value()).str(),
[this](auto item) {
DEBUG("Auto scan interval");
Singleton<AppContext>::instance().push(std::make_unique<AutoScanIntervalPresenter>());
}));
item = items.back().get();
- model_.autoScanInterval_.attach([item](auto value) {
+ autoScanModel_.interval_.attach([item](auto value) {
item->description_ = TranslatedString::create("IDS_ACCS_UNIVERSAL_SWITCH_SETTINGS_SECONDS", value).str();
});
items.push_back(std::make_unique<ListItem>(
std::string{"IDS_ACCS_UNIVERSAL_SWITCH_SETTINGS_GROUP_SCANNING_NUM_OF_SCANS"},
- std::to_string(model_.autoScanLoopsNumber_.value()),
+ std::to_string(autoScanLoopsModel_.value_.value()),
[this](auto item) {
DEBUG("Scan num");
Singleton<AppContext>::instance().push(std::make_unique<NumberOfAutoScanLoopsPresenter>());
}));
item = items.back().get();
- model_.autoScanLoopsNumber_.attach([item](auto value) {
+ autoScanLoopsModel_.value_.attach([item](auto value) {
item->description_ = std::to_string(value);
});
items.push_back(std::make_unique<ListItem>(
std::string{"IDS_ACCS_UNIVERSAL_SWITCH_SETTINGS_GROUP_SCANNING_PT_SPEED"},
- std::to_string(model_.pointScanSpeed_.value()),
+ std::to_string(pointScanSpeedModel_.value_.value()),
[this](auto item) {
DEBUG("Scan point speed");
Singleton<AppContext>::instance().push(std::make_unique<PointScanSpeedPresenter>());
}));
item = items.back().get();
- model_.pointScanSpeed_.attach([item](auto value) {
+ pointScanSpeedModel_.value_.attach([item](auto value) {
item->description_ = std::to_string(value);
});
}
items.push_back(std::make_unique<ListItem>(
std::string{"IDS_ACCS_UNIVERSAL_SWITCH_SETTINGS_GROUP_ADD_SETTINGS_PAUSE_ON_FIRST"},
- model_.pauseOnFirstState_.value() ? TranslatedString::create("IDS_ACCS_UNIVERSAL_SWITCH_SETTINGS_SECONDS", model_.pauseOnFirstTime_.value()).str()
+ pauseOnFirstModel_.value_.value() ? TranslatedString::create("IDS_ACCS_UNIVERSAL_SWITCH_SETTINGS_SECONDS", pauseOnFirstModel_.value_.value()).str()
: std::string{"IDS_ACCS_UNIVERSAL_SWITCH_SETTINGS_OFF"},
[this](auto item) {
DEBUG("Pause on first");
},
ListItem::WidgetType::toggle,
[this](auto item) {
- model_.pauseOnFirstState_ = item->widgetState_.value();
+ pauseOnFirstModel_.state_ = item->widgetState_.value();
},
std::function<void(ListItem * item)>{},
- model_.pauseOnFirstState_.value()));
+ pauseOnFirstModel_.value_.value()));
auto item = items.back().get();
auto pauseOnFirstCb = [this, item](auto value) {
- if (model_.pauseOnFirstState_.value())
- item->description_ = TranslatedString::create("IDS_ACCS_UNIVERSAL_SWITCH_SETTINGS_SECONDS", model_.pauseOnFirstTime_.value()).str();
+ if (pauseOnFirstModel_.value_.value())
+ item->description_ = TranslatedString::create("IDS_ACCS_UNIVERSAL_SWITCH_SETTINGS_SECONDS", pauseOnFirstModel_.value_.value()).str();
else
item->description_ = "IDS_ACCS_UNIVERSAL_SWITCH_SETTINGS_OFF";
};
- model_.pauseOnFirstState_.attach(pauseOnFirstCb);
- model_.pauseOnFirstTime_.attach(pauseOnFirstCb);
+ pauseOnFirstModel_.state_.attach(pauseOnFirstCb);
+ pauseOnFirstModel_.value_.attach(pauseOnFirstCb);
items.push_back(std::make_unique<ListItem>(
std::string{"IDS_ACCS_UNIVERSAL_SWITCH_SETTINGS_GROUP_ADD_SETTINGS_TAP_DURATION"},
- model_.tapDurationState_.value() ? TranslatedString::create("IDS_ACCS_UNIVERSAL_SWITCH_SETTINGS_SECONDS", model_.tapDurationValue_.value()).str()
+ tapDurationModel_.state_.value() ? TranslatedString::create("IDS_ACCS_UNIVERSAL_SWITCH_SETTINGS_SECONDS", tapDurationModel_.value_.value()).str()
: std::string{"IDS_ACCS_UNIVERSAL_SWITCH_SETTINGS_OFF"},
[this](auto item) {
DEBUG("tap duration widget");
ListItem::WidgetType::toggle,
[this](auto item) {
DEBUG("tap duration");
- model_.tapDurationState_ = item->widgetState_.value();
+ tapDurationModel_.state_ = item->widgetState_.value();
},
std::function<void(ListItem * item)>{},
- model_.tapDurationState_.value()));
+ tapDurationModel_.state_.value()));
item = items.back().get();
auto tapDurationCb = [this, item](auto value) {
- if (model_.tapDurationState_.value())
- item->description_ = TranslatedString::create("IDS_ACCS_UNIVERSAL_SWITCH_SETTINGS_SECONDS", model_.tapDurationValue_.value()).str();
+ if (tapDurationModel_.state_.value())
+ item->description_ = TranslatedString::create("IDS_ACCS_UNIVERSAL_SWITCH_SETTINGS_SECONDS", tapDurationModel_.value_.value()).str();
else
item->description_ = "IDS_ACCS_UNIVERSAL_SWITCH_SETTINGS_OFF";
};
- model_.tapDurationState_.attach(tapDurationCb);
- model_.tapDurationValue_.attach(tapDurationCb);
+ tapDurationModel_.state_.attach(tapDurationCb);
+ tapDurationModel_.value_.attach(tapDurationCb);
items.push_back(std::make_unique<ListItem>(
std::string{"IDS_ACCS_UNIVERSAL_SWITCH_SETTINGS_GROUP_ADD_SETTINGS_SGL_IACTION_INT"},
- model_.singleInteractionIntervalState_.value() ? TranslatedString::create("IDS_ACCS_UNIVERSAL_SWITCH_SETTINGS_SECONDS", model_.singleInteractionIntervalValue_.value()).str()
+ singleInteractionIntervalModel_.state_.value() ? TranslatedString::create("IDS_ACCS_UNIVERSAL_SWITCH_SETTINGS_SECONDS", singleInteractionIntervalModel_.value_.value()).str()
: std::string{"IDS_ACCS_UNIVERSAL_SWITCH_SETTINGS_OFF"},
[this](auto item) {
DEBUG("single interaction interval widget");
},
ListItem::WidgetType::toggle,
[this](auto item) {
- model_.singleInteractionIntervalState_ = item->widgetState_.value();
+ singleInteractionIntervalModel_.state_ = item->widgetState_.value();
},
std::function<void(ListItem * item)>{},
- model_.singleInteractionIntervalState_.value()));
+ singleInteractionIntervalModel_.state_.value()));
item = items.back().get();
auto snglIntCb = [this, item](auto value) {
- if (model_.singleInteractionIntervalState_.value())
- item->description_ = TranslatedString::create("IDS_ACCS_UNIVERSAL_SWITCH_SETTINGS_SECONDS", model_.singleInteractionIntervalValue_.value()).str();
+ if (singleInteractionIntervalModel_.state_.value())
+ item->description_ = TranslatedString::create("IDS_ACCS_UNIVERSAL_SWITCH_SETTINGS_SECONDS", singleInteractionIntervalModel_.value_.value()).str();
else
item->description_ = "IDS_ACCS_UNIVERSAL_SWITCH_SETTINGS_OFF";
};
- model_.singleInteractionIntervalState_.attach(snglIntCb);
- model_.singleInteractionIntervalValue_.attach(snglIntCb);
+ singleInteractionIntervalModel_.state_.attach(snglIntCb);
+ singleInteractionIntervalModel_.value_.attach(snglIntCb);
items.push_back(std::make_unique<ListItem>(
std::string{"IDS_ACCS_UNIVERSAL_SWITCH_SETTINGS_GROUP_ADD_SETTINGS_AUTO_TAP"},
- model_.autoTapState_.value() ? TranslatedString::create("IDS_ACCS_UNIVERSAL_SWITCH_SETTINGS_SECONDS", model_.autoTapValue_.value()).str()
+ autoTapModel_.state_.value() ? TranslatedString::create("IDS_ACCS_UNIVERSAL_SWITCH_SETTINGS_SECONDS", autoTapModel_.value_.value()).str()
: std::string{"IDS_ACCS_UNIVERSAL_SWITCH_SETTINGS_OFF"},
[this](auto item) {
DEBUG("auto tap widget");
},
ListItem::WidgetType::toggle,
[this](auto item) {
- model_.autoTapState_ = item->widgetState_.value();
+ autoTapModel_.state_ = item->widgetState_.value();
DEBUG("auto tap");
},
std::function<void(ListItem * item)>{},
- model_.autoTapState_.value()));
+ autoTapModel_.state_.value()));
item = items.back().get();
auto autoTapCb = [this, item](auto value) {
- if (model_.autoTapState_.value())
- item->description_ = TranslatedString::create("IDS_ACCS_UNIVERSAL_SWITCH_SETTINGS_SECONDS", model_.autoTapValue_.value()).str();
+ if (autoTapModel_.state_.value())
+ item->description_ = TranslatedString::create("IDS_ACCS_UNIVERSAL_SWITCH_SETTINGS_SECONDS", autoTapModel_.value_.value()).str();
else
item->description_ = "IDS_ACCS_UNIVERSAL_SWITCH_SETTINGS_OFF";
};
- model_.autoTapState_.attach(autoTapCb);
- model_.autoTapValue_.attach(autoTapCb);
+ autoTapModel_.state_.attach(autoTapCb);
+ autoTapModel_.value_.attach(autoTapCb);
items.push_back(std::make_unique<ListItem>(
std::string{"IDS_ACCS_UNIVERSAL_SWITCH_SETTINGS_GROUP_ADD_SETTINGS_AUTO_MOVE_INT"},
- model_.autoMoveState_.value() ? TranslatedString::create("IDS_ACCS_UNIVERSAL_SWITCH_SETTINGS_SECONDS", model_.autoMoveValue_.value()).str()
- : std::string{"IDS_ACCS_UNIVERSAL_SWITCH_SETTINGS_OFF"},
+ autoMoveIntervalModel_.state_.value() ? TranslatedString::create("IDS_ACCS_UNIVERSAL_SWITCH_SETTINGS_SECONDS", autoMoveIntervalModel_.value_.value()).str()
+ : std::string{"IDS_ACCS_UNIVERSAL_SWITCH_SETTINGS_OFF"},
[this](auto item) {
DEBUG("auto move widget");
Singleton<AppContext>::instance().push(std::make_unique<AutoMoveIntervalPresenter>());
},
ListItem::WidgetType::toggle,
[this](auto item) {
- model_.autoMoveState_ = item->widgetState_.value();
+ autoMoveIntervalModel_.state_ = item->widgetState_.value();
DEBUG("auto move");
},
std::function<void(ListItem * item)>{},
- model_.autoMoveState_.value()));
+ autoMoveIntervalModel_.state_.value()));
item = items.back().get();
auto autoMoveCb = [this, item](auto value) {
- if (model_.autoMoveState_.value())
- item->description_ = TranslatedString::create("IDS_ACCS_UNIVERSAL_SWITCH_SETTINGS_SECONDS", model_.autoMoveValue_.value()).str();
+ if (autoMoveIntervalModel_.state_.value())
+ item->description_ = TranslatedString::create("IDS_ACCS_UNIVERSAL_SWITCH_SETTINGS_SECONDS", autoMoveIntervalModel_.value_.value()).str();
else
item->description_ = "IDS_ACCS_UNIVERSAL_SWITCH_SETTINGS_OFF";
};
- model_.autoMoveState_.attach(autoMoveCb);
- model_.autoMoveValue_.attach(autoMoveCb);
+ autoMoveIntervalModel_.state_.attach(autoMoveCb);
+ autoMoveIntervalModel_.value_.attach(autoMoveCb);
items.push_back(std::make_unique<ListItem>(
std::string{"IDS_ACCS_UNIVERSAL_SWITCH_SETTINGS_GROUP_ADD_SETTINGS_AUTO_TAP_KBD"},
items.push_back(std::make_unique<ListItem>(
std::string{"IDS_ACCS_UNIVERSAL_SWITCH_SETTINGS_GROUP_FEEDBACK_SOUND"},
- model_.feedbackSoundState_.value() ? std::string{"IDS_ACCS_UNIVERSAL_SWITCH_SETTINGS_ON"} : std::string{"IDS_ACCS_UNIVERSAL_SWITCH_SETTINGS_OFF"},
+ soundModel_.state_.value() ? utils::doubleToPercent(soundModel_.value_.value()) + " of media volume" : std::string{"IDS_ACCS_UNIVERSAL_SWITCH_SETTINGS_OFF"},
[this](auto item) {
DEBUG("feedback sound widget");
Singleton<AppContext>::instance().push(std::make_unique<SoundPresenter>());
ListItem::WidgetType::toggle,
[this](auto item) {
DEBUG("feedback sound");
- model_.feedbackSoundState_ = item->widgetState_.value();
+ soundModel_.state_ = item->widgetState_.value();
},
std::function<void(ListItem * item)>{},
- model_.feedbackSoundState_.value()));
+ soundModel_.state_.value()));
item = items.back().get();
- model_.feedbackSoundState_.attach([item, this](auto value) {
+ soundModel_.state_.attach([item, this](auto value) {
item->widgetState_ = value;
- item->description_ = value ? "IDS_ACCS_UNIVERSAL_SWITCH_SETTINGS_ON" : "IDS_ACCS_UNIVERSAL_SWITCH_SETTINGS_OFF";
+ item->description_ = value ? utils::doubleToPercent(soundModel_.value_.value()) + " of media volume" : "IDS_ACCS_UNIVERSAL_SWITCH_SETTINGS_OFF";
});
+ auto speechRate = "Speech rate: " + utils::doubleToString(voiceModel_.rate_.value(), 1);
+ auto mediaVolume = "Speech volume: " + utils::doubleToPercent(voiceModel_.volume_.value()) + " of media volume";
+ auto desc = voiceModel_.state_.value() ? speechRate + "<br>" + mediaVolume : std::string{"IDS_ACCS_UNIVERSAL_SWITCH_SETTINGS_OFF"};
+
items.push_back(std::make_unique<ListItem>(
std::string{"IDS_ACCS_UNIVERSAL_SWITCH_SETTINGS_GROUP_FEEDBACK_VOICE"},
- model_.feedbackVoiceState_.value() ? std::string{"IDS_ACCS_UNIVERSAL_SWITCH_SETTINGS_ON"} : std::string{"IDS_ACCS_UNIVERSAL_SWITCH_SETTINGS_OFF"},
+ desc,
[this](auto item) {
DEBUG("feedback sound widget");
Singleton<AppContext>::instance().push(std::make_unique<VoicePresenter>());
ListItem::WidgetType::toggle,
[this](auto item) {
DEBUG("auto move");
- model_.feedbackVoiceState_ = item->widgetState_.value();
+ voiceModel_.state_ = item->widgetState_.value();
},
std::function<void(ListItem * item)>{},
- model_.feedbackVoiceState_.value()));
+ voiceModel_.state_.value()));
item = items.back().get();
- model_.feedbackVoiceState_.attach([item, this](auto value) {
+ voiceModel_.state_.attach([item, this](auto value) {
item->widgetState_ = value;
- item->description_ = value ? "IDS_ACCS_UNIVERSAL_SWITCH_SETTINGS_ON" : "IDS_ACCS_UNIVERSAL_SWITCH_SETTINGS_OFF";
+ auto speechRate = "Speech rate: " + utils::doubleToString(voiceModel_.rate_.value(), 1);
+ auto mediaVolume = "Speech volume: " + utils::doubleToPercent(voiceModel_.volume_.value()) + " of media volume";
+ auto desc = voiceModel_.state_.value() ? speechRate + "<br>" + mediaVolume : std::string{"IDS_ACCS_UNIVERSAL_SWITCH_SETTINGS_OFF"};
+ item->description_ = desc;
});
items.push_back(std::make_unique<ListItem>(