IBodyListener *m_pListener;
App &m_App;
WorkingDirRef m_WorkingDir;
- Ecore_Idler *m_pOnChangedIdler;
+ Ecore_Job *m_pOnChangedJob;
bool m_TooLargePopupShow;
bool m_TooMuchAttachedPopupShow;
bool m_ResizingPopupShow;
, m_pListener(nullptr)
, m_App(app)
, m_WorkingDir(workingDir)
- , m_pOnChangedIdler(nullptr)
+ , m_pOnChangedJob(nullptr)
, m_TooLargePopupShow(false)
, m_TooMuchAttachedPopupShow(false)
, m_ResizingPopupShow(false)
Body::~Body()
{
- if(m_pOnChangedIdler)
+ if(m_pOnChangedJob)
{
- ecore_idler_del(m_pOnChangedIdler);
- m_pOnChangedIdler = nullptr;
+ ecore_job_del(m_pOnChangedJob);
+ m_pOnChangedJob = nullptr;
}
}
void Body::notifyContentChanged()
{
- if(!m_pOnChangedIdler)
+ if(!m_pOnChangedJob)
{
- m_pOnChangedIdler = ecore_idler_add
+ m_pOnChangedJob = ecore_job_add
(
- [](void *data)->Eina_Bool
+ [](void *data)
{
Body *self =(Body*)data;
+ self->m_pOnChangedJob = nullptr;
if(self->m_pListener)
self->m_pListener->onChanged(*self);
- self->m_pOnChangedIdler = nullptr;
- return false; // Delete idler
},
this
);
bool isBodyEmpty() const;
void notifyConvertMsgType();
void convertMsgTypeHandler();
- void checkAndSetMsgType();
+ void checkAndSetMsgType(bool force = false);
void navigateToSlideShow(MsgId id);
void setBodyFocus();
void setRecipEntryFocus();
+ void resetMsgThread();
void showMainPopup();
void showNoRecipPopup();
m_pConvList->setThreadId(m_ThreadId, searchWord);
markAsRead();
- checkAndSetMsgType();
+ checkAndSetMsgType(true);
+}
+
+void Conversation::resetMsgThread()
+{
+ m_IsMms = false;
+ m_DispIsMms = false;
+ if(m_NnotifyConvertMsgTypeIdler)
+ {
+ ecore_idler_del(m_NnotifyConvertMsgTypeIdler);
+ m_NnotifyConvertMsgTypeIdler = nullptr;
+ }
+ setThreadId(ThreadId());
}
void Conversation::setListener(IConversationListener *listener)
MessageRef msg = getMsgEngine().getStorage().getMessage(id);
if(msg)
{
- setThreadId(ThreadId());
+ resetMsgThread();
if(m_pBody)
m_pBody->write(*msg);
m_pRecipPanel->setEntryFocus(true);
if(sendRes == MsgTransport::SendSuccess && m_ThreadId.isValid())
{
+ m_DispIsMms = false; // Skip "Convert to SMS" after sent message with MMS body.
setThreadId(m_ThreadId);
m_pMsgInputPanel->disabledButton(MessageInputPanel::SendButtonId, true);
m_pBody->clear();
void Conversation::createNewMsgThread()
{
MsgAddressListRef addressList = getAddressList();
- setThreadId(ThreadId());
+ resetMsgThread();
if(m_pRecipPanel)
m_pRecipPanel->update(addressList);
}
notifyConvertMsgType();
}
-void Conversation::checkAndSetMsgType()
+void Conversation::checkAndSetMsgType(bool force)
{
// Body:
- if(!m_pBody)
- return;
-
- bool isMms = m_pBody->isMms();
+ bool isMms = m_pBody ? m_pBody->isMms() : false;
// Recipients:
if(!isMms && m_pRecipPanel && !m_pRecipPanel->isMbeEmpty())
isMms = m_pRecipPanel->isMms();
- if(isMms != m_IsMms)
+ if(force || isMms != m_IsMms)
{
m_IsMms = isMms;
convertMsgTypeHandler();