m_Storage.reset(new MsgStoragePrivate(m_MsgHandle));
m_Transport.reset(new MsgTransportPrivate(m_MsgHandle));
- m_Settings.reset(new MsgSettingsPrivate(m_MsgHandle));
m_Composer.reset(new MsgComposerPrivate());
#else
// TODO: impl for public API
MsgSettings &MsgEngine::getSettings()
{
- assert(m_Settings.get());
+ if(!m_Settings.get())
+ m_Settings.reset(new MsgSettingsPrivate(m_MsgHandle));
return *m_Settings;
}
const MsgSettings &MsgEngine::getSettings() const
{
- assert(m_Settings.get());
- return *m_Settings;
+ return const_cast<MsgEngine*>(this)->getSettings();
}
MsgComposer &MsgEngine::getComposer()
SystemSettingsManager::SystemSettingsManager()
: m_TelHandleList()
{
- int err = telephony_init(&m_TelHandleList);
- MSG_LOG("telephony_init = ", err);
-
system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_LOCALE_TIMEFORMAT_24HOUR, CALLBACK(onTimeFormatChanged), this);
system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_LOCALE_LANGUAGE, CALLBACK(onLanguageChanged), this);
}
SystemSettingsManager::~SystemSettingsManager()
{
- telephony_deinit(&m_TelHandleList);
+ if(m_TelHandleList.handle != nullptr)
+ telephony_deinit(&m_TelHandleList);
+}
+
+void SystemSettingsManager::prepareTel()
+{
+ if(m_TelHandleList.handle != nullptr)
+ return;
+ int err = telephony_init(&m_TelHandleList);
+ MSG_LOG("telephony_init = ", err);
}
void SystemSettingsManager::addListener(ISystemSettingsManager &l)
bool SystemSettingsManager::isSimInserted() const
{
bool res = false;
+ const_cast<SystemSettingsManager*>(this)->prepareTel();
if(m_TelHandleList.count > 0)
{
bool SystemSettingsManager::isSimActive() const
{
bool res = false;
+ const_cast<SystemSettingsManager*>(this)->prepareTel();
if(m_TelHandleList.count > 0)
{
m_pFloatingBtn->setListener(this);
m_pLayout->setFloatingButton(*m_pFloatingBtn);
- m_pNoContent = new NoContentLayout(*m_pLayout);
- m_pNoContent->show();
-
- m_pThreadList = new ThreadList(*m_pLayout, getApp());
- m_pThreadList->setListener(this);
- m_pThreadList->show();
-
- m_pSearchList = new ThreadSearchList(*m_pLayout, getApp());
- m_pSearchList->setListener(this);
- m_pSearchList->show();
-
- m_pLayout->setNoContent(*m_pNoContent);
- m_pLayout->setList(*m_pThreadList);
- m_pLayout->setSearchList(*m_pSearchList);
+ prepareThreadList();
+ prepareNoContentLayout();
getApp().getSysSettingsManager().addListener(*this);
setMode(NormalMode);
getApp().getSysSettingsManager().removeListener(*this);
}
-Evas_Object *MsgThread::createSearchPanel(Evas_Object *parent)
+void MsgThread::prepareSearchPanel()
+{
+ if(!m_pSearchPanel)
+ {
+ m_pSearchPanel = new MsgThreadSearchPanel(*m_pLayout);
+ m_pSearchPanel->setListener(this);
+ m_pSearchPanel->setGuideText("Search");
+ getNaviBar().setSearch(*m_pSearchPanel);
+ }
+}
+
+void MsgThread::prepareSearchList()
+{
+ if(!m_pSearchList)
+ {
+ m_pSearchList = new ThreadSearchList(*m_pLayout, getApp());
+ m_pSearchList->setListener(this);
+ m_pSearchList->show();
+ m_pLayout->setSearchList(*m_pSearchList);
+ }
+}
+
+void MsgThread::prepareNoContentLayout()
+{
+ if(!m_pNoContent)
+ {
+ m_pNoContent = new NoContentLayout(*m_pLayout);
+ m_pNoContent->show();
+ m_pLayout->setNoContent(*m_pNoContent);
+ }
+}
+
+void MsgThread::prepareThreadList()
{
- m_pSearchPanel = new MsgThreadSearchPanel(*m_pLayout);
- m_pSearchPanel->setListener(this);
- m_pSearchPanel->setGuideText("Search");
- return *m_pSearchPanel;
+ if(!m_pThreadList)
+ {
+ m_pThreadList = new ThreadList(*m_pLayout, getApp());
+ m_pThreadList->setListener(this);
+ m_pThreadList->show();
+ m_pLayout->setList(*m_pThreadList);
+ }
}
void MsgThread::onAttached(ViewItem &item)
{
FrameController::onAttached(item);
getNaviBar().setColor(NaviBar::NaviBlueColorId);
- getNaviBar().setSearch(createSearchPanel(getNaviBar()));
setHwButtonListener(*m_pLayout, this);
setContent(*m_pLayout);
}
getNaviBar().showButton(NaviPrevButtonId, value);
if(value)
{
+ prepareSearchList();
+ prepareSearchPanel();
m_Mode = SearchMode;
m_pSearchPanel->clearEntry();
m_pSearchList->clear();
}
else
{
- m_pSearchList->cancelSearch();
+ if(m_pSearchList)
+ m_pSearchList->cancelSearch();
getNaviBar().hideSearch();
}
update();
- m_pSearchPanel->setEntryFocus(value);
+ if(m_pSearchPanel)
+ m_pSearchPanel->setEntryFocus(value);
}
void MsgThread::update()
void MsgThread::search(const std::string &searchWord)
{
- if(m_Mode == SearchMode)
+ if(m_Mode == SearchMode && m_pSearchList)
m_pSearchList->requestSearch(searchWord);
}