Extend TranslatedString functionality 96/202796/5 accepted/tizen/unified/20190410.002134 submit/tizen/20190408.080554 submit/tizen/20190408.115831
authorLukasz Wlazly <l.wlazly@partner.samsung.com>
Thu, 4 Apr 2019 09:09:53 +0000 (11:09 +0200)
committerLukasz Wlazly <l.wlazly@partner.samsung.com>
Thu, 4 Apr 2019 11:59:07 +0000 (13:59 +0200)
1. Add static function to create parametrized TranslatedString
2. Overload addition operator

Change-Id: I7355f2dd37959a6aa19471104a44a906bb68ed2e

src/ScreenReaderPage.cpp
src/TranslatedString.cpp
src/TranslatedString.hpp
src/UniversalSwitchSettingsPage.cpp

index 47a943c..ef389f0 100644 (file)
@@ -39,9 +39,8 @@ ScreenReaderPage::ScreenReaderPage()
                        auto state = item->getState();
                        Singleton<VConfInterface>::instance().set(VCONFKEY_SETAPPL_ACCESSIBILITY_TTS, state);
                        if (!state) {
-                               auto buf = TranslatedString{"IDS_ST_MBODY_SCREEN_READER_HTTS"}.str() + " " +
-                                                  TranslatedString{"IDS_ST_BODY_OFF"}.str();
-                               Singleton<TextToSpeech>::instance().play(buf);
+                               auto buf = TranslatedString{"IDS_ST_MBODY_SCREEN_READER_HTTS"} + " " + TranslatedString{"IDS_ST_BODY_OFF"};
+                               Singleton<TextToSpeech>::instance().play(buf.str());
                        }
                },
                GenlistItem::WidgetType::toggle});
index 242bc1a..eb2d1c7 100644 (file)
 
 TranslatedString::TranslatedString(const std::string &str)
        : value(std::string{gettext(str.c_str())})
-{
-}
+{}
 
 TranslatedString::TranslatedString(const char *str)
        : value(std::string{gettext(str), strlen(gettext(str))})
+{}
+
+TranslatedString &TranslatedString::operator+=(const TranslatedString &ts)
 {
+       value += ts.value;
+       return *this;
 }
 
 bool TranslatedString::empty() const
@@ -43,3 +47,9 @@ const char *TranslatedString::c_str() const
 {
        return value.c_str();
 }
+
+TranslatedString operator+(TranslatedString lString, const TranslatedString &rString)
+{
+       lString += rString;
+       return lString;
+}
\ No newline at end of file
index 2d958a6..46d7dd8 100644 (file)
@@ -17,6 +17,8 @@
 #ifndef TRANSLATED_STRING_HPP
 #define TRANSLATED_STRING_HPP
 
+#include "AccessibilitySettingLog.hpp"
+
 #include <string>
 /**
  * Class containing strings translated with usage of internatonalization API
@@ -31,6 +33,20 @@ class TranslatedString
        TranslatedString(const std::string &str);
        TranslatedString(const char *str);
 
+       TranslatedString &operator+=(const TranslatedString &ts);
+
+       template <typename... ARGS>
+       static TranslatedString create(const char *str, const ARGS &... args)
+       {
+               char buf[1024] = {0};
+               auto ret = snprintf(buf, sizeof(buf), gettext(str), args...);
+               if (ret > 1024) {
+                       ERROR("snprintf failed");
+                       return {};
+               }
+               return {buf};
+       }
+
        bool empty() const;
 
        std::string str() const;
@@ -40,4 +56,6 @@ class TranslatedString
        std::string value;
 };
 
+TranslatedString operator+(TranslatedString lString, const TranslatedString &rString);
+
 #endif
index 62b3c59..dc96b92 100644 (file)
@@ -289,13 +289,6 @@ void UniversalSwitchSettingsPage::createAdditionalSettingsGroup()
                "IDS_ACCS_UNIVERSAL_SWITCH_SETTINGS_GROUP_ADD_SETTINGS_PAUSE_ON_FIRST",
                str,
                [this](auto item) {
-                       char str[512] = {0,};
-                       auto ret = snprintf(str, sizeof(str), _("IDS_ACCS_UNIVERSAL_SWITCH_SETTINGS_SET_VALUE_DESC_PAUSE_ON_FIRST"), context_.us_configuration.auto_scan_interval, context_.us_configuration.auto_scan_interval + context_.us_configuration.pause_on_first_value);
-                       if (ret > 511) {
-                               ERROR("snprintf failed");
-                               return;
-                       }
-
                        setValuePage_ = std::make_unique<SetValuePage>(ValueEditorType::NUMERIC_SWITCH, _("IDS_ACCS_UNIVERSAL_SWITCH_SETTINGS_GROUP_ADD_SETTINGS_PAUSE_ON_FIRST"));
                        setValuePage_->setSwitch(context_.us_configuration.pause_on_first_state);
                        setValuePage_->addValueChangedCb([this](auto val) {
@@ -304,7 +297,9 @@ void UniversalSwitchSettingsPage::createAdditionalSettingsGroup()
                        setValuePage_->addSwitchChangedCb([this](auto state) {
                                this->pauseOnFirstSwitchChangedCb(state);
                        });
-                       setValuePage_->setDescription(str);
+                       //FIXME: below description is not displayed at runtime
+                       auto totalPauseOnFirstItem = context_.us_configuration.auto_scan_interval + context_.us_configuration.pause_on_first_value;
+                       setValuePage_->setDescription(TranslatedString::create("IDS_ACCS_UNIVERSAL_SWITCH_SETTINGS_SET_VALUE_DESC_PAUSE_ON_FIRST", context_.us_configuration.auto_scan_interval, totalPauseOnFirstItem).c_str());
                        setValuePage_->setRange(RANGE_MIN_PAUSE_ON_FIRST, RANGE_MAX_PAUSE_ON_FIRST, STEP_PAUSE_ON_FIRST);
                        setValuePage_->setValue(context_.us_configuration.pause_on_first_value, "seconds"); },
                [this](auto item) {