From cf77c87d050d6f9e22da1fa5f0c861f890b49a17 Mon Sep 17 00:00:00 2001 From: Janusz Majnert Date: Fri, 7 Aug 2015 12:01:38 +0200 Subject: [PATCH] Refactored MoreMenuUI service [Issue#] https://bugs.tizen.org/jira/browse/TT-72 [Problem] Lots of style fixes, several fixes for build warnings [Cause] n/a [Solution] Reformat code, fix casting and remove unused variables [Verify] 1. Check that there are no build problems caused by this change 2. Run the browser and explore the More Menu to see if nothing's broken List of changes: * tabs -> spaces * proper indentation * other minor style fixes * removing unused variables' declarations * renaming a few class members to better express their use * replacing reinterpret_Cast with static_cast where appropriate * adding null-checks in callback functions * replacing shared_ptr copy-assignments with make_shared Change-Id: I6a65bbcf9efaef42db955c689ba81673cb12e1fa --- services/MoreMenuUI/AddBookmarkPopup.cpp | 114 +++---- services/MoreMenuUI/AddBookmarkPopup.h | 4 +- services/MoreMenuUI/MoreMenuUI.cpp | 520 +++++++++++++++++-------------- services/MoreMenuUI/MoreMenuUI.h | 15 +- services/MoreMenuUI/NewFolderPopup.cpp | 33 +- services/MoreMenuUI/NewFolderPopup.h | 7 +- 6 files changed, 384 insertions(+), 309 deletions(-) diff --git a/services/MoreMenuUI/AddBookmarkPopup.cpp b/services/MoreMenuUI/AddBookmarkPopup.cpp index fea26c4..a455589 100644 --- a/services/MoreMenuUI/AddBookmarkPopup.cpp +++ b/services/MoreMenuUI/AddBookmarkPopup.cpp @@ -34,9 +34,9 @@ typedef struct _BookmarkFolderItemData AddBookmarkPopup::AddBookmarkPopup(Evas_Object* main_layout): + m_mainLayout(main_layout), m_popup(nullptr), m_gengrid(nullptr), - m_mainLayout(main_layout), m_itemClass(nullptr) { } @@ -47,15 +47,15 @@ AddBookmarkPopup::~AddBookmarkPopup () void AddBookmarkPopup::show() { BROWSER_LOGD("[%s],", __func__); - bm_edjFilePath = EDJE_DIR; - bm_edjFilePath.append("MoreMenuUI/AddBookmarkPopup.edj"); - elm_theme_extension_add(0, bm_edjFilePath.c_str()); + m_edjFilePath = EDJE_DIR; + m_edjFilePath.append("MoreMenuUI/AddBookmarkPopup.edj"); + elm_theme_extension_add(0, m_edjFilePath.c_str()); m_popup = elm_layout_add(m_mainLayout); if (m_popup != nullptr) { elm_object_signal_emit(m_mainLayout, "elm,state,show", "elm"); - elm_layout_file_set(m_popup, bm_edjFilePath.c_str(), "bookmark_popup"); - BROWSER_LOGI("PATH: %s", bm_edjFilePath.c_str()); + elm_layout_file_set(m_popup, m_edjFilePath.c_str(), "bookmark_popup"); + BROWSER_LOGI("PATH: %s", m_edjFilePath.c_str()); m_gengrid = elm_gengrid_add(m_popup); @@ -175,7 +175,7 @@ char* AddBookmarkPopup::_grid_text_get(void *data, Evas_Object *, const char *pa static const char* part_name = "page_title"; static const int part_len = strlen(part_name); - BookmarkFolderItemData *itemData = reinterpret_cast(data); + BookmarkFolderItemData *itemData = static_cast(data); if (!strncmp(part, part_name, part_len)) { if(itemData->item) return strdup(itemData->item->getTittle().c_str()); @@ -186,17 +186,9 @@ char* AddBookmarkPopup::_grid_text_get(void *data, Evas_Object *, const char *pa const char* AddBookmarkPopup::getImageFileNameForType(int index, bool focused) { - static char* file_name = ""; - if (index == 1) - { - if (focused) - { - file_name = "btn_bar_new_foc.png"; - } - else - { - file_name = "btn_bar_new_nor.png"; - } + static const char *file_name = ""; + if (index == 1) { + file_name = focused ? "btn_bar_new_foc.png" : "btn_bar_new_nor.png"; } return file_name; } @@ -206,7 +198,7 @@ Evas_Object * AddBookmarkPopup::_grid_content_get(void *data, Evas_Object *obj, BROWSER_LOGD("%s:%d %s part=%s", __FILE__, __LINE__, __func__, part); if ((data != nullptr) && (obj != nullptr) && (part != nullptr)) { - BookmarkFolderItemData *itemData = reinterpret_cast(data); + BookmarkFolderItemData *itemData = static_cast(data); static const char* part1_name = "elm.thumbnail"; static const char* part2_name = "elm.thumbButton"; @@ -220,7 +212,7 @@ Evas_Object * AddBookmarkPopup::_grid_content_get(void *data, Evas_Object *obj, BROWSER_LOGD("%s:%d %s file=%s", __FILE__, __LINE__, __func__, file_name); if (thumb_nail != nullptr) { - elm_image_file_set(thumb_nail, itemData->addBookmarkPopup->bm_edjFilePath.c_str(), file_name); + elm_image_file_set(thumb_nail, itemData->addBookmarkPopup->m_edjFilePath.c_str(), file_name); } return thumb_nail; } @@ -251,7 +243,7 @@ void AddBookmarkPopup::__cb_mouse_in(void * data, Evas *, Evas_Object *obj, void if ((data != nullptr) && (obj != nullptr)) { elm_object_focus_set(obj, EINA_TRUE); - BookmarkFolderItemData *itemData = reinterpret_cast(data); + BookmarkFolderItemData *itemData = static_cast(data); const char* file_name = getImageFileNameForType(itemData->index, true); Elm_Object_Item * selected = itemData->addBookmarkPopup->m_map_bookmark_folder_views["new_folder_button"]; @@ -260,46 +252,54 @@ void AddBookmarkPopup::__cb_mouse_in(void * data, Evas *, Evas_Object *obj, void Evas_Object *thumb_nail = elm_object_item_part_content_get(selected, "elm.thumbnail"); if (thumb_nail != nullptr) { - elm_image_file_set(thumb_nail, itemData->addBookmarkPopup->bm_edjFilePath.c_str(), file_name); + elm_image_file_set(thumb_nail, itemData->addBookmarkPopup->m_edjFilePath.c_str(), file_name); } } } } -void AddBookmarkPopup::__cb_mouse_out(void * data, Evas *e, Evas_Object *obj, void *event_info) +void AddBookmarkPopup::__cb_mouse_out(void * data, Evas *, Evas_Object *obj, void* ) { BROWSER_LOGD("[%s:%d]", __PRETTY_FUNCTION__, __LINE__); - BookmarkFolderItemData *itemData = reinterpret_cast(data); - elm_object_focus_set(obj, EINA_FALSE); - const char* file_name = getImageFileNameForType(itemData->index, false); - Elm_Object_Item * selected = itemData->addBookmarkPopup->m_map_bookmark_folder_views["new_folder_button"]; - Evas_Object *thumb_nail = elm_object_item_part_content_get(selected, "elm.thumbnail"); - elm_image_file_set(thumb_nail, itemData->addBookmarkPopup->bm_edjFilePath.c_str(), file_name); + if (data && obj){ + BookmarkFolderItemData *itemData = static_cast(data); + elm_object_focus_set(obj, EINA_FALSE); + const char* file_name = getImageFileNameForType(itemData->index, false); + Elm_Object_Item * selected = itemData->addBookmarkPopup->m_map_bookmark_folder_views["new_folder_button"]; + Evas_Object *thumb_nail = elm_object_item_part_content_get(selected, "elm.thumbnail"); + elm_image_file_set(thumb_nail, itemData->addBookmarkPopup->m_edjFilePath.c_str(), file_name); + } } -void AddBookmarkPopup::_itemSelected(void * data, Evas_Object * /* obj */, void * event_info) -{ - BROWSER_LOGD("%s:%d %s", __FILE__, __LINE__, __func__); - /*Elm_Object_Item * selected = reinterpret_cast(event_info); - HistoryItemData * itemData = reinterpret_cast(elm_object_item_data_get(selected)); - AddBookmarkPopup * self = reinterpret_cast(data); - - self->bookmarkClicked(itemData->item);*/ -} +//void AddBookmarkPopup::_itemSelected(void* , Evas_Object* , void*) +//{ +// BROWSER_LOGD("%s:%d %s", __FILE__, __LINE__, __func__); +// if (data && event_info) { +// Elm_Object_Item * selected = static_cast(event_info); +// HistoryItemData * itemData = static_cast(elm_object_item_data_get(selected)); +// AddBookmarkPopup * self = static_cast(data); +// +// self->bookmarkClicked(itemData->item); +// } +//} -void AddBookmarkPopup::_newFolderButton(void * data, Evas_Object * /* obj */, void * /* event_info */) +void AddBookmarkPopup::_newFolderButton(void* data, Evas_Object*, void*) { BROWSER_LOGD("%s:%d %s", __FILE__, __LINE__, __func__); - BookmarkFolderItemData * itemData = reinterpret_cast(data); - itemData->addBookmarkPopup->addNewFolderClicked(std::string()); + if (data) { + BookmarkFolderItemData * itemData = static_cast(data); + itemData->addBookmarkPopup->addNewFolderClicked(std::string()); + } } -void AddBookmarkPopup::_thumbSelected(void * data, Evas_Object * /* obj */, void * /* event_info */) +void AddBookmarkPopup::_thumbSelected(void* data, Evas_Object*, void*) { BROWSER_LOGD("%s:%d %s", __FILE__, __LINE__, __func__); - BookmarkFolderItemData * itemData = reinterpret_cast(data); - itemData->addBookmarkPopup->folderSelected(itemData->item->getId()); + if (data) { + BookmarkFolderItemData * itemData = static_cast(data); + itemData->addBookmarkPopup->folderSelected(itemData->item->getId()); + } } void AddBookmarkPopup::clearItems() @@ -307,7 +307,7 @@ void AddBookmarkPopup::clearItems() BROWSER_LOGD("%s:%d %s", __FILE__, __LINE__, __func__); elm_gengrid_clear(m_gengrid); m_map_bookmark_folder_views.clear(); - elm_theme_extension_del(nullptr, bm_edjFilePath.c_str()); + elm_theme_extension_del(nullptr, m_edjFilePath.c_str()); elm_theme_full_flush(); elm_cache_all_flush(); } @@ -320,24 +320,28 @@ void AddBookmarkPopup::updateGengrid() m_map_bookmark_folder_views.clear(); } -void AddBookmarkPopup::focusItem(void* /*data*/, Evas_Object* /*obj*/, void* event_info) +void AddBookmarkPopup::focusItem(void*, Evas_Object*, void* event_info) { BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__); - Elm_Object_Item *item = reinterpret_cast(event_info); - elm_object_item_signal_emit( item, "mouse,in", "over2"); + if (event_info) { + Elm_Object_Item *item = static_cast(event_info); + elm_object_item_signal_emit(item, "mouse,in", "over2"); - // selected manually - elm_gengrid_item_selected_set(item, EINA_TRUE); + // selected manually + elm_gengrid_item_selected_set(item, EINA_TRUE); + } } -void AddBookmarkPopup::unFocusItem(void* /*data*/, Evas_Object* /*obj*/, void* event_info) +void AddBookmarkPopup::unFocusItem(void*, Evas_Object*, void* event_info) { BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__); - Elm_Object_Item *item = reinterpret_cast(event_info); - elm_object_item_signal_emit( item, "mouse,out", "over2"); + if (event_info) { + Elm_Object_Item *item = static_cast(event_info); + elm_object_item_signal_emit(item, "mouse,out", "over2"); - // unselected manually - elm_gengrid_item_selected_set(item, EINA_FALSE); + // unselected manually + elm_gengrid_item_selected_set(item, EINA_FALSE); + } } } diff --git a/services/MoreMenuUI/AddBookmarkPopup.h b/services/MoreMenuUI/AddBookmarkPopup.h index 62d86e7..bce7ada 100644 --- a/services/MoreMenuUI/AddBookmarkPopup.h +++ b/services/MoreMenuUI/AddBookmarkPopup.h @@ -39,7 +39,7 @@ public: private: static char* _grid_text_get(void *data, Evas_Object *, const char *part); static Evas_Object * _grid_content_get(void *data, Evas_Object *obj, const char *part); - static void _itemSelected(void * data, Evas_Object * obj, void * event_info); + //static void _itemSelected(void * data, Evas_Object * obj, void * event_info); static void _thumbSelected(void * data, Evas_Object * obj, void * event_info); static void _newFolderButton(void *data, Evas_Object *obj, void *event_info); static Evas_Object* listItemContentGet(void *data, Evas_Object *obj, const char *part); @@ -56,7 +56,7 @@ private: Elm_Gengrid_Item_Class * m_itemClass; std::map m_map_bookmark_folder_views; - std::string bm_edjFilePath; + std::string m_edjFilePath; bool m_gengridSetup; static void __cb_mouse_in(void *data, Evas *e, Evas_Object *obj, void *event_info); diff --git a/services/MoreMenuUI/MoreMenuUI.cpp b/services/MoreMenuUI/MoreMenuUI.cpp index 492f3ea..0a61323 100644 --- a/services/MoreMenuUI/MoreMenuUI.cpp +++ b/services/MoreMenuUI/MoreMenuUI.cpp @@ -40,8 +40,8 @@ struct ItemData{ typedef struct _MoreItemData { - ItemType item; - std::shared_ptr moreMenuUI; + ItemType item; + std::shared_ptr moreMenuUI; } MoreMenuItemData; MoreMenuUI::MoreMenuUI() @@ -50,8 +50,8 @@ MoreMenuUI::MoreMenuUI() , m_item_class(NULL) { BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__); - edjFilePath = EDJE_DIR; - edjFilePath.append("MoreMenuUI/MoreMenu.edj"); + m_edjFilePath = EDJE_DIR; + m_edjFilePath.append("MoreMenuUI/MoreMenu.edj"); } MoreMenuUI::~MoreMenuUI() @@ -62,9 +62,9 @@ void MoreMenuUI::show(Evas_Object* parent) { BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__); m_parent = parent; - elm_theme_extension_add(NULL, edjFilePath.c_str()); + elm_theme_extension_add(NULL, m_edjFilePath.c_str()); m_mm_layout = elm_layout_add(parent); - elm_layout_file_set(m_mm_layout, edjFilePath.c_str(), "moremenu-layout"); + elm_layout_file_set(m_mm_layout, m_edjFilePath.c_str(), "moremenu-layout"); evas_object_size_hint_weight_set(m_mm_layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_size_hint_align_set(m_mm_layout, EVAS_HINT_FILL, EVAS_HINT_FILL); evas_object_show(m_mm_layout); @@ -101,7 +101,7 @@ void MoreMenuUI::show(Evas_Object* parent) void MoreMenuUI::showCurrentTab(const std::shared_ptr item) { BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__); - elm_theme_extension_add(NULL, edjFilePath.c_str()); + elm_theme_extension_add(NULL, m_edjFilePath.c_str()); m_genList = elm_genlist_add(m_mm_layout); elm_object_part_content_set(m_mm_layout, "elm.swallow.genlist", m_genList); elm_genlist_homogeneous_set(m_genList, EINA_FALSE); @@ -125,12 +125,12 @@ void MoreMenuUI::showCurrentTab(const std::shared_ptrm_moreMenu = this; id->h_item = item ? item.get() : NULL; Elm_Object_Item* elmItem = elm_genlist_item_append(m_genList, //genlist - m_itemClass, //item Class + m_itemClass, //item Class id, - NULL, //parent item - ELM_GENLIST_ITEM_NONE, //item type + NULL, //parent item + ELM_GENLIST_ITEM_NONE, //item type NULL, - NULL //data passed to above function + NULL //data passed to above function ); id->e_item = elmItem; BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__); @@ -139,114 +139,133 @@ void MoreMenuUI::showCurrentTab(const std::shared_ptr(data); - if(!strcmp(part, "favicon") && id->h_item && id->h_item->getFavIcon()) - { - // Currently favicon is not getting fetched from the engine, so we are showing Google's favicon by default. - Evas_Object* thumb_nail = elm_icon_add(obj); - const char* file_name = "favicon.png"; - elm_image_file_set(thumb_nail, id->m_moreMenu->edjFilePath.c_str(), file_name); - return thumb_nail; - //return tizen_browser::tools::EflTools::getEvasImage(id->h_item->getFavIcon(), obj); - } - else if(!strcmp(part, "star_click")) - { - Evas_Object *star_click = elm_button_add(obj); - elm_object_style_set(star_click, "hidden_button"); - evas_object_smart_callback_add(star_click, "clicked", MoreMenuUI::star_clicked_cb, id); - return star_click; - } - else if(!strcmp(part, "close_click")) - { - Evas_Object *close_click = elm_button_add(obj); - elm_object_style_set(close_click, "hidden_button"); - evas_object_smart_callback_add(close_click, "clicked", MoreMenuUI::close_clicked_cb, id); - return close_click; + if (data && obj && part) { + ItemData * id = static_cast(data); + const char *part_name1 = "favicon"; + static const int part_name1_len = strlen(part_name1); + const char *part_name2 = "star_click"; + static const int part_name2_len =strlen(part_name2); + const char *part_name3 = "close_click"; + static const int part_name3_len = strlen(part_name3); + + if (!strncmp(part_name1, part, part_name1_len) && id->h_item && id->h_item->getFavIcon()) { + // Currently favicon is not getting fetched from the engine, + // so we are showing Google's favicon by default. + Evas_Object *thumb_nail = elm_icon_add(obj); + const char *file_name = "favicon.png"; + elm_image_file_set(thumb_nail, id->m_moreMenu->m_edjFilePath.c_str(), file_name); + return thumb_nail; + //return tizen_browser::tools::EflTools::getEvasImage(id->h_item->getFavIcon(), obj); + } + + if (!strncmp(part_name2, part, part_name2_len)) { + Evas_Object *star_click = elm_button_add(obj); + elm_object_style_set(star_click, "hidden_button"); + evas_object_smart_callback_add(star_click, "clicked", MoreMenuUI::star_clicked_cb, id); + return star_click; + } + + if (!strncmp(part_name3, part, part_name3_len)) { + Evas_Object *close_click = elm_button_add(obj); + elm_object_style_set(close_click, "hidden_button"); + evas_object_smart_callback_add(close_click, "clicked", MoreMenuUI::close_clicked_cb, id); + return close_click; + } } return NULL; } -void MoreMenuUI::item_clicked_cb(void* data, Evas_Object* /* obj */, void* /* event_info */) -{ - BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__); -} - -void MoreMenuUI::star_clicked_cb(void* data, Evas_Object* /* obj */, void* /* event_info */) +void MoreMenuUI::star_clicked_cb(void* data, Evas_Object*, void*) { BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__); - ItemData * id = static_cast(data); - id->m_moreMenu->AddBookmarkPopupCalled(); + if (data) { + ItemData * id = static_cast(data); + id->m_moreMenu->AddBookmarkPopupCalled(); + } } void MoreMenuUI::AddBookmarkPopupCalled() -{ //m_map_bookmark_folder_list.clear(); - popup = std::shared_ptr (new AddBookmarkPopup(m_mm_layout)); - popup->show(); - popup->addBookmarkFolderItems(m_map_bookmark_folder_list); - popup->folderSelected.disconnect_all_slots(); - popup->folderSelected.connect(boost::bind(&MoreMenuUI::addToBookmarks, this, _1)); - popup->addNewFolderClicked.disconnect_all_slots(); - popup->addNewFolderClicked.connect(boost::bind(&MoreMenuUI::newFolderPopup, this,_1)); +{ + m_add_bookmark_popup = std::make_shared(m_mm_layout); + m_add_bookmark_popup->show(); + m_add_bookmark_popup->addBookmarkFolderItems(m_map_bookmark_folder_list); + m_add_bookmark_popup->folderSelected.disconnect_all_slots(); + m_add_bookmark_popup->folderSelected.connect(boost::bind(&MoreMenuUI::addToBookmarks, this, _1)); + m_add_bookmark_popup->addNewFolderClicked.disconnect_all_slots(); + m_add_bookmark_popup->addNewFolderClicked.connect(boost::bind(&MoreMenuUI::newFolderPopup, this,_1)); } void MoreMenuUI::newFolderPopup(std::string) { - BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__); - m_popup = std::shared_ptr (new NewFolderPopup(m_mm_layout, NULL,"Add New Folder for adding to Bookmark","New Folder","Add to bookmark","Cancel")); - m_popup->on_ok.disconnect_all_slots(); - m_popup->on_ok.connect(boost::bind(&MoreMenuUI::NewFolderCreate, this, _1)); - m_popup->on_cancel.disconnect_all_slots(); - m_popup->on_cancel.connect(boost::bind(&MoreMenuUI::CancelClicked, this, _1)); - popup->hide(); - m_popup->show(); + BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__); + m_new_folder_popup = + std::make_shared(m_mm_layout + , nullptr + , "Add New Folder for adding to Bookmark" + , "New Folder" + , "Add to bookmark" + , "Cancel"); + m_new_folder_popup->on_ok.disconnect_all_slots(); + m_new_folder_popup->on_ok.connect(boost::bind(&MoreMenuUI::NewFolderCreate, this, _1)); + m_new_folder_popup->on_cancel.disconnect_all_slots(); + m_new_folder_popup->on_cancel.connect(boost::bind(&MoreMenuUI::CancelClicked, this, _1)); + m_add_bookmark_popup->hide(); + m_new_folder_popup->show(); } -void MoreMenuUI::NewFolderCreate(Evas_Object * popup_content) +void MoreMenuUI::NewFolderCreate(Evas_Object* popup_content) { BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__); - m_folderName = elm_entry_entry_get(popup_content); - BookmarkFolderCreated(m_folderName.c_str(), 0,0); - m_popup->hide(); + if (popup_content) { + m_folderName = elm_entry_entry_get(popup_content); + BookmarkFolderCreated(m_folderName.c_str(), 0,0); + m_new_folder_popup->hide(); + } } -void MoreMenuUI::CancelClicked(Evas_Object * popup) +void MoreMenuUI::CancelClicked(Evas_Object*) { BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__); - m_popup->hide(); + m_new_folder_popup->hide(); } void MoreMenuUI::addToBookmarks(int folder_id) { AddBookmarkInput(folder_id); BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__); - popup->hide(); - popup.reset(); + m_add_bookmark_popup->hide(); + m_add_bookmark_popup.reset(); } -void MoreMenuUI::close_clicked_cb(void* data, Evas_Object* /* obj */, void* /* event_info */) +void MoreMenuUI::close_clicked_cb(void* data, Evas_Object*, void*) { BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__); - ItemData * id = static_cast(data); - id->m_moreMenu->closeMoreMenuClicked(std::string()); - id->m_moreMenu->clearItems(); + if (data) { + ItemData * id = static_cast(data); + id->m_moreMenu->closeMoreMenuClicked(std::string()); + id->m_moreMenu->clearItems(); + } } -char* MoreMenuUI::listItemTextGet(void* data, Evas_Object* /* obj */, const char* part) +char* MoreMenuUI::listItemTextGet(void* data, Evas_Object*, const char* part) { BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__); - ItemData * id = static_cast(data); - if(!strcmp(part, "webpage_title")) - { - if(!id->h_item) - return strdup("New Tab"); - if(!id->h_item->getTitle().empty()){ + if (data && part) { + ItemData *id = static_cast(data); + const char *part_name1 = "webpage_title"; + static const int part_name1_len = strlen(part_name1); + const char *part_name2 = "webpage_url"; + static const int part_name2_len = strlen(part_name2); + + if (!strncmp(part_name1, part, part_name1_len)) { + if (!id->h_item) { + return strdup("New Tab"); + } return strdup(id->h_item->getTitle().c_str()); } - } - else if(!strcmp(part, "webpage_url")) - { - if(!id->h_item) - return strdup(""); - if(!id->h_item->getUrl().empty()){ + + if (!strncmp(part_name2, part, part_name2_len)) { + if(!id->h_item) + return strdup(""); return strdup(id->h_item->getUrl().c_str()); } } @@ -255,166 +274,194 @@ char* MoreMenuUI::listItemTextGet(void* data, Evas_Object* /* obj */, const char void MoreMenuUI::hide() { - evas_object_hide(elm_layout_content_get(m_mm_layout, "elm.swallow.grid")); - evas_object_hide(elm_layout_content_get(m_mm_layout, "elm.swallow.genlist")); - evas_object_hide(m_mm_layout); + evas_object_hide(elm_layout_content_get(m_mm_layout, "elm.swallow.grid")); + evas_object_hide(elm_layout_content_get(m_mm_layout, "elm.swallow.genlist")); + evas_object_hide(m_mm_layout); } void MoreMenuUI::addItems() { - BROWSER_LOGD("%s:%d %s", __FILE__, __LINE__, __func__); - for (size_t i = 0; i < 10; i++) { - MoreMenuItemData *itemData = new MoreMenuItemData(); - itemData->item = static_cast(i);; - itemData->moreMenuUI = std::shared_ptr(this); - Elm_Object_Item* bookmarkView = elm_gengrid_item_append(m_gengrid, m_item_class, itemData, NULL, this); - m_map_menu_views.insert(std::pair(itemData->item, bookmarkView)); - elm_gengrid_item_selected_set(bookmarkView, EINA_FALSE); - } - BROWSER_LOGD("%s:%d %s", __FILE__, __LINE__, __func__); + BROWSER_LOGD("%s:%d %s", __FILE__, __LINE__, __func__); + for (size_t i = 0; i < 10; i++) { + MoreMenuItemData *itemData = new MoreMenuItemData(); + itemData->item = static_cast(i);; + itemData->moreMenuUI = std::shared_ptr(this); + Elm_Object_Item* bookmarkView = elm_gengrid_item_append(m_gengrid, m_item_class, itemData, NULL, this); + m_map_menu_views.insert(std::pair(itemData->item, bookmarkView)); + elm_gengrid_item_selected_set(bookmarkView, EINA_FALSE); + } + BROWSER_LOGD("%s:%d %s", __FILE__, __LINE__, __func__); } -char* MoreMenuUI::_grid_text_get(void *data, Evas_Object *obj, const char *part) +char* MoreMenuUI::_grid_text_get(void* data, Evas_Object*, const char* part) { - MoreMenuItemData *itemData = reinterpret_cast(data); - - BROWSER_LOGD("%s:%d %s part=%s", __FILE__, __LINE__, __func__, part); - if (!strcmp(part, "menu_label")) { - const char* item_name = NULL; - switch(itemData->item) { - case READER_MODE: - item_name = "Reader mode"; break; - case BOOKMARK_MANAGER: - item_name = "Bookmark manager"; break; - case HISTORY: - item_name = "History"; break; - case SCREEN_ZOOM: - item_name = "Screen zoom"; break; - case START_MINIBROWSER: - item_name = "Start minibrowser"; break; - case FOCUS_MODE: - item_name = "Focus mode"; break; - case VIEW_MOBILE_WEB: - item_name = "View mobile web"; break; - case SHARE: - item_name = "Share"; break; - case SETTINGS: - item_name = "Settings"; break; - case EXIT_BROWSER: - item_name = "Exit browser"; break; - default: - item_name = ""; - } - return strdup(item_name); - } - return NULL; + BROWSER_LOGD("%s:%d %s part=%s", __FILE__, __LINE__, __func__, part); + if (data && part) { + MoreMenuItemData *itemData = static_cast(data); + const char *part_name = "menu_label"; + static const int part_name_len = strlen(part_name); + + if (!strncmp(part_name, part, part_name_len)) { + const char* item_name = NULL; + switch (itemData->item) { + case READER_MODE: + item_name = "Reader mode"; + break; + case BOOKMARK_MANAGER: + item_name = "Bookmark manager"; + break; + case HISTORY: + item_name = "History"; + break; + case SCREEN_ZOOM: + item_name = "Screen zoom"; + break; + case START_MINIBROWSER: + item_name = "Start minibrowser"; + break; + case FOCUS_MODE: + item_name = "Focus mode"; + break; + case VIEW_MOBILE_WEB: + item_name = "View mobile web"; + break; + case SHARE: + item_name = "Share"; + break; + case SETTINGS: + item_name = "Settings"; + break; + case EXIT_BROWSER: + item_name = "Exit browser"; + break; + default: + item_name = ""; + } + return strdup(item_name); + } + } + return NULL; } static const char* getImageFileNameForType(ItemType type, bool focused) { - const char* file_name = NULL; - switch(type) { - case READER_MODE: - file_name = focused ? "ic_more_readermode_foc.png" : "ic_more_readermode_nor.png"; break; - case BOOKMARK_MANAGER: - file_name = focused ? "ic_more_bookmark_foc.png" : "ic_more_bookmark_nor.png"; break; - case HISTORY: - file_name = focused ? "ic_more_history_foc.png" : "ic_more_history_nor.png"; break; - case SCREEN_ZOOM: - file_name = focused ? "ic_more_zoom_foc.png" : "ic_more_zoom_nor.png"; break; - case START_MINIBROWSER: - file_name = focused ? "ic_more_minibrowser_foc.png" : "ic_more_minibrowser_nor.png"; break; - case FOCUS_MODE: - file_name = focused ? "ic_more_focusmode_foc.png" : "ic_more_focusmode_nor.png"; break; - case VIEW_MOBILE_WEB: - file_name = focused ? "ic_more_mobileview_foc.png" : "ic_more_mobileview_nor.png"; break; - case SHARE: - file_name = focused ? "ic_more_share_foc.png" : "ic_more_share_nor.png"; break; - case SETTINGS: - file_name = focused ? "ic_more_setting_foc.png" : "ic_more_setting_nor.png"; break; - case EXIT_BROWSER: - file_name = focused ? "ic_more_exit_foc.png" : "ic_more_exit_nor.png"; break; - default: - file_name = ""; - } - return file_name; + const char* file_name = NULL; + switch (type) { + case READER_MODE: + file_name = focused ? "ic_more_readermode_foc.png" : "ic_more_readermode_nor.png"; + break; + case BOOKMARK_MANAGER: + file_name = focused ? "ic_more_bookmark_foc.png" : "ic_more_bookmark_nor.png"; + break; + case HISTORY: + file_name = focused ? "ic_more_history_foc.png" : "ic_more_history_nor.png"; + break; + case SCREEN_ZOOM: + file_name = focused ? "ic_more_zoom_foc.png" : "ic_more_zoom_nor.png"; + break; + case START_MINIBROWSER: + file_name = focused ? "ic_more_minibrowser_foc.png" : "ic_more_minibrowser_nor.png"; + break; + case FOCUS_MODE: + file_name = focused ? "ic_more_focusmode_foc.png" : "ic_more_focusmode_nor.png"; + break; + case VIEW_MOBILE_WEB: + file_name = focused ? "ic_more_mobileview_foc.png" : "ic_more_mobileview_nor.png"; + break; + case SHARE: + file_name = focused ? "ic_more_share_foc.png" : "ic_more_share_nor.png"; + break; + case SETTINGS: + file_name = focused ? "ic_more_setting_foc.png" : "ic_more_setting_nor.png"; + break; + case EXIT_BROWSER: + file_name = focused ? "ic_more_exit_foc.png" : "ic_more_exit_nor.png"; + break; + default: + file_name = ""; + } + return file_name; } Evas_Object * MoreMenuUI::_grid_content_get(void *data, Evas_Object *obj, const char *part) { BROWSER_LOGD("%s:%d %s part=%s", __FILE__, __LINE__, __func__, part); - MoreMenuItemData *itemData = reinterpret_cast(data); + if (data && obj && part) { + MoreMenuItemData *itemData = static_cast(data); + const char *part_name1 = "thumbnail_item"; + static const int part_name1_len = strlen(part_name1); + const char *part_name2 = "thumbbutton_item"; + static const int part_name2_len = strlen(part_name2); + + if (!strncmp(part_name1, part, part_name1_len)) { + Evas_Object* thumb_nail = elm_icon_add(obj); + const char* file_name = getImageFileNameForType(itemData->item, false); + elm_image_file_set(thumb_nail, itemData->moreMenuUI->m_edjFilePath.c_str(), file_name); + return thumb_nail; + } - if (!strcmp(part, "thumbnail_item")) { - Evas_Object* thumb_nail = elm_icon_add(obj); - const char* file_name = getImageFileNameForType(itemData->item, false); - elm_image_file_set(thumb_nail, itemData->moreMenuUI->edjFilePath.c_str(), file_name); - return thumb_nail; - } - else if (!strcmp(part, "thumbbutton_item")) { - Evas_Object *thumbButton = elm_button_add(obj); - elm_object_style_set(thumbButton, "clickButton"); - evas_object_smart_callback_add(thumbButton, "clicked", tizen_browser::base_ui::MoreMenuUI::_thumbSelected, data); - evas_object_event_callback_add(thumbButton, EVAS_CALLBACK_MOUSE_IN, __cb_mouse_in, data); - evas_object_event_callback_add(thumbButton, EVAS_CALLBACK_MOUSE_OUT, __cb_mouse_out, data); - return thumbButton; + if (!strncmp(part_name2, part, part_name2_len)) { + Evas_Object *thumbButton = elm_button_add(obj); + elm_object_style_set(thumbButton, "clickButton"); + evas_object_smart_callback_add(thumbButton, "clicked", tizen_browser::base_ui::MoreMenuUI::_thumbSelected, data); + evas_object_event_callback_add(thumbButton, EVAS_CALLBACK_MOUSE_IN, __cb_mouse_in, data); + evas_object_event_callback_add(thumbButton, EVAS_CALLBACK_MOUSE_OUT, __cb_mouse_out, data); + return thumbButton; + } } return NULL; } -void MoreMenuUI::__cb_mouse_in(void * data, Evas *e, Evas_Object *obj, void *event_info) +void MoreMenuUI::__cb_mouse_in(void * data, Evas *, Evas_Object *obj, void *) { BROWSER_LOGD("[%s:%d]", __PRETTY_FUNCTION__, __LINE__); - elm_object_focus_set(obj, EINA_TRUE); - MoreMenuItemData *itemData = reinterpret_cast(data); - - const char* file_name = getImageFileNameForType(itemData->item, true); - Elm_Object_Item * selected = itemData->moreMenuUI->m_map_menu_views[itemData->item]; - Evas_Object *thumb_nail = elm_object_item_part_content_get(selected, "thumbnail_item"); - elm_image_file_set(thumb_nail, itemData->moreMenuUI->edjFilePath.c_str(), file_name); -} - -void MoreMenuUI::__cb_mouse_out(void * data, Evas *e, Evas_Object *obj, void *event_info) -{ - BROWSER_LOGD("[%s:%d]", __PRETTY_FUNCTION__, __LINE__); - MoreMenuItemData *itemData = reinterpret_cast(data); - elm_object_focus_set(obj, EINA_FALSE); - const char* file_name = getImageFileNameForType(itemData->item, false); - Elm_Object_Item * selected = itemData->moreMenuUI->m_map_menu_views[itemData->item]; - Evas_Object *thumb_nail = elm_object_item_part_content_get(selected, "thumbnail_item"); - elm_image_file_set(thumb_nail, itemData->moreMenuUI->edjFilePath.c_str(), file_name); + if (data && obj) { + elm_object_focus_set(obj, EINA_TRUE); + + MoreMenuItemData *itemData = static_cast(data); + const char *file_name = getImageFileNameForType(itemData->item, true); + Elm_Object_Item *selected = itemData->moreMenuUI->m_map_menu_views[itemData->item]; + Evas_Object *thumb_nail = elm_object_item_part_content_get(selected, "thumbnail_item"); + elm_image_file_set(thumb_nail, itemData->moreMenuUI->m_edjFilePath.c_str(), file_name); + } } -void MoreMenuUI::_itemSelected(void * data, Evas_Object * /* obj */, void * event_info) +void MoreMenuUI::__cb_mouse_out(void * data, Evas *, Evas_Object *obj, void *) { BROWSER_LOGD("[%s:%d]", __PRETTY_FUNCTION__, __LINE__); + if (data && obj) { + elm_object_focus_set(obj, EINA_FALSE); + + MoreMenuItemData *itemData = static_cast(data); + const char *file_name = getImageFileNameForType(itemData->item, false); + Elm_Object_Item *selected = itemData->moreMenuUI->m_map_menu_views[itemData->item]; + Evas_Object *thumb_nail = elm_object_item_part_content_get(selected, "thumbnail_item"); + elm_image_file_set(thumb_nail, itemData->moreMenuUI->m_edjFilePath.c_str(), file_name); + } } -void MoreMenuUI::_thumbSelected(void * data, Evas_Object * /* obj */, void * /* event_info */) +void MoreMenuUI::_thumbSelected(void* data, Evas_Object*, void*) { BROWSER_LOGD("[%s:%d]", __PRETTY_FUNCTION__, __LINE__); - MoreMenuItemData *itemData = reinterpret_cast(data); - switch(itemData->item) { - case READER_MODE: - break; - case BOOKMARK_MANAGER: - break; - case HISTORY: - itemData->moreMenuUI->historyUIClicked(std::string()); break; - case SCREEN_ZOOM: - break; - case START_MINIBROWSER: - break; - case FOCUS_MODE: - break; - case VIEW_MOBILE_WEB: - break; - case SHARE: - break; - case SETTINGS: - itemData->moreMenuUI->settingsClicked(std::string()); break; - case EXIT_BROWSER: - break; + if (data) { + MoreMenuItemData *itemData = static_cast(data); + switch (itemData->item) { + case HISTORY: + itemData->moreMenuUI->historyUIClicked(std::string()); + break; + case SETTINGS: + itemData->moreMenuUI->settingsClicked(std::string()); + break; + case READER_MODE: + case BOOKMARK_MANAGER: + case SCREEN_ZOOM: + case START_MINIBROWSER: + case FOCUS_MODE: + case VIEW_MOBILE_WEB: + case SHARE: + case EXIT_BROWSER: + break; + } } } @@ -431,30 +478,39 @@ void MoreMenuUI::clearItems() elm_genlist_clear(m_genList); m_map_menu_views.clear(); m_map_bookmark_folder_list.clear(); - elm_theme_extension_del(NULL, edjFilePath.c_str()); + elm_theme_extension_del(NULL, m_edjFilePath.c_str()); elm_theme_full_flush(); elm_cache_all_flush(); } -void MoreMenuUI::focusItem(void* /*data*/, Evas_Object* /*obj*/, void* event_info) -{ - BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__); - Elm_Object_Item *item = reinterpret_cast(event_info); - elm_object_item_signal_emit( item, "mouse,in", "over2"); - - // selected manually - elm_gengrid_item_selected_set(item, EINA_TRUE); -} - -void MoreMenuUI::unFocusItem(void* /*data*/, Evas_Object* /*obj*/, void* event_info) -{ - BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__); - Elm_Object_Item *item = reinterpret_cast(event_info); - elm_object_item_signal_emit( item, "mouse,out", "over2"); - - // unselected manually - elm_gengrid_item_selected_set(item, EINA_FALSE); -} +//void MoreMenuUI::focusItem(void*, Evas_Object*, void* event_info) +//{ +// BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__); +// if (event_info) { +// Elm_Object_Item *item = static_cast(event_info); +// elm_object_item_signal_emit(item, "mouse,in", "over2"); +// +// // selected manually +// elm_gengrid_item_selected_set(item, EINA_TRUE); +// } +//} +// +//void MoreMenuUI::unFocusItem(void*, Evas_Object*, void* event_info) +//{ +// BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__); +// if (event_info) { +// Elm_Object_Item *item = static_cast(event_info); +// elm_object_item_signal_emit( item, "mouse,out", "over2"); +// +// // unselected manually +// elm_gengrid_item_selected_set(item, EINA_FALSE); +// } +//} +// +//void MoreMenuUI::_itemSelected(void*, Evas_Object*, void *) +//{ +// BROWSER_LOGD("[%s:%d]", __PRETTY_FUNCTION__, __LINE__); +//} } } diff --git a/services/MoreMenuUI/MoreMenuUI.h b/services/MoreMenuUI/MoreMenuUI.h index 7bff048..7f0812b 100644 --- a/services/MoreMenuUI/MoreMenuUI.h +++ b/services/MoreMenuUI/MoreMenuUI.h @@ -18,6 +18,7 @@ #define MOREMENUUI_H #include +#include #include #include "AbstractUIComponent.h" @@ -73,7 +74,6 @@ public: private: static char* _grid_text_get(void *data, Evas_Object *obj, const char *part); static Evas_Object * _grid_content_get(void *data, Evas_Object *obj, const char *part); - static void _itemSelected(void * data, Evas_Object * obj, void * event_info); static void _thumbSelected(void * data, Evas_Object * obj, void * event_info); static Evas_Object* listItemContentGet(void *data, Evas_Object *obj, const char *part); @@ -85,7 +85,7 @@ private: void AddBookmarkPopupCalled(); void addToBookmarks(int folder_id); - static void item_clicked_cb(void *data, Evas_Object *obj, void *event_info); + static void star_clicked_cb(void *data, Evas_Object *obj, void *event_info); static void close_clicked_cb(void *data, Evas_Object *obj, void *event_info); @@ -94,21 +94,22 @@ private: private: Evas_Object *m_genList; - std::shared_ptr m_popup; + std::shared_ptr m_new_folder_popup; Evas_Object *m_mm_layout; - std::shared_ptr popup; + std::shared_ptr m_add_bookmark_popup; Elm_Genlist_Item_Class *m_itemClass; Evas_Object *m_gengrid; Evas_Object *m_parent; Elm_Gengrid_Item_Class * m_item_class; std::map m_map_menu_views; std::vector > m_map_bookmark_folder_list; - std::string edjFilePath; + std::string m_edjFilePath; std::string m_folderName; bool m_gengridSetup; - static void focusItem(void* data, Evas_Object* obj, void* event_info); - static void unFocusItem(void* data, Evas_Object* obj, void* event_info); + //static void focusItem(void* data, Evas_Object* obj, void* event_info); + //static void unFocusItem(void* data, Evas_Object* obj, void* event_info); + //static void _itemSelected(void * data, Evas_Object * obj, void * event_info); }; } diff --git a/services/MoreMenuUI/NewFolderPopup.cpp b/services/MoreMenuUI/NewFolderPopup.cpp index 32b8f69..ca5ef0f 100644 --- a/services/MoreMenuUI/NewFolderPopup.cpp +++ b/services/MoreMenuUI/NewFolderPopup.cpp @@ -28,21 +28,26 @@ namespace tizen_browser{ namespace base_ui{ NewFolderPopup::NewFolderPopup(Evas_Object* main_layout) : - m_popup(NULL), - m_content(NULL), + m_popup(nullptr), + m_content(nullptr), m_mainLayout(main_layout) { } -NewFolderPopup::NewFolderPopup(Evas_Object *main_layout, Evas_Object *content, const char *message, char* title, char* okButtonText, char* cancelButtonText) : - m_popup(NULL), - m_mainLayout(main_layout), +NewFolderPopup::NewFolderPopup(Evas_Object *main_layout + , Evas_Object *content + , const char *message + , const char *title + , const char *okButtonText + , const char *cancelButtonText) : + m_popup(nullptr), m_content(content), m_message(message), m_title(title), m_okButtonText(okButtonText), - m_cancelButtonText(cancelButtonText) + m_cancelButtonText(cancelButtonText), + m_mainLayout(main_layout) { } @@ -153,17 +158,21 @@ void NewFolderPopup::hide() elm_object_signal_emit(m_mainLayout, "elm,state,hide", "elm"); } -void NewFolderPopup::popup_ok_cb(void *data, Evas_Object *btn, void*) +void NewFolderPopup::popup_ok_cb(void *data, Evas_Object*, void*) { BROWSER_LOGD("[%s],", __func__); - NewFolderPopup *ownPopup = static_cast(data); - ownPopup->on_ok(ownPopup->m_editfield_entry); + if (data) { + NewFolderPopup *ownPopup = static_cast(data); + ownPopup->on_ok(ownPopup->m_editfield_entry); + } } -void NewFolderPopup::popup_cancel_cb(void *data, Evas_Object *btn, void*) +void NewFolderPopup::popup_cancel_cb(void *data, Evas_Object*, void*) { BROWSER_LOGD("[%s],", __func__); - NewFolderPopup *ownPopup = static_cast(data); - ownPopup->on_cancel(ownPopup->m_editfield_entry); + if (data) { + NewFolderPopup *ownPopup = static_cast(data); + ownPopup->on_cancel(ownPopup->m_editfield_entry); + } } } diff --git a/services/MoreMenuUI/NewFolderPopup.h b/services/MoreMenuUI/NewFolderPopup.h index 18edd11..e0fd051 100644 --- a/services/MoreMenuUI/NewFolderPopup.h +++ b/services/MoreMenuUI/NewFolderPopup.h @@ -17,7 +17,12 @@ class NewFolderPopup{ public: NewFolderPopup(Evas_Object *main_layout); - NewFolderPopup(Evas_Object *main_layout, Evas_Object *content, const char *message, char *title, char* okButtonText, char* cancelButtonText); + NewFolderPopup(Evas_Object *main_layout + , Evas_Object *content + , const char *message + , const char *title + , const char *okButtonText + , const char *cancelButtonText); /** * Theese setters should be called before showing popup. -- 2.7.4