Fixed: show convert message type notification 21/86521/2
authorDenis Dolzhenko <d.dolzhenko@samsung.com>
Thu, 1 Sep 2016 15:01:15 +0000 (18:01 +0300)
committerDenis Dolzhenko <d.dolzhenko@samsung.com>
Thu, 1 Sep 2016 15:28:13 +0000 (18:28 +0300)
Change-Id: I0fd2857482e9588a825660a84e1fd3ad4ca0df5b
Signed-off-by: Denis Dolzhenko <d.dolzhenko@samsung.com>
src/Conversation/Main/Controller/inc/Conversation.h
src/Conversation/Main/Controller/src/Conversation.cpp

index c705409253fb4a0f3ef9c6689a1be5e0187b4afb..d6ccd6d8becf219899b875322c3f78d03b12be97 100644 (file)
@@ -202,6 +202,8 @@ namespace Msg
             ConvContactList *m_pContactsList;
             ThreadId m_ThreadId;
             bool m_IsMms; // Compose message type
+            bool m_DispIsMms; // Last displayed message type for user.
+            Ecore_Idler *m_NnotifyConvertMsgTypeIdler;
             ConvList *m_pConvList;
             AttachPanel m_AttachPanel;
             DefferedCmd m_DefferedCmd;
index e426a4def617bcef53f9a8611f07975c11890ed4..26b8ab504ea1a02963030f54e24eab1dc052d92b 100644 (file)
@@ -65,6 +65,8 @@ Conversation::Conversation(NaviFrameController &parent)
     , m_pContactsList(nullptr)
     , m_ThreadId()
     , m_IsMms(false)
+    , m_DispIsMms(false)
+    , m_NnotifyConvertMsgTypeIdler(nullptr)
     , m_pConvList(nullptr)
     , m_AttachPanel(getApp())
     , m_pListener(nullptr)
@@ -85,6 +87,11 @@ Conversation::~Conversation()
     if(m_pContactsList)
         m_pContactsList->setListener(nullptr);
     m_AttachPanel.setListener(nullptr);
+    if(m_NnotifyConvertMsgTypeIdler)
+    {
+        ecore_idler_del(m_NnotifyConvertMsgTypeIdler);
+        m_NnotifyConvertMsgTypeIdler = nullptr;
+    }
 }
 
 void Conversation::execCmd(const AppControlComposeRef &cmd)
@@ -580,11 +587,27 @@ void Conversation::editDraftMsg(MsgId id)
 
 void Conversation::notifyConvertMsgType()
 {
-    std::string notifText = m_IsMms ?
-            msg("IDS_MSGF_POP_CONVERTING_TO_MULTIMEDIA_MESSAGE_ING") :
-            (std::string)msg("IDS_MSGF_POP_CONVERTING_TO_TEXT_MESSAGE_ING");
-
-    notification_status_message_post(notifText.c_str());
+    if(!m_NnotifyConvertMsgTypeIdler)
+    {
+        m_NnotifyConvertMsgTypeIdler = ecore_idler_add
+        (
+            [](void *data)->Eina_Bool
+            {
+                auto *self =(Conversation*)data;
+                self->m_NnotifyConvertMsgTypeIdler = nullptr;
+                if(self->m_DispIsMms != self->m_IsMms)
+                {
+                    self->m_DispIsMms = self->m_IsMms;
+                    std::string notifText = self->m_IsMms ?
+                            msg("IDS_MSGF_POP_CONVERTING_TO_MULTIMEDIA_MESSAGE_ING") :
+                            (std::string)msg("IDS_MSGF_POP_CONVERTING_TO_TEXT_MESSAGE_ING");
+                    notification_status_message_post(notifText.c_str());
+                }
+                return false; // Delete idler
+            },
+            this
+        );
+    }
 }
 
 void Conversation::convertMsgTypeHandler()