From: Maciej Skrzypkowski Date: Thu, 10 Sep 2015 12:34:17 +0000 (+0200) Subject: Added thubnail and history links clicking for detail popup. X-Git-Tag: submit/tizen_tv/20150913.234024~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=dbb8a09c87417077fe87ec3e8939ad8bd5dd918c;p=profile%2Ftv%2Fapps%2Fweb%2Fbrowser.git Added thubnail and history links clicking for detail popup. [Issue] https://bugs.tizen.org/jira/browse/TT-144 [Problem] Detail popup missed thumbnail. [Cause] N/A [Solution] Added thumbnail in proper size. [Verify] Launch browser > open few pages > check thubnails Most Visited view in detail popup, check if history links in popup are clickable. Change-Id: I50d3e2862fc672a41de8cdc50f790f48f19ff21d Signed-off-by: Maciej Skrzypkowski --- diff --git a/core/Tools/EflTools.cpp b/core/Tools/EflTools.cpp index f6cf03d..b8e1f49 100644 --- a/core/Tools/EflTools.cpp +++ b/core/Tools/EflTools.cpp @@ -83,9 +83,6 @@ Evas_Object * getEvasImage(std::shared_ptr b_image, Evas_Object * } else { BROWSER_LOGD("Image loaded"); evas_object_image_fill_set(eo_image, 0, 0, b_image->width, b_image->height); - - //EFL BUG without resizing image is not displayed - evas_object_resize(eo_image, b_image->width, b_image->height); } return eo_image; }; diff --git a/services/HistoryService/HistoryItem.cpp b/services/HistoryService/HistoryItem.cpp index 1d9ce89..6808685 100644 --- a/services/HistoryService/HistoryItem.cpp +++ b/services/HistoryService/HistoryItem.cpp @@ -87,7 +87,7 @@ void HistoryItem::setUrl(const std::string & url) m_url = url; } -std::string HistoryItem::getUrl() +std::string HistoryItem::getUrl() const { return m_url; } diff --git a/services/HistoryService/HistoryItem.h b/services/HistoryService/HistoryItem.h index 1d1e7ab..98875b9 100644 --- a/services/HistoryService/HistoryItem.h +++ b/services/HistoryService/HistoryItem.h @@ -51,7 +51,7 @@ public: bool operator!=(const HistoryItem& other); void setUrl(const std::string & url); - std::string getUrl(); + std::string getUrl() const; void setTitle(const std::string & title); std::string getTitle() const; diff --git a/services/MainUI/DetailPopup.cpp b/services/MainUI/DetailPopup.cpp index 4aa5604..9d2f1ea 100644 --- a/services/MainUI/DetailPopup.cpp +++ b/services/MainUI/DetailPopup.cpp @@ -16,15 +16,19 @@ #include +#include +#include #include "BrowserAssert.h" #include "DetailPopup.h" #include "BrowserLogger.h" #include "Tools/GeneralTools.h" +#include "Tools/EflTools.h" #include "MainUI.h" namespace tizen_browser{ namespace base_ui{ +const char * DetailPopup::URL_SEPARATOR = " - "; const int DetailPopup::HISTORY_ITEMS_NO = 5; DetailPopup::DetailPopup(MainUI *mainUI) @@ -62,14 +66,20 @@ void DetailPopup::createLayout(Evas_Object *parent) edje_object_signal_callback_add(elm_layout_edje_get(m_layout), "mouse,clicked,1", "thumbnail", _url_click, this); elm_layout_text_set(m_layout, "history_title", "History"); elm_layout_text_set(m_layout, "url", tools::clearURL(m_item->getUrl())); + m_historyList = elm_genlist_add(m_layout); evas_object_size_hint_weight_set(m_historyList, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_size_hint_align_set(m_historyList, EVAS_HINT_FILL, EVAS_HINT_FILL); + evas_object_smart_callback_add(m_historyList, "pressed", _history_url_click, this); + for (auto it = m_prevItems->begin(); it != m_prevItems->end(); ++it) { + elm_genlist_item_append(m_historyList, m_history_item_class, it->get(), nullptr, ELM_GENLIST_ITEM_NONE, nullptr, this); + } evas_object_show(m_historyList); elm_object_part_content_set(m_layout, "history_list", m_historyList); - for (auto it = m_prevItems->begin(); it != m_prevItems->end(); ++it) { - elm_genlist_item_append(m_historyList, m_history_item_class, it->get(), nullptr, ELM_GENLIST_ITEM_NONE, nullptr, this); + if (m_item->getThumbnail()) { + Evas_Object * thumb = tools::EflTools::getEvasImage(m_item->getThumbnail(), m_layout); + elm_object_part_content_set(m_layout, "thumbnail", thumb); } evas_object_show(m_layout); @@ -88,18 +98,19 @@ void DetailPopup::hide() edje_object_signal_callback_del(elm_layout_edje_get(m_layout), "mouse,clicked,1", "bg", _bg_click); edje_object_signal_callback_del(elm_layout_edje_get(m_layout), "mouse,clicked,1", "url_over", _url_click); edje_object_signal_callback_del(elm_layout_edje_get(m_layout), "mouse,clicked,1", "thumbnail", _url_click); + evas_object_smart_callback_del(m_historyList, "pressed", _history_url_click); elm_genlist_clear(m_historyList); evas_object_hide(m_layout); } -void DetailPopup::_bg_click(void* data, Evas_Object* obj, const char* emission, const char* source) +void DetailPopup::_bg_click(void* data, Evas_Object*, const char*, const char*) { BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__); DetailPopup *dp = reinterpret_cast(data); dp->hide(); } -void DetailPopup::_url_click(void* data, Evas_Object* obj, const char* emission, const char* source) +void DetailPopup::_url_click(void* data, Evas_Object*, const char*, const char*) { BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__); DetailPopup *dp = reinterpret_cast(data); @@ -107,14 +118,34 @@ void DetailPopup::_url_click(void* data, Evas_Object* obj, const char* emission, dp->openURLInNewTab(dp->m_item, dp->m_mainUI->isDesktopMode()); } -char* DetailPopup::_get_history_link_text(void* data, Evas_Object* obj, const char* part) +void DetailPopup::_history_url_click(void* data, Evas_Object*, void* event_info) +{ + BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__); + Elm_Object_Item *glit = reinterpret_cast(event_info); + void *itemData = elm_object_item_data_get(glit); + services::HistoryItem *item = reinterpret_cast(itemData); + + DetailPopup *dp = reinterpret_cast(data); + // find shared pointer pointed to HistoryItem object + auto it = std::find_if(dp->m_prevItems->begin(), + dp->m_prevItems->end(), + [item] (const std::shared_ptr i) + { return i.get() == item; } + ); + std::shared_ptr itemPtr= *it; + dp->hide(); + dp->openURLInNewTab(itemPtr, dp->m_mainUI->isDesktopMode()); +} + +char* DetailPopup::_get_history_link_text(void* data, Evas_Object*, const char* part) { BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__); services::HistoryItem *item = reinterpret_cast(data); if (!strcmp(part, "page_dsc")) { if (item != nullptr) { - return strdup(tools::clearURL(item->getUrl())); + std::string text = item->getTitle() + URL_SEPARATOR + tools::clearURL(item->getUrl()); + return strdup(text.c_str()); } } return strdup(""); diff --git a/services/MainUI/DetailPopup.h b/services/MainUI/DetailPopup.h index 1ad8a02..953e9b8 100644 --- a/services/MainUI/DetailPopup.h +++ b/services/MainUI/DetailPopup.h @@ -52,11 +52,19 @@ namespace base_ui{ */ static void _url_click(void *data, Evas_Object *obj, const char *emission, const char *source); + /** + * @brief History genlist item click callback + */ + static void _history_url_click(void *data, Evas_Object *o, void *event_info); + /** * @brief Hide popup */ void hide(); + /** + * @brief Create main layout and all compnents. + */ void createLayout(Evas_Object *parent); /** @@ -71,6 +79,8 @@ namespace base_ui{ std::string edjFilePath; std::shared_ptr m_item; std::shared_ptr m_prevItems; + + static const char * URL_SEPARATOR; }; } diff --git a/services/MainUI/MainUI.cpp b/services/MainUI/MainUI.cpp index 6dbdbbc..1367a87 100644 --- a/services/MainUI/MainUI.cpp +++ b/services/MainUI/MainUI.cpp @@ -33,8 +33,8 @@ namespace base_ui{ const int SMALL_TILES_ROWS = 2; const int MAX_TILES_NUMBER = 5; -const int MainUI::MAX_TILE_WIDTH = 784; -const int MainUI::MAX_TILE_HEIGHT = 498; +const int MainUI::MAX_THUMBNAIL_WIDTH = 840; +const int MainUI::MAX_THUMBNAIL_HEIGHT = 648; EXPORT_SERVICE(MainUI, "org.tizen.browser.mainui") @@ -50,12 +50,6 @@ typedef struct _BookmarkItemData std::shared_ptr mainUI; } BookmarkItemData; -struct ItemData{ - tizen_browser::base_ui::MainUI * mainUI; - const char* button_name; - Elm_Object_Item * e_item; -}; - MainUI::MainUI() : m_parent(nullptr) , m_layout(nullptr) @@ -360,7 +354,7 @@ void MainUI::addBookmarkItems(std::vector(data); if (!strcmp(part, "page_title")) { @@ -372,7 +366,7 @@ char* MainUI::_grid_text_get(void *data, Evas_Object *obj, const char *part) return strdup(""); } -char* MainUI::_grid_bookmark_text_get(void *data, Evas_Object *obj, const char *part) +char* MainUI::_grid_bookmark_text_get(void *data, Evas_Object *, const char *part) { BookmarkItemData *itemData = reinterpret_cast(data); if (!strcmp(part, "page_title")) { diff --git a/services/MainUI/MainUI.h b/services/MainUI/MainUI.h index 667a844..9814981 100644 --- a/services/MainUI/MainUI.h +++ b/services/MainUI/MainUI.h @@ -63,8 +63,8 @@ public: boost::signals2::signal bookmarkClicked; boost::signals2::signal bookmarkManagerClicked; - static const int MAX_TILE_WIDTH; - static const int MAX_TILE_HEIGHT; + static const int MAX_THUMBNAIL_WIDTH; + static const int MAX_THUMBNAIL_HEIGHT; private: void createItemClasses(); diff --git a/services/MainUI/edc/DetailPopup.edc b/services/MainUI/edc/DetailPopup.edc index 5a2ea1b..dd291d8 100644 --- a/services/MainUI/edc/DetailPopup.edc +++ b/services/MainUI/edc/DetailPopup.edc @@ -2,7 +2,9 @@ collections { group { name: "popup"; - + images { + image: "ic_popup_list_arrow.png" COMP; + } parts { part { name: "bg"; type: RECT; @@ -44,10 +46,8 @@ collections { } part { name: "thumbnail"; - //type: SWALLOW; TODO: change to swallow while adding thumbnail to Detail popup - type: RECT; + type: SWALLOW; description { - color: 113 128 147 255; min: 840 648; max: 840 648; visible: 1; @@ -90,8 +90,8 @@ collections { type: TEXT; description { visible: 1; - min: 428 122; - max: 428 122; + min: 408 122; + max: 408 122; align: 0.0 0.0; fixed: 1 1; color: 51 51 51 255; @@ -117,6 +117,29 @@ collections { } } + part { name: "url_arrow"; + type: IMAGE; + scale: 1; + repeat_events: 1; + description { + state: "default" 0.0; + visible: 1; + align: 0.0 0.5; + min: 38 38; + max: 38 38; + image.normal: "ic_popup_list_arrow.png"; + rel1 { + to: "url_bg"; + relative: 0.0 0.0; + offset: 442 0; + } + rel2 { + to: "url_bg"; + relative: 1.0 1.0; + } + } + } + part { name: "url_over"; type: RECT; mouse_events: 1; @@ -229,6 +252,10 @@ collections { color: 255 255 255 255; align: 0.0 0.0; } + description { state: "selected" 0.0; + inherit: "default" 0.0; + color: 0 119 246 255; + } } part { name: "page_dsc"; @@ -253,8 +280,42 @@ collections { align: 0 0.5; } } + description { state: "selected" 0.0; + inherit: "default" 0.0; + color: 255 255 255 255; + } + } + + part { name: "dsc_over"; + type: RECT; + mouse_events: 1; + repeat_events: 1; + description { state: "default" 0.0; + visible: 1; + color: 0 0 0 0; + rel1.to: "bg"; + rel2.to: "bg"; + } } } + programs { + program { + name: "mouse_in_url"; + signal: "mouse,in"; + source: "dsc_over"; + action: STATE_SET "selected" 0.0; + target: "bg"; + target: "page_dsc"; + } + program { + name: "mouse_out_url"; + signal: "mouse,out"; + source: "dsc_over"; + action: STATE_SET "default" 0.0; + target: "bg"; + target: "page_dsc"; + } + } } } \ No newline at end of file diff --git a/services/MainUI/edc/MainUI.edc b/services/MainUI/edc/MainUI.edc index de77956..030e8dd 100644 --- a/services/MainUI/edc/MainUI.edc +++ b/services/MainUI/edc/MainUI.edc @@ -402,8 +402,8 @@ group { name: "elm/genlist/item/big_grid_item/default"; fixed: 1 0; align: 0.0 0.0; color : 231 231 231 255; - min: 784 498; - max: 784 498; + min: 784 577; // size adjusted to max thubnail with and height + max: 784 577; rel1 { relative: 0.0 0.0; to: "bg"; } @@ -494,8 +494,9 @@ group { name: "elm/genlist/item/big_grid_item/default"; color: 113 128 147 255; visible: 1; rel1 { - to: "elm.thumbnail"; - relative: 0.0 1.0; + to: "bg"; + relative: 0.0 0.0; + offset: 0 498; // thumbnail height } rel2 { relative: 1.0 1.0; @@ -666,8 +667,8 @@ group { name: "elm/genlist/item/small_grid_item/default"; fixed: 1 0; align: 0.0 0.0; color : 231 231 231 255; - min: 378 198; - max: 378 198; + min: 378 292; // size adjusted to max thubnail with and height + max: 378 292; rel1 { relative: 0.0 0.0; to: "bg"; } @@ -758,8 +759,9 @@ group { name: "elm/genlist/item/small_grid_item/default"; color: 113 128 147 255; visible: 1; rel1 { - to: "elm.thumbnail"; - relative: 0.0 1.0; + to: "bg"; + relative: 0.0 0.0; + offset: 0 198; // thumbnail height } rel2 { relative: 1.0 1.0; diff --git a/services/MainUI/images/ic_popup_list_arrow.png b/services/MainUI/images/ic_popup_list_arrow.png new file mode 100644 index 0000000..d54f171 Binary files /dev/null and b/services/MainUI/images/ic_popup_list_arrow.png differ diff --git a/services/SimpleUI/SimpleUI.cpp b/services/SimpleUI/SimpleUI.cpp index f4380d7..2747a12 100644 --- a/services/SimpleUI/SimpleUI.cpp +++ b/services/SimpleUI/SimpleUI.cpp @@ -801,7 +801,7 @@ void SimpleUI::loadFinished() if(!m_webEngine->isPrivateMode()){ m_historyService->addHistoryItem(std::make_shared (m_webEngine->getURI(), m_webEngine->getTitle(), - m_webEngine->getFavicon()), m_webEngine->getSnapshotData(MainUI::MAX_TILE_WIDTH, MainUI::MAX_TILE_HEIGHT)); + m_webEngine->getFavicon()), m_webEngine->getSnapshotData(MainUI::MAX_THUMBNAIL_WIDTH, MainUI::MAX_THUMBNAIL_HEIGHT)); } #if 0 if(!m_platformInputManager->getPointerModeEnabled())