From 99da25d67c280445940dd52eb7a34ea8f2089ea5 Mon Sep 17 00:00:00 2001
From: Pawel Kurowski
Date: Thu, 26 Oct 2017 20:31:51 +0200
Subject: [PATCH] Activities templates allowing setting specific value to int
type vconf keys.
Refactor ChangeScanningMethod, also renamed to ChangeScanningMethodActivity
Add:
+ ChangeTextEditionModeActivity
+ SetCharacterGranularityActivity
+ SetWordGranularityActivity
+ SetLineGranularityActivity
+ SetParagraphGranularityActivity
Set...Activity needs new functionality in UI,
Select Activity allow returning to the previous menu after sending activity change request
Change-Id: I27d591e948b33efc43cde4c42b33f3773266f222
---
res/po/en_US.po | 6 +-
src/ChangeIntTypeVconfKeyActivity.cpp | 101 ++++++++++++++++++++++++++
src/ChangeScanningMethodActivity.cpp | 31 --------
src/MenuBuilder.cpp | 60 ++++++++++-----
src/SelectActivity.cpp | 30 ++++++--
src/VConfKeys.hpp | 2 +
utils/setVconfKeys.sh | 2 +
7 files changed, 176 insertions(+), 56 deletions(-)
create mode 100644 src/ChangeIntTypeVconfKeyActivity.cpp
delete mode 100644 src/ChangeScanningMethodActivity.cpp
diff --git a/res/po/en_US.po b/res/po/en_US.po
index f29876d9..60a8062a 100644
--- a/res/po/en_US.po
+++ b/res/po/en_US.po
@@ -51,7 +51,11 @@ msgstr "Decrease"
msgid "IDS_SELECTION_MODE"
-msgstr "Selection mode"
+msgstr "Enable text selection"
+
+
+msgid "IDS_EDITION_MODE"
+msgstr "Disable text selection"
msgid "IDS_SELECT_ALL"
diff --git a/src/ChangeIntTypeVconfKeyActivity.cpp b/src/ChangeIntTypeVconfKeyActivity.cpp
new file mode 100644
index 00000000..8f7c84bb
--- /dev/null
+++ b/src/ChangeIntTypeVconfKeyActivity.cpp
@@ -0,0 +1,101 @@
+#include "Activity.hpp"
+#include "ActivityFactory.hpp"
+#include "ScreenScannerManager.hpp"
+#include "UniversalSwitch.hpp"
+#include "VConf.hpp"
+#include "VConfKeys.hpp"
+
+#include
+
+template
+class ChangeIntTypeVconfKeyActivity : public Activity, private RegisterActivity
+{
+public:
+ constexpr static const char *activityType = DerivedType::activityType;
+ ChangeIntTypeVconfKeyActivity() : Activity(activityType) {}
+
+ void process() override
+ {
+ auto state = Singleton::instance().get(DerivedType::KEY, 0);
+ if (!state) {
+ markAsCompleted();
+ return;
+ }
+
+ state = state % DerivedType::STATES + 1;
+ Singleton::instance().set(DerivedType::KEY, state);
+ markAsCompleted();
+ }
+};
+
+class ChangeScanningMethodActivity : public ChangeIntTypeVconfKeyActivity
+{
+public:
+ static constexpr const char *activityType = "CHANGE_SCANNING_METHOD";
+ static constexpr const char *KEY = VCONF_KEY_SCAN_METHOD;
+ static constexpr int STATES = 2;
+};
+
+class ChangeTextEditionModeActivity : public ChangeIntTypeVconfKeyActivity
+{
+public:
+ static constexpr const char *activityType = "CHANGE_TEXT_EDITION_MODE";
+ static constexpr const char *KEY = VCONF_KEY_TEXT_EDITION_MODE;
+ static constexpr int STATES = 2;
+};
+
+namespace
+{
+ enum granularity {
+ CHARACTER = 1,
+ WORD,
+ LINE,
+ PARAGRAPH
+ };
+}
+
+template
+class SetIntTypeVconfKeyActivity : public Activity, private RegisterActivity
+{
+public:
+ constexpr static const char *activityType = DerivedType::activityType;
+ SetIntTypeVconfKeyActivity() : Activity(activityType) {}
+
+ void process() override
+ {
+ Singleton::instance().set(DerivedType::KEY, DerivedType::STATE);
+ markAsCompleted();
+ }
+};
+
+class SetCharacterGranularityActivity : public SetIntTypeVconfKeyActivity
+{
+public:
+ static constexpr const char *activityType = "CHARACTER";
+ static constexpr const char *KEY = VCONF_KEY_GRANULARITY_UNIT;
+ static constexpr int STATE = CHARACTER;
+};
+
+class SetWordGranularityActivity : public SetIntTypeVconfKeyActivity
+{
+public:
+ static constexpr const char *activityType = "WORD";
+ static constexpr const char *KEY = VCONF_KEY_GRANULARITY_UNIT;
+ static constexpr int STATE = WORD;
+};
+
+class SetLineGranularityActivity : public SetIntTypeVconfKeyActivity
+{
+public:
+ static constexpr const char *activityType = "LINE";
+ static constexpr const char *KEY = VCONF_KEY_GRANULARITY_UNIT;
+ static constexpr int STATE = LINE;
+};
+
+class SetParagraphGranularityActivity : public SetIntTypeVconfKeyActivity
+{
+public:
+ static constexpr const char *activityType = "PARAGRAPH";
+ static constexpr const char *KEY = VCONF_KEY_GRANULARITY_UNIT;
+ static constexpr int STATE = PARAGRAPH;
+};
\ No newline at end of file
diff --git a/src/ChangeScanningMethodActivity.cpp b/src/ChangeScanningMethodActivity.cpp
deleted file mode 100644
index 967d992e..00000000
--- a/src/ChangeScanningMethodActivity.cpp
+++ /dev/null
@@ -1,31 +0,0 @@
-#include "Activity.hpp"
-#include "ActivityFactory.hpp"
-#include "ScreenScannerManager.hpp"
-#include "UniversalSwitch.hpp"
-#include "VConf.hpp"
-#include "VConfKeys.hpp"
-
-#include
-
-class ChangeScanningMethod : public Activity, private RegisterActivity
-{
-public:
- constexpr static const char *activityType = "CHANGE_SCANNING_METHOD";
- ChangeScanningMethod()
- : Activity(activityType)
- {}
-
- void process() override
- {
- auto method = Singleton::instance().get(VCONF_KEY_SCAN_METHOD, 0);
- if (!method) {
- markAsCompleted();
- return;
- }
-
- method = method % 2 + 1;
- Singleton::instance().set(VCONF_KEY_SCAN_METHOD, method);
- Singleton::instance().getScreenScannerManager()->startAutoscanning();
- markAsCompleted();
- }
-};
diff --git a/src/MenuBuilder.cpp b/src/MenuBuilder.cpp
index 2ae255ca..9d54bca6 100644
--- a/src/MenuBuilder.cpp
+++ b/src/MenuBuilder.cpp
@@ -273,23 +273,37 @@ MenuBuilderImplementation::MenuBuilderImplementation()
std::string {},
std::string {},
RepetitionPolicy::multiple);
- auto selectionMode = std::make_shared(
- std::vector {"IDS_SELECTION_MODE"},
- defaultImg);
+ auto textEditionMode = std::make_shared(
+ std::vector {"IDS_SELECTION_MODE", "IDS_EDITION_MODE"},
+ defaultImg,
+ std::string {"CHANGE_TEXT_EDITION_MODE"},
+ std::string {VCONF_KEY_TEXT_EDITION_MODE},
+ std::string {},
+ std::string {},
+ RepetitionPolicy::multiple);
auto selectAll = std::make_shared(
std::vector {"IDS_SELECT_ALL"},
defaultImg,
- "SELECT_ALL");
+ "SELECT_ALL",
+ std::string {},
+ std::string {},
+ RepetitionPolicy::multiple);
auto previous = std::make_shared(
std::vector { "IDS_PREVIOUS_CHARACTER", "IDS_PREVIOUS_WORD", "IDS_PREVIOUS_LINE", "IDS_PREVIOUS_PARAGRAPH"},
defaultImg,
std::string {},/*TODO add activity*/
- std::string {VCONF_KEY_GRANULARITY_UNIT});
+ std::string {VCONF_KEY_GRANULARITY_UNIT},
+ std::string {},
+ std::string {},
+ RepetitionPolicy::multiple);
auto next = std::make_shared(
std::vector { "IDS_NEXT_CHARACTER", "IDS_NEXT_WORD", "IDS_NEXT_LINE", "IDS_NEXT_PARAGRAPH"},
defaultImg,
std::string {},/*TODO add activity*/
- std::string {VCONF_KEY_GRANULARITY_UNIT});
+ std::string {VCONF_KEY_GRANULARITY_UNIT},
+ std::string {},
+ std::string {},
+ RepetitionPolicy::multiple);
auto copy = std::make_shared(
std::vector {"IDS_COPY"},
defaultImg,
@@ -426,16 +440,24 @@ MenuBuilderImplementation::MenuBuilderImplementation()
"START_SETTINGS");
auto character = std::make_shared(
std::vector {"IDS_CHARACTER"},
- defaultImg);
+ defaultImg,
+ std::string {"CHARACTER"},
+ std::string {"PREVIOUS_MENU"});
auto word = std::make_shared(
std::vector {"IDS_WORD"},
- defaultImg);
+ defaultImg,
+ std::string {"WORD"},
+ std::string {"PREVIOUS_MENU"});
auto line = std::make_shared(
std::vector {"IDS_LINE"},
- defaultImg);
+ defaultImg,
+ std::string {"LINE"},
+ std::string {"PREVIOUS_MENU"});
auto paragraph = std::make_shared(
std::vector {"IDS_PARAGRAPH"},
- defaultImg);
+ defaultImg,
+ std::string {"PARAGRAPH"},
+ std::string {"PREVIOUS_MENU"});
auto ringtoneVolIncrease = std::make_shared(
std::vector {"IDS_RINGTONE_VOLUME_INC"},
defaultImg,
@@ -493,46 +515,46 @@ MenuBuilderImplementation::MenuBuilderImplementation()
auto autoScroll = std::make_shared(
std::vector {"IDS_AUTO_SCROLL"},
defaultImg,
- "SELECT",
+ std::string {},
"IDS_MENU_AUTO_SCROLL");
auto ScreenRotation = std::make_shared(
std::vector {"IDS_SCREEN_ROTATION"},
defaultImg,
- "SELECT",
+ std::string {},
"IDS_MENU_ROTATE_SCREEN");
auto gestures = std::make_shared(
std::vector {"IDS_GESTURES"},
defaultImg,
- "SELECT",
+ std::string {},
"IDS_MENU_GESTURES",
VCONF_KEY_SHOW_GESTURES_MENU_ITEM);
auto actions = std::make_shared(
std::vector {"IDS_ACTIONS"},
defaultImg,
- "SELECT",
+ std::string {},
"IDS_MENU_ACTIONS",
VCONF_KEY_SHOW_ACTIONS_MENU_ITEM);
auto settings = std::make_shared(
std::vector {"IDS_SETTINGS"},
defaultImg,
- "SELECT",
+ std::string {},
"IDS_MENU_SETTINGS",
VCONF_KEY_SHOW_SETTINGS_MENU_ITEM);
auto buttonsAndKeys = std::make_shared(
std::vector {"IDS_BUTTONS_AND_KEYS"},
defaultImg,
- "SELECT",
+ std::string {},
"IDS_MENU_BUTTONS_KEYS",
VCONF_KEY_SHOW_BUTTONS_AND_KEYS_MENU_ITEM);
auto editText = std::make_shared(
std::vector {"IDS_EDIT_TEXT"},
defaultImg,
- "SELECT",
+ std::string {},
"IDS_MENU_EDIT_TEXT");
auto granularitySettings = std::make_shared(
std::vector {"IDS_GRANULARITY_SETTINGS"},
defaultImg,
- "SELECT",
+ std::string {},
"IDS_MENU_GRANULARITY");
auto emptyItem = std::make_shared();
@@ -597,7 +619,7 @@ MenuBuilderImplementation::MenuBuilderImplementation()
tapHomeButtonx2, tapHomeButtonx3, viewPowerKeyMenu
});
addToMap("IDS_MENU_EDIT_TEXT", {
- selectionMode, selectAll, previous, next,
+ textEditionMode, selectAll, previous, next,
copy, paste, cut, granularitySettings
});
addToMap("IDS_MENU_AUTO_SCROLL_OFF", {
diff --git a/src/SelectActivity.cpp b/src/SelectActivity.cpp
index 41b08c0f..0aa67ce1 100644
--- a/src/SelectActivity.cpp
+++ b/src/SelectActivity.cpp
@@ -25,6 +25,7 @@ static const double AUTO_TAP_WAITING_PERIOD_DEFAULT_TIME = 3.0;
static const std::string AUTO_SCAN_KEY = VCONF_KEY_AUTO_SCAN_ENABLED;
static const std::string AUTO_SCROLL_KEY = VCONF_KEY_AUTO_SCROLL_ENABLED;
+static const std::string TEXT_EDITION_MODE = VCONF_KEY_TEXT_EDITION_MODE;
static const std::string AUTO_TAP_KEY = VCONF_KEY_AUTO_TAP_ENABLED;
static const std::string AUTO_TAP_WAITING_PERIOD_KEY = VCONF_KEY_AUTO_TAP_WAITING_TIME;
@@ -145,6 +146,13 @@ void SelectActivity::update(const std::shared_ptr