SettingsAFCreator::~SettingsAFCreator()
{
BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+ SPSC.autoFillCleared.disconnect_all_slots();
+
+ for (auto& it : genlistCallbackVector) {
+ unregisterCallbacksForEditfield(it->editfield);
+ evas_object_del(it->editfield);
+ unregisterCallbacksForEntry(it->entry);
+ evas_object_del(it->entry);
+ }
+
+ if (m_box)
+ evas_object_del(m_box);
+ if (m_scroller)
+ evas_object_del(m_scroller);
+}
+
+void SettingsAFCreator::unregisterCallbacksForEntry(Evas_Object* entry)
+{
+ evas_object_smart_callback_del(entry, "preedit,changed", __entry_changed_cb);
+ evas_object_smart_callback_del(entry, "changed", __entry_changed_cb);
+ evas_object_smart_callback_del(entry, "changed", __editfield_changed_cb);
+ evas_object_smart_callback_del(entry, "activated", __entry_next_key_cb);
+ evas_object_smart_callback_del(entry, "clicked", __entry_clicked_cb);
+ evas_object_smart_callback_del(entry, "activated", __done_button_cb);
+}
+
+void SettingsAFCreator::unregisterCallbacksForEditfield(Evas_Object* editfield)
+{
+ auto button(elm_object_part_content_get(editfield, "entry_clear_button"));
+ evas_object_smart_callback_del(button, "clicked", __entry_clear_button_clicked_cb);
}
bool SettingsAFCreator::loadProfile(void)
evas_object_smart_callback_add(m_emailItemCallbackData.entry, "activated", __done_button_cb, this);
elm_entry_input_panel_layout_set(m_emailItemCallbackData.entry, ELM_INPUT_PANEL_LAYOUT_EMAIL);
elm_entry_prediction_allow_set(m_emailItemCallbackData.entry, EINA_FALSE);
+
+ genlistCallbackVector.push_back(&m_fullNameItemCallbackData);
+ genlistCallbackVector.push_back(&m_companyNameItemCallbackData);
+ genlistCallbackVector.push_back(&m_addressLine1ItemCallbackData);
+ genlistCallbackVector.push_back(&m_addressLine2ItemCallbackData);
+ genlistCallbackVector.push_back(&m_cityTownItemCallbackData);
+ genlistCallbackVector.push_back(&m_countryItemCallbackData);
+ genlistCallbackVector.push_back(&m_postCodeItemCallbackData);
+ genlistCallbackVector.push_back(&m_countryRegionItemCallbackData);
+ genlistCallbackVector.push_back(&m_phoneItemCallbackData);
+ genlistCallbackVector.push_back(&m_emailItemCallbackData);
}
Evas_Object* SettingsAFCreator::createScroller(Evas_Object* parent)
static void __entry_clicked_cb(void* data, Evas_Object* obj, void* event_info);
static void __entry_clear_button_clicked_cb(void* data, Evas_Object* obj, void* event_info);
static void __editfield_changed_cb(void* data, Evas_Object* obj, void* event_info);
+ void unregisterCallbacksForEntry(Evas_Object* entry);
+ void unregisterCallbacksForEditfield(Evas_Object* editfield);
+
enum menu_type
{
profile_composer_title_full_name = 0,
genlistCallbackData m_countryRegionItemCallbackData;
genlistCallbackData m_phoneItemCallbackData;
genlistCallbackData m_emailItemCallbackData;
+
+ std::vector<genlistCallbackData*> genlistCallbackVector;
+
std::shared_ptr<AutoFillFormItem> m_item;
Ewk_Context* m_ewkContext;
bool m_profile_exists;
SettingsAdvanced::~SettingsAdvanced()
{
BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+ SPSC.settingsSaveContentRadioPopupPtr.disconnect_all_slots();
}
void SettingsAdvanced::updateButtonMap()
static_cast<SettingsDelPersDataOptions>(itd->id) == CACHE ||
static_cast<SettingsDelPersDataOptions>(itd->id) == COOKIES_AND_SITE) {
elm_check_state_set(check, EINA_TRUE);
- setOption(static_cast<SettingsDelPersDataOptions>(itd->id), true);
+ setOption(itd->id, true);
} else {
elm_check_state_set(check, EINA_FALSE);
- setOption(static_cast<SettingsDelPersDataOptions>(itd->id), false);
+ setOption(itd->id, false);
}
- setCheckboxes(static_cast<SettingsDelPersDataOptions>(itd->id), check);
return check;
}
} else {
elm_check_state_set(obj, value);
self->setOption(
- static_cast<SettingsDelPersDataOptions>(itd->id),
+ itd->id,
static_cast<bool>(value));
}
bool val = self->getOption(SELECT_ALL);
m_parent = parent;
}
-std::shared_ptr<SettingsUI> SettingsManager::getView(const SettingsMainOptions& s)
+std::shared_ptr<SettingsUI>& SettingsManager::getView(const SettingsMainOptions& s)
{
BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
return addView(s);
boost::bind(&SettingsManager::showSettingsAutofillCreatorUI, this, _1));
}
-std::shared_ptr<SettingsUI> SettingsManager::addView(const SettingsMainOptions& s)
+std::shared_ptr<SettingsUI>& SettingsManager::addView(const SettingsMainOptions& s)
{
BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+
if (m_settingsViews.find(s) == m_settingsViews.end()) {
switch (s) {
case BASE:
} else {
m_settingsViews[s]->updateButtonMap();
if (m_settingsViews[s]->getGenlist())
- elm_genlist_realized_items_update(m_settingsViews[s]->getGenlist());
+ elm_genlist_realized_items_update(m_settingsViews[s]->getGenlist());
}
return m_settingsViews[s];
}
SettingsManager();
~SettingsManager();
void init(Evas_Object* parent);
- SetPtr getView(const SettingsMainOptions& s);
+ SetPtr& getView(const SettingsMainOptions& s);
void connectOpenSignals();
- std::shared_ptr<SettingsUI> addView(const SettingsMainOptions& s);
+ std::shared_ptr<SettingsUI>& addView(const SettingsMainOptions& s);
std::string getName();
SetPtr operator[](const SettingsMainOptions& s){ return m_settingsViews[s];};
void showSettingsBaseUI();
B_SIG<void ()> settingsPrivacyClicked;
B_SIG<void ()> settingsDelPersDataClicked;
- B_SIG<void (const std::map<SettingsDelPersDataOptions, bool>&)> deleteSelectedDataClicked;
+ B_SIG<void (const std::map<int, bool>&)> deleteSelectedDataClicked;
B_SIG<void ()> closeSettingsUIClicked;
B_SIG<bool (const basic_webengine::WebEngineSettings&)>getWebEngineSettingsParam;
B_SIG<std::string (const basic_webengine::WebEngineSettings&)> getWebEngineSettingsParamString;
}
Elm_Gengrid_Item_Class* SettingsUI::createItemClass(
- const char* style,
- Elm_Gen_Item_Text_Get_Cb text_cb,
- Elm_Gen_Item_Content_Get_Cb con_cb)
+ const char* style,
+ Elm_Gen_Item_Text_Get_Cb text_cb,
+ Elm_Gen_Item_Content_Get_Cb con_cb)
{
auto ic = elm_genlist_item_class_new();
ic->item_style = style;
elm_genlist_item_class_free(m_setting_check_on_of_item_class);
if (m_setting_check_radio_item_class)
elm_genlist_item_class_free(m_setting_check_radio_item_class);
+
+ for (auto check : m_checkboxes)
+ evas_object_del(check.second);
+ for (auto radio : m_radios)
+ evas_object_del(radio);
+
+ if (m_genlist) {
+ evas_object_smart_callback_del(m_genlist, "language,changed", _language_changed);
+ evas_object_del(m_genlist);
+ }
+ if (m_settings_layout)
+ evas_object_del(m_settings_layout);
+ if (m_items_layout)
+ evas_object_del(m_items_layout);
+ if (m_layout)
+ evas_object_del(m_layout);
+ if (m_radio)
+ evas_object_del(m_radio);
}
void SettingsUI::init(Evas_Object* parent)
}
if (strcmp(part, "elm.swallow.end") == 0) {
auto itd = static_cast<ItemData*>(data);
- return itd->sui->createRadioButton(obj, itd);
+ auto radio = itd->sui->createRadioButton(obj, itd);
+ itd->sui->m_radios.push_back(radio);
+ return radio;
}
return nullptr;
}
return nullptr;
}
auto itd = static_cast<ItemData*>(data);
- if (strcmp(part, "elm.swallow.end") == 0)
- return itd->sui->createOnOffCheckBox(obj, itd);
+ if (strcmp(part, "elm.swallow.end") == 0) {
+ auto check = itd->sui->createOnOffCheckBox(obj, itd);
+ itd->sui->setCheckboxes(itd->id, check);
+ return check;
+ }
return nullptr;
}
Evas_Object* SettingsUI::_gengrid_item_content_normal_get(void* data, Evas_Object* obj, const char* part)
{
auto itd = static_cast<ItemData*>(data);
- if (strcmp(part, "elm.swallow.end") == 0)
- return itd->sui->createNormalCheckBox(obj, itd);
+ if (strcmp(part, "elm.swallow.end") == 0) {
+ auto check = itd->sui->createNormalCheckBox(obj, itd);
+ itd->sui->setCheckboxes(itd->id, check);
+ return check;
+ }
return nullptr;
}
}
Elm_Object_Item* SettingsUI::appendGenlist(
- Evas_Object* genlist,
- Elm_Gengrid_Item_Class* it_class,
- const void *data,
- Evas_Smart_Cb func)
+ Evas_Object* genlist,
+ Elm_Gengrid_Item_Class* it_class,
+ const void *data,
+ Evas_Smart_Cb func)
{
return elm_genlist_item_append(genlist, it_class, data, nullptr, ELM_GENLIST_ITEM_NONE, func, this);
}
Evas_Object* createSettingsMobilePage(Evas_Object* settings_layout);
Evas_Object* createMainView(Evas_Object* settings_layout);
Evas_Object* getGenlist() { return m_genlist; }
- std::map<SettingsDelPersDataOptions, bool> getOptions() const { return m_option; }
- bool getOption(const SettingsDelPersDataOptions& opt) const { return m_option.at(opt); }
- std::map<SettingsDelPersDataOptions, Evas_Object*> getCheckboxes() { return m_checkboxes; }
- void setOption(const SettingsDelPersDataOptions& option, bool value) { m_option[option] = value; }
- void setCheckboxes(const SettingsDelPersDataOptions& option, Evas_Object* check) { m_checkboxes[option] = check; }
+ std::map<int, bool> getOptions() const { return m_option; }
+ bool getOption(const int& opt) const { return m_option.at(opt); }
+ std::map<int, Evas_Object*> getCheckboxes() { return m_checkboxes; }
+ void setOption(const int& option, bool value) { m_option[option] = value; }
+ void setCheckboxes(const int& option, Evas_Object* check) { m_checkboxes[option] = check; }
Evas_Object* getRadioGroup() { return m_radio; }
private:
protected:
SharedNaviframeWrapper m_naviframe;
- Evas_Object* m_genlist;
std::string m_edjFilePath;
+ Evas_Object* m_genlist;
Evas_Object* m_settings_layout;
Evas_Object* m_items_layout;
Evas_Object* m_parent;
Evas_Object* m_layout;
+ Evas_Object* m_radio;
std::map<unsigned, ItemData> m_buttonsMap;
- std::map<SettingsDelPersDataOptions, bool> m_option;
- std::map<SettingsDelPersDataOptions,Evas_Object*> m_checkboxes;
+ std::map<int, bool> m_option;
+ std::map<int, Evas_Object*> m_checkboxes;
+ std::vector<Evas_Object*> m_radios;
std::map<int, Elm_Object_Item*> m_genlistItems;
- Evas_Object* m_radio;
Elm_Gengrid_Item_Class* m_setting_item_class;
Elm_Gengrid_Item_Class* m_setting_double_item_class;
Elm_Gengrid_Item_Class* m_setting_check_on_of_item_class;
initModelServices();
//Push first view to stack.
- pushViewToStack(m_webPageUI.get());
+ pushViewToStack(m_webPageUI);
// Register H/W back key callback
m_platformInputManager->registerHWKeyCallback(m_viewManager.getContent());
m_settingsManager =
std::dynamic_pointer_cast<SettingsManager, core::AbstractService>(
core::ServiceManager::getInstance().getService("org.tizen.browser.settingsui"));
- m_settingsUI = m_settingsManager->getView(SettingsMainOptions::BASE);
}));
auto futureBookmarkFlow(std::async(std::launch::async, [this](){
m_bookmarkFlowUI =
M_ASSERT(m_historyUI.get());
m_historyUI->init(viewManager);
- M_ASSERT(m_settingsUI.get());
- m_settingsUI->init(viewManager);
-
M_ASSERT(m_bookmarkFlowUI.get());
m_bookmarkFlowUI->init(viewManager);
m_certificateContents->init();
}
-void SimpleUI::pushViewToStack(interfaces::AbstractUIComponent* view)
+void SimpleUI::pushViewToStack(const sAUI& view)
{
m_viewManager.pushViewToStack(view);
enableManualRotation(isManualRotation(view));
enableManualRotation(isManualRotation(m_viewManager.topOfStack()));
}
-void SimpleUI::popStackTo(interfaces::AbstractUIComponent* view)
+void SimpleUI::popStackTo(const sAUI& view)
{
m_viewManager.popStackTo(view);
enableManualRotation(isManualRotation(view));
m_webPageUI->switchViewToQuickAccess(m_quickAccess->getContent());
m_webEngine->disconnectCurrentWebViewSignals();
- popStackTo(m_webPageUI.get());
+ popStackTo(m_webPageUI);
}
void SimpleUI::openNewTab(const std::string &uri, const std::string& title,
{
BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
if (m_webPageUI) {
- popStackTo(m_webPageUI.get());
+ popStackTo(m_webPageUI);
if (tabsCount() == 0 || m_webPageUI->stateEquals(WPUState::QUICK_ACCESS))
openNewTab(url, title, boost::none, desktopMode, basic_webengine::TabOrigin::QUICKACCESS);
else {
m_webPageUI->getURIEntry().clearFocus();
closeBookmarkManagerUI();
}
- popStackTo(m_webPageUI.get());
+ popStackTo(m_webPageUI);
}
}
m_bookmarkFlowUI->setState(true);
m_bookmarkFlowUI->setTitle(bookmarkItem->getTitle());
m_bookmarkFlowUI->setFolder(m_favoriteService->getBookmarkItem(bookmarkItem->getParent()));
- pushViewToStack(m_bookmarkFlowUI.get());
+ pushViewToStack(m_bookmarkFlowUI);
}
}
return;
}
services::SharedBookmarkItem folder = m_favoriteService->addFolder(folder_name, parent);
- if (m_viewManager.topOfStack() == m_bookmarkManagerUI.get())
+ if (m_viewManager.topOfStack() == m_bookmarkManagerUI)
m_bookmarkManagerUI->addBookmarkItemCurrentFolder(folder);
}
BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
m_favoriteService->editBookmark(item->getId(), "", newName, item->getParent());
services::SharedBookmarkItem parentItem = m_favoriteService->getBookmarkItem(item->getParent());
- if (m_viewManager.topOfStack() == m_bookmarkManagerUI.get())
+ if (m_viewManager.topOfStack() == m_bookmarkManagerUI)
m_bookmarkManagerUI->addBookmarkItems(nullptr, m_favoriteService->getAllBookmarkItems(parentItem->getId()));
}
return;
} else if (m_popupVector.size() > 0) {
m_popupVector.back()->onBackPressed();
- } else if (m_viewManager.topOfStack() == m_bookmarkManagerUI.get()) {
+ } else if (m_viewManager.topOfStack() == m_bookmarkManagerUI) {
m_bookmarkManagerUI->onBackPressed();
- } else if (m_viewManager.topOfStack() == m_webPageUI->getQuickAccessEditUI().get()) {
+ } else if (m_viewManager.topOfStack() == m_webPageUI->getQuickAccessEditUI()) {
m_webPageUI->getQuickAccessEditUI()->backPressed();
} else if (m_viewManager.topOfStack() == nullptr) {
switchViewToQuickAccess();
- } else if ((m_viewManager.topOfStack() == m_webPageUI.get())) {
+ } else if ((m_viewManager.topOfStack() == m_webPageUI)) {
if (m_webPageUI->stateEquals(WPUState::QUICK_ACCESS)) {
if (m_quickAccess->canBeBacked(m_webEngine->tabsCount())) {
m_quickAccess->backButtonClicked();
} else {
m_webEngine->backButtonClicked();
}
- } else if (m_viewManager.topOfStack() == m_settingsUI.get()) {
+ } else if (m_viewManager.topOfStack() == m_settingsUI) {
closeSettingsUI();
} else {
popTheStack();
void SimpleUI::onMenuButtonPressed()
{
BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
- interfaces::AbstractContextMenu *view = dynamic_cast<interfaces::AbstractContextMenu*>(m_viewManager.topOfStack());
+ auto view = dynamic_cast<interfaces::AbstractContextMenu*>(m_viewManager.topOfStack().get());
if (view)
view->showContextMenu();
}
-bool SimpleUI::isManualRotation(interfaces::AbstractUIComponent* view)
+bool SimpleUI::isManualRotation(const sAUI& view)
{
- WebPageUI *webPageUI = dynamic_cast<WebPageUI *>(view);
+ WebPageUI *webPageUI = dynamic_cast<WebPageUI*>(view.get());
return (webPageUI && webPageUI->stateEquals(WPUState::MAIN_WEB_PAGE));
}
m_current_angle = m_temp_angle;
m_webEngine->orientationChanged();
if (!m_manualRotation) {
- m_bookmarkFlowUI->orientationChanged();
- m_settingsUI->orientationChanged();
- m_bookmarkManagerUI->orientationChanged();
- m_webPageUI->orientationChanged();
- m_tabUI->orientationChanged();
+ if (m_bookmarkFlowUI)
+ m_bookmarkFlowUI->orientationChanged();
+ if (m_settingsUI)
+ m_settingsUI->orientationChanged();
+ if (m_bookmarkManagerUI)
+ m_bookmarkManagerUI->orientationChanged();
+ if (m_webPageUI)
+ m_webPageUI->orientationChanged();
+ if (m_tabUI)
+ m_tabUI->orientationChanged();
if (!m_popupVector.empty())
m_popupVector.back()->orientationChanged();
void SimpleUI::showTabUI()
{
BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
- pushViewToStack(m_tabUI.get());
+ pushViewToStack(m_tabUI);
if (!m_webPageUI->stateEquals(WPUState::QUICK_ACCESS) &&
m_webEngine->tabsCount() > 0 &&
void SimpleUI::closeTabUI()
{
BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
- if (m_viewManager.topOfStack() == m_tabUI.get())
+ if (m_viewManager.topOfStack() == m_tabUI)
popTheStack();
}
{
BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
switchToTab(tabId);
- popStackTo(m_webPageUI.get());
+ popStackTo(m_webPageUI);
}
void SimpleUI::closeTabsClicked(const tizen_browser::basic_webengine::TabId& tabId)
void SimpleUI::closeHistoryUI()
{
BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
- if (m_viewManager.topOfStack() == m_historyUI.get())
+ if (m_viewManager.topOfStack() == m_historyUI)
popTheStack();
}
BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
m_settingsManager->init(m_viewManager.getContent());
m_settingsUI = m_settingsManager->getView(static_cast<SettingsMainOptions>(s));
- pushViewToStack(m_settingsUI.get());
+ pushViewToStack(m_settingsUI);
}
void SimpleUI::closeSettingsUI()
BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
if (!m_webPageUI->stateEquals(WPUState::QUICK_ACCESS)) {
m_webEngine->switchToMobileMode();
- popStackTo(m_webPageUI.get());
+ popStackTo(m_webPageUI);
m_webEngine->reload();
} else {
m_quickAccess->setDesktopMode(false);
{
BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
m_quickAccess->editQuickAccess();
- pushViewToStack(m_webPageUI->getQuickAccessEditUI().get());
+ pushViewToStack(m_webPageUI->getQuickAccessEditUI());
}
void SimpleUI::deleteMostVisited()
{
BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
m_quickAccess->deleteMostVisited();
- pushViewToStack(m_webPageUI->getQuickAccessEditUI().get());
+ pushViewToStack(m_webPageUI->getQuickAccessEditUI());
}
void SimpleUI::addQuickAccess()
m_bookmarkFlowUI->setFolder(m_favoriteService->getRoot());
}
- pushViewToStack(m_bookmarkFlowUI.get());
+ pushViewToStack(m_bookmarkFlowUI);
}
void SimpleUI::closeBookmarkFlowUI()
{
BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
- if (m_viewManager.topOfStack() == m_bookmarkFlowUI.get())
+ if (m_viewManager.topOfStack() == m_bookmarkFlowUI)
popTheStack();
}
{
BROWSER_LOGD("[%s:%d]", __PRETTY_FUNCTION__, __LINE__);
m_bookmarkManagerUI->setState(state);
- pushViewToStack(m_bookmarkManagerUI.get());
+ pushViewToStack(m_bookmarkManagerUI);
m_bookmarkManagerUI->addBookmarkItems(parent,
m_favoriteService->getAllBookmarkItems(parent->getId()));
}
stateString.erase(it, Translations::CurrentPage.length());
}
auto url = m_webPageUI->getURIEntry().rewriteURI(stateString);
- popStackTo(m_webPageUI.get());
+ popStackTo(m_webPageUI);
openNewTab(url);
}
void SimpleUI::closeBookmarkManagerUI()
{
BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
- if (m_viewManager.topOfStack() == m_bookmarkManagerUI.get())
+ if (m_viewManager.topOfStack() == m_bookmarkManagerUI)
popTheStack();
}
-void SimpleUI::settingsDeleteSelectedData(const std::map<SettingsDelPersDataOptions, bool>& options)
+void SimpleUI::settingsDeleteSelectedData(const std::map<int, bool>& options)
{
BROWSER_LOGD("[%s]: Deleting selected data", __func__);
M_ASSERT(m_viewManager);
}
}
-void SimpleUI::onDeleteSelectedDataButton(const PopupButtons& button, const std::map<SettingsDelPersDataOptions, bool>& options)
+void SimpleUI::onDeleteSelectedDataButton(const PopupButtons& button, const std::map<int, bool>& options)
{
BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
if (button == OK) {
{
int tabs = m_webEngine->tabsCount();
BROWSER_LOGD("[%s] Opened tabs: %d", __func__, tabs);
- if (m_viewManager.topOfStack() == m_webPageUI.get()) {
+ if (m_viewManager.topOfStack() == m_webPageUI) {
if (tabs == 0) {
switchViewToQuickAccess();
} else if (!m_webPageUI->stateEquals(WPUState::QUICK_ACCESS)) {
void SimpleUI::showPasswordUI()
{
BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
- pushViewToStack(&(m_tabUI->getPasswordUI()));
+ pushViewToStack(sAUI(&m_tabUI->getPasswordUI()));
}
void SimpleUI::closeTopView()
void initModelServices();
void initUIServices();
void connectModelSignals();
- void pushViewToStack(interfaces::AbstractUIComponent* view);
+ void pushViewToStack(const sAUI& view);
void popTheStack();
- void popStackTo(interfaces::AbstractUIComponent* view);
+ void popStackTo(const sAUI& view);
void faviconChanged(tools::BrowserImagePtr favicon);
void restoreLastSession();
Evas_Object* createWebLayout(Evas_Object* parent);
void registerHWKeyCallback();
void unregisterHWKeyCallback();
- bool isManualRotation(interfaces::AbstractUIComponent* view);
+ bool isManualRotation(const sAUI& view);
void enableManualRotation(bool enable);
void rotatePrepared();
void onRotation();
void closeTab();
void closeTab(const tizen_browser::basic_webengine::TabId& id);
- void settingsDeleteSelectedData(const std::map<SettingsDelPersDataOptions, bool>& option);
+ void settingsDeleteSelectedData(const std::map<int, bool>& option);
void settingsResetMostVisited();
void settingsResetBrowser();
- void onDeleteSelectedDataButton(const PopupButtons& button, const std::map<SettingsDelPersDataOptions, bool>& options);
+ void onDeleteSelectedDataButton(const PopupButtons& button, const std::map<int, bool>& options);
void onDeleteMostVisitedButton(std::shared_ptr<PopupData> popupData);
void onResetBrowserButton(PopupButtons button, std::shared_ptr<PopupData> popupData);
void tabLimitPopupButtonClicked(PopupButtons button);
evas_object_del(m_mainLayout);
}
-void ViewManager::popStackTo(interfaces::AbstractUIComponent* view)
+void ViewManager::popStackTo(const sAUI& view)
{
BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
M_ASSERT(view);
- interfaces::AbstractUIComponent* previousView = m_viewStack.top();
+ sAUI previousView = m_viewStack.top();
while (!m_viewStack.empty() && m_viewStack.top() != view)
m_viewStack.pop();
updateLayout(previousView);
- BROWSER_LOGD("[%s:%d] new top: %p", __PRETTY_FUNCTION__, __LINE__, topOfStack());
+ BROWSER_LOGD("[%s:%d] new top: %p", __PRETTY_FUNCTION__, __LINE__, topOfStack().get());
}
void ViewManager::popTheStack()
{
BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
if (!m_viewStack.empty()) {
- interfaces::AbstractUIComponent* previousView = m_viewStack.top();
+ sAUI previousView = m_viewStack.top();
m_viewStack.pop();
updateLayout(previousView);
}
- BROWSER_LOGD("[%s:%d] new top: %p", __PRETTY_FUNCTION__, __LINE__, topOfStack());
+ BROWSER_LOGD("[%s:%d] new top: %p", __PRETTY_FUNCTION__, __LINE__, topOfStack().get());
}
-void ViewManager::pushViewToStack(interfaces::AbstractUIComponent* view)
+void ViewManager::pushViewToStack(const sAUI& view)
{
BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
if (topOfStack() == view) {
BROWSER_LOGD(
"[%s:%d] View %p is already on stack !!!",
- __PRETTY_FUNCTION__, __LINE__, view);
+ __PRETTY_FUNCTION__, __LINE__, view.get());
return;
}
- interfaces::AbstractUIComponent* previousView = topOfStack();
+ sAUI previousView = topOfStack();
m_viewStack.push(view);
updateLayout(previousView);
- BROWSER_LOGD("[%s:%d] new top: %p", __PRETTY_FUNCTION__, __LINE__, topOfStack());
+ BROWSER_LOGD("[%s:%d] new top: %p", __PRETTY_FUNCTION__, __LINE__, topOfStack().get());
}
-void ViewManager::updateLayout(interfaces::AbstractUIComponent* previousView)
+void ViewManager::updateLayout(const sAUI& previousView)
{
BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
Evas_Object* swallowed = elm_layout_content_get(m_mainLayout, "content");
return m_conformant;
}
-interfaces::AbstractUIComponent* ViewManager::topOfStack()
+sAUI& ViewManager::topOfStack()
{
+ static sAUI ret = sAUI(nullptr);
if (!m_viewStack.empty())
return m_viewStack.top();
- else
- return nullptr;
+ return ret;
}
namespace tizen_browser{
namespace base_ui{
+using AUI = interfaces::AbstractUIComponent;
+using sAUI = std::shared_ptr<AUI>;
/**
* @brief This class simplifies UI component management. It is a views stack.
*
* @param A view which stack should be popped to. Do not use nullptr.
*/
- void popStackTo(interfaces::AbstractUIComponent* view);
+ void popStackTo(const sAUI& view);
/**
* @brief Pops actual view from the stack, hides it and if there is any view
*
* @param View pushed to stack. Do not use nullptr.
*/
- void pushViewToStack(interfaces::AbstractUIComponent* view);
+ void pushViewToStack(const sAUI& view);
/**
* @brief Function returns elm layout used in view management. It's parent is
*
* @return actual dispalyed view
*/
- interfaces::AbstractUIComponent* topOfStack();
+ sAUI& topOfStack();
/**
* @brief Signal checks if browser is in landscape mode.
boost::signals2::signal<bool ()> isLandscape;
private:
- void updateLayout(interfaces::AbstractUIComponent* previousView);
+ void updateLayout(const sAUI& previousView);
private:
Evas_Object* m_mainLayout;
Evas_Object* m_conformant;
Evas_Object* m_parentWindow;
- std::stack<interfaces::AbstractUIComponent*> m_viewStack;
+ std::stack<sAUI> m_viewStack;
};
}//namespace base_ui