TizenRefApp-8557 Multi-language support 38/131138/2
authorDenis Dolzhenko <d.dolzhenko@samsung.com>
Thu, 25 May 2017 12:17:30 +0000 (15:17 +0300)
committerDenis Dolzhenko <d.dolzhenko@samsung.com>
Thu, 25 May 2017 13:12:50 +0000 (16:12 +0300)
Change-Id: I979d11a2d2471e4c9a09213100304227a71389ae
Signed-off-by: Denis Dolzhenko <d.dolzhenko@samsung.com>
15 files changed:
src/Composer/Controller/src/MsgBodyFrame.cpp
src/Conversation/Controller/inc/ConvList.h
src/Conversation/Controller/inc/ConvListItem.h
src/Conversation/Controller/src/ConvList.cpp
src/Conversation/Controller/src/ConvListItem.cpp
src/Conversation/View/inc/ConvDateLineListItem.h
src/Conversation/View/inc/ConvReplyListItem.h
src/Conversation/View/src/ConvDateLineListItem.cpp
src/Conversation/View/src/ConvReplyListItem.cpp
src/MsgThread/Controller/inc/ThreadList.h
src/MsgThread/Controller/inc/ThreadListItem.h
src/MsgThread/Controller/src/ThreadList.cpp
src/MsgThread/Controller/src/ThreadListItem.cpp
src/Settings/Controller/inc/SettingsBlockListFrame.h
src/Settings/Controller/src/SettingsBlockListFrame.cpp

index 450b0c6e77ad2c1077647fea33291ce18bce5583..e21b7d3bac56f984bc292f215da2e67efa1eeebd 100644 (file)
@@ -242,7 +242,7 @@ void MsgBodyFrame::requestSendMessage()
     m_SendInfo.reset();
 
     m_SendInfo.msgs = createMessage();
-    if (m_SendInfo.msgs .empty())
+    if (m_SendInfo.msgs.empty())
         return;
 
     if (!checkBeforeSend(m_SendInfo.msgs [0]->getType()))
index 30e359b18dd98a1d014c99161964aab37ae59eda..9fd840c421cd7dfeb1f30a1de4fbfb56cb023614 100644 (file)
@@ -26,6 +26,7 @@
 #include "Recipient.h"
 #include "DefaultLayout.h"
 #include "ContactManager.h"
+#include "SystemSettingsManager.h"
 
 #include <unordered_map>
 #include <unordered_set>
@@ -42,7 +43,8 @@ namespace Msg {
         : public ListView
         , private IListViewListener
         , private IMsgStorageListener
-        , private IContactManagerListener {
+        , private IContactManagerListener
+        , private ISystemSettingsManager {
 
         public:
             ConvList(DefaultLayout *parent, WorkingDirRef &workingDir);
@@ -74,8 +76,14 @@ namespace Msg {
             // IContactManagerListener:
             void onContactChanged() override;
 
+            // ISystemSettingsManager:
+            void onTimeFormatChanged() override;
+            void onLanguageChanged() override;
+
             void fillList();
             void updateTitle();
+            void updateLangInfo();
+            void updateDateLineItems(bool updateUi);
             MsgStorage &getMsgStorage();
             void delDateLineIfNeeded(ConvListItem &item);
             void addDateLineIfNeeded(ConvListItem &item);
@@ -101,7 +109,6 @@ namespace Msg {
             BubbleEntityFactory m_BubbleEntityFactory;
             ConvListItemMap m_ConvListItemMap;
             DateLineItemSet m_DateLineItemSet;
-            DefaultLayout *m_pParentLayout;
     };
 
     class IConvListListener {
index b458d52b35e72d7f27c8c0a4d394bdc1168bb600..e04db946d3c84d2a870e5b19806bd3aa7e6a122f 100644 (file)
@@ -46,6 +46,7 @@ namespace Msg {
             MsgId getMsgId() const;
             time_t getRawTime() const;
             void updateStatus();
+            void updateLangInfo();
             void updateTime();
 
         protected:
index 201bf18c620d5e70cc7caf1aae0eb2dbf65f2fd6..abb637a2deebc5be232b509c467cee523cf3f462 100644 (file)
 #include "PaddingListViewItem.h"
 #include "TitleListItem.h"
 #include "ConvDateLineListItem.h"
-#include "TimeUtils.h"
 #include "BubbleEntityFactory.h"
 #include "MsgUtils.h"
 #include "ContactManager.h"
 #include "Recipient.h"
+#include "TimeUtils.h"
 
 using namespace Msg;
 
@@ -41,11 +41,11 @@ ConvList::ConvList(DefaultLayout *parent, WorkingDirRef &workingDir)
     , m_pTitleItem(nullptr)
     , m_WorkingDir(workingDir)
     , m_BubbleEntityFactory(m_WorkingDir)
-    , m_pParentLayout(parent)
 {
     ListView::setListener(this);
     getMsgStorage().addListener(*this);
     App::getInst().getContactManager().addListener(*this);
+    App::getInst().getSysSettingsManager().addListener(*this);
     ListView::setHomogeneous(false);
     ListView::setMultiSelection(false);
     ListView::enabledAlign(false);
@@ -55,6 +55,7 @@ ConvList::~ConvList()
 {
     getMsgStorage().removeListener(*this);
     App::getInst().getContactManager().removeListener(*this);
+    App::getInst().getSysSettingsManager().removeListener(*this);
 }
 
 void ConvList::setDeleteMode(bool value)
@@ -119,6 +120,33 @@ void ConvList::updateTitle()
     m_pTitleItem->update();
 }
 
+void ConvList::updateLangInfo()
+{
+    // Update ConvListItem:
+    auto convItems = getItems<ConvListItem>();
+    for (ConvListItem *item : convItems)
+        item->updateLangInfo();
+
+    // Update ConvDateLineListItem:
+    updateDateLineItems(false);
+
+    // Update view:
+    ListView::updateRealizedItems();
+}
+
+void ConvList::updateDateLineItems(bool updateUi)
+{
+    m_DateLineItemSet.clear();
+    auto items = getItems<ConvDateLineListItem>();
+    for (ConvDateLineListItem *item : items) {
+        item->update();
+        m_DateLineItemSet.insert(item->getDateTimeStr());
+    }
+
+    if (updateUi)
+        ListView::updateRealizedItems();
+}
+
 void ConvList::clear()
 {
     ListView::clear();
@@ -227,7 +255,7 @@ void ConvList::delDateLineIfNeeded(ConvListItem &item)
         auto *nextItem = ListView::getNextItem(item);
         bool needDelDateLine = nextItem ? dynamic_cast<ConvListItem*>(nextItem) == nullptr : true;
         if (needDelDateLine) {
-            m_DateLineItemSet.erase(prev->getDateLine());
+            m_DateLineItemSet.erase(prev->getDateTimeStr());
             ListView::deleteItem(*prev);
         }
     }
@@ -239,7 +267,7 @@ void ConvList::addDateLineIfNeeded(ConvListItem &item)
     auto it = m_DateLineItemSet.find(dateStr);
     if (it == m_DateLineItemSet.end()) {
         m_DateLineItemSet.insert(dateStr);
-        auto *dateLine = new ConvDateLineListItem(std::move(dateStr));
+        auto *dateLine = new ConvDateLineListItem(item.getRawTime(), std::move(dateStr));
         if (m_pItemAfterConv)
             ListView::insertBeforeItem(*dateLine, *m_pItemAfterConv);
         else
@@ -342,3 +370,14 @@ void ConvList::onContactChanged()
     m_Recip.updateContactInfo();
     updateTitle();
 }
+
+void ConvList::onTimeFormatChanged()
+{
+    MSG_LOG("");
+}
+
+void ConvList::onLanguageChanged()
+{
+    MSG_LOG("");
+    updateLangInfo();
+}
index e2b11d1f2f1595583b5c503ada4da60117a34a27..c6f28a91166be7b7d30ac38cd153785f56c0d1a7 100644 (file)
@@ -105,6 +105,11 @@ void ConvListItem::updateTime()
     m_TimeStr.clear();
 }
 
+void ConvListItem::updateLangInfo()
+{
+    updateTime();
+}
+
 void ConvListItem::showMobileDataOffPopup()
 {
     ToastPopup::toast(msgt("WDS_MSG_TPOP_UNABLE_TO_RETRIEVE_MESSAGE_MOBILE_DATA_OFF_ABB"), nullptr);
index e652c3924720c28cacdc51e4e0c24a66515c4c5e..4b83bbe20d24912c28a649d86b546f4b2e28cf24 100644 (file)
@@ -23,19 +23,19 @@ namespace Msg {
     class ConvDateLineListItem
         : public ListItem {
         public:
-            ConvDateLineListItem(std::string dateLine);
+            ConvDateLineListItem(time_t dateTime);
+            ConvDateLineListItem(time_t dateTime, std::string dateTimeStr);
             virtual ~ConvDateLineListItem();
 
-            const std::string &getDateLine() const;
-
-        protected:
-            void setDateLine(std::string dateLine);
+            void update();
+            const std::string &getDateTimeStr() const;
 
         private:
             virtual std::string getText(ListItem &item, const char *part);
 
         private:
-            std::string m_DateLine;
+            time_t m_DateTime;
+            std::string m_DateTimeStr;
     };
 }
 
index d267b889eaf9994049c238ebe7ef7221b653c166..5e048896c5a9bc55d710c62cd0cde8592ddbae4c 100644 (file)
@@ -30,13 +30,11 @@ namespace Msg {
             void onAttached(ViewItem &item) override;
 
         private:
+            std::string getReplayText() const;
             std::string getText(ListItem &item, const char *part) override;
             Evas_Object *getContent(ListItem &item, const char *part) override;
 
             Evas_Object *getReplyButton();
-
-        private:
-            std::string m_ReplyText;
     };
 }
 
index 2ff84720ff371731f5001fb7f3063d27a8cdb4c4..e78c3a4fbef0c690c17ecbe1727f469579edfd63 100644 (file)
@@ -15,6 +15,7 @@
  */
 
 #include "ConvDateLineListItem.h"
+#include "TimeUtils.h"
 #include "ListView.h"
 
 using namespace Msg;
@@ -23,9 +24,17 @@ namespace {
     const char *datePart = "elm.text";
 }
 
-ConvDateLineListItem::ConvDateLineListItem(std::string dateLine)
+ConvDateLineListItem::ConvDateLineListItem(time_t dateTime)
     : ListItem(ListItemStyle::create("dateline"))
-    , m_DateLine(std::move(dateLine))
+    , m_DateTime(dateTime)
+{
+    update();
+}
+
+ConvDateLineListItem::ConvDateLineListItem(time_t dateTime, std::string dateTimeStr)
+    : ListItem(ListItemStyle::create("dateline"))
+    , m_DateTime(dateTime)
+    , m_DateTimeStr(std::move(dateTimeStr))
 {
 }
 
@@ -33,20 +42,20 @@ ConvDateLineListItem::~ConvDateLineListItem()
 {
 }
 
-const std::string &ConvDateLineListItem::getDateLine() const
+void ConvDateLineListItem::update()
 {
-    return m_DateLine;
+    m_DateTimeStr = TimeUtils::makeBubbleDateLineString(m_DateTime);
 }
 
-void ConvDateLineListItem::setDateLine(std::string dateLine)
+const std::string &ConvDateLineListItem::getDateTimeStr() const
 {
-    m_DateLine = std::move(dateLine);
+    return m_DateTimeStr;
 }
 
 std::string ConvDateLineListItem::getText(ListItem &item, const char *part)
 {
     if (!strcmp(part, datePart))
-        return m_DateLine;
-    else
-        return "";
+        return m_DateTimeStr;
+
+    return "";
 }
index 107118716f2e0a75ee710a0164beddbaae9b4d63..0f459a93cde3e16adca4f6755504a56c9563f916 100644 (file)
@@ -26,7 +26,6 @@ namespace {
 
 ConvReplyListItem::ConvReplyListItem()
     : ListItem(ListItemStyle::create("reply"))
-    , m_ReplyText(msg("WDS_MSG_OPT_REPLY_ABB"))
 {
 }
 
@@ -34,10 +33,15 @@ ConvReplyListItem::~ConvReplyListItem()
 {
 }
 
+std::string ConvReplyListItem::getReplayText() const
+{
+    return msg("WDS_MSG_OPT_REPLY_ABB");
+}
+
 std::string ConvReplyListItem::getText(ListItem &item, const char *part)
 {
     if (!strcmp(part, replyText))
-        return m_ReplyText;
+        return getReplayText();
 
     return "";
 }
@@ -55,7 +59,7 @@ Evas_Object *ConvReplyListItem::getReplyButton()
     Evas_Object *btn = View::addIconButton(*getOwner(), "conv/reply_icon");
 
     Atspi AoBtn = Atspi(btn);
-    AoBtn.setName(m_ReplyText);
+    AoBtn.setName(getReplayText());
     AoBtn.setRole(ELM_ATSPI_ROLE_PUSH_BUTTON);
     AoBtn.setReadingInfo((Elm_Accessible_Reading_Info_Type)(ELM_ACCESSIBLE_READING_INFO_TYPE_NAME | ELM_ACCESSIBLE_READING_INFO_TYPE_ROLE));
 
index 5cfaa74a2938e39adba662b57f25e10b5d50333f..7681624412121d32a09ba4392f1278d542fa0d83 100644 (file)
@@ -79,7 +79,7 @@ namespace Msg {
             void fillList();
             void deleteItems();
             void updateItems(const MsgIdList &idList);
-            void updateItems();
+            void updateLangInfo();
             void updateItem(ThreadListItem &item);
             void showNoContent(bool value);
             void insertItem(ThreadId id);
index 6f50c30fa52c6a3c2b9b162b4d19e05d43fbe85a..84a9734d6a73a206b66ab8530e4c76f7fe975f4d 100644 (file)
@@ -34,6 +34,7 @@ namespace Msg {
             time_t getRawTime() const;
             void updateTime();
             void updateContactInfo();
+            void updateLangInfo();
 
         protected:
             void updateName();
index f85b636218adf56b20b8ca2910164f024267e3bb..48a3c95ed739cdb76cc4593c3e400e81c49830ca 100644 (file)
@@ -252,12 +252,13 @@ void ThreadList::updateItems(const MsgIdList &idList)
     }
 }
 
-void ThreadList::updateItems()
+void ThreadList::updateLangInfo()
 {
     auto items = getItems<ThreadListItem>();
     for (ThreadListItem *item: items) {
-        updateItem(*item);
+        item->updateLangInfo();
     }
+    updateRealizedItems();
 }
 
 void ThreadList::showNoContent(bool value)
@@ -383,7 +384,7 @@ void ThreadList::onTimeFormatChanged()
 void ThreadList::onLanguageChanged()
 {
     MSG_LOG("");
-    updateItems();
+    updateLangInfo();
 }
 
 void ThreadList::onComposeButtonClicked()
index 4d77aa226f8ea727621fdd2bf6cdc176c058df58..1a9bbd707f47025b1ece207efa809b32f92790af 100644 (file)
@@ -145,6 +145,11 @@ void ThreadListItem::updateContactInfo()
     updateName();
 }
 
+void ThreadListItem::updateLangInfo()
+{
+    updateTime();
+}
+
 std::string ThreadListItem::getName()
 {
     return m_Name;
index 645c96c8aa993ccfac6c33db9c0a321190276a10..7afc1d739f8b218ef85eeac1184035d851ed2158 100644 (file)
@@ -17,6 +17,7 @@
 #ifndef SettingsBlockListFrame_h_
 #define SettingsBlockListFrame_h_
 
+#include "SystemSettingsManager.h"
 #include "FrameController.h"
 #include "ListView.h"
 
@@ -35,7 +36,8 @@ namespace Msg {
 
     class SettingsBlockListFrame
         : public FrameController
-        , private IListViewListener {
+        , private IListViewListener
+        , private ISystemSettingsManager {
 
         public:
             enum BlockListType {
@@ -64,6 +66,10 @@ namespace Msg {
             // IListViewListener:
             void onListItemSelected(ListItem &listItem) override;
 
+            // ISystemSettingsManager:
+            void onTimeFormatChanged() override;
+            void onLanguageChanged() override;
+
             void prepareMainLayout();
             void prepareMoreOption();
             void prepareSelectViews();
@@ -74,6 +80,7 @@ namespace Msg {
             void setSelectMode(bool value);
             void showSelectPopup();
             void updateNoContent();
+            void updateLangInfo();
             void insertItem(ListItem *item);
 
         private:
index 514223a4ef0d953bd3d83abd32894b6f279b2780..79ee350d7a52e326cbfb0110f7209b9daf17474e 100644 (file)
@@ -48,10 +48,12 @@ SettingsBlockListFrame::SettingsBlockListFrame(NaviFrameController &parent, Bloc
     prepareMoreOption();
     preapareList();
     updateNoContent();
+    App::getInst().getSysSettingsManager().addListener(*this);
 }
 
 SettingsBlockListFrame::~SettingsBlockListFrame()
 {
+    App::getInst().getSysSettingsManager().removeListener(*this);
 }
 
 void SettingsBlockListFrame::setSelectMode(bool value)
@@ -198,6 +200,12 @@ void SettingsBlockListFrame::updateNoContent()
     m_pLayout->showMoreOption(!noContent);
 }
 
+void SettingsBlockListFrame::updateLangInfo()
+{
+    m_pList->updateRealizedItems();
+    // TODO: update items
+}
+
 void SettingsBlockListFrame::insertItem(ListItem *item)
 {
     if(m_pBottomItem && m_pBottomItem != item)
@@ -251,3 +259,14 @@ void SettingsBlockListFrame::onListItemSelected(ListItem &listItem)
     getParent().push(*frame);
 }
 
+void SettingsBlockListFrame::onTimeFormatChanged()
+{
+    MSG_LOG("");
+}
+
+void SettingsBlockListFrame::onLanguageChanged()
+{
+    MSG_LOG("");
+    updateLangInfo();
+}
+