{
BROWSER_LOGD("%s:%d %s Bookmark Folder Items: %d", __FILE__, __LINE__, __func__, items.size());
int i = 1;
- addBookmarkFolderItem(nullptr, i);
+ addBookmarkFolderItem(nullptr, i++);
for (auto it = items.begin(); it != items.end(); ++it, ++i) {
addBookmarkFolderItem(*it, i);
}
, m_item_class(nullptr)
, m_mm_layout(nullptr)
, m_desktopMode(true)
+ , m_isBookmark(false)
{
BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
m_edjFilePath = EDJE_DIR;
m_edjFilePath.append("MoreMenuUI/MoreMenu.edj");
- m_item_class = crateItemClass();
+ m_item_class = createItemClass();
}
MoreMenuUI::~MoreMenuUI()
elm_gengrid_item_class_free(m_item_class);
}
-Elm_Gengrid_Item_Class* MoreMenuUI::crateItemClass()
+Elm_Gengrid_Item_Class* MoreMenuUI::createItemClass()
{
BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
Elm_Gengrid_Item_Class* item_class = elm_gengrid_item_class_new();
Evas_Object* button = elm_button_add(m_current_tab_bar);
elm_object_style_set(button, "hidden_button");
- evas_object_smart_callback_add(button, "clicked", _star_clicked, this);
- elm_object_part_content_set(m_current_tab_bar, "star_click", button);
-
- button = elm_button_add(m_current_tab_bar);
- elm_object_style_set(button, "hidden_button");
evas_object_smart_callback_add(button, "clicked", _close_clicked, this);
elm_object_part_content_set(m_current_tab_bar, "close_click", button);
- BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+
+ button = elm_button_add(m_mm_layout);
+ elm_object_style_set(button, "hidden_button");
+ evas_object_smart_callback_add(button, "clicked", _star_clicked, this);
+
+ m_bookmarkIcon = elm_icon_add(m_mm_layout);
+ elm_object_part_content_set(m_current_tab_bar, "bookmark_ico", m_bookmarkIcon);
+ elm_object_part_content_set(m_current_tab_bar, "star_click", button);
}
void MoreMenuUI::setFavIcon(std::shared_ptr<tizen_browser::tools::BrowserImage> favicon)
void MoreMenuUI::setURL(const std::string& url)
{
BROWSER_LOGD("[%s:%d] %s", __PRETTY_FUNCTION__, __LINE__, url.c_str());
- if(!url.empty())
+ char* part_name = "add_to_bookmark_text";
+
+ if(!url.empty()) {
elm_object_part_text_set(m_current_tab_bar, "webpage_url", url.c_str());
- else
+
+ if(true == isBookmark()) {
+ m_isBookmark = EINA_TRUE;
+ changeBookmarkStatus(true);
+ }
+ else {
+ m_isBookmark = EINA_FALSE;
+ changeBookmarkStatus(false);
+ }
+ }
+ else {
elm_object_part_text_set(m_current_tab_bar, "webpage_url", "");
+ m_isBookmark = EINA_FALSE;
+ changeBookmarkStatus(false);
+ }
+}
+
+void MoreMenuUI::changeBookmarkStatus(bool data)
+{
+ if(data) {
+ m_isBookmark = EINA_TRUE;
+ elm_object_part_text_set(m_current_tab_bar, "add_to_bookmark_text", "Remove Bookmark");
+ elm_image_file_set(m_bookmarkIcon, m_edjFilePath.c_str(), "ic_add_bookmark.png");
+ }
+ else {
+ m_isBookmark = EINA_FALSE;
+ elm_object_part_text_set(m_current_tab_bar, "add_to_bookmark_text", "Add to Bookmark");
+ elm_image_file_set(m_bookmarkIcon, m_edjFilePath.c_str(), "ic_add_bookmark_new.png");
+ }
+}
+
+void MoreMenuUI::createToastPopup(const char* text)
+{
+ m_toastPopup = elm_popup_add(m_mm_layout);
+ elm_object_style_set(m_toastPopup, "toast");
+ evas_object_size_hint_weight_set(m_toastPopup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(m_toastPopup, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_object_part_content_set(m_current_tab_bar, "toast_popup", m_toastPopup);
+ elm_object_part_text_set(m_current_tab_bar, "toast_text", text);
+ evas_object_smart_callback_add(m_toastPopup, "timeout", _timeout, this);
+ elm_popup_timeout_set(m_toastPopup, 3.0);
+}
+
+void MoreMenuUI::_timeout(void *data, Evas_Object *obj, void *event_info)
+{
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+ MoreMenuUI *moreMenuUI = static_cast<MoreMenuUI*>(data);
+ elm_object_part_text_set(moreMenuUI->m_current_tab_bar, "toast_text", "");
+ evas_object_del(moreMenuUI->m_toastPopup);
}
void MoreMenuUI::_star_clicked(void* data, Evas_Object*, void*)
{
BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
- if (data) {
+ if(data) {
MoreMenuUI *moreMenuUI = static_cast<MoreMenuUI*>(data);
- moreMenuUI->addToBookmarkClicked();
- moreMenuUI->AddBookmarkPopupCalled();
+
+ if (EINA_FALSE == moreMenuUI->m_isBookmark) {
+ moreMenuUI->addToBookmarkClicked();
+ moreMenuUI->AddBookmarkPopupCalled();
+ }
+ else {
+ moreMenuUI->m_isBookmark = EINA_FALSE;
+ moreMenuUI->deleteBookmark();
+ }
}
}
#define MOREMENUUI_H
#include <Evas.h>
+#include <Eina.h>
#include <memory>
#include <boost/signals2/signal.hpp>
void setFavIcon(std::shared_ptr<tizen_browser::tools::BrowserImage> favicon);
void setWebTitle(const std::string& title);
void setURL(const std::string& url);
+ void changeBookmarkStatus(bool data);
+ void createToastPopup(const char* text);
boost::signals2::signal<void ()> addToBookmarkClicked;
boost::signals2::signal<void (int)> AddBookmarkInput;
boost::signals2::signal<void (std::string)> closeMoreMenuClicked;
boost::signals2::signal<void ()> switchToMobileMode;
boost::signals2::signal<void ()> switchToDesktopMode;
+ boost::signals2::signal<bool ()> isBookmark;
+ boost::signals2::signal<void ()> deleteBookmark;
private:
- Elm_Gengrid_Item_Class* crateItemClass();
+ Elm_Gengrid_Item_Class* createItemClass();
Evas_Object* createMoreMenuLayout(Evas_Object* parent);
Evas_Object* createGengrid(Evas_Object* parent);
static char* _grid_text_get(void *data, Evas_Object *obj, const char *part);
static void _star_clicked(void *data, Evas_Object *obj, void *event_info);
static void _close_clicked(void *data, Evas_Object *obj, void *event_info);
+ static void _timeout(void *data, Evas_Object *obj, void *event_info);
static void __cb_mouse_in(void *data, Evas *e, Evas_Object *obj, void *event_info);
static void __cb_mouse_out(void *data, Evas *e, Evas_Object *obj, void *event_info);
std::shared_ptr<tizen_browser::base_ui::AddBookmarkPopup> m_add_bookmark_popup;
Evas_Object *m_gengrid;
Evas_Object *m_parent;
+ Evas_Object *m_toastPopup;
+ Evas_Object *m_icon;
+ Evas_Object *m_bookmarkIcon;
Elm_Gengrid_Item_Class * m_item_class;
std::map<ItemType,Elm_Object_Item*> m_map_menu_views;
std::vector<std::shared_ptr<tizen_browser::services::BookmarkItem> > m_map_bookmark_folder_list;
std::string m_edjFilePath;
std::string m_folderName;
bool m_gengridSetup;
- Evas_Object *m_icon;
bool m_desktopMode;
+ Eina_Bool m_isBookmark;
};
}
RESOURCE_IMAGE_LOSSY("ic_more_setting_nor.png")
RESOURCE_IMAGE_LOSSY("ic_more_exit_nor.png")
RESOURCE_IMAGE_LOSSY("ic_add_bookmark.png")
+RESOURCE_IMAGE_LOSSY("ic_add_bookmark_new.png")
RESOURCE_IMAGE_LOSSY("ic_more_readermode_foc.png")
RESOURCE_IMAGE_LOSSY("ic_more_bookmark_foc.png")
RESOURCE_IMAGE_LOSSY("ic_more_history_foc.png")
}
}
parts {
+ part {
+ name: "toast_popup";
+ scale:1;
+ type: SWALLOW;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ align: 0 0;
+ fixed: 1 1;
+ min: 200 120;
+ max: 338 120;
+ rel1 { relative: 0.0 0.0; offset: 63 700;}
+ rel2 { relative: 1.0 1.0;}
+ }
+ }
+ part {
+ name: "toast_text";
+ scale: 1;
+ type: TEXT;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ fixed: 1 1;
+ align: 0.5 0.5;
+ rel1 { relative: 0.0 0.0; to: "toast_popup";}
+ rel2 { relative: 1.0 1.0; to: "toast_popup";}
+ color_class: titleTextColor;
+ text {
+ font: "Sans";
+ size: 28;
+ align: 0.5 0.5;
+ }
+ }
+ }
part {
name: "bg_rect";
scale:1;
rel2 { relative: 1.0 1.0; to: "item_background";}
color_class: urlTextColor;
text {
- text: "http:/onet.pl";
font: "font_name";
size: 28;
align: 0 0.5;
visible: 1;
}
}
+ part {
+ name: "bookmark_ico";
+ type: SWALLOW;
+ scale: 1;
+ mouse_events: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ min: 58 58;
+ max: 58 58;
+ fixed: 1 1;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0; to: "star_bg";}
+ }
+ }
part{
name: "add_to_bookmark_text";
type: TEXT;
description { state: "default" 0.0;
visible: 1;
fixed: 1 1;
- rel1 { relative: 0.0 0.0;to: "star_bg";}
+ align: 0 0;
+ rel1 { relative: 0.0 0.0;to: "star_bg"; offset: 56 0;}
rel2 { relative: 1.0 1.0;to: "star_bg";}
color: 0 0 0 255;
text {
- text: "Add to bookmark";
font: "Sans";
size: 28;
- align: 0.5 0.5;
+ align: 0 0.5;
}
}
}
program {
name: "mouse_click";
signal: "mouse,clicked,1";
- source: "over";
+ source: "*";
script {
emit("elm,action,click", "");
}
}
}
}
- part { name: "current_tab_bar";
+ part { name: "elm.swallow.grid";
type : SWALLOW;
scale: 1;
description {
state: "default" 0.0;
visible: 1;
- min: 1920 366;
- max: 1920 366;
+ min: 1920 714;
+ max: 1920 714;
align: 0.0 0.0;
fixed: 0 0;
- rel1 { relative: 0.0 0.0; to: "current_tab_bar_bg";}
+ rel1 { relative: 0.0 0.0; to: "gengrid_bg"; offset: 63 0;}
rel2 { relative: 1.0 1.0; }
}
description {
inherit: "default" 0.0;
visible: 1;
}
- }
- part { name: "elm.swallow.grid";
+ }
+ part { name: "current_tab_bar";
type : SWALLOW;
scale: 1;
description {
state: "default" 0.0;
visible: 1;
- min: 1920 714;
- max: 1920 714;
+ min: 1920 366;
+ max: 1920 366;
align: 0.0 0.0;
fixed: 0 0;
- rel1 { relative: 0.0 0.0; to: "gengrid_bg"; offset: 63 0;}
+ rel1 { relative: 0.0 0.0; to: "current_tab_bar_bg";}
rel2 { relative: 1.0 1.0; }
}
description {
inherit: "default" 0.0;
visible: 1;
}
- }
+ }
part { name: "elm.swallow.empty";
type: SWALLOW;
description { state: "default" 0.0;
updateView();
}
-void SimpleUI::bookmarkCheck()
+bool SimpleUI::checkBookmark()
{
if (m_webPageUI->isHomePageActive())
- return;
+ return false;
- if(m_favoriteService->bookmarkExists(m_webEngine->getURI())){
+ if(m_favoriteService->bookmarkExists(m_webEngine->getURI())) {
BROWSER_LOGD("[%s] There is bookmark for this site [%s], set indicator on!", __func__, m_webEngine->getURI().c_str());
- // MERGE_ME
- //leftButtonBar->setActionForButton("bookmark_button", m_unbookmark);
+ return true;
}
- else{
+ else {
BROWSER_LOGD("[%s] There is no bookmark for this site [%s], set indicator off", __func__, m_webEngine->getURI().c_str());
- // MERGE_ME
- //leftButtonBar->setActionForButton("bookmark_button", m_bookmark);
- //addBookmarkEnable(m_favoriteService->countBookmarksAndSubFolders() < m_favoritesLimit);
+ return false;
}
}
// Consider removing these functions
void SimpleUI::onBookmarkAdded(std::shared_ptr<tizen_browser::services::BookmarkItem> bookmarkItem)
{
+ if (m_moreMenuUI) {
+ m_moreMenuUI->changeBookmarkStatus(true);
+ m_moreMenuUI->createToastPopup( (std::string(m_webEngine->getTitle()) + std::string(" added to bookmark")).c_str() );
+ }
+}
+
+void SimpleUI::onBookmarkRemoved(const std::string& uri)
+{
+ BROWSER_LOGD("[%s] deleted %s", __func__, uri.c_str());
+ if (m_moreMenuUI) {
+ m_moreMenuUI->changeBookmarkStatus(false);
+ m_moreMenuUI->createToastPopup( (std::string(m_webEngine->getTitle()) + std::string(" removed from bookmark")).c_str() );
+ }
}
void SimpleUI::onHistoryAdded(std::shared_ptr<tizen_browser::services::HistoryItem> historyItem)
openNewTab(bookmarkAddress);
}
-void SimpleUI::onBookmarkDeleteClicked(std::shared_ptr<tizen_browser::services::BookmarkItem> bookmarkItem)
-{
- BROWSER_LOGD("[%s] delete %s", __func__, bookmarkItem->getAddress().c_str());
- m_favoriteService->deleteBookmark(bookmarkItem->getAddress());
-}
-
// Consider removing these functions
-void SimpleUI::onBookmarkRemoved(const std::string& uri)
-{
- BROWSER_LOGD("[%s] deleted %s", __func__, uri.c_str());
-}
void SimpleUI::onHistoryRemoved(const std::string& uri)
{
{
BROWSER_LOGD("webEngineURLChanged:%s", url.c_str());
m_webPageUI->getURIEntry().clearFocus();
- bookmarkCheck();
}
void SimpleUI::showTabUI()
m_moreMenuUI->addToBookmarkClicked.connect(boost::bind(&SimpleUI::addBookmarkFolders, this));
m_moreMenuUI->AddBookmarkInput.connect(boost::bind(&SimpleUI::addToBookmarks, this,_1));
m_moreMenuUI->BookmarkFolderCreated.connect(boost::bind(&SimpleUI::newFolderMoreMenu, this,_1,_2));
+ m_moreMenuUI->isBookmark.connect(boost::bind(&SimpleUI::checkBookmark, this));
+ m_moreMenuUI->deleteBookmark.connect(boost::bind(&SimpleUI::deleteBookmark, this));
m_moreMenuUI->show(m_window.get(), desktopMode);
m_moreMenuUI->showCurrentTab();
m_moreMenuUI->addToBookmarkClicked.disconnect(boost::bind(&SimpleUI::addBookmarkFolders, this));
m_moreMenuUI->AddBookmarkInput.disconnect(boost::bind(&SimpleUI::addToBookmarks, this,_1));
m_moreMenuUI->BookmarkFolderCreated.disconnect(boost::bind(&SimpleUI::newFolderMoreMenu, this,_1,_2));
+ m_moreMenuUI->isBookmark.disconnect(boost::bind(&SimpleUI::checkBookmark, this));
+ m_moreMenuUI->deleteBookmark.disconnect(boost::bind(&SimpleUI::deleteBookmark, this));
m_moreMenuUI.reset();
}
void tabCreated();
void tabClosed(const tizen_browser::basic_webengine::TabId& id);
- void bookmarkCheck();
std::vector<std::shared_ptr<tizen_browser::services::BookmarkItem> > getBookmarks(int folder_id = -1);
std::vector<std::shared_ptr<tizen_browser::services::BookmarkItem> > getBookmarkFolders(int folder_id);
std::shared_ptr<services::HistoryItemVector> getHistory();
void onBookmarkAdded(std::shared_ptr<tizen_browser::services::BookmarkItem> bookmarkItem);
void onBookmarkClicked(std::shared_ptr<tizen_browser::services::BookmarkItem> bookmarkItem);
- void onBookmarkDeleteClicked(std::shared_ptr<tizen_browser::services::BookmarkItem> bookmarkItem);
void onBookmarkRemoved(const std::string& uri);
void onHistoryAdded(std::shared_ptr<tizen_browser::services::HistoryItem> historyItem);
void webEngineURLChanged(const std::string url);
void onmostHistoryvisitedClicked();
void onBookmarkvisitedClicked();
- /**
+ /**
+ * @brief Check if the current page exists as a bookmark.
+ *
+ */
+ bool checkBookmark();
+ /**
* @brief Adds current page to bookmarks.
*
*/