Task TT-80 Implement History view 17/45317/2
authork.lis2 <k.lis2@samsung.com>
Tue, 4 Aug 2015 14:06:54 +0000 (16:06 +0200)
committerJanusz Majnert <j.majnert@samsung.com>
Wed, 5 Aug 2015 09:30:23 +0000 (11:30 +0200)
    [Issue#]   https://bugs.tizen.org/jira/browse/TT-80
    [Task]     TT-80 Implement History view
    [Cause]    -
    [Solution] Add HistoryUI. Enable code referring to
               HistoryUI in SimpleUI
    [Verify]   Perform basic sanity check.

Change-Id: I87c20a27f825cda1ec7166e16133f2a5328c45a4

services/CMakeLists.txt
services/HistoryUI/CMakeLists.txt [new file with mode: 0644]
services/HistoryUI/HistoryUI.cpp [new file with mode: 0644]
services/HistoryUI/HistoryUI.h [new file with mode: 0644]
services/HistoryUI/edc/History.edc [new file with mode: 0644]
services/HistoryUI/edc/error.edc [new file with mode: 0644]
services/HistoryUI/images/btn_bar_stop_nor.png [new file with mode: 0644]
services/HistoryUI/images/ico_delete.png [new file with mode: 0644]
services/SimpleUI/CMakeLists.txt
services/SimpleUI/SimpleUI.cpp
services/SimpleUI/SimpleUI.h

index 5515ac1..167a2f8 100644 (file)
@@ -3,8 +3,7 @@ project(services)
 add_subdirectory(WebKitEngineService)
 add_subdirectory(MoreMenuUI)
 add_subdirectory(MainUI)
-# MERGE_ME
-#add_subdirectory(HistoryUI)
+add_subdirectory(HistoryUI)
 add_subdirectory(TabUI)
 add_subdirectory(SimpleUI)
 # MERGE_ME
diff --git a/services/HistoryUI/CMakeLists.txt b/services/HistoryUI/CMakeLists.txt
new file mode 100644 (file)
index 0000000..9d3bd37
--- /dev/null
@@ -0,0 +1,29 @@
+project(HistoryUI)
+
+set(HistoryUI_SRCS
+    HistoryUI.cpp
+    )
+
+set(HistoryUI_HEADERS
+    HistoryUI.h
+    )
+
+include(Coreheaders)
+include(EFLHelpers)
+
+include_directories(${CMAKE_SOURCE_DIR}/services/FavoriteService)
+
+add_library(${PROJECT_NAME} SHARED ${HistoryUI_SRCS})
+
+if(TIZEN_BUILD)
+    target_link_libraries(${PROJECT_NAME} ${pkgs_LDFLAGS})
+endif(TIZEN_BUILD)
+
+install(TARGETS ${PROJECT_NAME}
+            LIBRARY DESTINATION services
+            ARCHIVE DESTINATION services/static)
+
+include(EDCCompile)
+EDJ_TARGET(History.edj
+    ${CMAKE_CURRENT_SOURCE_DIR}/edc/History.edc
+    ${CMAKE_CURRENT_BINARY_DIR})
diff --git a/services/HistoryUI/HistoryUI.cpp b/services/HistoryUI/HistoryUI.cpp
new file mode 100644 (file)
index 0000000..be63ad0
--- /dev/null
@@ -0,0 +1,384 @@
+/*
+ * Copyright (c) 2014 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <Elementary.h>
+#include <boost/concept_check.hpp>
+#include <vector>
+#include <AbstractMainWindow.h>
+
+#include "HistoryUI.h"
+#include "ServiceManager.h"
+#include "BrowserLogger.h"
+#include "Tools/EflTools.h"
+#include "../Tools/BrowserImage.h"
+
+
+namespace tizen_browser{
+namespace base_ui{
+
+EXPORT_SERVICE(HistoryUI, "org.tizen.browser.historyui")
+
+typedef struct _HistoryItemData
+{
+       std::shared_ptr<tizen_browser::services::HistoryItem> item;
+       std::shared_ptr<tizen_browser::base_ui::HistoryUI> historyUI;
+} HistoryItemData;
+
+struct ItemData{
+        tizen_browser::base_ui::HistoryUI* historyUI;
+        Elm_Object_Item * e_item;
+};
+
+static std::vector<HistoryItemData*> m_history_item_data;
+
+#define efl_scale       (elm_config_scale_get() / elm_app_base_scale_get())
+HistoryUI::HistoryUI()
+    : m_gengrid(NULL)
+    , m_parent(NULL)
+    , m_item_class(NULL)
+    , m_gengridSetup(false)
+    , m_history_layout(NULL)
+    , m_historyitem_layout(NULL)
+    , m_genListActionBar(NULL)
+    , m_genListToday(NULL)
+    , m_itemClassToday(NULL)
+{
+    BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+    edjFilePath = EDJE_DIR;
+    edjFilePath.append("HistoryUI/History.edj");
+}
+
+HistoryUI::~HistoryUI()
+{
+}
+
+void HistoryUI::show(Evas_Object* parent)
+{
+    elm_theme_extension_add(NULL, edjFilePath.c_str());
+    m_history_layout = elm_layout_add(parent);
+    elm_layout_file_set(m_history_layout, edjFilePath.c_str(), "history-layout");
+    evas_object_size_hint_weight_set(m_history_layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+    evas_object_size_hint_align_set(m_history_layout, EVAS_HINT_FILL, EVAS_HINT_FILL);
+    evas_object_show(m_history_layout);
+
+    showActionBar();
+
+    m_gengrid = elm_gengrid_add(m_history_layout);
+    elm_object_part_content_set(m_history_layout, "history_gengird", m_gengrid);
+
+    /*evas_object_smart_callback_add(m_gengrid, "item,focused", focusItem, NULL);
+    evas_object_smart_callback_add(m_gengrid, "item,unfocused", unFocusItem, NULL);
+    evas_object_smart_callback_add(m_gengrid, "activated", _itemSelected, this);*/
+
+      if (!m_item_class) {
+            m_item_class = elm_gengrid_item_class_new();
+            m_item_class->item_style = "history_item";
+            m_item_class->func.text_get = _grid_text_get;
+            m_item_class->func.content_get =  _history_grid_content_get;
+            m_item_class->func.state_get = NULL;
+            m_item_class->func.del = NULL;
+        }
+
+    M_ASSERT(m_parent);
+        elm_gengrid_align_set(m_gengrid, 0, 0);
+        elm_gengrid_select_mode_set(m_gengrid, ELM_OBJECT_SELECT_MODE_ALWAYS);
+        elm_gengrid_multi_select_set(m_gengrid, EINA_FALSE);
+        elm_gengrid_horizontal_set(m_gengrid, EINA_TRUE);
+        elm_gengrid_highlight_mode_set(m_gengrid, EINA_TRUE);
+        elm_scroller_policy_set(m_gengrid, ELM_SCROLLER_POLICY_ON, ELM_SCROLLER_POLICY_ON);
+        elm_scroller_page_size_set(m_gengrid, 0, 580);
+
+        evas_object_size_hint_weight_set(m_gengrid, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+        evas_object_size_hint_align_set(m_gengrid, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+    elm_gengrid_item_size_set(m_gengrid, 580 * efl_scale, 580 * efl_scale);
+
+    addItems();
+
+}
+
+void HistoryUI::showActionBar()
+{
+    BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+    elm_theme_extension_add(NULL, edjFilePath.c_str());
+    m_genListActionBar = elm_genlist_add(m_history_layout);
+    elm_object_part_content_set(m_history_layout, "action_bar_history_genlist", m_genListActionBar);
+    elm_genlist_homogeneous_set(m_genListActionBar, EINA_FALSE);
+    elm_genlist_multi_select_set(m_genListActionBar, EINA_FALSE);
+    elm_genlist_select_mode_set(m_genListActionBar, ELM_OBJECT_SELECT_MODE_ALWAYS);
+    elm_genlist_mode_set(m_genListActionBar, ELM_LIST_LIMIT);
+    elm_genlist_decorate_mode_set(m_genListActionBar, EINA_TRUE);
+    evas_object_size_hint_weight_set(m_genListActionBar, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+
+    m_itemClassActionBar = elm_genlist_item_class_new();
+    m_itemClassActionBar->item_style = "action_bar_history_items";
+    m_itemClassActionBar->func.text_get = NULL; // &listTopItemTextGet;
+    m_itemClassActionBar->func.content_get = &listActionBarContentGet;
+    m_itemClassActionBar->func.state_get = 0;
+    m_itemClassActionBar->func.del = 0;
+
+    ItemData * id = new ItemData;
+    id->historyUI = this;
+    Elm_Object_Item* elmItem = elm_genlist_item_append(m_genListActionBar,            //genlist
+                                                       m_itemClassActionBar,          //item Class
+                                                      id,
+                                                      NULL,                    //parent item
+                                                      ELM_GENLIST_ITEM_NONE,//item type
+                                                      NULL,
+                                                      NULL                  //data passed to above function
+                                                     );
+    id->e_item = elmItem;
+    ItemData * id2 = new ItemData;
+    id2->historyUI = this;
+    Elm_Object_Item* elmItem2 = elm_genlist_item_append(m_genListActionBar,            //genlist
+                                                       m_itemClassActionBar,          //item Class
+                                                      id2,
+                                                      NULL,                    //parent item
+                                                      ELM_GENLIST_ITEM_NONE,//item type
+                                                      NULL,
+                                                      NULL                  //data passed to above function
+                                                     );
+    id2->e_item = elmItem2;
+}
+
+Evas_Object* HistoryUI::listActionBarContentGet(void* data, Evas_Object* obj , const char* part)
+{
+        BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+        if(!strcmp(part, "clearhistory_click"))
+        {
+                Evas_Object *clearHistoryButton = elm_button_add(obj);
+                elm_object_style_set(clearHistoryButton, "history_button");
+                evas_object_smart_callback_add(clearHistoryButton, "clicked", tizen_browser::base_ui::HistoryUI::_clearhistory_clicked, data);
+                return clearHistoryButton;
+        }
+       else if(!strcmp(part, "close_click"))
+       {
+               Evas_Object *close_click = elm_button_add(obj);
+               elm_object_style_set(close_click, "history_button");
+               evas_object_smart_callback_add(close_click, "clicked", HistoryUI::close_clicked_cb, data);
+               return close_click;
+       }
+          
+        return NULL;
+}
+
+void HistoryUI::close_clicked_cb(void * data, Evas_Object * /* obj */, void * event_info)
+{
+    BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+    ItemData * id = static_cast<ItemData *>(data);
+    id->historyUI->closeHistoryUIClicked(std::string());
+    id->historyUI->clearItems();
+}      
+
+char* HistoryUI::listTodayTextGet(void* data, Evas_Object* obj , const char* part)
+{
+     BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+    HistoryItemData * id = static_cast<HistoryItemData *>(data);
+    if(!strcmp(part, "history_url_text"))
+    {
+        if(!id->item->getUrl().empty()){
+           std::string str = id->item->getTitle() + " - " + id->item->getUrl();
+            return strdup(str.c_str());
+        }
+    }
+    return NULL;
+}
+
+void HistoryUI::_clearhistory_clicked(void * data, Evas_Object * /* obj */, void * event_info)
+{
+        /*
+        BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+        ItemData* itemData = reinterpret_cast<ItemData *>(data);
+        itemData->tabUI->clearItems();
+        itemData->tabUI->newTabClicked(std::string());
+        */
+}
+
+void HistoryUI::addItems()
+{
+         BROWSER_LOGD("%s:%d %s", __FILE__, __LINE__, __func__);
+         for (size_t i = 0; i < 1; i++) {
+             HistoryItemData *itemData = new HistoryItemData();
+             itemData->historyUI = std::shared_ptr<tizen_browser::base_ui::HistoryUI>(this);
+             Elm_Object_Item* historyView = elm_gengrid_item_append(m_gengrid, m_item_class, itemData, NULL, this);
+             elm_gengrid_item_selected_set(historyView, EINA_FALSE);
+         }
+         BROWSER_LOGD("%s:%d %s", __FILE__, __LINE__, __func__);
+}
+
+void HistoryUI::addHistoryItem(std::shared_ptr<tizen_browser::services::HistoryItem> hi)
+{
+    BROWSER_LOGD("%s:%d %s", __FILE__, __LINE__, __func__);
+    HistoryItemData *itemData = new HistoryItemData();
+    itemData->item = hi;
+    itemData->historyUI = std::shared_ptr<tizen_browser::base_ui::HistoryUI>(this);
+    m_history_item_data.push_back(itemData);
+    setEmptyGengrid(false);
+}
+
+void HistoryUI::addHistoryItems(std::vector<std::shared_ptr<tizen_browser::services::HistoryItem> > items)
+{
+    BROWSER_LOGD("%s:%d %s", __FILE__, __LINE__, __func__);
+    m_history_item_data.clear();
+    for (auto it = items.begin(); it != items.end(); ++it)
+       addHistoryItem(*it);
+}
+
+char* HistoryUI::_grid_text_get(void *data, Evas_Object *obj, const char *part)
+{
+    BROWSER_LOGD("%s:%d %s part=%s", __FILE__, __LINE__, __func__, part);
+    HistoryItemData *itemData = reinterpret_cast<HistoryItemData*>(data);
+    const char* item_name = NULL;
+    if (!strcmp(part, "menu_label")) {
+            item_name = "Today"; 
+           return strdup(item_name);
+    }
+    return NULL;
+}
+
+Evas_Object * HistoryUI::_history_grid_content_get(void *data, Evas_Object *obj, const char *part)
+{
+    BROWSER_LOGD("[%s:%d] part : %s", __PRETTY_FUNCTION__, __LINE__, part);
+    HistoryItemData * id = static_cast<HistoryItemData *>(data);
+    if(!strcmp(part, "history_genlist"))
+    {
+       id->historyUI->m_genListToday = elm_genlist_add(id->historyUI->m_history_layout);
+
+       elm_genlist_homogeneous_set(id->historyUI->m_genListToday, EINA_FALSE);
+       elm_genlist_multi_select_set(id->historyUI->m_genListToday, EINA_FALSE);
+       elm_genlist_select_mode_set(id->historyUI->m_genListToday, ELM_OBJECT_SELECT_MODE_ALWAYS);
+        elm_genlist_mode_set(id->historyUI->m_genListToday, ELM_LIST_LIMIT);
+        elm_genlist_decorate_mode_set(id->historyUI->m_genListToday, EINA_TRUE);
+        evas_object_size_hint_weight_set(id->historyUI->m_genListToday, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+
+       id->historyUI->m_itemClassToday = elm_genlist_item_class_new();
+       id->historyUI->m_itemClassToday->item_style = "history_url_items";
+       id->historyUI->m_itemClassToday->func.text_get =  &listTodayTextGet;
+       id->historyUI->m_itemClassToday->func.content_get = NULL;
+       id->historyUI->m_itemClassToday->func.state_get = 0;
+       id->historyUI->m_itemClassToday->func.del = 0;
+
+       for(auto it = m_history_item_data.begin(); it != m_history_item_data.end(); it++) {
+               Elm_Object_Item* historyView = elm_genlist_item_append(id->historyUI->m_genListToday, id->historyUI->m_itemClassToday, *it, NULL, ELM_GENLIST_ITEM_NONE, NULL, id->historyUI.get());
+               id->historyUI->m_map_history_views.insert(std::pair<std::string,Elm_Object_Item*>((*it)->item->getUrl(), historyView));
+       }
+
+       return id->historyUI->m_genListToday;
+    }
+    return NULL;
+}
+
+void HistoryUI::removeHistoryItem(const std::string& uri)
+{
+    BROWSER_LOGD("[%s] uri=%s", __func__, uri.c_str());
+    if(m_map_history_views.find(uri) == m_map_history_views.end()) {
+        return;
+    }
+
+    Elm_Object_Item* historyView = m_map_history_views.at(uri);
+    elm_object_item_del(historyView);
+    m_map_history_views.erase(uri);
+
+    setEmptyGengrid(0 == m_map_history_views.size());
+}
+
+void  HistoryUI::_item_deleted(void * /* data */, Evas_Object * /* obj */)
+{
+
+}
+
+void HistoryUI::_itemSelected(void * data, Evas_Object * /* obj */, void * event_info)
+{
+        Elm_Object_Item * selected = reinterpret_cast<Elm_Object_Item *>(event_info);
+        HistoryItemData * itemData = reinterpret_cast<HistoryItemData *>(elm_object_item_data_get(selected));
+        HistoryUI * self = reinterpret_cast<HistoryUI *>(data);
+
+        self->historyItemClicked(itemData->item);
+}
+
+void HistoryUI::_deleteHistory(void *data, Evas_Object * /* obj */, void * /* event_info */)
+{
+        HistoryItemData * itemData = reinterpret_cast<HistoryItemData *>(data);
+        //itemData->historysUI->historyDeleteClicked(itemData->item);
+}
+
+void HistoryUI::_thumbSelected(void * data, Evas_Object * /* obj */, void * /* event_info */)
+{
+        HistoryItemData * itemData = reinterpret_cast<HistoryItemData *>(data);
+       // itemData->historysUI->historyClicked(itemData->item);
+}
+
+Evas_Object* HistoryUI::createNoHistorysLabel()
+{
+    Evas_Object *label = elm_label_add(m_parent);
+    elm_object_text_set(label, "No favorite websites.");
+    evas_object_size_hint_weight_set(label, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+    evas_object_size_hint_align_set(label, EVAS_HINT_FILL, EVAS_HINT_FILL);
+    return label;
+}
+
+void HistoryUI::setEmptyGengrid(bool setEmpty)
+{
+    if(setEmpty) {
+        elm_object_part_content_set(m_gengrid, "elm.swallow.empty", createNoHistorysLabel());
+    } else {
+        elm_object_part_content_set(m_gengrid, "elm.swallow.empty", NULL);
+    }
+}
+
+void HistoryUI::hide()
+{
+    BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+    evas_object_hide(elm_layout_content_get(m_history_layout, "m_genListToday"));
+    evas_object_hide(elm_layout_content_get(m_history_layout, "m_gengrid"));
+    evas_object_hide(elm_layout_content_get(m_history_layout, "m_genListActionBar"));
+    evas_object_hide(m_history_layout);
+}
+
+void HistoryUI::clearItems()
+{
+    hide();
+    BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+    elm_genlist_clear(m_genListToday);
+    elm_gengrid_clear(m_gengrid);
+    elm_genlist_clear(m_genListActionBar);
+    m_map_history_views.clear();
+    m_history_item_data.clear();
+    setEmptyGengrid(true);
+}
+
+void HistoryUI::focusItem(void* /*data*/, Evas_Object* /*obj*/, void* event_info)
+{
+    BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+    Elm_Object_Item *item = reinterpret_cast<Elm_Object_Item*>(event_info);
+    elm_object_item_signal_emit( item, "mouse,in", "over2");
+
+    // selected manually
+    elm_gengrid_item_selected_set(item, EINA_TRUE);
+}
+
+void HistoryUI::unFocusItem(void* /*data*/, Evas_Object* /*obj*/, void* event_info)
+{
+    BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+    Elm_Object_Item *item = reinterpret_cast<Elm_Object_Item*>(event_info);
+    elm_object_item_signal_emit( item, "mouse,out", "over2");
+
+    // unselected manually
+    elm_gengrid_item_selected_set(item, EINA_FALSE);
+}
+
+}
+}
diff --git a/services/HistoryUI/HistoryUI.h b/services/HistoryUI/HistoryUI.h
new file mode 100644 (file)
index 0000000..89c26a3
--- /dev/null
@@ -0,0 +1,91 @@
+/*
+ * Copyright (c) 2014 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef HISTORYUI_H
+#define HISTORYUI_H
+
+#include <Evas.h>
+#include <boost/signals2/signal.hpp>
+
+#include "AbstractUIComponent.h"
+#include "AbstractService.h"
+#include "ServiceFactory.h"
+#include "service_macros.h"
+#include "services/HistoryService/HistoryItem.h"
+
+namespace tizen_browser{
+namespace base_ui{
+
+class BROWSER_EXPORT HistoryUI
+        : public tizen_browser::interfaces::AbstractUIComponent
+        , public tizen_browser::core::AbstractService
+{
+public:
+    HistoryUI();
+    ~HistoryUI();
+    void init(Evas_Object *main_layout);
+    virtual std::string getName();
+    void addHistoryItem(std::shared_ptr<tizen_browser::services::HistoryItem>);
+    void addHistoryItems(std::vector<std::shared_ptr<tizen_browser::services::HistoryItem> >);
+    void removeHistoryItem(const std::string& uri);
+    void clearItems();
+    void hide();
+    void showActionBar();  
+    void show(Evas_Object *main_layout);
+    void addItems();
+    boost::signals2::signal<void (const std::string&)> closeHistoryUIClicked;
+    boost::signals2::signal<void (std::shared_ptr<tizen_browser::services::HistoryItem>)> historyItemClicked;
+    boost::signals2::signal<void (std::shared_ptr<tizen_browser::services::HistoryItem>)> historyDeleteClicked;
+private:
+    static char* _grid_text_get(void *data, Evas_Object *obj, const char *part);
+    static Evas_Object * _history_grid_content_get(void *data, Evas_Object *obj, const char *part); 
+    static Evas_Object * _grid_content_get(void *data, Evas_Object *obj, const char *part);
+    static Evas_Object* listActionBarContentGet(void *data, Evas_Object *obj, const char *part);
+    static Evas_Object* listTodayContentGet(void *data, Evas_Object *obj, const char *part);
+    static void _itemSelected(void * data, Evas_Object * obj, void * event_info);
+    static void _item_deleted(void *data, Evas_Object *obj);
+    static void _thumbSelected(void * data, Evas_Object * obj, void * event_info);
+    static void _deleteHistory(void *data, Evas_Object *obj, void *event_info);
+    static void _clearhistory_clicked(void *data, Evas_Object *obj, void *event_info);
+    void setEmptyGengrid(bool setEmpty);
+    static char* listTodayTextGet(void* data, Evas_Object* obj , const char* part);
+    static void close_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+
+private:
+    
+    Evas_Object *m_history_layout;
+    Evas_Object *m_historyitem_layout;
+    Evas_Object *m_genListActionBar;
+    Evas_Object *m_genListToday;
+    Elm_Genlist_Item_Class *m_itemClassActionBar;
+    Elm_Genlist_Item_Class *m_itemClassToday;
+    Evas_Object *m_gengrid;
+    Evas_Object *m_parent;
+    Elm_Gengrid_Item_Class * m_item_class;
+    std::map<std::string,Elm_Object_Item*> m_map_history_views;
+    bool m_gengridSetup;
+    std::string edjFilePath;
+    Evas_Object *createNoHistorysLabel();
+
+    static void focusItem(void* data, Evas_Object* obj, void* event_info);
+    static void unFocusItem(void* data, Evas_Object* obj, void* event_info);
+};
+
+
+}
+}
+
+#endif // BOOKMARKSUI_H
diff --git a/services/HistoryUI/edc/History.edc b/services/HistoryUI/edc/History.edc
new file mode 100644 (file)
index 0000000..4f36aef
--- /dev/null
@@ -0,0 +1,827 @@
+
+#define DEBUG_RECT_OVER(over_part, r, g, b)                         \
+    part { name: __CONCAT("dbg_rect_at_", __stringify(__LINE__));   \
+                                                                    \
+scale:1;                                                            \
+        type : RECT;                                                \
+        repeat_events: 1;                                           \
+        description {                                               \
+            state: "default" 0.0;                                   \
+            visible: 1;                                             \
+            color: r g b 128;                                       \
+            rel1 { to: over_part; relative: 0 0; }                  \
+            rel2 { to: over_part; relative: 1 1; }                  \
+        }                                                           \
+    }
+
+collections {
+
+group{
+        name: "elm/button/base/history_button";
+        parts{
+            part{
+                name: "button";
+                type: RECT;
+                scale: 1;
+                description { state: "default" 0.0;
+                    visible: 1;
+                    fixed: 1 1;
+                    color: 0 0 0 0;
+                }
+            }
+            part{
+                name: "over";
+                type: RECT;
+                scale: 1;
+                description { state: "default" 0.0;
+                    visible: 1;
+                    fixed: 1 1;
+                    rel1 { relative: 0.0 0.0;to: "button";}
+                    rel2 { relative: 1.0 1.0;to: "button";}
+                    color: 0 0 0 0;
+                }
+            }
+        }
+        programs{
+            program {
+                name: "mouse_click";
+                signal: "mouse,clicked,1";
+                source: "over";
+                script {
+                    emit("elm,action,click", "");
+                }
+            }
+        }
+    }
+
+group {
+        name: "history-layout";
+    data {
+        item: "highlight_focus" "off";
+    }
+        images {
+                image: "btn_bar_stop_nor.png" COMP;
+        }
+        color_classes{
+            color_class{
+                name: "defaultBgColor";
+                color: 18 22 34 255;
+            }
+            color_class{
+                name: "focusBgColor";
+                color: 69 143 255 255;
+            }
+            color_class{
+                name: "highlightBgColor";
+                color: 69 143 255 102;
+            }
+            color_class{
+                name: "imageHighlight";
+                color: 255 255 255 102;
+            }
+            color_class{
+                name: "focusbtBgColor";
+                color: 22 120 224 255;
+            }
+            color_class{
+                name: "titleTextColor";
+                color: 74 74 74 255;
+            }
+            color_class{
+                name: "focusTextColor";
+                color: 255 255 255 255;
+            }
+            color_class{
+                name: "highlightTextColor";
+                color: 255 255 255 51;
+            }
+            color_class{
+                name: "urlTextColor";
+                color: 116 116 116 204;
+            }
+            color_class{
+                name: "transparent";
+                color: 0 0 0 0;
+            }
+        }
+         
+  images {
+            image: "web_shadow.png" COMP;
+        }
+        parts {
+            part { name: "action_bar_history_genlist_bg";
+                type: RECT;
+                mouse_events: 0;
+                description { state: "default" 0.0;
+                                visible: 1;
+                                align: 0.0 0.0;
+                                min: 1920 104;
+                                max: 1920 104;
+                                color: 70 143 254 255;
+                    rel1 {
+                                                relative: 0 0;
+                    }
+                    rel2{
+                                                relative: 1 1;
+                    }
+                }
+            }
+           part { name: "gengrid_bg";
+                type: RECT;
+                mouse_events: 0;
+                description { state: "default" 0.0;
+                                visible: 1;
+                                align: 0.0 0.0;
+                                min: 1920 976;
+                                max: 1920 976;
+                                        color: 231 231 231 255;
+                    rel1 {
+                                                relative: 0 1; to: "action_bar_history_genlist_bg";
+                    }
+                      
+                rel2{
+                                                relative: 1 1;
+                    }
+                }
+            }
+            part { name: "action_bar_history_genlist";
+                type : SWALLOW;
+                scale: 1;
+                description {
+                    state: "default" 0.0;
+                    visible: 1;
+                    min: 1920 104;
+                    max: 1920 104;
+                    align: 0.0 0.0;
+                    fixed: 0 0;
+                    rel1 { relative: 0.0 0.0; to: "action_bar_history_genlist_bg";}
+                    rel2 { relative: 1.0 1.0; }
+                }
+                description {
+                    state: "hidden" 0.0;
+                    inherit: "default" 0.0;
+                    visible: 0;
+                }
+                description {
+                    state: "visible" 0.0;
+                    inherit: "default" 0.0;
+                    visible: 1;
+                }
+             }
+           part { name: "history_gengird";
+                type : SWALLOW;
+                scale: 1;
+                description {
+                    state: "default" 0.0;
+                    visible: 1;
+                    min: 1920 976;
+                    max: 1920 976;
+                    align: 0.0 0.0;
+                    fixed: 0 0;
+                    rel1 { relative: 0.0 0.0; to: "gengrid_bg"; offset: 63 63;}
+                    rel2 { relative: 1.0 1.0; }
+                }
+                description {
+                    state: "hidden" 0.0;
+                    inherit: "default" 0.0;
+                    visible: 0;
+                }
+                description {
+                    state: "visible" 0.0;
+                    inherit: "default" 0.0;
+                    visible: 1;
+                }
+           }
+   }
+}
+
+
+  group { name: "elm/genlist/item/history_url_items/default";
+        min: 500 600;
+        max: 500 600;
+        data.item: "texts" "history_url_text";
+        //data.item: "contents" "clearhistory_click";
+        parts{
+            part {
+                name: "bg_clipper";
+                scale:1;
+                type: RECT;
+                description {
+                    state: "default" 0.0;
+                    color: 255 255 255 255;
+                    align: 0 0;
+                    min: 1004 60;
+                    max: 1004 60;
+                    rel1 { relative: 0.0 0.0;}
+                    rel2 { relative: 1.0 1.0;}
+                            }
+                 }
+           part {
+                name: "history_url_text";
+                scale:1;
+                mouse_events: 1;
+                type: TEXT;
+                description {
+                    state: "default" 0.0;
+                    visible: 1;
+                    fixed: 1 1;
+                    align: 0 0;
+                    min: 1004 55;
+                    max: 1004 55;
+                    color: 116 116 116 255;
+                    rel1 { relative: 0.0 0.0; to: "bg_clipper";  }
+                    rel2 { relative: 1.0 1.0; to: "bg_clipper"; }
+                    text {
+                        text: "Title - url";
+                        font: "Sans";
+                        size: 28;
+                        align: 0.0 0.0;
+                    }
+                }
+                description {
+                    state: "highlight" 0.0;
+                    inherit: "default" 0.0;
+                    color_class: focusBgColor1;
+                    visible: 1;
+                  }
+                  description {
+                    state: "focus" 0.0;
+                    inherit: "default" 0.0;
+                    color_class: focusbtBgColor1;
+                    visible: 1;
+                }
+            }
+           }
+
+}
+  group { name: "elm/genlist/item/action_bar_history_items/default";
+        min: 1920 104;
+        max: 1920 104;
+        data.item: "texts" "clearhistory_text";
+        data.item: "contents" "clearhistory_click close_click";
+        parts{
+            part {
+                name: "bg_clipper";
+                scale:1;
+                type: RECT;
+                description {
+                    state: "default" 0.0;
+                    color: 255 255 255 255;
+                    align: 0 0;
+                    min: 1920 104;
+                    max: 1920 104;
+                    rel1 { relative: 0.0 0.0;}
+                    rel2 { relative: 1.0 1.0;}
+                            }
+                 }
+
+             
+               part {
+                name: "item3_bg";
+                type: SWALLOW;
+                scale: 1;
+                description { state: "default" 0.0;
+                    visible: 1;
+                    fixed: 1 1;
+                    min: 348 65;
+                    max: 348 65;
+                    align: 0.5 0.5;
+                    rel1 { relative: 0.0 0.0;to: "bg_clipper";}
+                    rel2 { relative: 1.0 1.0;to: "bg_clipper";}
+                    color : 255 255 255 255;
+
+                }
+                   }
+
+                 part {
+                name: "HistoryManager";
+                scale:1;
+                mouse_events: 1;
+                type: TEXT;
+                description {
+                    state: "default" 0.0;
+                    visible: 1;
+                    fixed: 1 1;
+                    align: 0 .3;
+                    min: 348 65;
+                    max: 348 65;
+                    color: 116 116 116 255;
+                    rel1 { relative: 0.0 0.0; to: "item3_bg";  }
+                    rel2 { relative: 1.0 1.0; to: "item3_bg"; }
+                    text {
+                        text: "History Manager";
+                        font: "Sans";
+                        size: 40;
+                        align: 0.5 0.5;
+                    }
+                }
+                description {
+                    state: "highlight" 0.0;
+                    inherit: "default" 0.0;
+                    color_class: focusBgColor1;
+                    visible: 1;
+                  }
+                  description {
+                    state: "focus" 0.0;
+                    inherit: "default" 0.0;
+                    color_class: focusbtBgColor1;
+                    visible: 1;
+                }
+            }
+            part {
+                name: "clearhistory_button_bg";
+                scale:1;
+                mouse_events: 1;
+                type: RECT;
+                description {
+                    state: "default" 0.0;
+                    color: 192 192 192 255;
+                    align: 0 0;
+                    min: 220 65;
+                    max: 220 65;
+                    rel1 { relative: 0.0 0.0; to: "bg_clipper"; offset: 1500 20;}
+                    rel2 { relative: 1.0 1.0; to: "bg_clipper"; }
+                }
+            }
+            part {
+                name: "clearhistory_button";
+                scale:1;
+                mouse_events: 1;
+                type: RECT;
+                description {
+                    state: "default" 0.0;
+                    visible: 1;
+                    fixed: 1 1;
+                    align: 0 0;
+
+                    min: 220 65;
+                    max: 220 65;
+                    rel1 { relative: 0.0 0.0; to: "clearhistory_button_bg"; }
+                    rel2 { relative: 1.0 1.0; to: "clearhistory_button_bg"; }
+                    color_class: transparent;
+                }
+                description {
+                    state: "highlight" 0.0;
+                    inherit: "default" 0.0;
+                    color_class: focusBgColor;
+                    visible: 1;
+                }
+                  description {
+                    state: "focus" 0.0;
+                    inherit: "default" 0.0;
+                    color_class: focusbtBgColor;
+                    visible: 1;
+                }
+             }
+               part{
+                name: "clearhistory_text";
+                type: TEXT;
+                scale: 1;
+                description { state: "default" 0.0;
+
+                 visible: 1;
+                    fixed: 1 1;
+                    rel1 { relative: 0.0 0.0;to: "clearhistory_button";}
+                    rel2 { relative: 1.0 1.0;to: "clearhistory_button";}
+                    color: 0 0 0 255;
+                    text {
+                        text: "Clear History";
+                        font: "Sans";
+                        size: 27;
+                        align: 0.5 0.5;
+                    }
+                }
+            }
+
+            part {
+                name: "clearhistory_over";
+                scale:1;
+                type: RECT;
+                description {
+                    state: "default" 0.0;
+                    visible: 1;
+                    align: 0 0;
+                    fixed: 1 1;
+
+                    min: 220 65;
+                    max: 220 65;
+                    rel1 { relative: 0.0 0.0; to: "clearhistory_button";}
+                    rel2 { relative: 1.0 1.0; to: "clearhistory_button";}
+                    color_class: transparent;
+                }
+            }
+
+          part {
+                name: "clearhistory_click";
+                scale:1;
+                type: SWALLOW;
+                description {
+                    state: "default" 0.0;
+                    visible: 1;
+                    align: 0 0;
+                    fixed: 1 1;
+                    min: 220 65;
+                    max: 220 65;
+                    rel1 { relative: 0.0 0.0; to: "clearhistory_over";}
+                    rel2 { relative: 1.0 1.0; to: "clearhistory_over";}
+                    color_class: transparent;
+                }
+            }
+
+            part {
+                name: "close_bg";
+                scale:1;
+                mouse_events: 1;
+                type: RECT;
+                description {
+                    state: "default" 0.0;
+                    visible: 1;
+                    fixed: 1 1;
+                    align: 0 0.5;
+                    min: 82 102;
+                    max: 82 102;
+                    rel1 { relative: 0.0 0.0; to: "bg_clipper"; offset: 1758 0;}
+                    rel2 { relative: 1.0 1.0; to: "bg_clipper";}
+                    color_class: transparent;
+                }
+                description {
+                    state: "highlight" 0.0;
+                    inherit: "default" 0.0;
+                    color_class: focusBgColor;
+                    visible: 1;
+                }
+                  description {
+                    state: "focus" 0.0;
+                    inherit: "default" 0.0;
+                    color_class: focusDelBgColor;
+                    visible: 1;
+                }
+            }
+            part {
+                name: "close_icon";
+                type: IMAGE;
+                scale: 1;
+                description { state: "default" 0.0;
+                    visible: 1;
+                    fixed: 1 1;
+                    align: 0 0;
+                    min: 82 102;
+                    max: 82 102;
+                    rel1 { relative: 0.0 0.0; to: "close_bg";}
+                    rel2 { relative: 1.0 1.0; to: "close_bg";}
+                    image.normal: "btn_bar_stop_nor.png";
+                }
+                description { state: "highlight" 0.0;
+                    inherit: "default" 0.0;
+                    visible: 1;
+                }
+                description { state: "focus" 0.0;
+                    inherit: "highlight" 0.0;
+                }
+            }
+            part {
+                name: "close_over";
+                scale:1;
+                   
+               type: RECT;
+                description {
+                    state: "default" 0.0;
+                    visible: 1;
+                    align: 0 0;
+                    fixed: 1 1;
+                    min: 82 102;
+                    max: 82 102;
+                    rel1 { relative: 0.0 0.0; to: "close_bg";}
+                    rel2 { relative: 1.0 1.0; to: "close_bg";}
+                    color_class: transparent;
+                }
+            }
+            part {
+                name: "close_click";
+                scale:1;
+                type: SWALLOW;
+                description {
+                    state: "default" 0.0;
+                    visible: 1;
+                    align: 0 0;
+                    fixed: 1 1;
+                    min: 82 102;
+                    max: 82 102;
+                    rel1 { relative: 0.0 0.0; to: "close_over";}
+                    rel2 { relative: 1.0 1.0; to: "close_over";}
+                    color_class: transparent;
+                }
+            }
+             
+       }
+    programs{
+
+    program {
+                name: "mouse_click_clearhistory";
+                signal: "mouse,clicked,1";
+                source: "clearhistory_over";
+                script {
+                    emit("elm,action,click", "");
+                }
+            }
+           program {
+                name: "mouse_in_clearhistory_click";
+                signal: "mouse,in";
+                source: "clearhistory_*";
+                action: STATE_SET "highlight" 0.0;
+                target: "clearhistory_button";
+                target: "clearhistory_over";
+                target: "clearhistory_text";
+             }
+            program {
+                name: "mouse_out_clearhistory_click";
+                signal: "mouse,out";
+                source: "clearhistory_*";
+                action: STATE_SET "default" 0.0;
+                target: "clearhistory_button";
+                target: "clearhistory_over";
+                target: "clearhistory_text";
+            }
+            program {
+                name: "mouse_in_close_click";
+                signal: "mouse,in";
+                source: "close_click";
+                script {
+                    emit("mouse_in_close_click", "");
+                }
+            }
+            program {
+                name: "mouse_out_close_click";
+                signal: "mouse,out";
+                source: "close_click";
+                script {
+                    emit("mouse_out_close_click", "");
+                }
+            }
+            program {
+                name: "mouse_in_close";
+                signal: "mouse_in_close_click";
+                source: "";
+                action: STATE_SET "highlight" 0.0;
+                target: "close_over";
+                target: "close_bg";
+                target: "close_icon";
+            }
+            program {
+            
+                name: "mouse_out_close";
+                signal: "mouse_out_close_click";
+                source: "";
+                action: STATE_SET "default" 0.0;
+                target: "close_over";
+                target: "close_bg";
+                target: "close_icon";
+            }
+        }
+    }
+
+group { name: "elm/gengrid/item/history_item/default";
+        
+data.item: "texts" "menu_label";
+        data.item: "contents" "history_genlist";
+        images {
+                image: "web_frame_selected.png" COMP;
+                image: "ico_bg_round_shape_37x37.png" COMP;
+        }
+   styles {
+      style { name: "textblock_white";
+         base: "font=Sans font_size="20" color=#5c5c5c";
+      }
+   }
+
+styles {
+      style { name: "textblock_white_bold";
+         base: "font=Sans:style=Bold font_size="20" color=#5c5c5c";
+      }
+   }
+        parts {
+               
+                       part { name: "menu_label_bg";
+                        type: RECT;
+                        description { state: "default" 0.0;
+                                min: 1004 80;
+                                max: 1004 80;
+                                align: 0.0 0.0;
+                                color: 0 0 0 0;
+               
+                        }
+                        description { state: "selected" 0.0;
+                                inherit: "default" 0.0;
+                                color: 70 143 254 255;
+                        }
+                }
+
+            part { name: "menu_label";
+                        type: TEXT;
+                        description { state: "default" 0.0;
+                                min: 1004 80;
+                                max: 1004 80;
+                                align: 0.5 0.5;
+                                fixed: 0 0;
+                                visible: 1;
+                                rel1 { relative: 0.0 0.0;to: "menu_label_bg";}
+                                rel2 { relative: 1.0 1.0;to: "menu_label_bg";}
+
+                            color: 92 92 92 255;
+                            text {
+                                text: "Web page title";
+                                font: "Sans";
+                                size: 28;
+                                align: 0.0 0.0;
+                            }
+                         }
+                }
+           
+           part { name: "genlist_bg";
+                type: RECT;
+                mouse_events: 0;
+                description { state: "default" 0.0;
+                                visible: 1;
+                                align: 0.0 0.0;
+                                min: 1004 600;
+                                max: 1004 600;
+                                color: 255 255 255 255;
+                    rel1 {
+                                                relative: 0 1; to: "menu_label_bg"; 
+                    }
+                    rel2{
+                                                relative: 1 1;
+                    }
+                }
+            }     
+       
+          part { name: "history_genlist";
+                type : SWALLOW;
+                scale: 1;
+                description {
+                    state: "default" 0.0;
+                    visible: 1;
+                    min: 1004 600;
+                    max: 1004 600;
+                    align: 0.0 0.0;
+                    fixed: 0 0;
+                    rel1 { relative: 0.0 0.0; to: "genlist_bg";}
+                    rel2 { relative: 1.0 1.0; }
+                }
+                description {
+                    state: "hidden" 0.0;
+                    inherit: "default" 0.0;
+                    visible: 0;
+                }
+                description {
+                    state: "visible" 0.0;
+                    inherit: "default" 0.0;
+                    visible: 1;
+                }
+           }
+
+}
+}
+
+group { name: "elm/button/base/thumbButton";
+               images {
+                       image: "ico_delete.png" COMP;
+               }
+               parts {
+                       part { name: "elm.swallow.content";
+                               type: RECT;
+                               mouse_events: 1;
+                               repeat_events: 1;
+                               description { state: "default" 0.0;
+                                       color: 0 0 0 0;
+                                       visible: 1;
+                                       rel1.relative: 0.0 0.0;
+                        rel2.relative: 1.0 1.0;
+                        align: 0.0 0.0;
+                }
+                       }
+               }
+
+               programs {
+                       program { name: "mouse,clicked";
+                               signal: "mouse,down,1";
+                               source: "elm.swallow.content";
+                               action: SIGNAL_EMIT "elm,action,click" "";
+                       }
+               }
+}
+
+group { name: "elm/button/base/deleteButton";
+               parts {
+                       part { name: "delete_x";
+                               type: IMAGE;
+                               description { state: "default" 0.0;
+                                       min: 27 27;
+                                       max: 27 27;
+                                       image.normal: "ico_delete.png";
+                                       rel1.relative: 0.0 0.0;
+                        rel2.relative: 1.0 1.0;
+                        align: 0.5 0.5;
+                        visible: 0;
+                               }
+                               description { state: "over" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                               }
+                       }
+
+                       part { name: "elm.swallow.content";
+                               type: RECT;
+                               mouse_events: 1;
+                               repeat_events: 1;
+                               description { state: "default" 0.0;
+                                       color: 0 0 0 0;
+                                       visible: 1;
+                                       rel1.relative: 0.0 0.0;
+                        rel2.relative: 1.0 1.0;
+                        align: 0.0 0.0;
+                }
+                       }
+               }
+               programs {
+                       program { name: "mouse,clicked";
+                               signal: "mouse,down,1";
+                               source: "elm.swallow.content";
+                               action: SIGNAL_EMIT "elm,action,click" "";
+                       }
+                       program { name: "mouse_in";
+                               signal: "mouse,in";
+                               source: "elm.swallow.content";
+                               action:  STATE_SET "over" 0.0;
+                               target:  "delete_x";
+                       }
+                       program { name: "mouse_out";
+                               signal: "mouse,out";
+                               source: "elm.swallow.content";
+                               action:  STATE_SET "default" 0.0;
+                               target:  "delete_x";
+                       }
+               }
+}
+
+group { name: "elm/gengrid/base/bookmarks";
+    data {
+        item: "focus_highlight" "off";
+    }
+
+        parts {
+            part { name: "clipper";
+                type: RECT;
+                mouse_events: 0;
+                description { state: "default" 0.0;
+                    rel1 {
+                                               relative: 0 0;
+                    }
+                    rel2{
+                                               relative: 1 1;
+                    }
+                }
+            }
+           part { name: "background";
+                type: RECT;
+                mouse_events: 0;
+                description { state: "default" 0.0;
+                                       color: 42 50 64 255;
+                    rel1 {
+                                               relative: 0 0;
+                    }
+                    rel2{
+                                               relative: 1 1;
+                    }
+                }
+            }
+            part { name: "elm.swallow.content";
+                type: SWALLOW;
+                clip_to: "clipper";
+                description { state: "default" 0.0;
+                    rel1 {
+                                               relative: 0 0;
+                                               offset: 169 110;
+                    }
+                    rel2 {
+                        relative: 1 1;
+                        offset: -169 0;
+                    }
+                }
+            }
+            part { name: "elm.swallow.empty";
+                type: SWALLOW;
+                description { state: "default" 0.0;
+                align: 0.5 0.5;
+                    rel1 {
+                        relative: 0.5 0.5;
+                    }
+                    rel2 {
+                        relative: 0.5 0.5;
+                    }
+                }
+            }
+    }
+}
+}
diff --git a/services/HistoryUI/edc/error.edc b/services/HistoryUI/edc/error.edc
new file mode 100644 (file)
index 0000000..0291971
--- /dev/null
@@ -0,0 +1,144 @@
+collections {
+    images {
+        image: "web_browsing_icon_error.png" COMP;
+    }
+    group { name: "error_message";
+    styles {
+        style { name: "mssage_style";
+            base: "font=Sans font_size=35 color=#d3d3d3 wrap=word align=0.5";
+        }
+        style { name: "mssage_hint_style";
+            base: "font=Sans font_size=24 color=#868686 wrap=word align=0.5";
+        }
+    }
+    parts {
+        part{
+            name: "message_background";
+            type: RECT;
+            description{
+                state: "default" 0.0;
+                visible: 1;
+                rel1.relative: 0 0;
+                rel2.relative: 1 1;
+                color: 42 50 64 255;
+            }
+        }
+        part{
+            name: "error_message_background";
+            type:RECT;
+            description{
+                state: "default" 0.0;
+                visible: 1;
+                min: 1582 730;
+                max: 1582 730;
+                fixed: 1 1;
+                align: 0.5 0.5;
+                color: 30 38 50 153;
+            }
+        }
+        part{
+            name: "err_ico";
+            type: IMAGE;
+            description{
+                state: "default" 0.0;
+                visible: 1;
+                min: 140 140;
+                max:140 140;
+                fixed: 1 1;
+                align: 0.5 0;
+                rel1{
+                    relative: 0 0;
+                    offset:0 163;
+                    to: "error_message_background";
+                }
+                rel2{
+                    relative: 1 1;
+                    to: "error_message_background";
+                    }
+                image{
+                    normal: "web_browsing_icon_error.png";
+                }
+            }
+        }
+
+        part{
+            name: "error_text";
+            type: TEXTBLOCK;
+            description{
+                state: "default" 0.0;
+                visible: 1;
+                fixed: 1 1;
+                min: 1502 96;
+                max: 1502 96;
+                //color: 211 211 211 255;
+                align: 0.5 0;
+                rel1{
+                    relative: 0 1;
+                    to_x: "error_message_background";
+                    to_y: "err_ico";
+                }
+                rel2{
+                    relative: 1 1;
+                    to: "error_message_background";
+                }
+                text{
+                    style: "mssage_style";
+                    text: "Server not found.<br/>sdf Please check the followings:";
+                    //min: 0 0;
+                    //max: 1 1;
+                    //align: 1 0;
+                    //size: 35;
+                }
+            }
+        }
+
+
+        part{
+            name: "error_hint";
+            type: TEXTBLOCK;
+            description{
+                state: "default" 0.0;
+                visible: 1;
+                fixed: 1 1;
+                min: 1502 117;
+                max: 1502 117;
+                color: 134 134 134 255;
+                align: 0.5 0;
+                rel1{
+                    relative: 0 1;
+                    to_x: "error_message_background";
+                    to_y: "error_text";
+                }
+                rel2{
+                    relative: 1 1;
+                    to: "error_message_background";
+                }
+                text{
+                    max: 0 1;
+                    style: "mssage_hint_style";
+                    text: "Check for any typing error in URL. <br/>"
+                    "Check your network settings.<br/>"
+                    "Try again later.<br/>"
+                    "Click refresh to reload.";
+                }
+            }
+        }
+    }
+/*
+      programs {
+         program { name: "mouse_down";
+            signal: "mouse,down,1";
+            source: "logo";
+            action: STATE_SET "hide" 0.0;
+            target: "logo";
+         }
+         program { name: "mouse_up";
+            signal: "mouse,up,1";
+            source: "logo";
+            action: STATE_SET "default" 0.0;
+            target: "logo";
+         }
+      }
+*/
+   }
+}
diff --git a/services/HistoryUI/images/btn_bar_stop_nor.png b/services/HistoryUI/images/btn_bar_stop_nor.png
new file mode 100644 (file)
index 0000000..c5cdc11
Binary files /dev/null and b/services/HistoryUI/images/btn_bar_stop_nor.png differ
diff --git a/services/HistoryUI/images/ico_delete.png b/services/HistoryUI/images/ico_delete.png
new file mode 100644 (file)
index 0000000..92f42cc
Binary files /dev/null and b/services/HistoryUI/images/ico_delete.png differ
index 4a5c6d7..96ceae1 100644 (file)
@@ -48,8 +48,7 @@ include_directories(${CMAKE_SOURCE_DIR}/services/StorageService/Storage/include)
 include_directories(${CMAKE_SOURCE_DIR}/services/FavoriteService)
 include_directories(${CMAKE_SOURCE_DIR}/services/HistoryService)
 include_directories(${CMAKE_SOURCE_DIR}/services/MoreMenuUI)
-#MERGE_ME
-#include_directories(${CMAKE_SOURCE_DIR}/services/HistoryUI)
+include_directories(${CMAKE_SOURCE_DIR}/services/HistoryUI)
 include_directories(${CMAKE_SOURCE_DIR}/services/MainUI)
 #MERGE_ME
 #include_directories(${CMAKE_SOURCE_DIR}/services/SettingsUI)
@@ -70,8 +69,8 @@ add_dependencies(${PROJECT_NAME} HistoryService)
 #add_dependencies(${PROJECT_NAME} MoreMenuUI)
 add_dependencies(${PROJECT_NAME} BookmarkManagerUI)
 add_dependencies(${PROJECT_NAME} MainUI)
+add_dependencies(${PROJECT_NAME} HistoryUI)
 #MERGE_ME
-#add_dependencies(${PROJECT_NAME} HistoryUI)
 #add_dependencies(${PROJECT_NAME} SettingsUI)
 add_dependencies(${PROJECT_NAME} TabUI)
 add_dependencies(${PROJECT_NAME} PlatformInputManager)
@@ -81,8 +80,8 @@ target_link_libraries(${PROJECT_NAME} StorageService)
 target_link_libraries(${PROJECT_NAME} HistoryService)
 target_link_libraries(${PROJECT_NAME} MoreMenuUI)
 target_link_libraries(${PROJECT_NAME} MainUI)
+target_link_libraries(${PROJECT_NAME} HistoryUI)
 #MERGE_ME
-#target_link_libraries(${PROJECT_NAME} HistoryUI)
 #target_link_libraries(${PROJECT_NAME} SettingsUI)
 target_link_libraries(${PROJECT_NAME} TabUI)
 target_link_libraries(${PROJECT_NAME} BookmarkManagerUI)
index d5e6a6d..0862b66 100644 (file)
@@ -1062,26 +1062,21 @@ void SimpleUI::showMainUI()
 
 void SimpleUI::showHistoryUI(const std::string& str)
 {
-#if MERGE_ME
     BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
-        m_historyUI =
-                std::dynamic_pointer_cast
-                <tizen_browser::base_ui::HistoryUI,tizen_browser::core::AbstractService>
-                (tizen_browser::core::ServiceManager::getInstance().getService("org.tizen.browser.historyui"));
-        M_ASSERT(m_historyUI);
-       m_historyUI->closeHistoryUIClicked.connect(boost::bind(&SimpleUI::closeHistoryUI, this,_1));
-        m_historyUI->historyItemClicked.connect(boost::bind(&SimpleUI::onHistoryClicked, this,_1));
-        m_historyUI->addHistoryItems(getHistory());
-        m_historyUI->show(m_window.get());
-#endif
+    m_historyUI =
+    std::dynamic_pointer_cast<tizen_browser::base_ui::HistoryUI,tizen_browser::core::AbstractService>
+        (tizen_browser::core::ServiceManager::getInstance().getService("org.tizen.browser.historyui"));
+    M_ASSERT(m_historyUI);
+    m_historyUI->closeHistoryUIClicked.connect(boost::bind(&SimpleUI::closeHistoryUI, this,_1));
+    m_historyUI->historyItemClicked.connect(boost::bind(&SimpleUI::onHistoryClicked, this,_1));
+    m_historyUI->addHistoryItems(getHistory());
+    m_historyUI->show(m_window.get());
 }
 
 void SimpleUI::closeHistoryUI(const std::string& str)
 {
-#if MERGE_ME
-        BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
-        m_historyUI = nullptr;
-#endif
+    BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+    m_historyUI = nullptr;
 }
 
 void SimpleUI::showSettingsUI(const std::string& str)
index 9d64421..713beda 100644 (file)
@@ -35,8 +35,8 @@
 // components
 #include "AbstractWebEngine.h"
 #include "MoreMenuUI.h"
-#if MERGE_ME
 #include "HistoryUI.h"
+#if MERGE_ME
 #include "SettingsUI.h"
 #endif
 #include "MainUI.h"
@@ -295,8 +295,8 @@ private:
     std::shared_ptr<tizen_browser::base_ui::MoreMenuUI> m_moreMenuUI;
     std::shared_ptr<tizen_browser::base_ui::BookmarkManagerUI> m_bookmarkManagerUI;
     std::shared_ptr<tizen_browser::base_ui::MainUI> m_mainUI;
-#if MERGE_ME
     std::shared_ptr<tizen_browser::base_ui::HistoryUI> m_historyUI;
+#if MERGE_ME
     std::shared_ptr<tizen_browser::base_ui::SettingsUI> m_settingsUI;
 #endif
     std::shared_ptr<tizen_browser::base_ui::TabUI> m_tabUI;