#define PLATFORM(_pl) (defined PLATFORM_##_pl && PLATFORM_##_pl)
+// Remove this define when merging from new ui implementation is finished
+#define MERGE_ME 0
+
#endif
#include "browser_config.h"
-#include <vector>
-#include <boost/signals2/signal.hpp>
-#include <Evas.h>
-
#include "AbstractService.h"
#include "service_macros.h"
#include "BookmarkItem.h"
std::shared_ptr<tizen_browser::tools::BrowserImage> thumbnail=std::shared_ptr<tizen_browser::tools::BrowserImage>(),
std::shared_ptr<tizen_browser::tools::BrowserImage> favicon = std::shared_ptr<tizen_browser::tools::BrowserImage>(),
unsigned int dirId = 0) = 0;
- /**
+ /**
+ * @brief Creates a new folder with name "title" in a folder with id, parent_id
+ * @return folder_id of created folder
+ */
+ virtual int save_folder(const char *title, int *saved_bookmark_id, int parent_id=0, int by_operator=0)=0;
+
+ /**
+ * @brief get folder id of a folder with name "title" in folder with id, parent_id
+ * @return true if found, false otherwise
+ */
+ virtual bool get_folder_id(const char *title, int parent_id, int *folder_id) = 0 ;
+
+ /**
* @brief Count bookmarks and subfolders
* @return Number of bookmarks and subfolders
*/
virtual bool bookmarkExists(const std::string & url)= 0;
/**
- * @brief Get bookmarks from platform service and store it in private m_bookmarksList
+ * @brief Get bookmarks in a folder from platform service and store it in private m_bookmarksList
+ *
+ * @return list of bookmark items in folder with id, folder_id
+ */
+ virtual std::vector<std::shared_ptr<tizen_browser::services::BookmarkItem> > getBookmarks(int folder_id = 0)= 0;
+
+ /**
+ * @brief Get bookmark folders from platform service and store it in private m_bookmarkFoldersList
*
- * @return list of bookmark items
+ * @return list of bookmark folders
*/
- virtual std::vector<std::shared_ptr<tizen_browser::services::BookmarkItem> > getBookmarks()= 0;
+ virtual std::vector<std::shared_ptr<tizen_browser::services::BookmarkItem> > getBookmarkFolders()= 0;
/**
* @brief Delete all bookmarks
#include <map>
#include <boost/any.hpp>
-//#include <boost/property_tree/json_parser.hpp>
-//#include <boost/property_tree/ptree.hpp>
namespace tizen_browser
{
}
-
BookmarkItem::~BookmarkItem()
{
}
#ifndef BOOKMARKITEM_H
#define BOOKMARKITEM_H
-#include <memory>
-#include <list>
-#include <vector>
-
+#include "BrowserLogger.h"
+#include "Config.h"
#include "BrowserImage.h"
namespace tizen_browser{
void setTags(const std::vector<unsigned int>& tags) { m_tags = tags; };
std::vector<unsigned int> getTags() const { return m_tags; };
+ bool is_folder(void) const { return m_is_folder; }
+ bool is_editable(void) const { return m_is_editable; }
+
+ void set_folder_flag(bool flag) { m_is_folder = flag; }
+ void set_editable_flag(bool flag) { m_is_editable = flag; }
+
private:
unsigned int m_saved_id;
std::string m_url;
std::shared_ptr<tizen_browser::tools::BrowserImage> m_favicon;
unsigned int m_directory;
std::vector<unsigned int> m_tags;
+ bool m_is_folder;
+ bool m_is_editable;
};
typedef std::shared_ptr<BookmarkItem> SharedBookmarkItem;
static bool app_create(void * /*app_data*/)
{
-// elm_config_accel_preference_set("opengl");
- elm_config_accel_preference_set("3d");
+// MERGE_ME not sure which should be chosen
+// elm_config_accel_preference_set("opengl");
+ elm_config_accel_preference_set("3d");
elm_config_focus_move_policy_set(ELM_FOCUS_MOVE_POLICY_CLICK);
// Enabling focus
--- /dev/null
+# It might not be enough so please keep the code in your eyes.
+# for example,
+# 1. It does not check below
+# a) class Child: public Parent
+# b) class Child : public Parent
+
+style=kr
+indent=spaces=4
+pad-oper
+pad-header
+lineend=linux
+add-brackets
+indent-switches
+unpad-paren
+convert-tabs
+align-pointer=middle
+align-reference=middle
+max-instatement-indent=80
+keep-one-line-statements
+indent-preprocessor
#include "browser_config.h"
#include "BookmarkService.h"
+#include <Elementary.h>
-#include <string>
#include <boost/any.hpp>
#include <BrowserAssert.h>
BookmarkService::~BookmarkService()
{
bp_bookmark_adaptor_deinitialize();
+ free_path_history();
}
/*private*/ std::shared_ptr<tizen_browser::services::StorageService> BookmarkService::getStorageManager() {
unsigned int dirId)
{
BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
- std::shared_ptr<BookmarkItem> bookmark = std::make_shared<BookmarkItem>(address, tittle, note, dirId);
- bookmark->setThumbnail(thumbnail);
- bookmark->setFavicon(favicon);
+ bp_bookmark_property_cond_fmt properties;
+ properties.parent = -1;
+ properties.type = 0;
+ properties.is_operator = -1;
+ properties.is_editable = -1;
+ //conditions for querying
+ bp_bookmark_rows_cond_fmt conds;
+ conds.limit = 1;
+ conds.offset = 0;
+ conds.order_offset = BP_BOOKMARK_O_SEQUENCE;
+ conds.ordering = 0;
+ conds.period_offset = BP_BOOKMARK_O_DATE_CREATED;
+ conds.period_type = BP_BOOKMARK_DATE_ALL;
- int bookmark_id = -1;
- int ret = bp_bookmark_adaptor_create(&bookmark_id);
- if (ret<0){
- BROWSER_LOGE("Error! Could not create new bookmark!");
- return bookmark;
- }
- int *ids = NULL;
- int ids_count = 0;
- ret = bp_bookmark_adaptor_get_ids_p(&ids, &ids_count, -1, 0, -1, -1, -1, -1, BP_BOOKMARK_O_SEQUENCE, 0);
- if (ret<0){
+ int id = -1;
+ int *ids = nullptr;
+ int ids_count = -1;
+ int ret = bp_bookmark_adaptor_get_cond_ids_p(&ids, &ids_count, &properties, &conds, BP_BOOKMARK_O_URL, address.c_str(), 0);
+ free(ids);
+ if (ret < 0){
BROWSER_LOGE("Error! Could not get ids!");
return std::make_shared<BookmarkItem>();
}
- bp_bookmark_adaptor_set_url(bookmark_id, address.c_str());
+ bp_bookmark_info_fmt info;
+ info.type = 0;
+ info.parent = dirId;
+ info.sequence = -1;
+ info.access_count = -1;
+ info.editable = 1;
+
+ if (!address.empty()) {
+ info.url = (char*) address.c_str();
+ }
+ if (!tittle.empty())
+ info.title = (char*) tittle.c_str();
+
+ ret = bp_bookmark_adaptor_easy_create(&id, &info);
+ if (ret < 0){
+ BROWSER_LOGE("Error! Could not create new bookmark!");
+ return std::make_shared<BookmarkItem>();
+ }
- bp_bookmark_adaptor_set_title(bookmark_id, tittle.c_str());
- if (thumbnail) {
- std::unique_ptr<tizen_browser::tools::Blob> thumb_blob = tizen_browser::tools::EflTools::getBlobPNG(thumbnail);
- unsigned char * thumb = std::move((unsigned char*)thumb_blob->getData());
- bp_bookmark_adaptor_set_snapshot(bookmark_id, thumbnail->width, thumbnail->height, thumb, thumb_blob->getLength());
- }
- if (favicon) {
- std::unique_ptr<tizen_browser::tools::Blob> favicon_blob = tizen_browser::tools::EflTools::getBlobPNG(favicon);
- unsigned char * fav = std::move((unsigned char*)favicon_blob->getData());
- bp_bookmark_adaptor_set_icon(bookmark_id, favicon->width, favicon->height, fav, favicon_blob->getLength());
- }
+ // max sequence
+ ret = bp_bookmark_adaptor_set_sequence(id, -1);
+ if(thumbnail)
+ {
+ std::unique_ptr<tizen_browser::tools::Blob> thumb_blob = tizen_browser::tools::EflTools::getBlobPNG(thumbnail);
+ unsigned char * thumb = std::move((unsigned char*)thumb_blob->getData());
+ bp_bookmark_adaptor_set_snapshot(id, thumbnail->width, thumbnail->height, thumb, thumb_blob->getLength());
+ }
+ if(favicon)
+ {
+ std::unique_ptr<tizen_browser::tools::Blob> favicon_blob = tizen_browser::tools::EflTools::getBlobPNG(favicon);
+ unsigned char * fav = std::move((unsigned char*)favicon_blob->getData());
+ bp_bookmark_adaptor_set_icon(id, favicon->width, favicon->height, fav, favicon_blob->getLength());
+ }
+ std::shared_ptr<BookmarkItem> bookmark = std::make_shared<BookmarkItem>(address, tittle, note, dirId, id);
+ bookmark->setThumbnail(thumbnail);
+ bookmark->setFavicon(favicon);
m_bookmarks.push_back(bookmark);
- BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
bookmarkAdded(bookmark);
return bookmark;
}
int BookmarkService::getBookmarkId(const std::string & url)
{
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
bp_bookmark_property_cond_fmt properties;
- bp_bookmark_rows_cond_fmt conds;
properties.parent = -1;
properties.type = 0;
properties.is_operator = 0;
properties.is_editable = -1;
+ bp_bookmark_rows_cond_fmt conds;
conds.limit = -1;
conds.offset = 0;
conds.order_offset = BP_BOOKMARK_O_DATE_CREATED;
conds.ordering = 0;
conds.period_offset = BP_BOOKMARK_O_DATE_CREATED;
conds.period_type = BP_BOOKMARK_DATE_ALL;
- int *ids = 0;
+ int *ids = nullptr;
int ids_count = 0;
- int ret = bp_bookmark_adaptor_get_cond_ids_p(&ids, &ids_count,
- &properties, &conds, BP_BOOKMARK_O_URL, url.c_str(), 0);
- if (ids_count!=0){
- int i = *ids;
- free(ids);
- return i;
+ int i = 0;
+ int ret = bp_bookmark_adaptor_get_cond_ids_p(&ids, &ids_count, &properties, &conds, BP_BOOKMARK_O_URL, url.c_str(), 0);
+ if (ids_count > 0){
+ i = *ids;
}
- return 0;
+ free(ids);
+ return i;
}
-std::vector<std::shared_ptr<BookmarkItem> > BookmarkService::getBookmarks()
+std::vector<std::shared_ptr<BookmarkItem> > BookmarkService::getBookmarks(int folder_id)
{
- int *ids = NULL;
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+ int *ids = nullptr;
int ids_count = 0;
- int ret = bp_bookmark_adaptor_get_ids_p(&ids, &ids_count, -1, 0, -1, -1, -1, -1, BP_BOOKMARK_O_SEQUENCE, 0);
+ int ret = bp_bookmark_adaptor_get_ids_p(&ids, &ids_count, -1, 0, folder_id, 0, -1, -1, BP_BOOKMARK_O_SEQUENCE, 0);
if (ret<0){
BROWSER_LOGE("Error! Could not get ids!");
return std::vector<std::shared_ptr<BookmarkItem>>();
bp_bookmark_info_fmt bookmark_info;
bp_bookmark_adaptor_get_easy_all(ids[i], &bookmark_info);
- std::shared_ptr<BookmarkItem> bookmark = std::make_shared<BookmarkItem>(std::string(bookmark_info.url),std::string(bookmark_info.title), std::string(""), 0);
+ std::shared_ptr<BookmarkItem> bookmark = std::make_shared<BookmarkItem>(std::string(bookmark_info.url),std::string(bookmark_info.title), std::string(""),(int) bookmark_info.parent, ids[i]);
std::shared_ptr<tizen_browser::tools::BrowserImage> bi = std::make_shared<tizen_browser::tools::BrowserImage>();
bi->imageType = tizen_browser::tools::BrowserImage::ImageType::ImageTypePNG;
return m_bookmarks;
}
+std::vector<std::shared_ptr<BookmarkItem> > BookmarkService::getBookmarkFolders()
+{
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+ int *ids = nullptr;
+ int ids_count = 0;
+ int ret = bp_bookmark_adaptor_get_ids_p(&ids, &ids_count, -1, 0, -1, 1, -1, -1, BP_BOOKMARK_O_SEQUENCE, 0);
+ if (ret<0){
+ BROWSER_LOGE("Error! Could not get ids!");
+ return std::vector<std::shared_ptr<BookmarkItem>>();
+ }
+
+ m_bookmarks.clear();
+
+ BROWSER_LOGD("Bookmark items: %d", ids_count);
+
+ for(int i = 0; i<ids_count; i++)
+ {
+ bp_bookmark_info_fmt bookmark_info;
+ bp_bookmark_adaptor_get_easy_all(ids[i], &bookmark_info);
+
+ std::shared_ptr<BookmarkItem> bookmark = std::make_shared<BookmarkItem>(std::string(bookmark_info.url ? bookmark_info.url : ""),std::string(bookmark_info.title ? bookmark_info.title : ""), std::string(""),(int) bookmark_info.parent, ids[i]);
+ std::shared_ptr<tizen_browser::tools::BrowserImage> bi = std::make_shared<tizen_browser::tools::BrowserImage>();
+ bi->imageType = tizen_browser::tools::BrowserImage::ImageType::ImageTypePNG;
+ bi->width = bookmark_info.thumbnail_width;
+ bi->height = bookmark_info.thumbnail_height;
+ bi->dataSize = bookmark_info.thumbnail_length;
+ bi->imageData = (void*)malloc(bookmark_info.thumbnail_length);
+ memcpy(bi->imageData, (void*)bookmark_info.thumbnail, bookmark_info.thumbnail_length);
+ bookmark->setThumbnail(bi);
+
+ std::shared_ptr<tizen_browser::tools::BrowserImage> fav = std::make_shared<tizen_browser::tools::BrowserImage>();
+ unsigned char *image_bytes;
+ bp_bookmark_adaptor_get_icon(ids[i], &fav->width, &fav->height, &image_bytes, &fav->dataSize);
+ fav->imageType = tizen_browser::tools::BrowserImage::ImageType::ImageTypePNG;
+
+ fav->imageData = (void*)malloc(bookmark_info.favicon_length);
+ memcpy(fav->imageData, (void*)image_bytes, bookmark_info.favicon_length);
+ bookmark->setFavicon(fav);
+ if(!bookmark_info.is_operator)
+ m_bookmarks.push_back(bookmark);
+ else
+ m_bookmarks.insert(m_bookmarks.begin(),bookmark);
+ }
+ free(ids);
+ return m_bookmarks;
+}
+
+
bool BookmarkService::deleteAllBookmarks()
{
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
bp_bookmark_adaptor_reset();
m_bookmarks.clear();
bookmarksDeleted();
return true;
}
+int BookmarkService::get_root_folder_id(void)
+{
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+ int root_id = 0;
+ bp_bookmark_adaptor_get_root(&root_id);
+ return root_id;
+}
+
+int BookmarkService::save_folder(const char *title, int *saved_folder_id, int parent_id, int by_operator)
+{
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+
+ bp_bookmark_property_cond_fmt properties;
+ properties.parent = parent_id;
+ properties.type = 1;
+ properties.is_operator = -1;
+ properties.is_editable = -1;
+ //conditions for querying
+ bp_bookmark_rows_cond_fmt conds;
+ conds.limit = 1;
+ conds.offset = 0;
+ conds.order_offset = BP_BOOKMARK_O_SEQUENCE;
+ conds.ordering = 0;
+ conds.period_offset = BP_BOOKMARK_O_DATE_CREATED;
+ conds.period_type = BP_BOOKMARK_DATE_ALL;
+ int id = -1;
+ int *ids = nullptr;
+ int ids_count = -1;
+ int ret = bp_bookmark_adaptor_get_cond_ids_p(&ids, &ids_count, &properties, &conds, BP_BOOKMARK_O_TITLE, title, 0);
+ free(ids);
+
+ if (ret < 0)
+ return -1;
+
+ if (ids_count > 0) {
+ return 0;
+ }
+
+ bp_bookmark_info_fmt info;
+ info.type = 1;
+ info.parent = parent_id;
+ info.sequence = -1;
+ info.is_operator = by_operator;
+ info.access_count = -1;
+ info.editable = 1;
+ if (title != nullptr && strlen(title) > 0)
+ {
+ info.title = (char *)title;
+ }
+ ret = bp_bookmark_adaptor_easy_create(&id, &info);
+
+ if (ret == 0) {
+ ret = bp_bookmark_adaptor_set_sequence(id, -1); // max sequence
+ if (ret == 0) {
+ *saved_folder_id = id;
+ BROWSER_LOGD("bmsvc_add_bookmark is success(id:%d)", *saved_folder_id);
+ bp_bookmark_adaptor_publish_notification();
+ return id;
+ }
+ }
+ BROWSER_LOGD("bmsvc_add_bookmark is failed");
+ return -1;
+}
+
+bool BookmarkService::delete_by_id(int id)
+{
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+ BROWSER_LOGD("id[%d]", id);
+ if (bp_bookmark_adaptor_delete(id) < 0)
+ return false;
+ else {
+ bp_bookmark_adaptor_publish_notification();
+ return true;
+ }
+}
+
+bool BookmarkService::delete_by_id_notify(int id)
+{
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+ BROWSER_LOGD("id[%d]", id);
+
+ BookmarkItem item;
+ get_item_by_id(id, &item);
+ return delete_by_id(id);
+}
+
+bool BookmarkService::delete_by_uri(const char *uri)
+{
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+ BROWSER_LOGD("uri[%s]", uri);
+ bp_bookmark_property_cond_fmt properties;
+ properties.parent = -1;
+ properties.type = 0;
+ properties.is_operator = -1;
+ properties.is_editable = -1;
+ //conditions for querying
+ bp_bookmark_rows_cond_fmt conds;
+ conds.limit = 1;
+ conds.offset = 0;
+ conds.order_offset = BP_BOOKMARK_O_SEQUENCE;
+ conds.ordering = 0;
+ conds.period_offset = BP_BOOKMARK_O_DATE_CREATED;
+ conds.period_type = BP_BOOKMARK_DATE_ALL;
+
+ int *ids = nullptr;
+ int ids_count = -1;
+ int ret = bp_bookmark_adaptor_get_cond_ids_p(&ids, &ids_count, &properties, &conds, BP_BOOKMARK_O_URL, uri, 0);
+ bool result = false;
+ if (ret >= 0 && ids_count > 0)
+ {
+ delete_by_id_notify(ids[0]);
+ free(ids);
+ }
+
+ return result;
+}
+
+int BookmarkService::update_bookmark(int id, const char *title, const char *uri, int parent_id, int order,
+ bool is_duplicate_check_needed, bool is_URI_check_needed)
+{
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+
+ bool is_URI_exist = (uri != nullptr && strlen(uri) > 0);
+ bool is_title_exist = (title != nullptr && strlen(title) > 0);
+ int ret = -1;
+ if (is_duplicate_check_needed) {
+ bp_bookmark_property_cond_fmt properties;
+ properties.parent = -1;
+ properties.type = 0;
+ properties.is_operator = -1;
+ properties.is_editable = -1;
+ //conditions for querying
+ bp_bookmark_rows_cond_fmt conds;
+ conds.limit = 1;
+ conds.offset = 0;
+ conds.order_offset = BP_BOOKMARK_O_SEQUENCE;
+ conds.ordering = 0;
+ conds.period_offset = BP_BOOKMARK_O_DATE_CREATED;
+ conds.period_type = BP_BOOKMARK_DATE_ALL;
+ int *ids = nullptr;
+ int ids_count = -1;
+ //This is a bookmark item so check for any such URL already exists
+ if (is_URI_exist && is_URI_check_needed) {
+ ret = bp_bookmark_adaptor_get_cond_ids_p(&ids, &ids_count, &properties, &conds, BP_BOOKMARK_O_URL, uri, 0);
+ free(ids);
+ if (ret < 0)
+ return -1;
+ }
+ //This is a bookmark folder so check for any such folder with same title already exists
+ else if (is_title_exist) {
+ ret = bp_bookmark_adaptor_get_cond_ids_p(&ids, &ids_count, &properties, &conds, BP_BOOKMARK_O_TITLE, title, 0);
+ free(ids);
+ if (ret < 0)
+ return -1;
+ }
+
+ if (ids_count > 0) {
+ BROWSER_LOGD("same bookmark already exist");
+ return 0;
+ }
+ }
+ bp_bookmark_info_fmt info;
+ info.type = -1;
+ info.parent = parent_id;
+ info.sequence = order;
+ info.editable = -1;
+ if (is_URI_exist)
+ info.url = (char *)uri;
+ if (is_title_exist)
+ info.title = (char *)title;
+
+ ret = bp_bookmark_adaptor_easy_create(&id, &info);
+ if (ret == 0) {
+ BROWSER_LOGD("bp_bookmark_adaptor_easy_create is success");
+ bp_bookmark_adaptor_publish_notification();
+ return 1;
+ }
+ int errcode = bp_bookmark_adaptor_get_errorcode();
+ BROWSER_LOGD("bp_bookmark_adaptor_easy_create is failed[%d]", errcode);
+ return -1;
+}
+
+int BookmarkService::update_bookmark_notify(int id, const char *title, const char *uri, int parent_id, int order,
+ bool is_duplicate_check_needed, bool is_URI_check_needed)
+{
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+ BROWSER_LOGD("");
+ int ret = update_bookmark(id, title, uri, parent_id, order, is_duplicate_check_needed, is_URI_check_needed);
+ return ret;
+}
+
+bool BookmarkService::is_in_bookmark(const char *uri)
+{
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+ BROWSER_LOGD("uri[%s]", uri);
+
+ int id = 0;
+ return get_id(uri, &id);
+}
+
+bool BookmarkService::is_in_folder(int parent_folder, const char *title)
+{
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+ BROWSER_LOGD("");
+
+ bp_bookmark_property_cond_fmt properties;
+ properties.parent = parent_folder;
+ properties.type = 1;
+ properties.is_operator = -1;
+ properties.is_editable = -1;
+ //conditions for querying
+ bp_bookmark_rows_cond_fmt conds;
+ conds.limit = 1;
+ conds.offset = 0;
+ conds.order_offset = BP_BOOKMARK_O_SEQUENCE;
+ conds.ordering = 0;
+ conds.period_offset = BP_BOOKMARK_O_DATE_CREATED;
+ conds.period_type = BP_BOOKMARK_DATE_ALL;
+
+ int *ids = nullptr;
+ int ids_count = -1;
+ int ret = bp_bookmark_adaptor_get_cond_ids_p(&ids, &ids_count, &properties, &conds, BP_BOOKMARK_O_TITLE, title, 0);
+ free(ids);
+ return ((ret >= 0) && (ids_count > 0));
+}
+
+bool BookmarkService::get_id(const char *uri, int *bookmark_id)
+{
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+ bp_bookmark_property_cond_fmt properties;
+ properties.parent = -1;
+ properties.type = 0;
+ properties.is_operator = -1;
+ properties.is_editable = -1;
+ //conditions for querying
+ bp_bookmark_rows_cond_fmt conds;
+ conds.limit = 1;
+ conds.offset = 0;
+ conds.order_offset = BP_BOOKMARK_O_SEQUENCE;
+ conds.ordering = 0;
+ conds.period_offset = BP_BOOKMARK_O_DATE_CREATED;
+ conds.period_type = BP_BOOKMARK_DATE_ALL;
+
+ int *ids = nullptr;
+ int ids_count = -1;
+ int ret = bp_bookmark_adaptor_get_cond_ids_p(&ids, &ids_count, &properties, &conds, BP_BOOKMARK_O_URL, uri, 0);
+ free(ids);
+ bool result = ((ret >= 0) && (ids_count > 0));
+ if (result) {
+ *bookmark_id = ids[0];
+ }
+ return result;
+}
+
+bool BookmarkService::get_folder_id(const char *title, int parent_id, int *folder_id)
+{
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+
+ bp_bookmark_property_cond_fmt properties;
+ properties.parent = parent_id;
+ properties.type = 1;
+ properties.is_operator = -1;
+ properties.is_editable = -1;
+ //conditions for querying
+ bp_bookmark_rows_cond_fmt conds;
+ conds.limit = 1;
+ conds.offset = 0;
+ conds.order_offset = BP_BOOKMARK_O_SEQUENCE;
+ conds.ordering = 0;
+ conds.period_offset = BP_BOOKMARK_O_DATE_CREATED;
+ conds.period_type = BP_BOOKMARK_DATE_ALL;
+
+ int *ids = nullptr;
+ int ids_count = -1;
+ int ret = bp_bookmark_adaptor_get_cond_ids_p(&ids, &ids_count, &properties, &conds, BP_BOOKMARK_O_TITLE, title, 0);
+ free(ids);
+ bool result = ((ret >= 0) && (ids_count > 0));
+ if (result) {
+ *folder_id = ids[0];
+ }
+ return false;
+}
+
+bool BookmarkService::get_item_by_id(int id, BookmarkItem *item)
+{
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+ BROWSER_LOGD("ID: %d", id);
+ if (!item) {
+ BROWSER_LOGE("item is nullptr");
+ return false;
+ }
+
+ if (id == get_root_folder_id()) {
+ item->setTittle("Bookmarks");
+ item->setAddress("");
+ item->setId(id);
+ item->set_folder_flag(1);
+ item->set_editable_flag(1);
+ item->setDir(-1);
+ return true;
+ }
+ bp_bookmark_info_fmt info;
+ if (bp_bookmark_adaptor_get_info(id, (BP_BOOKMARK_O_TYPE | BP_BOOKMARK_O_PARENT | BP_BOOKMARK_O_SEQUENCE |
+ BP_BOOKMARK_O_IS_EDITABLE | BP_BOOKMARK_O_URL |BP_BOOKMARK_O_TITLE), &info) == 0) {
+ item->setId(id);
+ item->set_folder_flag(static_cast<bool>(info.type));
+ item->setDir(info.parent);
+ item->set_editable_flag(static_cast<bool>(info.editable));
+
+ if (info.url != nullptr && strlen(info.url) > 0)
+ item->setAddress(info.url);
+
+ if (info.title != nullptr && strlen(info.title) > 0)
+ item->setTittle(info.title);
+
+ bp_bookmark_adaptor_easy_free(&info);
+ return true;
+ }
+ BROWSER_LOGD("bp_bookmark_adaptor_get_easy_all is failed");
+ return false;
+}
+
+std::vector<BookmarkItem *> BookmarkService::get_list_by_folder(const int folder_id)
+{
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+ std::vector<BookmarkItem *> list;
+ BROWSER_LOGD("folder ID: %d", folder_id);
+ int *ids = nullptr;
+ int ids_count = -1;
+
+ if (bp_bookmark_adaptor_get_ids_p(&ids, &ids_count, -1, 0, folder_id, -1, -1, -1, BP_BOOKMARK_O_SEQUENCE, 1) < 0) {
+ BROWSER_LOGD("bp_bookmark_adaptor_get_sequence_child_ids_p is failed");
+ return list;
+ }
+
+ if (ids_count <= 0) {
+ BROWSER_LOGD("bookmark list is empty");
+ free(ids);
+ return list;
+ }
+
+ bp_bookmark_info_fmt info;
+ for(int i = 0; i < ids_count; i++) {
+ if (bp_bookmark_adaptor_get_info(ids[i], (BP_BOOKMARK_O_TYPE |
+ BP_BOOKMARK_O_SEQUENCE |
+ BP_BOOKMARK_O_IS_EDITABLE | BP_BOOKMARK_O_URL |
+ BP_BOOKMARK_O_TITLE | BP_BOOKMARK_O_IS_OPERATOR), &info) == 0) {
+ BookmarkItem *item = new BookmarkItem();
+ item->setId(ids[i]);
+
+ item->set_folder_flag(static_cast<bool>(info.type));
+ item->setDir(folder_id);
+ item->set_editable_flag(static_cast<bool>(info.editable));
+
+ if (info.url != nullptr && strlen(info.url) > 0)
+ item->setAddress(info.url);
+
+ if (info.title != nullptr && strlen(info.title) > 0)
+ item->setTittle(info.title);
+
+ list.push_back(item);
+ bp_bookmark_adaptor_easy_free(&info);
+ }
+ }
+ free(ids);
+ return list;
+}
+
+bool BookmarkService::get_list_users_by_folder(const int folder_id, std::vector<BookmarkItem *> &list)
+{
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+ BROWSER_LOGD("folder ID: %d", folder_id);
+ int *ids = nullptr;
+ int ids_count = -1;
+ if (bp_bookmark_adaptor_get_ids_p(&ids, &ids_count, -1, 0, folder_id, -1, 0, -1, BP_BOOKMARK_O_SEQUENCE, 1) < 0) {
+ BROWSER_LOGD("bp_bookmark_adaptor_get_ids_p is failed");
+ return false;
+ }
+
+ if (ids_count <= 0) {
+ BROWSER_LOGD("bookmark list is empty");
+ free(ids);
+ return false;
+ }
+
+ bp_bookmark_info_fmt info;
+ for(int i = 0; i < ids_count; i++) {
+ if (bp_bookmark_adaptor_get_info(ids[i], (BP_BOOKMARK_O_TYPE |
+ BP_BOOKMARK_O_SEQUENCE |
+ BP_BOOKMARK_O_IS_EDITABLE | BP_BOOKMARK_O_URL |
+ BP_BOOKMARK_O_TITLE |
+ BP_BOOKMARK_O_IS_OPERATOR), &info) == 0) {
+ BookmarkItem *item = new BookmarkItem();
+ item->setId(ids[i]);
+ item->set_folder_flag(static_cast<bool>(info.type));
+ item->setDir(folder_id);
+ item->set_editable_flag(static_cast<bool>(info.editable));
+
+ if (info.url != nullptr && strlen(info.url) > 0)
+ item->setAddress(info.url);
+
+ if (info.title != nullptr && strlen(info.title) > 0)
+ item->setTittle(info.title);
+
+ if (info.is_operator > 0) {
+ delete item;
+ } else {
+ list.push_back(item);
+ }
+ bp_bookmark_adaptor_easy_free(&info);
+ }
+ }
+ free(ids);
+ return (list.empty() == false);
+}
+
+bool BookmarkService::get_list_by_dividing(const int folder_id, std::vector<BookmarkItem *> &list, int *list_item_count, int genlist_block_size)
+{
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+ BROWSER_LOGD("folder ID: %d", folder_id);
+
+ int *ids = nullptr;
+ int ids_count = -1;
+ if (bp_bookmark_adaptor_get_ids_p(&ids, &ids_count, genlist_block_size, *list_item_count, folder_id, -1, -1, -1,
+ BP_BOOKMARK_O_SEQUENCE, 1) < 0) {
+ BROWSER_LOGD("bp_bookmark_adaptor_get_ids_p is failed");
+ return false;
+ }
+
+ if (ids_count <= 0) {
+ BROWSER_LOGD("bookmark list is empty");
+ free(ids);
+ return false;
+ }
+
+ bp_bookmark_info_fmt info;
+ for(int i = 0; i < ids_count; i++) {
+ if (bp_bookmark_adaptor_get_info(ids[i], (BP_BOOKMARK_O_TYPE |
+ BP_BOOKMARK_O_SEQUENCE |
+ BP_BOOKMARK_O_IS_EDITABLE | BP_BOOKMARK_O_URL |
+ BP_BOOKMARK_O_TITLE | BP_BOOKMARK_O_IS_OPERATOR), &info) == 0) {
+ BookmarkItem *item = new BookmarkItem();
+ item->setId(ids[i]);
+ item->set_folder_flag(static_cast<bool>(info.type));
+ item->setDir(folder_id);
+ item->set_editable_flag(static_cast<bool>(info.editable));
+
+ if (info.url != nullptr && strlen(info.url) > 0)
+ item->setAddress(info.url);
+
+ if (info.title != nullptr && strlen(info.title) > 0)
+ item->setTittle(info.title);
+
+ list.push_back(item);
+ bp_bookmark_adaptor_easy_free(&info);
+ }
+ }
+ free(ids);
+ return true;
+}
+
+bool BookmarkService::get_list_users_by_dividing(const int folder_id, std::vector<BookmarkItem *> &list, int *list_item_count, int genlist_block_size)
+{
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+ BROWSER_LOGD("folder ID: %d", folder_id);
+ int *ids = nullptr;
+ int ids_count = -1;
+ if (bp_bookmark_adaptor_get_ids_p(&ids, &ids_count, genlist_block_size, *list_item_count, folder_id, -1, 0, 1,
+ BP_BOOKMARK_O_SEQUENCE, 1) < 0) {
+ BROWSER_LOGD("bp_bookmark_adaptor_get_ids_p is failed");
+ return false;
+ }
+
+ if (ids_count <= 0) {
+ BROWSER_LOGD("bookmark list is empty");
+ free(ids);
+ return false;
+ }
+
+ bp_bookmark_info_fmt info;
+ BROWSER_LOGD("list.size() before : %d", list.size());
+ BROWSER_LOGD("ids_count: %d", ids_count);
+ for(int i = 0; i < ids_count; i++) {
+ BROWSER_LOGD("list.size(): %d", list.size());
+ BROWSER_LOGD("index : %d", i);
+ if (bp_bookmark_adaptor_get_info(ids[i], (BP_BOOKMARK_O_TYPE |
+ BP_BOOKMARK_O_SEQUENCE |
+ BP_BOOKMARK_O_IS_EDITABLE | BP_BOOKMARK_O_URL |
+ BP_BOOKMARK_O_TITLE |
+ BP_BOOKMARK_O_IS_OPERATOR), &info) == 0) {
+ BookmarkItem *item = new BookmarkItem();
+ item->setId(ids[i]);
+ item->set_folder_flag(static_cast<bool>(info.type));
+ item->setDir(folder_id);
+ item->set_editable_flag(static_cast<bool>(info.editable));
+
+ if (info.url != nullptr && strlen(info.url) > 0)
+ item->setAddress(info.url);
+
+ if (info.title != nullptr && strlen(info.title) > 0)
+ item->setTittle(info.title);
+
+ if (info.is_operator > 0) {
+ BROWSER_LOGD("this is operator bookmark");
+ delete item;
+ } else {
+ BROWSER_LOGD("item is pushed");
+ list.push_back(item);
+ }
+ bp_bookmark_adaptor_easy_free(&info);
+ }
+ }
+ BROWSER_LOGD("list.size() after: %d", list.size());
+ free(ids);
+ return (list.empty() == false);
+}
+
+int BookmarkService::_get_folder_count(const int folder_id)
+{
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+ BROWSER_LOGD("folder ID: %d", folder_id);
+
+ int *ids = nullptr;
+ int ids_count = -1;
+ bp_bookmark_adaptor_get_ids_p(&ids, &ids_count, -1, 0, folder_id, 1, -1, -1, BP_BOOKMARK_O_SEQUENCE, 0);
+ free(ids);
+ return ids_count;
+}
+
+
+int BookmarkService::_get_bookmarks_count(const int folder_id)
+{
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+ BROWSER_LOGD("folder ID: %d", folder_id);
+
+ int *ids = nullptr;
+ int ids_count = -1;
+ bp_bookmark_adaptor_get_ids_p(&ids, &ids_count, -1, 0, folder_id, 0, -1, -1, BP_BOOKMARK_O_SEQUENCE, 0);
+ free(ids);
+ return ids_count;
+}
+
+
+int BookmarkService::_get_total_contents_count(const int folder_id)
+{
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+ BROWSER_LOGD("folder ID: %d", folder_id);
+
+ int *ids = nullptr;
+ int ids_count = -1;
+ bp_bookmark_adaptor_get_ids_p(&ids, &ids_count, -1, 0, folder_id, 0, -1, -1, BP_BOOKMARK_O_SEQUENCE, 0);
+ free(ids);
+ return ids_count;
+}
+
+bool BookmarkService::get_list_operators(const int folder_id, std::vector<BookmarkItem *> &list)
+{
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+ BROWSER_LOGD("folder ID: %d", folder_id);
+ int *ids = nullptr;
+ int ids_count = -1;
+
+ if (bp_bookmark_adaptor_get_ids_p(&ids, &ids_count, -1, 0, folder_id, -1, 1, -1, BP_BOOKMARK_O_SEQUENCE, 1) < 0) {
+ BROWSER_LOGD("bp_bookmark_adaptor_get_ids_p is failed");
+ return false;
+ }
+
+ if (ids_count <= 0) {
+ BROWSER_LOGD("bookmark list is empty");
+ free(ids);
+ return false;
+ }
+
+ bp_bookmark_info_fmt info;
+ for(int i = 0; i < ids_count; i++) {
+ if (bp_bookmark_adaptor_get_info(ids[i], (BP_BOOKMARK_O_TYPE |
+ BP_BOOKMARK_O_SEQUENCE |
+ BP_BOOKMARK_O_IS_EDITABLE | BP_BOOKMARK_O_URL |
+ BP_BOOKMARK_O_TITLE), &info) == 0) {
+ BookmarkItem *item = new BookmarkItem();
+ item->setId(ids[i]);
+ item->set_folder_flag(static_cast<bool>(info.type));
+ item->setDir(folder_id);
+ item->set_editable_flag(static_cast<bool>(info.editable));
+
+ if (info.url != nullptr && strlen(info.url) > 0)
+ item->setAddress(info.url);
+
+ if (info.title != nullptr && strlen(info.title) > 0)
+ item->setTittle(info.title);
+
+ list.push_back(item);
+ bp_bookmark_adaptor_easy_free(&info);
+ }
+ }
+ free(ids);
+ return (list.empty() == false);
+}
+
+bool BookmarkService::get_list_by_keyword(const char *keyword, std::vector<BookmarkItem *> &list)
+{
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+ BROWSER_LOGD("");
+
+ if (!keyword || (strlen(keyword) == 0)) {
+ BROWSER_LOGD("keyword is nullptr");
+ return false;
+ }
+
+ std::string buf_str(keyword);
+ buf_str = "%" + buf_str + "%";
+
+ bp_bookmark_property_cond_fmt properties;
+ properties.parent = -1;
+ properties.type = 0;
+ properties.is_operator = -1;
+ properties.is_editable = -1;
+ //conditions for querying
+ bp_bookmark_rows_cond_fmt conds;
+ conds.limit = -1;
+ conds.offset = 0;
+ conds.order_offset = BP_BOOKMARK_O_TITLE;
+ conds.ordering = -1;
+ conds.period_offset = BP_BOOKMARK_O_DATE_CREATED;
+ conds.period_type = BP_BOOKMARK_DATE_ALL;
+
+ int *ids = nullptr;
+ int ids_count = -1;
+ if (bp_bookmark_adaptor_get_cond_ids_p(&ids, &ids_count, &properties, &conds,
+ (BP_BOOKMARK_O_TITLE | BP_BOOKMARK_O_URL), buf_str.c_str(), 1) < 0) {
+ BROWSER_LOGE("bp_bookmark_adaptor_get_cond_ids_p is failed");
+ return false;
+ }
+
+ if (ids_count <= 0) {
+ BROWSER_LOGD("bookmark list is empty");
+ free(ids);
+ return false;
+ }
+
+ bp_bookmark_info_fmt info;
+ for(int i = 0; i < ids_count; i++) {
+ if (bp_bookmark_adaptor_get_info(ids[i], (BP_BOOKMARK_O_TYPE |
+ BP_BOOKMARK_O_PARENT | BP_BOOKMARK_O_SEQUENCE |
+ BP_BOOKMARK_O_IS_EDITABLE | BP_BOOKMARK_O_URL |
+ BP_BOOKMARK_O_TITLE), &info) == 0) {
+ BookmarkItem *item = new BookmarkItem();
+ item->setId(ids[i]);
+ item->set_folder_flag(static_cast<bool>(info.type));
+ item->setDir(info.parent);
+ item->set_editable_flag(static_cast<bool>(info.editable));
+
+ if (info.url != nullptr && strlen(info.url) > 0)
+ item->setAddress(info.url);
+
+ if (info.title != nullptr && strlen(info.title) > 0)
+ item->setTittle(info.title);
+
+ list.push_back(item);
+ bp_bookmark_adaptor_easy_free(&info);
+ }
+ }
+ free(ids);
+ return true;
+}
+
+void BookmarkService::destroy_list(std::vector<BookmarkItem *> &list)
+{
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+ BROWSER_LOGD("");
+
+ for(unsigned int i = 0 ; i < list.size() ; i++) {
+ delete list[i];
+ }
+ list.clear();
+}
+
+bool BookmarkService::get_folder_depth_count(int *depth_count)
+{
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+ BROWSER_LOGD("depth_count: %d", *depth_count);
+ return _get_depth_count_recursive(get_root_folder_id(), 0, depth_count);
+}
+
+bool BookmarkService::_get_depth_count_recursive(int folder_id, int cur_depth, int *depth_count)
+{
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+ BROWSER_LOGD("current_depth: %d, depth_count:%d", cur_depth, *depth_count);
+
+ std::vector<BookmarkItem *> bookmark_list = get_list_by_folder(folder_id);
+ if (!bookmark_list.empty()) {
+ BROWSER_LOGE("get_list_by_folder is failed(folder id:%d)",folder_id);
+ return false;
+ }
+
+ for(unsigned int j = 0 ; j < bookmark_list.size() ; j++) {
+ if (bookmark_list[j]->is_folder()) {
+ /* Folder item is found. get sub list */
+ if ((cur_depth+1) > *depth_count)
+ *depth_count = cur_depth+1;
+
+ _get_depth_count_recursive(bookmark_list[j]->getId(), cur_depth+1, depth_count);
+ }
+ }
+ destroy_list(bookmark_list);
+ return true;
+}
+
+bool BookmarkService::set_thumbnail(int id, Evas_Object *thumbnail)
+{
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+ BROWSER_LOGD("id : %d", id);
+
+ int w = 0;
+ int h = 0;
+ int stride = 0;
+ int len = 0;
+
+ //platform_Service ps.
+ //ps.evas_image_size_get(thumbnail, &w, &h, &stride);
+ len = stride * h;
+ BROWSER_LOGD("thumbnail w=[%d], h=[%d], stride=[%d], len=[%d]", w, h, stride, len);
+
+ if (len == 0)
+ return false;
+
+ void *thumbnail_data = evas_object_image_data_get(thumbnail, true);
+ int ret = bp_bookmark_adaptor_set_snapshot(id, w, h, (const unsigned char *)thumbnail_data, len);
+ if (ret < 0) {
+ BROWSER_LOGE("bp_bookmark_adaptor_set_thumbnail is failed");
+ return false;
+ }
+ return true;
+}
+
+Evas_Object *BookmarkService::get_thumbnail(int id, Evas_Object *parent)
+{
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+ BROWSER_LOGD("id : %d", id);
+ void *thumbnail_data = nullptr;
+ int w = 0;
+ int h = 0;
+ int len = 0;
+ Evas_Object *icon = nullptr;
+
+ int ret = bp_bookmark_adaptor_get_snapshot(id, &w, &h, (unsigned char **)&thumbnail_data, &len);
+ BROWSER_LOGE("len: %d, w:%d, h:%d", len, w, h);
+ if (len > 0){
+ /* gengrid event area has scaled with original image if it is evas image.
+ therefore use elm_image*/
+ icon = elm_image_add(parent);
+ Evas_Object *icon_object = elm_image_object_get(icon);
+ evas_object_image_colorspace_set(icon_object, EVAS_COLORSPACE_ARGB8888);
+ evas_object_image_size_set(icon_object, w, h);
+ evas_object_image_fill_set(icon_object, 0, 0, w, h);
+ evas_object_image_filled_set(icon_object, true);
+ evas_object_image_alpha_set(icon_object,true);
+
+ void *target_image_data = evas_object_image_data_get(icon_object, true);
+ memcpy(target_image_data, thumbnail_data, len);
+ evas_object_image_data_set(icon_object, target_image_data);
+ }
+
+ return icon;
+}
+
+bool BookmarkService::set_favicon(int id, Evas_Object *favicon)
+{
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+ BROWSER_LOGD("id : %d", id);
+
+ int w = 0;
+ int h = 0;
+ int stride = 0;
+ int len = 0;
+
+ //platform_Service ps.
+ //ps.evas_image_size_get(favicon, &w, &h, &stride);
+ len = stride * h;
+ BROWSER_LOGD("favicon w=[%d], h=[%d], stride=[%d], len=[%d]", w, h, stride, len);
+
+ if (len == 0)
+ return false;
+
+ void *favicon_data = evas_object_image_data_get(favicon, true);
+ int ret = bp_bookmark_adaptor_set_icon(id, w, h, (const unsigned char *)favicon_data, len);
+ if (ret < 0) {
+ BROWSER_LOGE("bp_bookmark_adaptor_set_favicon is failed");
+ return false;
+ }
+ return true;
+}
+
+Evas_Object *BookmarkService::get_favicon(int id, Evas_Object *parent)
+{
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+ BROWSER_LOGD("id : %d", id);
+ void *favicon_data = nullptr;
+ int w = 0;
+ int h = 0;
+ int len = 0;
+
+ Evas *e = nullptr;
+ e = evas_object_evas_get(parent);
+ if (!e) {
+ BROWSER_LOGE("canvas is nullptr");
+ return nullptr;
+ }
+ int ret = bp_bookmark_adaptor_get_icon(id, &w, &h, (unsigned char **)&favicon_data, &len);
+ if (ret < 0) {
+ BROWSER_LOGE("bp_bookmark_adaptor_set_favicon is failed");
+ return nullptr;
+ }
+
+ Evas_Object *icon = nullptr;
+ BROWSER_LOGE("len: %d, w:%d, h:%d", len, w, h);
+ if (len > 0){
+ icon = evas_object_image_filled_add(e);
+ if (w == 0 || h == 0) {
+ // Android bookmark.
+ evas_object_image_memfile_set(icon, favicon_data, len, nullptr, nullptr);
+ } else {
+ // Tizen bookmark.
+ evas_object_image_colorspace_set(icon, EVAS_COLORSPACE_ARGB8888);
+ evas_object_image_size_set(icon, w, h);
+ evas_object_image_fill_set(icon, 0, 0, w, h);
+ evas_object_image_filled_set(icon, true);
+ evas_object_image_alpha_set(icon,true);
+
+ void *target_image_data = evas_object_image_data_get(icon, true);
+ memcpy(target_image_data, favicon_data, len);
+ evas_object_image_data_set(icon, target_image_data);
+ }
+ }
+ return icon;
+}
+
+bool BookmarkService::set_webicon(int id, Evas_Object *webicon)
+{
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+ BROWSER_LOGD("id : %d", id);
+
+ int w = 0;
+ int h = 0;
+ int stride = 0;
+ int len = 0;
+
+ //platform_Service ps;
+ //ps.evas_image_size_get(webicon, &w, &h, &stride);
+ len = stride * h;
+ BROWSER_LOGD("webicon w=[%d], h=[%d], stride=[%d], len=[%d]", w, h, stride, len);
+
+ if (len == 0)
+ return false;
+
+ void *webicon_data = evas_object_image_data_get(webicon, true);
+ int ret = bp_bookmark_adaptor_set_webicon(id, w, h, (const unsigned char *)webicon_data, len);
+ if (ret != 0)
+ BROWSER_LOGE("set webicon is failed");
+ return false;
+}
+
+Evas_Object *BookmarkService::get_webicon(int id, Evas_Object *parent)
+{
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+ BROWSER_LOGD("id : %d", id);
+ void *webicon_data = nullptr;
+ int w = 0;
+ int h = 0;
+ int len = 0;
+
+ int ret = bp_bookmark_adaptor_get_webicon(id, &w, &h, (unsigned char **)&webicon_data, &len);
+ if (ret != 0) {
+ BROWSER_LOGE("bp_bookmark_adaptor_set_webicon is failed");
+ return nullptr;
+ }
+
+ Evas_Object *icon = nullptr;
+ BROWSER_LOGE("len: %d, w:%d, h:%d", len, w, h);
+ if (len > 0){
+ Evas *e = evas_object_evas_get(parent);
+ icon = evas_object_image_filled_add(e);
+
+ evas_object_image_colorspace_set(icon, EVAS_COLORSPACE_ARGB8888);
+ evas_object_image_size_set(icon, w, h);
+ evas_object_image_fill_set(icon, 0, 0, w, h);
+ evas_object_image_filled_set(icon, true);
+ evas_object_image_alpha_set(icon,true);
+
+ void *target_image_data = evas_object_image_data_get(icon, true);
+ memcpy(target_image_data, webicon_data, len);
+ evas_object_image_data_set(icon, target_image_data);
+ }
+
+ return icon;
+}
+
+bool BookmarkService::set_access_count(int id, int count)
+{
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+ BROWSER_LOGD("");
+ return !bp_bookmark_adaptor_set_access_count(id, count);
+}
+
+bool BookmarkService::get_access_count(int id, int *count)
+{
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+ BROWSER_LOGD("");
+ return !bp_bookmark_adaptor_get_access_count(id, count);
+}
+
+bool BookmarkService::increase_access_count(int id)
+{
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+ BROWSER_LOGD("");
+ int count;
+ if(get_access_count(id, &count) == false) {
+ BROWSER_LOGD("get_access_count is failed");
+ return false;
+ }
+
+ if(set_access_count(id, count + 1) == false) {
+ BROWSER_LOGD("set_access_count is failed");
+ return false;
+ }
+
+ return true;
+}
+
+bool BookmarkService::set_last_sequence(int id)
+{
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+ BROWSER_LOGD("");
+ return (bp_bookmark_adaptor_set_sequence(id, -1) == -1);
+}
+
+const char* BookmarkService::get_path_info(void)
+{
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+ BROWSER_LOGD("%s", m_path_string.c_str());
+ return m_path_string.c_str();
+}
+
+BookmarkService::folder_info *BookmarkService::get_path_by_index(unsigned int index)
+{
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+ BROWSER_LOGD("%s", m_path_history[index]->folder_name);
+ return m_path_history[index];
+}
+
+int BookmarkService::get_path_size(void)
+{
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+ BROWSER_LOGD("%d", m_path_history.size());
+ return m_path_history.size();
+}
+
+void BookmarkService::push_back_path(folder_info *item)
+{
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+ BROWSER_LOGD("path size before push: %d", m_path_history.size());
+ m_path_history.push_back(item);
+}
+
+void BookmarkService::pop_back_path(void)
+{
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+ BROWSER_LOGD("path size before pop: %d", m_path_history.size());
+ m_path_history.pop_back();
+}
+
+void BookmarkService::clear_path_history(void)
+{
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+ BROWSER_LOGD("");
+ free_path_history();
+ m_path_history.clear();
+}
+
+void BookmarkService::free_path_history(void)
+{
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+ BROWSER_LOGD("");
+ for(unsigned int i = 0 ; i < m_path_history.size() ; i++) {
+ if (m_path_history[i]) {
+ if (m_path_history[i]->folder_name)
+ free(m_path_history[i]->folder_name);
+
+ free(m_path_history[i]);
+ }
+ }
+}
+
+void BookmarkService::change_path_lang(void)
+{
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+ BROWSER_LOGD("");
+ m_path_string.clear();
+
+ char *old_str = m_path_history[0]->folder_name;
+ m_path_history[0]->folder_name = strdup("Bookmarks");
+ free(old_str);
+
+ for(int i = 0 ; i < get_path_size(); i++) {
+ if (get_path_by_index(i)) {
+ if (m_path_string.empty()) {
+ m_path_string = m_path_history[0]->folder_name;
+ } else {
+ m_path_string += "/";
+ m_path_string += get_path_by_index(i)->folder_name;
+ }
+ }
+ }
+ BROWSER_LOGD("str: %s", m_path_string.c_str());
+}
+
+void BookmarkService::path_into_sub_folder(int folder_id, const char *folder_name)
+{
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+ BROWSER_LOGD("");
+
+ folder_info *item = (folder_info *)calloc(1, sizeof(folder_info));
+
+ item->folder_id = folder_id;
+ if (folder_id == get_root_folder_id()) {
+ item->folder_name = strdup("Bookmarks");
+ } else
+ item->folder_name = strdup(folder_name);
+ push_back_path(item);
+
+ m_path_string.clear();
+ for(int i = 0 ; i < get_path_size() ; i++) {
+ if (get_path_by_index(i)) {
+ if (m_path_string.empty()) {
+ m_path_string = get_path_by_index(i)->folder_name;
+ } else {
+ m_path_string += "/";
+ m_path_string += get_path_by_index(i)->folder_name;
+ }
+ }
+ }
+ char *path_string = (elm_entry_utf8_to_markup(m_path_string.c_str()));
+ m_path_string = path_string;
+ free(path_string);
+ BROWSER_LOGD("m_path_string: %s", m_path_string.c_str());
+
+ m_curr_folder = folder_id;
+}
+
+bool BookmarkService::path_to_upper_folder(int *curr_folder)
+{
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+ BROWSER_LOGD("");
+
+ int current_depth = get_path_size();
+ BROWSER_LOGD("current_depth: %d", current_depth);
+
+ if (current_depth <= 0) {
+ BROWSER_LOGE("[ERROR] top folder is not valid");
+ return true;
+ }
+
+ int curr_depth = current_depth - 1;
+ if (curr_depth > 0) {
+ *curr_folder = get_path_by_index(curr_depth - 1)->folder_id;
+ if (get_path_by_index(curr_depth) && get_path_by_index(curr_depth)->folder_name) {
+ free(get_path_by_index(curr_depth)->folder_name);
+ free(get_path_by_index(curr_depth));
+ }
+ pop_back_path();
+ } else {
+ /* Current folder is root folder */
+ if (*curr_folder != get_root_folder_id()) {
+ BROWSER_LOGE("[ERROR] top folder is not root folder");
+ return true;
+ }
+ if (get_path_by_index(curr_depth) && get_path_by_index(curr_depth)->folder_name) {
+ free(get_path_by_index(curr_depth)->folder_name);
+ free(get_path_by_index(curr_depth));
+ }
+ pop_back_path();
+ m_path_string.clear();
+ return false;
+ }
+
+ m_path_string.clear();
+ for(int i = 0 ; i < get_path_size() ; i++) {
+ if (get_path_by_index(i)) {
+ if (m_path_string.empty()) {
+ m_path_string = get_path_by_index(i)->folder_name;
+ } else {
+ m_path_string += "/";
+ m_path_string += get_path_by_index(i)->folder_name;
+ }
+ }
+ }
+ BROWSER_LOGD("m_path_string: %s", m_path_string.c_str());
+
+ m_curr_folder = *curr_folder;
+ return true;
+}
} /* end of namespace services*/
} /* end of namespace tizen_browser */
#define BOOKMARKSERVICE_H
#include "browser_config.h"
-
#include <vector>
#include <boost/signals2/signal.hpp>
#include <Evas.h>
/**
* @brief Get bookmarks from platform service and store it in private m_bookmarksList
*
- * @return list of bookmark items
+ * @return list of bookmark items, bookmark items in a folder & bookmark folders
*/
- std::vector<std::shared_ptr<BookmarkItem> > getBookmarks();
+ std::vector<std::shared_ptr<BookmarkItem> > getBookmarks(int folder_id = 0);
+ std::vector<std::shared_ptr<BookmarkItem> > getBookmarkFolders();
- /**
+ /**
* @brief Delete all bookmarks
*
* @return true if success, false on error
void synchronizeBookmarks();
-private:
+ typedef struct _folder_info {
+ int folder_id;
+ char *folder_name;
+ } folder_info;
+
+ int get_root_folder_id(void);
+ int save_folder(const char *title, int *saved_bookmark_id, int parent_id=0,int by_operator = 0);
+ bool delete_by_id(int id);
+ bool delete_by_id_notify(int id);
+ bool delete_by_uri(const char *uri);
+ int update_bookmark(int id, const char *title, const char *uri, int parent_id, int order,
+ bool is_duplicate_check_needed = false, bool is_URI_check_needed = false);
+ int update_bookmark_notify(int id, const char *title, const char *uri, int parent_id, int order,
+ bool is_duplicate_check_needed = false, bool is_URI_check_needed = false);
+ bool delete_all(void);
+ bool get_item_by_id(int id, BookmarkItem *item);
+ std::vector<BookmarkItem *> get_list_by_folder(const int folder_id);
+ bool get_list_users_by_folder(const int folder_id, std::vector<BookmarkItem *> &list);
+ bool get_list_by_dividing(const int folder_id, std::vector<BookmarkItem *> &list, int *last_item, int genlist_block_size);
+ bool get_list_users_by_dividing(const int folder_id, std::vector<BookmarkItem *> &list, int *last_item, int genlist_block_size);
+ int _get_folder_count(const int folder_id);
+ int _get_bookmarks_count(const int folder_id);
+ int _get_total_contents_count(const int folder_id);
+ bool get_list_operators(const int folder_id, std::vector<BookmarkItem *> &list);
+ bool get_list_by_keyword(const char *keyword, std::vector<BookmarkItem *> &list);
+ void destroy_list(std::vector<BookmarkItem *> &list);
+ int get_count(void);
+ bool get_id(const char *uri, int *bookmark_id);
+ bool get_folder_id(const char *title, int parent_id, int *folder_id);
+ bool is_in_bookmark(const char *uri);
+ bool is_in_folder(int parent_folder, const char *title);
+ bool get_folder_depth_count(int *depth_count);
+ bool set_thumbnail(int id, Evas_Object *thumbnail);
+ Evas_Object *get_thumbnail(int id, Evas_Object *parent);
+ bool set_favicon(int id, Evas_Object *favicon);
+ Evas_Object *get_favicon(int id, Evas_Object *parent);
+ bool set_webicon(int id, Evas_Object *webicon);
+ Evas_Object *get_webicon(int id, Evas_Object *parent);
+ bool set_access_count(int id, int count);
+ bool get_access_count(int id, int *count);
+ bool increase_access_count(int id);
+ bool set_last_sequence(int id);
+ const char* get_path_info(void);
+ folder_info *get_path_by_index(unsigned int index);
+ int get_path_size(void);
+ void push_back_path(folder_info *item);
+ void pop_back_path(void);
+ void clear_path_history(void);
+ void free_path_history(void);
+ void change_path_lang(void);
+ void path_into_sub_folder(int folder_id, const char *folder_name);
+ bool path_to_upper_folder(int *curr_folder);
+
+ bool get_memory_full(void) { return m_memory_full; }
+ int get_current_folder_id(void) { return m_curr_folder; }
+private:
+ bool _get_depth_count_recursive(int folder_id, int cur_depth, int *depth_count);
+
+ std::vector<BookmarkItem *> m_bookmark_list;
+ std::vector<folder_info *> m_path_history;
+ std::string m_path_string;
+ bool m_memory_full;
+ bool m_bookmark_adaptor_initialize;
+ int m_curr_folder;
std::shared_ptr<tizen_browser::services::StorageService> m_storageManager;
-
std::vector<std::shared_ptr<BookmarkItem> > m_bookmarks;
-
-
/// \todo Need to change getBookmarkId function for finding stored bookmark - check getBookmarkExists function
int getBookmarkId(const std::string & url);
-
std::shared_ptr<tizen_browser::services::StorageService> getStorageManager();
-
config::DefaultConfig config;
};
+++ /dev/null
-/*
- * 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 "BookmarksUI.h"
-#include "ServiceManager.h"
-#include "BrowserLogger.h"
-#include "Tools/EflTools.h"
-#include "../Tools/BrowserImage.h"
-
-
-namespace tizen_browser{
-namespace base_ui{
-
-EXPORT_SERVICE(BookmarksUI, "org.tizen.browser.bookmarksui")
-
-
-typedef struct _BookmarkItemData
-{
- std::shared_ptr<tizen_browser::services::BookmarkItem> item;
- std::shared_ptr<tizen_browser::base_ui::BookmarksUI> bookmarksUI;
-} BookmarkItemData;
-
-BookmarksUI::BookmarksUI()
- : m_gengrid(NULL)
- , m_parent(NULL)
- , m_item_class(NULL)
- , m_gengridSetup(false)
-{
- BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
-}
-
-BookmarksUI::~BookmarksUI()
-{
-
-}
-
-void BookmarksUI::init(Evas_Object* p)
-{
- BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
- m_parent = p;
- m_gengrid = elm_gengrid_add(m_parent);
-
- 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_genlist_item_class_new();
- m_item_class->item_style = "bookmark_item";
- m_item_class->func.text_get = NULL;
- m_item_class->func.content_get = _grid_content_get;
- m_item_class->func.state_get = NULL;
- m_item_class->func.del = NULL;
- }
-}
-
-
-Evas_Object * BookmarksUI::getContent()
-{
- BROWSER_LOGD("%s:%d %s", __FILE__, __LINE__, __func__);
- M_ASSERT(m_parent);
-
- if(m_map_bookmark_views.size() == 0) {
- elm_object_part_content_set(m_gengrid, "elm.swallow.empty", createNoBookmarksLabel());
- }
-
-
- if(!m_gengridSetup) {
- std::string edjFilePath = EDJE_DIR;
- edjFilePath.append("BookmarksUI/Bookmarks.edj");
- elm_theme_extension_add(NULL, edjFilePath.c_str());
-
-
- elm_object_style_set(m_gengrid, "bookmarks");
-
- elm_gengrid_align_set(m_gengrid, 0, 0);
- elm_gengrid_item_size_set(m_gengrid, 395, 357);
- 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_FALSE);
- elm_gengrid_highlight_mode_set(m_gengrid, EINA_TRUE);
- elm_scroller_policy_set(m_gengrid, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_OFF);
- elm_scroller_page_size_set(m_gengrid, 0, 327);
-
- 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);
-
- m_gengridSetup = true;
- }
- return m_gengrid;
-}
-
-void BookmarksUI::addBookmarkItem(std::shared_ptr<tizen_browser::services::BookmarkItem> bi)
-{
- BROWSER_LOGD("%s:%d %s", __FILE__, __LINE__, __func__);
- BookmarkItemData *itemData = new BookmarkItemData();
- itemData->item = bi;
- itemData->bookmarksUI = std::shared_ptr<tizen_browser::base_ui::BookmarksUI>(this);
- Elm_Object_Item* bookmarkView = elm_gengrid_item_append(m_gengrid, m_item_class, itemData, NULL, this);
- m_map_bookmark_views.insert(std::pair<std::string,Elm_Object_Item*>(bi->getAddress(),bookmarkView));
-
- // unselect by default
- elm_gengrid_item_selected_set(bookmarkView, EINA_FALSE);
-
- setEmptyGengrid(false);
-}
-
-void BookmarksUI::addBookmarkItems(std::vector<std::shared_ptr<tizen_browser::services::BookmarkItem> > items)
-{
- BROWSER_LOGD("%s:%d %s", __FILE__, __LINE__, __func__);
- for (auto it = items.begin(); it != items.end(); ++it) {
- addBookmarkItem(*it);
- }
-}
-
-void BookmarksUI::removeBookmarkItem(const std::string& uri)
-{
- BROWSER_LOGD("[%s] uri=%s", __func__, uri.c_str());
- if(m_map_bookmark_views.find(uri) == m_map_bookmark_views.end()) {
- return;
- }
-
- Elm_Object_Item* bookmarkView = m_map_bookmark_views.at(uri);
- elm_object_item_del(bookmarkView);
- m_map_bookmark_views.erase(uri);
-
- setEmptyGengrid(0 == m_map_bookmark_views.size());
-}
-
-void BookmarksUI::_item_deleted(void * /* data */, Evas_Object * /* obj */)
-{
-
-}
-
-Evas_Object * BookmarksUI::_grid_content_get(void *data, Evas_Object *obj, const char *part)
-{
- BROWSER_LOGD("%s:%d %s part=%s", __FILE__, __LINE__, __func__, part);
- BookmarkItemData *itemData = reinterpret_cast<BookmarkItemData*>(data);
-
- if (!strcmp(part, "elm.thumbnail")) {
- if (itemData->item->getThumbnail()) {
- Evas_Object * thumb = tizen_browser::tools::EflTools::getEvasImage(itemData->item->getThumbnail(), itemData->bookmarksUI->m_parent);
- return thumb;
- }
- else {
- return NULL;
- }
- }
- else if (!strcmp(part, "favicon")) {
- Evas_Object * favicon = NULL;
- if(itemData->item->getFavicon().get()){
- favicon = tizen_browser::tools::EflTools::getEvasImage(itemData->item->getFavicon(), obj);
- }
- return favicon;
- }
- else if (!strcmp(part, "elm.label")) {
- Evas_Object *label = elm_label_add(obj);
- elm_object_style_set(label, "bookmarks_label");
- elm_object_text_set(label, itemData->item->getTittle().c_str());
- return label;
- }
- else if (!strcmp(part, "elm.deleteButton")) {
- Evas_Object *deleteButton = elm_button_add(obj);
- elm_object_style_set(deleteButton, "deleteButton");
- evas_object_smart_callback_add(deleteButton, "clicked", tizen_browser::base_ui::BookmarksUI::_deleteBookmark, data);
- return deleteButton;
- }
- else if (!strcmp(part, "elm.thumbButton")) {
- Evas_Object *thumbButton = elm_button_add(obj);
- elm_object_style_set(thumbButton, "thumbButton");
- evas_object_smart_callback_add(thumbButton, "clicked", tizen_browser::base_ui::BookmarksUI::_thumbSelected, data);
- return thumbButton;
- }
- return NULL;
-}
-
-void BookmarksUI::_itemSelected(void * data, Evas_Object * /* obj */, void * event_info)
-{
- Elm_Object_Item * selected = reinterpret_cast<Elm_Object_Item *>(event_info);
- BookmarkItemData * itemData = reinterpret_cast<BookmarkItemData *>(elm_object_item_data_get(selected));
- BookmarksUI * self = reinterpret_cast<BookmarksUI *>(data);
-
- self->bookmarkClicked(itemData->item);
-}
-
-void BookmarksUI::_deleteBookmark(void *data, Evas_Object * /* obj */, void * /* event_info */)
-{
- BookmarkItemData * itemData = reinterpret_cast<BookmarkItemData *>(data);
- itemData->bookmarksUI->bookmarkDeleteClicked(itemData->item);
-}
-
-void BookmarksUI::_thumbSelected(void * data, Evas_Object * /* obj */, void * /* event_info */)
-{
- BookmarkItemData * itemData = reinterpret_cast<BookmarkItemData *>(data);
- itemData->bookmarksUI->bookmarkClicked(itemData->item);
-}
-
-Evas_Object* BookmarksUI::createNoBookmarksLabel()
-{
- 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 BookmarksUI::setEmptyGengrid(bool setEmpty)
-{
- if(setEmpty) {
- elm_object_part_content_set(m_gengrid, "elm.swallow.empty", createNoBookmarksLabel());
- } else {
- elm_object_part_content_set(m_gengrid, "elm.swallow.empty", NULL);
- }
-}
-
-void BookmarksUI::deleteAllItems()
-{
- BROWSER_LOGD("Deleting all items from gengrid");
- elm_gengrid_clear(m_gengrid);
- m_map_bookmark_views.clear();
- setEmptyGengrid(true);
-}
-
-void BookmarksUI::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 BookmarksUI::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);
-}
-
-std::shared_ptr<tizen_browser::services::BookmarkItem> BookmarksUI::getSelectedBookmarkItem()
-{
- Elm_Object_Item * selected = elm_gengrid_selected_item_get(m_gengrid);
-
- if (!selected) {
- BROWSER_LOGD("none selected");
- return std::make_shared<tizen_browser::services::BookmarkItem>();
- }
- BookmarkItemData * itemData = reinterpret_cast<BookmarkItemData *>(elm_object_item_data_get(selected));
- return itemData->item;
-}
-
-
-}
-}
+++ /dev/null
-/*
- * 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 BOOKMARKSUI_H
-#define BOOKMARKSUI_H
-
-#include <Evas.h>
-#include <boost/signals2/signal.hpp>
-
-#include "AbstractUIComponent.h"
-#include "AbstractService.h"
-#include "ServiceFactory.h"
-#include "service_macros.h"
-#include "BookmarkItem.h"
-
-namespace tizen_browser{
-namespace base_ui{
-
-class BROWSER_EXPORT BookmarksUI
- : public tizen_browser::interfaces::AbstractUIComponent
- , public tizen_browser::core::AbstractService
-{
-public:
- BookmarksUI();
- ~BookmarksUI();
- void init(Evas_Object *main_layout);
- Evas_Object *getContent();
- virtual std::string getName();
- void addBookmarkItem(std::shared_ptr<tizen_browser::services::BookmarkItem>);
- void addBookmarkItems(std::vector<std::shared_ptr<tizen_browser::services::BookmarkItem> >);
- void removeBookmarkItem(const std::string& uri);
- void deleteAllItems();
- std::shared_ptr<tizen_browser::services::BookmarkItem> getSelectedBookmarkItem();
-
-
- boost::signals2::signal<void (std::shared_ptr<tizen_browser::services::BookmarkItem>)> bookmarkClicked;
- boost::signals2::signal<void (std::shared_ptr<tizen_browser::services::BookmarkItem>)> bookmarkDeleteClicked;
-private:
- 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 _item_deleted(void *data, Evas_Object *obj);
- static void _thumbSelected(void * data, Evas_Object * obj, void * event_info);
- static void _deleteBookmark(void *data, Evas_Object *obj, void *event_info);
- void setEmptyGengrid(bool setEmpty);
-
-private:
- Evas_Object *m_gengrid;
- Evas_Object *m_parent;
- Elm_Gengrid_Item_Class * m_item_class;
- std::map<std::string,Elm_Object_Item*> m_map_bookmark_views;
- bool m_gengridSetup;
- Evas_Object *createNoBookmarksLabel();
-
- 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
+++ /dev/null
-#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/label/base/bookmarks_label";
- styles {
- style { name: "textblock_white";
- base: "font=Sans font_size="30" color=#D3D3D3";
- }
- }
- styles {
- style { name: "textblock_white_bold";
- base: "font=Sans:style=Bold font_size="30" color=#D3D3D3";
- }
- }
-
- parts {
- part { name: "elm.text";
- type: TEXTBLOCK;
- description { state: "default" 0.0;
- rel1.relative: 0.0 0.0;
- rel2.relative: 1.0 1.0;
- align: 0.0 0.0;
- fixed: 1 1;
- text {
- style: "textblock_white";
- min: 0 1;
- }
- }
- description { state: "bold" 0.0;
- inherit: "default" 0.0;
- text {
- style: "textblock_white_bold";
- min: 0 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;
- }
- }
- }
- }
-}
-group { name: "elm/gengrid/item/bookmark_item/default";
- data.item: "texts" "elm.text";
- data.item: "contents" "elm.thumbnail favicon elm.text elm.label elm.deleteButton elm.thumbButton";
- images {
- image: "web_frame_selected.png" COMP;
- image: "ico_bg_round_shape_37x37.png" COMP;
- }
- parts {
- part { name: "bg";
- clip_to: "disclip";
- mouse_events: 0;
- description { state: "default" 0.0;
- visible: 0;
- color: 255 255 255 0;
- }
- }
-
- part { name: "elm.thumbnail";
- clip_to: "disclip";
- type: SWALLOW;
- description { state: "default" 0.0;
- fixed: 1 0;
- align: 0.0 0.0;
- min: 373 240;
- max: 373 240;
- rel1 {
- relative: 0.0 0.0;
- }
- rel2 {
- relative: 1.0 1.0;
- }
- }
- description { state: "selected";
- inherit: "default" 0.0;
- }
- }
-
- part { name: "focus_highlight";
- type: IMAGE;
- description { state: "default" 0.0;
- rel1 {
- to: "elm.thumbnail";
- relative: 0.0 0.0;
- }
- rel2 {
- to: "elm.thumbnail";
- relative: 1.0 1.0;
- }
- image.normal: "web_frame_selected.png";
- image.border: 8 8 8 0;
- image.border_scale: 1;
- image.middle: NONE;
- visible: 0;
- }
- description { state: "selected";
- inherit: "default" 0.0;
- visible: 1;
- }
- }
-
- part { name: "background";
- clip_to: "disclip";
- type: RECT;
- description { state: "default" 0.0;
- min: 373 87;
- max: 373 87;
- align: 0.0 0.0;
- color: 30 38 50 255;
- rel1 {
- to: "elm.thumbnail";
- relative: 0.0 1.0;
- offset: 0 0;
- }
- rel2 {
- relative: 1.0 1.0;
- }
- }
- description { state: "selected" 0.0;
- inherit: "default" 0.0;
- color: 70 143 254 255;
- }
- }
-
- part { name: "favicon_bg";
- clip_to: "disclip";
- type: IMAGE;
- description { state: "default" 0.0;
- fixed: 1 0;
- align: 0.0 0.0;
- min: 37 37;
- max: 37 37;
- rel1 {
- to: "elm.thumbnail";
- relative: 0.0 1.0;
- offset: 25 25;
- }
- rel2 {
- relative: 1.0 1.0;
- }
- // image.normal: "ico_bg_round_shape_37x37.png";
- }
- }
-
- part { name: "favicon";
- clip_to: "disclip";
- type: SWALLOW;
- description { state: "default" 0.0;
- fixed: 1 0;
- align: 0.5 0.5;
- min: 37 37;
- max: 37 37;
- rel1.to: "favicon_bg";
- rel2.to: "favicon_bg";
- }
- }
-
- part { name: "elm.label";
- clip_to: "disclip";
- type: SWALLOW;
- description { state: "default" 0.0;
- min: 273 41;
- max: 273 41;
- align: 0.0 0.0;
- rel1 {
- to: "favicon_bg";
- relative: 1.0 0.0;
- offset: 13 0;
- }
- rel2 {
- relative: 1.0 1.0;
- }
- }
- }
-
- part { name: "delete_bg";
- clip_to: "disclip";
- type: RECT;
- description { state: "default" 0.0;
- min: 373 87;
- max: 373 87;
- align: 0.0 0.0;
- color: 70 143 254 204;
- rel1.to: "background";
- rel2.to: "background";
- visible: 0;
- }
- description { state: "over" 0.0;
- inherit: "default" 0.0;
- visible: 1;
- }
- }
-
- part { name: "disclip";
- type: RECT;
- description { state: "default" 0.0;
- rel1.to: "bg";
- rel2.to: "bg";
- }
- }
-
- part { name: "elm.deleteButton";
- clip_to: "disclip";
- type: SWALLOW;
- description { state: "default" 0.0;
- min: 373 87;
- max: 373 87;
- align: 0.0 0.0;
- rel1 {
- to: "elm.thumbnail";
- relative: 0.0 1.0;
- offset: 0 0;
- }
- rel2 {
- relative: 1.0 1.0;
- }
- visible: 1;
- }
- description { state: "over" 0.0;
- inherit: "default" 0.0;
- visible: 1;
- }
- }
-
- part { name: "elm.thumbButton";
- clip_to: "disclip";
- type: SWALLOW;
- description { state: "default" 0.0;
- rel1.to: "elm.thumbnail";
- rel2.to: "elm.thumbnail";
- }
- }
-
- part { name: "over2";
- type: RECT;
- mouse_events: 1;
- repeat_events: 1;
- description { state: "default" 0.0;
- color: 0 0 0 0;
- rel1.to: "bg";
- rel2.to: "background";
- }
- }
- part { name: "over3";
- type: RECT;
- mouse_events: 1;
- repeat_events: 1;
- description { state: "default" 0.0;
- color: 0 0 0 0;
- rel1.to: "background";
- rel2.to: "background";
- }
- }
- }
-
- programs{
- program { name: "mouse_in";
- signal: "mouse,in";
- source: "over2";
- action: STATE_SET "selected" 0.0;
- target: "background";
- target: "focus_highlight";
- target: "elm.thumbnail";
- }
- program { name: "mouse_out";
- signal: "mouse,out";
- source: "over2";
- action: STATE_SET "default" 0.0;
- target: "background";
- target: "focus_highlight";
- target: "elm.thumbnail";
- }
- program { name: "mouse_in_delete";
- signal: "mouse,in";
- source: "over3";
- action: STATE_SET "over" 0.0;
- target: "delete_bg";
- target: "elm.deleteButton";
- }
- program { name: "mouse_out_delete";
- signal: "mouse,out";
- source: "over3";
- action: STATE_SET "default" 0.0;
- target: "delete_bg";
- target: "elm.deleteButton";
- }
- }
-}
-}
project(services)
add_subdirectory(WebKitEngineService)
-add_subdirectory(BookmarksUI)
+# MERGE_ME
+#add_subdirectory(MoreMenuUI)
+add_subdirectory(MainUI)
+# MERGE_ME
+#add_subdirectory(HistoryUI)
+#add_subdirectory(TabUI)
add_subdirectory(SimpleUI)
+#MERGE_ME
+#add_subdirectory(SettingsUI)
add_subdirectory(SimpleURI)
+#MERGE_ME
+#add_subdirectory(BookmarkManagerUI)
add_subdirectory(StorageService)
add_subdirectory(HistoryService)
add_subdirectory(PlatformInputManager)
PROJECT(HistoryService)
set(HistoryService_SOURCES
- src/HistoryService.cpp
- src/HistoryItem.cpp
+ HistoryService.cpp
+ HistoryItem.cpp
)
set(HistoryService_HEADERS
: m_url(url)
, m_title(title)
, m_favIcon(image)
+ , m_lastVisit()
{
}
return m_favIcon;
}
+void HistoryItem::setThumbnail(std::shared_ptr<tizen_browser::tools::BrowserImage> thumbnail)
+{
+ m_thumbnail = thumbnail;
+};
+
+std::shared_ptr<tizen_browser::tools::BrowserImage> HistoryItem::getThumbnail() const
+{
+
+ return m_thumbnail;
+};
+
void HistoryItem::setUriFavicon(const std::string & uri) {
m_urifavicon = uri;
}
std::shared_ptr<tizen_browser::tools::BrowserImage> image);
HistoryItem(HistoryItem && other) throw();
+
HistoryItem(const std::string& url);
+ HistoryItem(const std::string& url, int& date_created);
HistoryItem(const HistoryItem& source);
virtual ~HistoryItem();
void setVisitCounter(int visitCounter);
int getVisitCounter();
- void setFavIcon(std::shared_ptr<tizen_browser::tools::BrowserImage> favIcon);
+ void setThumbnail(std::shared_ptr<tizen_browser::tools::BrowserImage> thumbnail);
+ std::shared_ptr<tizen_browser::tools::BrowserImage> getThumbnail() const ;
+
+ void setFavIcon(std::shared_ptr<tizen_browser::tools::BrowserImage> favIcon);
std::shared_ptr<tizen_browser::tools::BrowserImage> getFavIcon();
void setUriFavicon(const std::string & uri);
std::string m_title;
boost::gregorian::date m_visitDate;
boost::posix_time::ptime m_lastVisit;
+ std::shared_ptr<tizen_browser::tools::BrowserImage> m_thumbnail;
std::shared_ptr<tizen_browser::tools::BrowserImage> m_favIcon;
std::string m_urifavicon;
int m_visitCounter;
--- /dev/null
+/*
+ * 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 <string>
+#include <BrowserAssert.h>
+#include <boost/date_time/posix_time/posix_time.hpp>
+#include <boost/date_time/date.hpp>
+#include <boost/date_time/date_defs.hpp>
+#include <boost/date_time/gregorian/gregorian.hpp>
+
+#include "ServiceManager.h"
+#include "HistoryService.h"
+#include "HistoryItem.h"
+#include "AbstractWebEngine.h"
+#include "EflTools.h"
+
+
+
+
+namespace tizen_browser
+{
+namespace services
+{
+
+EXPORT_SERVICE(HistoryService, DOMAIN_HISTORY_SERVICE)
+
+HistoryService::HistoryService() : m_testDbMod(false)
+{
+ BROWSER_LOGD("HistoryService");
+}
+
+HistoryService::~HistoryService()
+{
+}
+
+std::shared_ptr<tizen_browser::services::StorageService> HistoryService::getStorageManager()
+{
+ if (!m_storageManager) {
+ m_storageManager = std::dynamic_pointer_cast <
+ tizen_browser::services::StorageService,
+ tizen_browser::core::AbstractService > (
+ tizen_browser::core::ServiceManager::getInstance().getService(
+ DOMAIN_STORAGE_SERVICE));
+ }
+
+ M_ASSERT(m_storageManager);
+ m_storageManager->init(m_testDbMod);
+
+ return m_storageManager;
+}
+
+void HistoryService::setStorageServiceTestMode(bool testmode) {
+ m_testDbMod = testmode;
+}
+
+int HistoryService::getHistoryItemsCount(){
+ int *ids = nullptr;
+ int count=0;
+ bp_history_rows_cond_fmt conds;
+ conds.limit = 20; //no of rows to get negative means no limitation
+ conds.offset = -1; //the first row's index
+ conds.order_offset =BP_HISTORY_O_DATE_CREATED; // property to sort
+ conds.ordering = 1; //way of ordering 0 asc 1 desc
+ conds.period_offset = BP_HISTORY_O_DATE_CREATED;
+ conds.period_type = BP_HISTORY_DATE_TODAY;
+ int ret = bp_history_adaptor_get_cond_ids_p(&ids ,&count, &conds, 0, nullptr, 0);
+ if (ret<0){
+ BROWSER_LOGD("Error! Could not get ids!");
+ }
+
+ BROWSER_LOGD("[%s:%d] History Count %d", __PRETTY_FUNCTION__, __LINE__, count);
+ return count;
+}
+
+static int __get_duplicated_ids_p(int **ids, int *count, const int limit, const int offset,
+ const bp_history_offset order_column_offset, const int ordering,
+ const bp_history_offset check_column_offset,
+ const char *keyword, const int is_like)
+{
+ bp_history_rows_cond_fmt conds;
+ conds.limit = limit;
+ conds.offset = offset;
+ conds.ordering = ordering;
+ conds.order_offset = order_column_offset;
+ conds.period_offset = BP_HISTORY_O_DATE_CREATED;
+ conds.period_type = BP_HISTORY_DATE_ALL;
+
+ return bp_history_adaptor_get_cond_ids_p(ids, count, &conds, check_column_offset, keyword, is_like);
+}
+
+bool isDuplicate(const char* title)
+{
+ int *ids=nullptr;
+ int count=0;
+ bp_history_rows_cond_fmt conds;
+ conds.limit = 20; //no of rows to get negative means no limitation
+ conds.offset = -1; //the first row's index
+ conds.order_offset =BP_HISTORY_O_DATE_CREATED; // property to sort
+ conds.ordering = 1; //way of ordering 0 asc 1 desc
+ conds.period_offset = BP_HISTORY_O_DATE_CREATED;
+ conds.period_type = BP_HISTORY_DATE_TODAY;
+ int ret = bp_history_adaptor_get_cond_ids_p(&ids ,&count, &conds, 0, nullptr, 0);
+ if (ret<0){
+ BROWSER_LOGD("Error! Could not get ids!");
+ }
+
+ bp_history_offset offset = (BP_HISTORY_O_URL | BP_HISTORY_O_TITLE | BP_HISTORY_O_FAVICON | BP_HISTORY_O_DATE_CREATED);
+
+ for(int i = 0; i< count; i++){
+ bp_history_info_fmt history_info;
+ bp_history_adaptor_get_info(ids[i],offset,&history_info);
+ if(!strcmp(history_info.title, title)) {
+ int freq;
+ bp_history_adaptor_get_frequency(ids[i], &freq);
+ bp_history_adaptor_set_frequency(ids[i], freq + 1);
+ return true;
+ }
+ }
+ return false;
+
+}
+
+
+HistoryItemVector& HistoryService::getMostVisitedHistoryItems()
+{
+ history_list.clear();
+
+ int *ids=nullptr;
+ int count=-1;
+ bp_history_rows_cond_fmt conds;
+ conds.limit = 20; //no of rows to get negative means no limitation
+ conds.offset = -1; //the first row's index
+ conds.order_offset =BP_HISTORY_O_DATE_CREATED; // property to sort
+ conds.ordering = 1; //way of ordering 0 asc 1 desc
+ conds.period_offset = BP_HISTORY_O_DATE_CREATED;
+ conds.period_type = BP_HISTORY_DATE_TODAY;
+
+ int ret = bp_history_adaptor_get_cond_ids_p(&ids ,&count, &conds, 0, nullptr, 0);
+ if (ret<0){
+ BROWSER_LOGD("Error! Could not get ids!");
+ }
+
+ bp_history_offset offset = (BP_HISTORY_O_URL | BP_HISTORY_O_TITLE | BP_HISTORY_O_FAVICON | BP_HISTORY_O_DATE_CREATED);
+
+ int freq_arr[1000];
+ for(int i = 0; i< count; i++){
+ bp_history_info_fmt history_info;
+ bp_history_adaptor_get_info(ids[i],offset,&history_info);
+
+ int freq;
+ if (0 == bp_history_adaptor_get_frequency(ids[i], &freq))
+ {
+ freq_arr[i] = freq;
+ }
+ }
+
+ int index_array[6];
+ int j=0;
+ int maximum = freq_arr[0];
+ int position = 0;
+
+ for(int k=1; k<=5;k++){
+ if(k > count || count == 0)
+ break;
+
+ maximum = freq_arr[0];
+ position = 0;
+
+ for(int i =1;i<count;i++){
+ if (freq_arr[i] > maximum)
+ {
+ maximum = freq_arr[i];
+ position = i;
+ }
+ }
+ index_array[j++] = position;
+ freq_arr[position] = -1;
+ }
+
+ for(int i = 0; i < j; i++){
+ bp_history_info_fmt history_info;
+ bp_history_adaptor_get_info(ids[index_array[i]],offset,&history_info);
+
+ std::shared_ptr<HistoryItem> history = std::make_shared<HistoryItem>(std::string(history_info.url));
+ history->setUrl(std::string(history_info.url ? history_info.url : ""));
+ history->setTitle(std::string(history_info.title ? history_info.title : ""));
+
+ //thumbail
+ std::shared_ptr<tizen_browser::tools::BrowserImage> hi = std::make_shared<tizen_browser::tools::BrowserImage>();
+ hi->imageType = tizen_browser::tools::BrowserImage::ImageType::ImageTypePNG;
+ hi->width = history_info.thumbnail_width;
+ hi->height = history_info.thumbnail_height;
+ hi->dataSize = history_info.thumbnail_length;
+ hi->imageData = (void*)malloc(history_info.thumbnail_length);
+ memcpy(hi->imageData, (void*)history_info.thumbnail, history_info.thumbnail_length);
+ history->setThumbnail(hi);
+
+ history_list.push_back(history);
+ }
+ free(ids);
+ return history_list;
+}
+
+void HistoryService::addHistoryItem(std::shared_ptr<HistoryItem> his,std::shared_ptr<tizen_browser::tools::BrowserImage> thumbnail){
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+ his->setFavIcon(his->getFavIcon());
+ his->setThumbnail(thumbnail);
+
+ if(isDuplicate(his->getTitle().c_str()))
+ return;
+
+ int id = -1;
+ int ret = bp_history_adaptor_create(&id);
+ if (ret<0){
+ BROWSER_LOGE("Error! Could not create new bookmark!");
+ }
+
+ int *ids=nullptr;
+ int count=-1;
+ bp_history_rows_cond_fmt conds;
+ conds.limit = 20; //no of rows to get negative means no limitation
+ conds.offset = -1; //the first row's index
+ conds.order_offset =BP_HISTORY_O_DATE_CREATED; // property to sort
+ conds.ordering = 1; //way of ordering 0 asc 1 desc
+ conds.period_offset = BP_HISTORY_O_DATE_CREATED;
+ conds.period_type = BP_HISTORY_DATE_TODAY;
+
+ ret = bp_history_adaptor_get_cond_ids_p(&ids ,&count, &conds, 0, nullptr, 0);
+ if (ret<0){
+ BROWSER_LOGE("Error! Could not get ids!");
+ }
+
+ bp_history_adaptor_set_url(id, (his->getUrl()).c_str());
+ bp_history_adaptor_set_title(id, (his->getTitle()).c_str());
+ bp_history_adaptor_set_date_visited(id,-1);
+ bp_history_adaptor_set_frequency(id, 1);
+
+ if (thumbnail) {
+ std::unique_ptr<tizen_browser::tools::Blob> thumb_blob = tizen_browser::tools::EflTools::getBlobPNG(thumbnail);
+ unsigned char * thumb = std::move((unsigned char*)thumb_blob->getData());
+ bp_history_adaptor_set_snapshot(id, thumbnail->width, thumbnail->height, thumb, thumb_blob->getLength());
+ }
+
+ std::shared_ptr<tizen_browser::tools::BrowserImage> favicon = his->getFavIcon();
+ if (favicon) {
+ std::unique_ptr<tizen_browser::tools::Blob> favicon_blob = tizen_browser::tools::EflTools::getBlobPNG(favicon);
+ unsigned char * fav = std::move((unsigned char*)favicon_blob->getData());
+ bp_history_adaptor_set_icon(id, favicon->width, favicon->height, fav, favicon_blob->getLength());
+ }
+
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+ historyAdded(his);
+}
+
+
+void HistoryService::insertOrRefresh(std::shared_ptr<HistoryItem> hi) {
+ /**
+ * No browser- provider implementation till now. Needs to be done
+ */
+ //getStorageManager()->insertOrRefresh(hi);
+}
+
+/**
+ * @throws HistoryException on error
+ */
+void HistoryService::clearAllHistory()
+{
+ bp_history_adaptor_reset();
+ history_list.clear();
+ historyAllDeleted();
+}
+
+int HistoryService::getHistoryId(const std::string & url)
+{
+ bp_history_rows_cond_fmt conds;
+ conds.limit = -1;
+ conds.offset = 0;
+ conds.order_offset = BP_HISTORY_O_DATE_CREATED;
+ conds.ordering = 0;
+ conds.period_offset = BP_HISTORY_O_DATE_CREATED;
+ conds.period_type = BP_HISTORY_DATE_ALL;
+ int *ids = nullptr;
+ int ids_count = 0;
+ int ret = bp_history_adaptor_get_cond_ids_p(&ids ,&ids_count, &conds, BP_HISTORY_O_URL, url.c_str(), 0);
+ if (ids_count!=0){
+ int i = *ids;
+ free(ids);
+ return i;
+ }
+ return 0;
+}
+
+
+/**
+ * @throws HistoryException on error
+ */
+void HistoryService::clearURLHistory(const std::string & url)
+{
+ int id = getHistoryId(url);
+ if (id!=0)
+ bp_history_adaptor_delete(id);
+ if(0 == getHistoryItemsCount())
+ historyEmpty(true);
+ historyDeleted(url);
+}
+
+
+HistoryItemVector& HistoryService::getHistoryItems(int historyDepthInDays, int maxItems)
+{
+ history_list.clear();
+
+ int *ids=nullptr;
+ int count=-1;
+ bp_history_rows_cond_fmt conds;
+ conds.limit = 20; //no of rows to get negative means no limitation
+ conds.offset = -1; //the first row's index
+ conds.order_offset =BP_HISTORY_O_DATE_CREATED; // property to sort
+ conds.ordering = 1; //way of ordering 0 asc 1 desc
+ conds.period_offset = BP_HISTORY_O_DATE_CREATED;
+ conds.period_type = BP_HISTORY_DATE_TODAY;
+
+ int ret = bp_history_adaptor_get_cond_ids_p(&ids ,&count, &conds, 0, nullptr, 0);
+ if (ret<0){
+ BROWSER_LOGD("Error! Could not get ids!");
+ }
+
+ bp_history_offset offset = (BP_HISTORY_O_URL | BP_HISTORY_O_TITLE | BP_HISTORY_O_FAVICON | BP_HISTORY_O_DATE_CREATED);
+
+ for(int i = 0; i< count; i++){
+ bp_history_info_fmt history_info;
+ bp_history_adaptor_get_info(ids[i],offset,&history_info);
+
+ int date;
+ bp_history_adaptor_get_date_created(ids[i], &date);
+
+ struct tm *item_time_info;
+ time_t item_time = (time_t)date;
+ item_time_info = localtime(&item_time);
+
+ int m_year = item_time_info->tm_year;
+ int m_month = item_time_info->tm_mon + 1;
+ int m_day = item_time_info->tm_yday;
+ int m_month_day = item_time_info->tm_mday;
+ int m_date = date;
+ int min = item_time_info->tm_min;
+ int hour= item_time_info->tm_hour;
+ int sec = item_time_info->tm_sec;
+
+ m_year = 2000 + m_year % 100;
+
+ std::shared_ptr<HistoryItem> history = std::make_shared<HistoryItem>(std::string(history_info.url));
+ boost::gregorian::date d(m_year,m_month,m_month_day);
+ boost::posix_time::ptime t(d,boost::posix_time::time_duration(hour,min,sec));
+ history->setLastVisit(t);
+ history->setUrl(std::string(history_info.url ? history_info.url : ""));
+ history->setTitle(std::string(history_info.title ? history_info.title : ""));
+
+ //thumbail
+ std::shared_ptr<tizen_browser::tools::BrowserImage> hi = std::make_shared<tizen_browser::tools::BrowserImage>();
+ hi->imageType = tizen_browser::tools::BrowserImage::ImageType::ImageTypePNG;
+ hi->width = history_info.thumbnail_width;
+ hi->height = history_info.thumbnail_height;
+ hi->dataSize = history_info.thumbnail_length;
+ hi->imageData = (void*)malloc(history_info.thumbnail_length);
+ memcpy(hi->imageData, (void*)history_info.thumbnail, history_info.thumbnail_length);
+ history->setThumbnail(hi);
+
+ history_list.push_back(history);
+ }
+ free(ids);
+ return history_list;
+}
+
+int HistoryService::getHistoryVisitCounter(const std::string & url)
+{ /**
+ * No browser- provider implementation till now. Needs to be done
+ */
+// return getStorageManager()->getHistoryVisitCounter(url);
+
+}
+
+}
+}
virtual std::string getName();
int getHistoryId(const std::string & url);
+
/**
* @throws HistoryException on error
*/
- void addHistoryItem(std::shared_ptr<HistoryItem> hi);
+ void addHistoryItem(std::shared_ptr<HistoryItem> hi,
+ std::shared_ptr<tizen_browser::tools::BrowserImage> thumbnail=std::shared_ptr<tizen_browser::tools::BrowserImage>());
/**
* If hi->getUrl() exists on a table HISTORY update visit_counter and visit_date, unless insert hi to database.
* @throws HistoryException on error
*/
HistoryItemVector & getHistoryItems(int historyDepthInDays = 7, int maxItems = 50);
+ HistoryItemVector & getMostVisitedHistoryItems();
/**
* @throws HistoryException on error
void setStorageServiceTestMode(bool testmode = true);
boost::signals2::signal<void (bool)>historyEmpty;
+ boost::signals2::signal<void (std::shared_ptr<tizen_browser::services::HistoryItem>)> historyAdded;
+ boost::signals2::signal<void (const std::string& uri)> historyDeleted;
+ boost::signals2::signal<void ()> historyAllDeleted;
+
private:
bool m_testDbMod;;
std::vector<std::shared_ptr<HistoryItem>> history_list;
+++ /dev/null
-/*
- * 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 <string>
-#include <BrowserAssert.h>
-#include <boost/date_time/posix_time/posix_time.hpp>
-#include <boost/date_time/date.hpp>
-#include <boost/date_time/date_defs.hpp>
-#include <boost/date_time/gregorian/gregorian.hpp>
-
-#include "ServiceManager.h"
-#include "HistoryService.h"
-#include "HistoryItem.h"
-#include "AbstractWebEngine.h"
-#include "EflTools.h"
-
-namespace tizen_browser
-{
-namespace services
-{
-
-EXPORT_SERVICE(HistoryService, DOMAIN_HISTORY_SERVICE)
-
-HistoryService::HistoryService() : m_testDbMod(false)
-{
- BROWSER_LOGD("HistoryService");
-}
-
-HistoryService::~HistoryService()
-{
-}
-
-std::shared_ptr<tizen_browser::services::StorageService> HistoryService::getStorageManager()
-{
- if (!m_storageManager) {
- m_storageManager = std::dynamic_pointer_cast <
- tizen_browser::services::StorageService,
- tizen_browser::core::AbstractService > (
- tizen_browser::core::ServiceManager::getInstance().getService(
- DOMAIN_STORAGE_SERVICE));
- }
-
- M_ASSERT(m_storageManager);
- m_storageManager->init(m_testDbMod);
-
- return m_storageManager;
-}
-
-void HistoryService::setStorageServiceTestMode(bool testmode) {
- m_testDbMod = testmode;
-}
-
-int HistoryService::getHistoryItemsCount(){
- return history_list.size();
-}
-
-static int __get_duplicated_ids_p(int **ids, int *count, const int limit, const int offset,
- const bp_history_offset order_column_offset, const int ordering,
- const bp_history_offset check_column_offset,
- const char *keyword, const int is_like)
-{
- bp_history_rows_cond_fmt conds;
- memset(&conds, 0x00, sizeof(bp_history_rows_cond_fmt));
-
- conds.limit = limit;
- conds.offset = offset;
- conds.ordering = ordering;
- conds.order_offset = order_column_offset;
- conds.period_offset = BP_HISTORY_O_DATE_CREATED;
- conds.period_type = BP_HISTORY_DATE_ALL;
-
- return bp_history_adaptor_get_cond_ids_p
- (ids, count,
- &conds,
- check_column_offset,
- keyword,
- is_like);
-}
-
-void HistoryService::addHistoryItem(std::shared_ptr<HistoryItem> his){
-
- BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
- his->setFavIcon(his->getFavIcon());
- std::shared_ptr<tizen_browser::tools::BrowserImage> favicon = his->getFavIcon();
-
- int id = -1;
- int ret = bp_history_adaptor_create(&id);
- if (ret<0){
- BROWSER_LOGE("Error! Could not create new bookmark!");
- }
-
- int *ids=NULL;
- int count=-1;
- int **id1=&ids;
- int *count1=&count;
-
- bp_history_rows_cond_fmt conds;
- conds.limit = 20; //no of rows to get negative means no limitation
-
- conds.offset = -1; //the first row's index
- conds.order_offset =BP_HISTORY_O_DATE_CREATED; // property to sort
-
- conds.ordering = 1; //way of ordering 0 asc 1 desc
-
- conds.period_offset = BP_HISTORY_O_DATE_CREATED;
- conds.period_type = BP_HISTORY_DATE_TODAY;
-
- ret = bp_history_adaptor_get_cond_ids_p(id1 ,count1, &conds, 0, NULL, 0);
- if (ret<0){
- BROWSER_LOGE("Error! Could not get ids!");
- }
-
- bp_history_adaptor_set_url(id, (his->getUrl()).c_str());
- bp_history_adaptor_set_title(id, (his->getTitle()).c_str());
- bp_history_adaptor_set_date_visited(id,-1);
-
- std::unique_ptr<tizen_browser::tools::Blob> favicon_blob = tizen_browser::tools::EflTools::getBlobPNG(favicon);
- unsigned char * fav = std::move((unsigned char*)favicon_blob->getData());
- bp_history_adaptor_set_icon(id, favicon->width, favicon->height, fav, favicon_blob->getLength());
- history_list.push_back(his);
-
- BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
-}
-
-
-void HistoryService::insertOrRefresh(std::shared_ptr<HistoryItem> hi) {
- getStorageManager()->insertOrRefresh(hi);
-}
-
-/**
- * @throws HistoryException on error
- */
-void HistoryService::clearAllHistory()
-{
- bp_history_adaptor_reset();
- history_list.clear();
-}
-
-int HistoryService::getHistoryId(const std::string & url)
-{
- bp_history_rows_cond_fmt conds;
- conds.limit = -1;
- conds.offset = 0;
- conds.order_offset = BP_HISTORY_O_DATE_CREATED;
- conds.ordering = 0;
- conds.period_offset = BP_HISTORY_O_DATE_CREATED;
- conds.period_type = BP_HISTORY_DATE_ALL;
- int *ids = 0;
- int ids_count = 0;
- int ret = bp_history_adaptor_get_cond_ids_p(&ids ,&ids_count, &conds, BP_HISTORY_O_URL, url.c_str(), 0);
- if (ids_count!=0){
- int i = *ids;
- free(ids);
- return i;
- }
- return 0;
-}
-
-/**
- * @throws HistoryException on error
- */
-void HistoryService::clearURLHistory(const std::string & url)
-{
- int id = getHistoryId(url);
- if (id != 0)
- bp_history_adaptor_delete(id);
- if (0 == (getHistoryItemsCount() - 1)) {
- historyEmpty(true);
- history_list.clear();
- }
-}
-
-
-HistoryItemVector& HistoryService::getHistoryItems(int historyDepthInDays, int maxItems)
-{
- history_list.clear();
-
- int *ids=NULL;
- int count=-1;
- int **id1=&ids;
- int *count1=&count;
-
- bp_history_rows_cond_fmt conds;
- conds.limit = 20; //no of rows to get negative means no limitation
-
- conds.offset = -1; //the first row's index
- conds.order_offset =BP_HISTORY_O_DATE_CREATED; // property to sort
-
- conds.ordering = 1; //way of ordering 0 asc 1 desc
-
- conds.period_offset = BP_HISTORY_O_DATE_CREATED;
-
- conds.period_type = BP_HISTORY_DATE_TODAY;
-
- int ret = bp_history_adaptor_get_cond_ids_p(id1 ,count1, &conds, 0, NULL, 0);
- if (ret<0){
- BROWSER_LOGD("Error! Could not get ids!");
- }
-
- bp_history_offset offset = (BP_HISTORY_O_URL | BP_HISTORY_O_TITLE | BP_HISTORY_O_FAVICON | BP_HISTORY_O_DATE_CREATED);
-
- for(int i = 0; i< (*count1); i++){
- bp_history_info_fmt history_info;
- bp_history_adaptor_get_info(ids[i],offset,&history_info);
-
- int date;
- bp_history_adaptor_get_date_created(ids[i], &date);
-
- struct tm *item_time_info;
- time_t item_time = (time_t)date;
- item_time_info = localtime(&item_time);
-
- int m_year = item_time_info->tm_year;
- int m_month = item_time_info->tm_mon + 1;
- int m_day = item_time_info->tm_yday;
- int m_month_day = item_time_info->tm_mday;
- int m_date = date;
- int min = item_time_info->tm_min;
- int hour= item_time_info->tm_hour;
- int sec = item_time_info->tm_sec;
- m_year = 2000 + m_year % 100;
-
- std::shared_ptr<HistoryItem> history = std::make_shared<HistoryItem>(std::string(history_info.url));
- boost::gregorian::date d(m_year,m_month,m_month_day);
- boost::posix_time::ptime t(d,boost::posix_time::time_duration(hour,min,sec));
- history->setLastVisit(t);
- history->setUrl(std::string(history_info.url ? history_info.url : ""));
- history->setTitle(std::string(history_info.title ? history_info.title : ""));
- history_list.push_back(history);
- }
- ids = NULL;
- free(ids);
-
- return history_list;
-}
-
-int HistoryService::getHistoryVisitCounter(const std::string & url)
-{
- return getStorageManager()->getHistoryVisitCounter(url);
-}
-
-}
-}
-project(BookmarksUI)
+project(MainUI)
-set(BookmarksUI_SRCS
- BookmarksUI.cpp
+set(MainUI_SRCS
+ MainUI.cpp
)
-set(BookmarksUI_HEADERS
- BookmarksUI.h
+set(MainUI_HEADERS
+ MainUI.h
)
include(Coreheaders)
include_directories(${CMAKE_SOURCE_DIR}/services/FavoriteService)
-add_library(${PROJECT_NAME} SHARED ${BookmarksUI_SRCS})
+add_library(${PROJECT_NAME} SHARED ${MainUI_SRCS})
if(TIZEN_BUILD)
target_link_libraries(${PROJECT_NAME} ${pkgs_LDFLAGS})
ARCHIVE DESTINATION services/static)
include(EDCCompile)
-EDJ_TARGET(Bookmarks.edj
- ${CMAKE_CURRENT_SOURCE_DIR}/edc/Bookmarks.edc
+EDJ_TARGET(MainUI.edj
+ ${CMAKE_CURRENT_SOURCE_DIR}/edc/MainUI.edc
${CMAKE_CURRENT_BINARY_DIR})
--- /dev/null
+/*
+ * 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 "MainUI.h"
+#include "ServiceManager.h"
+#include "BrowserLogger.h"
+#include "Tools/EflTools.h"
+#include "../Tools/BrowserImage.h"
+
+#define efl_scale (elm_config_scale_get() / elm_app_base_scale_get())
+
+namespace tizen_browser{
+namespace base_ui{
+
+EXPORT_SERVICE(MainUI, "org.tizen.browser.mainui")
+
+typedef struct _HistoryItemData
+{
+ std::shared_ptr<tizen_browser::services::HistoryItem> item;
+ std::shared_ptr<tizen_browser::base_ui::MainUI> mainUI;
+} HistoryItemData;
+
+typedef struct _BookmarkItemData
+{
+ std::shared_ptr<tizen_browser::services::BookmarkItem> item;
+ std::shared_ptr<tizen_browser::base_ui::MainUI> mainUI;
+} BookmarkItemData;
+
+struct ItemData{
+ tizen_browser::base_ui::MainUI * mainUI;
+ const char* button_name;
+ Elm_Object_Item * e_item;
+};
+
+MainUI::MainUI()
+ : m_gengrid(nullptr)
+ , m_genListTop(nullptr)
+ , m_genListBottom(nullptr)
+ , m_parent(nullptr)
+ , m_big_item_class(nullptr)
+ , m_medium_item_class(nullptr)
+ , m_small_item_class(nullptr)
+ , m_bookmark_item_class(nullptr)
+{
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+ edjFilePath = EDJE_DIR;
+ edjFilePath.append("MainUI/MainUI.edj");
+}
+
+MainUI::~MainUI()
+{
+}
+
+void MainUI::show(Evas_Object* parent)
+{
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+ elm_theme_extension_add(nullptr, edjFilePath.c_str());
+ m_layout = elm_layout_add(parent);
+ elm_layout_file_set(m_layout, edjFilePath.c_str(), "mv_bookmarks");
+ evas_object_size_hint_weight_set(m_layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(m_layout, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_show(m_layout);
+ m_parent = m_layout;
+
+ m_genListMVBig = elm_genlist_add(m_layout);
+ elm_object_part_content_set(m_layout, "elm.swallow.mvBig", m_genListMVBig);
+ elm_genlist_homogeneous_set(m_genListMVBig, EINA_FALSE);
+ elm_genlist_multi_select_set(m_genListMVBig, EINA_FALSE);
+ elm_genlist_select_mode_set(m_genListMVBig, ELM_OBJECT_SELECT_MODE_ALWAYS);
+ elm_genlist_mode_set(m_genListMVBig, ELM_LIST_LIMIT);
+ evas_object_size_hint_weight_set(m_genListMVBig, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+
+ m_genListMVMedium = elm_genlist_add(m_layout);
+ elm_object_part_content_set(m_layout, "elm.swallow.mvMedium", m_genListMVMedium);
+ elm_genlist_homogeneous_set(m_genListMVMedium, EINA_FALSE);
+ elm_genlist_multi_select_set(m_genListMVMedium, EINA_FALSE);
+ elm_genlist_select_mode_set(m_genListMVMedium, ELM_OBJECT_SELECT_MODE_ALWAYS);
+ elm_genlist_mode_set(m_genListMVMedium, ELM_LIST_LIMIT);
+ evas_object_size_hint_weight_set(m_genListMVMedium, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+
+ m_genListMVSmall = elm_genlist_add(m_layout);
+ elm_object_part_content_set(m_layout, "elm.swallow.mvSmall", m_genListMVSmall);
+ elm_genlist_homogeneous_set(m_genListMVSmall, EINA_FALSE);
+ elm_genlist_multi_select_set(m_genListMVSmall, EINA_FALSE);
+ elm_genlist_select_mode_set(m_genListMVSmall, ELM_OBJECT_SELECT_MODE_ALWAYS);
+ elm_genlist_mode_set(m_genListMVSmall, ELM_LIST_LIMIT);
+ evas_object_size_hint_weight_set(m_genListMVSmall, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+
+ if (!m_big_item_class) {
+ m_big_item_class = elm_genlist_item_class_new();
+ m_big_item_class->item_style = "big_grid_item";
+ m_big_item_class->func.text_get = _grid_text_get;
+ m_big_item_class->func.content_get = _grid_content_get;
+ m_big_item_class->func.state_get = nullptr;
+ m_big_item_class->func.del = nullptr;
+ }
+
+ if (!m_medium_item_class) {
+ m_medium_item_class = elm_genlist_item_class_new();
+ m_medium_item_class->item_style = "medium_grid_item";
+ m_medium_item_class->func.text_get = _grid_text_get;
+ m_medium_item_class->func.content_get = _grid_content_get;
+ m_medium_item_class->func.state_get = nullptr;
+ m_medium_item_class->func.del = nullptr;
+ }
+
+ if (!m_small_item_class) {
+ m_small_item_class = elm_genlist_item_class_new();
+ m_small_item_class->item_style = "small_grid_item";
+ m_small_item_class->func.text_get = _grid_text_get;
+ m_small_item_class->func.content_get = _grid_content_get;
+ m_small_item_class->func.state_get = nullptr;
+ m_small_item_class->func.del = nullptr;
+ }
+
+ /*evas_object_smart_callback_add(m_genList, "item,focused", focusItem, this);
+ evas_object_smart_callback_add(m_genList, "item,unfocused", unFocusItem, nullptr);*/
+
+
+ m_gengrid = elm_gengrid_add(m_layout);
+ //elm_object_part_content_set(m_layout, "elm.swallow.grid", m_gengrid);
+
+ evas_object_smart_callback_add(m_gengrid, "item,focused", focusItem, nullptr);
+ evas_object_smart_callback_add(m_gengrid, "item,unfocused", unFocusItem, nullptr);
+ evas_object_smart_callback_add(m_gengrid, "activated", _itemSelected, this);
+
+ if (!m_bookmark_item_class) {
+ m_bookmark_item_class = elm_gengrid_item_class_new();
+ m_bookmark_item_class->item_style = "grid_item";
+ m_bookmark_item_class->func.text_get = _grid_bookmark_text_get;
+ m_bookmark_item_class->func.content_get = _grid_bookmark_content_get;
+ m_bookmark_item_class->func.state_get = nullptr;
+ m_bookmark_item_class->func.del = nullptr;
+ }
+
+ M_ASSERT(m_parent);
+ elm_theme_extension_add(nullptr, edjFilePath.c_str());
+ 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_FALSE);
+ //elm_gengrid_highlight_mode_set(m_gengrid, EINA_TRUE);
+ elm_scroller_policy_set(m_gengrid, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_OFF);
+ elm_scroller_page_size_set(m_gengrid, 0, 327);
+ 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, 364 * efl_scale, 320 * efl_scale);
+
+ showTopButtons();
+ showBottomButton();
+}
+
+
+void MainUI::showTopButtons()
+{
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+ elm_theme_extension_add(nullptr, edjFilePath.c_str());
+ m_genListTop = elm_genlist_add(m_layout);
+ elm_object_part_content_set(m_layout, "elm.swallow.genlistTop", m_genListTop);
+ elm_genlist_homogeneous_set(m_genListTop, EINA_FALSE);
+ elm_genlist_multi_select_set(m_genListTop, EINA_FALSE);
+ elm_genlist_select_mode_set(m_genListTop, ELM_OBJECT_SELECT_MODE_ALWAYS);
+ elm_genlist_mode_set(m_genListTop, ELM_LIST_LIMIT);
+ //elm_genlist_decorate_mode_set(m_genListTop, EINA_TRUE);
+ evas_object_size_hint_weight_set(m_genListTop, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+
+ /*evas_object_smart_callback_add(m_genList, "item,focused", focusItem, this);
+ evas_object_smart_callback_add(m_genList, "item,unfocused", unFocusItem, nullptr);*/
+
+ m_itemClassTop = elm_genlist_item_class_new();
+ m_itemClassTop->item_style = "top_button_item";
+ m_itemClassTop->func.text_get = nullptr; // &listTopItemTextGet;
+ m_itemClassTop->func.content_get = &listTopItemContentGet;
+ m_itemClassTop->func.state_get = 0;
+ m_itemClassTop->func.del = 0;
+
+ ItemData * id = new ItemData;
+ id->mainUI = this;
+ Elm_Object_Item* elmItem = elm_genlist_item_append(m_genListTop, //genlist
+ m_itemClassTop, //item Class
+ id,
+ nullptr, //parent item
+ ELM_GENLIST_ITEM_NONE,//item type
+ nullptr,
+ nullptr //data passed to above function
+ );
+ id->e_item = elmItem;
+ ItemData * id2 = new ItemData;
+ id2->mainUI = this;
+ Elm_Object_Item* elmItem2 = elm_genlist_item_append(m_genListTop, //genlist
+ m_itemClassTop, //item Class
+ id2,
+ nullptr, //parent item
+ ELM_GENLIST_ITEM_NONE,//item type
+ nullptr,
+ nullptr //data passed to above function
+ );
+ id2->e_item = elmItem2;
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+}
+
+void MainUI::showBottomButton()
+{
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+ elm_theme_extension_add(nullptr, edjFilePath.c_str());
+ m_genListBottom = elm_genlist_add(m_layout);
+ elm_object_part_content_set(m_layout, "elm.swallow.genlistBottom", m_genListBottom);
+ elm_genlist_homogeneous_set(m_genListBottom, EINA_FALSE);
+ elm_genlist_multi_select_set(m_genListBottom, EINA_FALSE);
+ elm_genlist_select_mode_set(m_genListBottom, ELM_OBJECT_SELECT_MODE_ALWAYS);
+ elm_genlist_mode_set(m_genListBottom, ELM_LIST_LIMIT);
+ //elm_genlist_decorate_mode_set(m_genListBottom, EINA_TRUE);
+ evas_object_size_hint_weight_set(m_genListBottom, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+
+ /*evas_object_smart_callback_add(m_genList, "item,focused", focusItem, this);
+ evas_object_smart_callback_add(m_genList, "item,unfocused", unFocusItem, nullptr);*/
+
+ m_itemClassBottom = elm_genlist_item_class_new();
+ m_itemClassBottom->item_style = "bottom_button_item";
+ m_itemClassBottom->func.text_get = nullptr;
+ m_itemClassBottom->func.content_get = &listItemBottomContentGet;
+ m_itemClassBottom->func.state_get = 0;
+ m_itemClassBottom->func.del = 0;
+
+ ItemData * id = new ItemData;
+ id->mainUI = this;
+ Elm_Object_Item* elmItem = elm_genlist_item_append(m_genListBottom, //genlist
+ m_itemClassBottom, //item Class
+ id,
+ nullptr, //parent item
+ ELM_GENLIST_ITEM_NONE,//item type
+ nullptr,
+ nullptr //data passed to above function
+ );
+ id->e_item = elmItem;
+}
+
+Evas_Object* MainUI::listTopItemContentGet(void* data, Evas_Object* obj, const char* part)
+{
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+ if(!strcmp(part, "mostvisited_click"))
+ {
+ Evas_Object *mvButton = elm_button_add(obj);
+ elm_object_style_set(mvButton, "invisible_button");
+ evas_object_smart_callback_add(mvButton, "clicked", tizen_browser::base_ui::MainUI::_mostVisited_clicked, data);
+ return mvButton;
+ }
+ else if(!strcmp(part, "bookmark_click"))
+ {
+ Evas_Object *bmButton = elm_button_add(obj);
+ elm_object_style_set(bmButton, "invisible_button");
+ evas_object_smart_callback_add(bmButton, "clicked", tizen_browser::base_ui::MainUI::_bookmark_clicked, data);
+ return bmButton;
+ }
+ return nullptr;
+}
+
+void MainUI::_mostVisited_clicked(void * data, Evas_Object * /* obj */, void * event_info)
+{
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+ ItemData* itemData = reinterpret_cast<ItemData *>(data);
+ itemData->mainUI->mostVisitedClicked(std::string());
+}
+
+void MainUI::_bookmark_clicked(void * data, Evas_Object * /* obj */, void * event_info)
+{
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+ ItemData* itemData = reinterpret_cast<ItemData *>(data);
+ itemData->mainUI->bookmarkClicked(std::string());
+}
+
+void MainUI::_bookmark_manager_clicked(void * data, Evas_Object * /* obj */, void * event_info)
+{
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+ ItemData* itemData = reinterpret_cast<ItemData *>(data);
+ itemData->mainUI->bookmarkManagerClicked(std::string());
+}
+
+Evas_Object* MainUI::listItemBottomContentGet(void* data, Evas_Object* obj, const char* part)
+{
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+ if(!strcmp(part, "bookmarkmanager_click"))
+ {
+ Evas_Object *bmButton = elm_button_add(obj);
+ elm_object_style_set(bmButton, "invisible_button");
+ evas_object_smart_callback_add(bmButton, "clicked", tizen_browser::base_ui::MainUI::_bookmark_manager_clicked, data);
+ return bmButton;
+ }
+ return nullptr;
+}
+
+void MainUI::addHistoryItem(std::shared_ptr<tizen_browser::services::HistoryItem> hi)
+{
+ BROWSER_LOGD("%s:%d %s", __FILE__, __LINE__, __func__);
+ if (m_map_history_views.size() >= 5)
+ return;
+
+ HistoryItemData *itemData = new HistoryItemData();
+ itemData->item = hi;
+ itemData->mainUI = std::shared_ptr<tizen_browser::base_ui::MainUI>(this);
+ Elm_Object_Item* historyView = nullptr;
+
+ switch(m_map_history_views.size())
+ {
+ case 0:
+ BROWSER_LOGD("%s:%d %s m_map_history_views.size %d", __FILE__, __LINE__, __func__, m_map_history_views.size());
+ historyView = elm_genlist_item_append(m_genListMVBig, m_big_item_class, itemData, nullptr, ELM_GENLIST_ITEM_NONE, nullptr, this);
+ break;
+ case 1:
+ case 2:
+ BROWSER_LOGD("%s:%d %s m_map_history_views.size %d", __FILE__, __LINE__, __func__, m_map_history_views.size());
+ historyView = elm_genlist_item_append(m_genListMVMedium, m_medium_item_class, itemData, nullptr, ELM_GENLIST_ITEM_NONE, nullptr, this);
+ break;
+ case 3:
+ case 4:
+ BROWSER_LOGD("%s:%d %s m_map_history_views.size %d", __FILE__, __LINE__, __func__, m_map_history_views.size());
+ historyView = elm_genlist_item_append(m_genListMVSmall, m_small_item_class, itemData, nullptr, ELM_GENLIST_ITEM_NONE, nullptr, this);
+ break;
+ }
+
+ m_map_history_views.insert(std::pair<std::string,Elm_Object_Item*>(hi->getUrl(),historyView));
+
+ setEmptyGengrid(false);
+}
+
+void MainUI::addHistoryItems(std::vector<std::shared_ptr<tizen_browser::services::HistoryItem> > items)
+{
+ BROWSER_LOGD("%s:%d %s", __FILE__, __LINE__, __func__);
+ int i = 0;
+ for (auto it = items.begin(); it != items.end(); ++it) {
+ i++;
+ if (i > 5) break;
+ addHistoryItem(*it);
+ }
+}
+
+void MainUI::addBookmarkItem(std::shared_ptr<tizen_browser::services::BookmarkItem> bi)
+{
+ BROWSER_LOGD("%s:%d %s", __FILE__, __LINE__, __func__);
+ BookmarkItemData *itemData = new BookmarkItemData();
+ itemData->item = bi;
+ itemData->mainUI = std::shared_ptr<tizen_browser::base_ui::MainUI>(this);
+ Elm_Object_Item* bookmarkView = elm_gengrid_item_append(m_gengrid, m_bookmark_item_class, itemData, nullptr, this);
+ m_map_bookmark_views.insert(std::pair<std::string,Elm_Object_Item*>(bi->getAddress(),bookmarkView));
+
+ // unselect by default
+ elm_gengrid_item_selected_set(bookmarkView, EINA_FALSE);
+
+ setEmptyGengrid(false);
+}
+
+void MainUI::addBookmarkItems(std::vector<std::shared_ptr<tizen_browser::services::BookmarkItem> > items)
+{
+ BROWSER_LOGD("%s:%d %s", __FILE__, __LINE__, __func__);
+ for (auto it = items.begin(); it != items.end(); ++it) {
+ addBookmarkItem(*it);
+ }
+}
+
+char* MainUI::_grid_text_get(void *data, Evas_Object *obj, const char *part)
+{
+ HistoryItemData *itemData = reinterpret_cast<HistoryItemData*>(data);
+ if (!strcmp(part, "page_title")) {
+ return strdup(itemData->item->getTitle().c_str());
+ }
+ if (!strcmp(part, "page_url")) {
+ return strdup(itemData->item->getUrl().c_str());
+ }
+ return strdup("");
+}
+
+char* MainUI::_grid_bookmark_text_get(void *data, Evas_Object *obj, const char *part)
+{
+ BookmarkItemData *itemData = reinterpret_cast<BookmarkItemData*>(data);
+ if (!strcmp(part, "page_title")) {
+ return strdup(itemData->item->getTittle().c_str());
+ }
+ if (!strcmp(part, "page_url")) {
+ return strdup(itemData->item->getAddress().c_str());
+ }
+ return strdup("");
+}
+
+Evas_Object * MainUI::_grid_content_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);
+
+ if (!strcmp(part, "elm.thumbnail")) {
+ if (itemData->item->getThumbnail()) {
+ Evas_Object * thumb = tizen_browser::tools::EflTools::getEvasImage(itemData->item->getThumbnail(), itemData->mainUI->m_parent);
+ return thumb;
+ }
+ else {
+ return nullptr;
+ }
+ }
+ else if (!strcmp(part, "elm.thumbButton")) {
+ Evas_Object *thumbButton = elm_button_add(obj);
+ elm_object_style_set(thumbButton, "thumbButton");
+ evas_object_smart_callback_add(thumbButton, "clicked", tizen_browser::base_ui::MainUI::_thumbSelected, data);
+ return thumbButton;
+ }
+ return nullptr;
+}
+
+Evas_Object * MainUI::_grid_bookmark_content_get(void *data, Evas_Object *obj, const char *part)
+{
+ BROWSER_LOGD("%s:%d %s part=%s", __FILE__, __LINE__, __func__, part);
+ BookmarkItemData *itemData = reinterpret_cast<BookmarkItemData*>(data);
+
+ if (!strcmp(part, "elm.thumbnail")) {
+ if (itemData->item->getThumbnail()) {
+ Evas_Object * thumb = tizen_browser::tools::EflTools::getEvasImage(itemData->item->getThumbnail(), itemData->mainUI->m_parent);
+ return thumb;
+ }
+ else {
+ return nullptr;
+ }
+ }
+ else if (!strcmp(part, "elm.thumbButton")) {
+ Evas_Object *thumbButton = elm_button_add(obj);
+ elm_object_style_set(thumbButton, "thumbButton");
+ evas_object_smart_callback_add(thumbButton, "clicked", tizen_browser::base_ui::MainUI::_thumbSelected, data);
+ return thumbButton;
+ }
+ return nullptr;
+}
+
+
+void MainUI::_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));
+ MainUI * self = reinterpret_cast<MainUI *>(data);
+
+ self->historyClicked(itemData->item);
+}
+
+void MainUI::_thumbSelected(void * data, Evas_Object * /* obj */, void * /* event_info */)
+{
+ HistoryItemData * itemData = reinterpret_cast<HistoryItemData *>(data);
+ itemData->mainUI->historyClicked(itemData->item);
+}
+
+void MainUI::clearHistoryGenlist()
+{
+ elm_genlist_clear(m_genListMVSmall);
+ elm_genlist_clear(m_genListMVBig);
+ elm_genlist_clear(m_genListMVMedium);
+ m_map_history_views.clear();
+ evas_object_hide(elm_object_part_content_get(m_layout, "elm.swallow.mvBig"));
+ evas_object_hide(elm_object_part_content_get(m_layout, "elm.swallow.mvSmall"));
+ evas_object_hide(elm_object_part_content_get(m_layout, "elm.swallow.mvMedium"));
+}
+
+void MainUI::showHistoryGenlist()
+{
+ evas_object_hide(elm_object_part_content_get(m_layout, "elm.swallow.grid"));
+ elm_object_part_content_unset(m_layout, "elm.swallow.grid");
+ elm_object_part_content_set(m_layout, "elm.swallow.mvBig", m_genListMVBig);
+ elm_object_part_content_set(m_layout, "elm.swallow.mvSmall", m_genListMVSmall);
+ elm_object_part_content_set(m_layout, "elm.swallow.mvMedium", m_genListMVMedium);
+}
+
+void MainUI::clearBookmarkGengrid()
+{
+ elm_gengrid_clear(m_gengrid);
+ m_map_bookmark_views.clear();
+ evas_object_hide(elm_layout_content_get(m_layout, "elm.swallow.grid"));
+}
+
+void MainUI::showBookmarkGengrid()
+{
+ evas_object_hide(elm_object_part_content_get(m_layout, "elm.swallow.mvBig"));
+ evas_object_hide(elm_object_part_content_get(m_layout, "elm.swallow.mvSmall"));
+ evas_object_hide(elm_object_part_content_get(m_layout, "elm.swallow.mvMedium"));
+ elm_object_part_content_unset(m_layout, "elm.swallow.mvBig");
+ elm_object_part_content_unset(m_layout, "elm.swallow.mvSmall");
+ elm_object_part_content_unset(m_layout, "elm.swallow.mvMedium");
+ elm_object_part_content_set(m_layout, "elm.swallow.grid", m_gengrid);
+}
+
+void MainUI::hide()
+{
+ BROWSER_LOGD("MainUI Hide");
+ evas_object_hide(elm_layout_content_get(m_layout, "elm.swallow.genlistTop"));
+ evas_object_hide(elm_layout_content_get(m_layout, "elm.swallow.genlistBottom"));
+ evas_object_hide(m_layout);
+ clearItems();
+}
+
+void MainUI::clearItems()
+{
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+ clearHistoryGenlist();
+ clearBookmarkGengrid();
+ elm_genlist_clear(m_genListTop);
+ elm_genlist_clear(m_genListBottom);
+}
+
+Evas_Object* MainUI::createNoHistoryLabel()
+{
+ 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 MainUI::setEmptyGengrid(bool setEmpty)
+{
+ if(setEmpty) {
+ elm_object_part_content_set(m_gengrid, "elm.swallow.empty", createNoHistoryLabel());
+ } else {
+ elm_object_part_content_set(m_gengrid, "elm.swallow.empty", nullptr);
+ }
+}
+
+void MainUI::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 MainUI::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);
+}
+
+}
+}
--- /dev/null
+/*
+ * 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 MAINUI_H
+#define MAINUI_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"
+#include "BookmarkItem.h"
+
+namespace tizen_browser{
+namespace base_ui{
+
+class BROWSER_EXPORT MainUI
+ : public tizen_browser::interfaces::AbstractUIComponent
+ , public tizen_browser::core::AbstractService
+{
+public:
+ MainUI();
+ ~MainUI();
+ void show(Evas_Object *main_layout);
+ void hide();
+ virtual std::string getName();
+ void clearHistoryGenlist();
+ void clearBookmarkGengrid();
+ void showHistoryGenlist();
+ void showBookmarkGengrid();
+ void showTopButtons();
+ void showBottomButton();
+ void clearItems();
+
+ void addHistoryItem(std::shared_ptr<tizen_browser::services::HistoryItem>);
+ void addHistoryItems(std::vector<std::shared_ptr<tizen_browser::services::HistoryItem> >);
+ void addBookmarkItem(std::shared_ptr<tizen_browser::services::BookmarkItem>);
+ void addBookmarkItems(std::vector<std::shared_ptr<tizen_browser::services::BookmarkItem> >);
+
+ boost::signals2::signal<void (std::shared_ptr<tizen_browser::services::HistoryItem>)> historyClicked;
+ boost::signals2::signal<void (const std::string & )> mostVisitedClicked;
+ boost::signals2::signal<void (const std::string & )> bookmarkClicked;
+ boost::signals2::signal<void (const std::string & )> bookmarkManagerClicked;
+private:
+ static Evas_Object* listItemBottomContentGet(void *data, Evas_Object *obj, const char *part);
+ static Evas_Object* listTopItemContentGet(void *data, Evas_Object *obj, const char *part);
+ //static char* listItemTextGet(void *data, Evas_Object *obj, const char *part);
+
+ 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 char* _grid_bookmark_text_get(void *data, Evas_Object *obj, const char *part);
+ static Evas_Object * _grid_bookmark_content_get(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 _deleteBookmark(void *data, Evas_Object *obj, void *event_info);
+ void setEmptyGengrid(bool setEmpty);
+
+ static void _mostVisited_clicked(void * data, Evas_Object * obj, void * event_info);
+ static void _bookmark_clicked(void * data, Evas_Object * obj, void * event_info);
+ static void _bookmark_manager_clicked(void * data, Evas_Object * obj, void * event_info);
+private:
+ Evas_Object *m_genListTop;
+ Evas_Object *m_genListMVBig;
+ Evas_Object *m_genListMVMedium;
+ Evas_Object *m_genListMVSmall;
+ Elm_Genlist_Item_Class *m_itemClassTop;
+ Evas_Object *m_genListBottom;
+ Elm_Genlist_Item_Class *m_itemClassBottom;
+ Evas_Object *m_gengrid;
+ Evas_Object *m_layout;
+ Evas_Object *m_parent;
+ Elm_Gengrid_Item_Class * m_big_item_class;
+ Elm_Gengrid_Item_Class * m_medium_item_class;
+ Elm_Gengrid_Item_Class * m_small_item_class;
+ Elm_Gengrid_Item_Class * m_bookmark_item_class;
+ std::multimap<std::string,Elm_Object_Item*> m_map_history_views;
+ std::map<std::string,Elm_Object_Item*> m_map_bookmark_views;
+ bool m_gengridSetup;
+ std::string edjFilePath;
+ Evas_Object *createNoHistoryLabel();
+
+ 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
--- /dev/null
+#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 {
+
+#define WIDTH 1920
+#define HEIGHT 181
+#define ITEM_WIDTH 374
+#define PARENT_ITEM_HEIGHT 36
+
+ group{
+ name: "elm/button/base/invisible_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: "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: "mv_bookmarks";
+ data {
+ item: "focus_highlight" "off";
+ }
+ images {
+ image: "web_shadow.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;
+ }
+ }
+
+ parts {
+ part { name: "genlistTop_bg";
+ type: RECT;
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ color: 255 255 255 255;
+ min: 1920 181;
+ max: 1920 181;
+ align: 0.0 0.0;
+ fixed: 0 0;
+ rel1 {
+ relative: 0 0; offset: 0 104;
+ }
+ rel2{
+ relative: 1 1;
+ }
+ }
+ }
+ part { name: "gengrid_bg";
+ type: RECT;
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ color: 255 255 255 255;
+ min: 1920 626;
+ max: 1920 626;
+ align: 0.0 0.0;
+ fixed: 0 0;
+ rel1 {
+ relative: 0 1; to: "genlistTop_bg";
+ }
+ rel2{
+ relative: 1 1;
+ }
+ }
+ }
+ part { name: "genlistBottom_bg";
+ type: RECT;
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ color: 255 255 255 255;
+ min: 1920 181;
+ max: 1920 181;
+ align: 0.0 0.0;
+ fixed: 0 0;
+ rel1 {
+ relative: 0 1; to: "gengrid_bg";
+ }
+ rel2{
+ relative: 1 1;
+ }
+ }
+ }
+
+ part { name: "elm.swallow.grid";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ min: 1920 614;
+ max: 1920 614;
+ align: 0.0 0.0;
+ fixed: 0 0;
+ rel1 {
+ relative: 0 0; to: "gengrid_bg"; offset: 63 0;
+ }
+ rel2 {
+ relative: 1 1;
+ offset: 0 0;
+ }
+ }
+ }
+ part { name: "elm.swallow.mvBig";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ min: 800 626;
+ max: 800 626;
+ align: 0.0 0.0;
+ fixed: 0 0;
+ rel1 {
+ relative: 0 0; to: "gengrid_bg"; offset: 63 0;
+ }
+ rel2 {
+ relative: 1 1;
+ offset: 0 0;
+ }
+ }
+ }
+ part { name: "elm.swallow.mvMedium";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ min: 600 626;
+ max: 600 626;
+ align: 0.0 0.0;
+ fixed: 0 0;
+ rel1 {
+ relative: 0 0; to: "gengrid_bg"; offset: 889 0;
+ }
+ rel2{
+ relative: 1 1;
+ offset: 0 0;
+ }
+ }
+ }
+ part { name: "elm.swallow.mvSmall";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ min: 342 626;
+ max: 342 626;
+ align: 0.0 0.0;
+ fixed: 0 0;
+ rel1 {
+ relative: 0 0; to: "gengrid_bg"; offset: 1515 0;
+ }
+ rel2 {
+ relative: 1 1;
+ offset: 0 0;
+ }
+ }
+ }
+
+ part { name: "elm.swallow.genlistTop";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ min: 1920 181;
+ max: 1920 181;
+ align: 0.0 0.0;
+ fixed: 0 0;
+ rel1 {
+ relative: 0 0; to: "genlistTop_bg";
+ }
+ rel2 {
+ relative: 1 1;
+ offset: 0 0;
+ }
+ }
+ }
+ part { name: "uri_bar_shadow";
+ type: IMAGE;
+ scale: 1;
+ repeat_events: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ align: 0.0 0.0;
+ fixed: 0 0;
+ min: 1920 14;
+ max: 1920 14;
+ image.normal: "web_shadow.png";
+ rel1 { relative: 0.0 0.0; to: "elm.swallow.genlistTop"; }
+ rel2 { relative: 1.0 1.0; }
+ }
+ }
+ part { name: "elm.swallow.genlistBottom";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ min: 1920 181;
+ max: 1920 181;
+ align: 0.0 0.0;
+ fixed: 0 0;
+ rel1 {
+ relative: 0 0; to: "genlistBottom_bg";
+ }
+ rel2 {
+ relative: 1 1;
+ offset: 0 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;
+ }
+ }
+ }
+ }
+}
+
+group { name: "elm/genlist/item/big_grid_item/default";
+ data.item: "texts" "page_title page_url";
+ data.item: "contents" "elm.thumbnail elm.thumbButton";
+ min: 600 614;
+ max: 600 614;
+ images {
+ image: "web_frame_selected.png" COMP;
+ image: "ico_bg_round_shape_37x37.png" COMP;
+ }
+ parts {
+ part { name: "bg";
+ type: RECT;
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ min: 800 613;
+ max: 800 613;
+ visible: 1;
+ color: 231 231 231 255;
+ rel1.offset: 0 13;
+ }
+ description { state: "selected";
+ inherit: "default" 0.0;
+ color: 70 143 254 255;
+ }
+ }
+
+ part { name: "elm.thumbnail";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.0;
+ color : 231 231 231 255;
+ min: 800 526;
+ max: 800 526;
+ rel1 {
+ relative: 0.0 0.0; to: "bg";
+ }
+ rel2 {
+ relative: 1.0 1.0; to: "bg";
+ }
+ }
+ description { state: "selected";
+ inherit: "default" 0.0;
+ }
+ }
+
+ part { name: "focus_highlight";
+ type: IMAGE;
+ description { state: "default" 0.0;
+ rel1 {
+ to: "elm.thumbnail";
+ relative: 0.0 0.0;
+ }
+ rel2 {
+ to: "elm.thumbnail";
+ relative: 1.0 1.0;
+ }
+ image.normal: "web_frame_selected.png";
+ image.border: 8 8 8 0;
+ image.border_scale: 1;
+ image.middle: NONE;
+ visible: 0;
+ }
+ description { state: "selected";
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+
+ part { name: "background";
+ type: RECT;
+ description { state: "default" 0.0;
+ min: 800 87;
+ max: 800 87;
+ align: 0.0 0.0;
+ color: 231 231 231 255;
+ rel1 {
+ to: "elm.thumbnail";
+ relative: 0.0 1.0;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: 70 143 254 255;
+ }
+ }
+
+ part { name: "page_title";
+ type: TEXT;
+ description { state: "default" 0.0;
+ min: 700 48;
+ max: 700 48;
+ align: 0.0 0.5;
+ rel1 {
+ to: "background";
+ relative: 0.0 0.0;
+ offset: 17 0;
+ }
+ rel2 {
+ to: "background";
+ relative: 1.0 1.0;
+ }
+ color: 51 51 51 255;
+ text {
+ text: "Web page title";
+ font: "Sans";
+ size: 27;
+ align: 0 0.5;
+ }
+ }
+ description { state: "focus" 0.0;
+ inherit: "default" 0.0;
+ //color: focusTextColor;
+ }
+ description { state: "highlight" 0.0;
+ inherit: "default" 0.0;
+ //color: highlightTextColor;
+ }
+ }
+
+ part { name: "page_url";
+ type: TEXT;
+ description { state: "default" 0.0;
+ min: 700 48;
+ max: 700 48;
+ align: 0 0.5;
+ rel1 {
+ to: "page_title";
+ relative: 0.0 1.0;
+ }
+ rel2 {
+ to: "page_title";
+ relative: 1.0 1.0;
+ }
+ color: 153 153 153 255;
+ text {
+ text: "Web page url";
+ font: "Sans";
+ size: 24;
+ align: 0 0.5;
+ }
+ }
+ description { state: "focus" 0.0;
+ inherit: "default" 0.0;
+ //color: focusTextColor;
+ }
+ description { state: "highlight" 0.0;
+ inherit: "default" 0.0;
+ //color: highlightTextColor;
+ }
+ }
+
+ part { name: "elm.thumbButton";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ rel1.to: "elm.thumbnail";
+ rel2.to: "elm.thumbnail";
+ }
+ }
+
+ part { name: "over2";
+ type: RECT;
+ mouse_events: 1;
+ repeat_events: 1;
+ description { state: "default" 0.0;
+ color: 0 0 0 0;
+ rel1.to: "bg";
+ rel2.to: "background";
+ }
+ }
+ part { name: "over3";
+ type: RECT;
+ mouse_events: 1;
+ repeat_events: 1;
+ description { state: "default" 0.0;
+ color: 0 0 0 0;
+ rel1.to: "background";
+ rel2.to: "background";
+ }
+ }
+ }
+
+ programs{
+ program { name: "mouse_in";
+ signal: "mouse,in";
+ source: "over2";
+ action: STATE_SET "selected" 0.0;
+ target: "background";
+ target: "focus_highlight";
+ target: "bg";
+ }
+ program { name: "mouse_out";
+ signal: "mouse,out";
+ source: "over2";
+ action: STATE_SET "default" 0.0;
+ target: "background";
+ target: "focus_highlight";
+ target: "bg";
+ }
+ }
+}
+
+group { name: "elm/genlist/item/medium_grid_item/default";
+ data.item: "texts" "page_title page_url";
+ data.item: "contents" "elm.thumbnail elm.thumbButton";
+ images {
+ image: "web_frame_selected.png" COMP;
+ image: "ico_bg_round_shape_37x37.png" COMP;
+ }
+ parts {
+ part { name: "bg";
+ type: RECT;
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ min: 600 300;
+ max: 600 300;
+ visible: 1;
+ color: 231 231 231 255;
+ rel1.offset: 0 13;
+ }
+ description { state: "selected";
+ inherit: "default" 0.0;
+ color: 70 143 254 255;
+ }
+ }
+
+ part { name: "elm.thumbnail";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.0;
+ color : 231 231 231 255;
+ min: 600 203;
+ max: 600 203;
+ rel1 {
+ relative: 0.0 0.0; to: "bg";
+ }
+ rel2 {
+ relative: 1.0 1.0; to: "bg";
+ }
+ }
+ description { state: "selected";
+ inherit: "default" 0.0;
+ }
+ }
+
+ part { name: "focus_highlight";
+ type: IMAGE;
+ description { state: "default" 0.0;
+ rel1 {
+ to: "elm.thumbnail";
+ relative: 0.0 0.0;
+ }
+ rel2 {
+ to: "elm.thumbnail";
+ relative: 1.0 1.0;
+ }
+ image.normal: "web_frame_selected.png";
+ image.border: 8 8 8 0;
+ image.border_scale: 1;
+ image.middle: NONE;
+ visible: 0;
+ }
+ description { state: "selected";
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+
+ part { name: "background";
+ type: RECT;
+ description { state: "default" 0.0;
+ min: 600 87;
+ max: 600 87;
+ align: 0.0 0.0;
+ color: 231 231 231 255;
+ rel1 {
+ to: "elm.thumbnail";
+ relative: 0.0 1.0;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: 70 143 254 255;
+ }
+ }
+
+ part { name: "page_title";
+ type: TEXT;
+ description { state: "default" 0.0;
+ min: 500 48;
+ max: 500 48;
+ align: 0.0 0.5;
+ rel1 {
+ to: "background";
+ relative: 0.0 0.0;
+ offset: 17 0;
+ }
+ rel2 {
+ to: "background";
+ relative: 1.0 1.0;
+ }
+ color: 51 51 51 255;
+ text {
+ text: "Web page title";
+ font: "Sans";
+ size: 27;
+ align: 0 0.5;
+ }
+ }
+ description { state: "focus" 0.0;
+ inherit: "default" 0.0;
+ //color: focusTextColor;
+ }
+ description { state: "highlight" 0.0;
+ inherit: "default" 0.0;
+ //color: highlightTextColor;
+ }
+ }
+
+ part { name: "page_url";
+ type: TEXT;
+ description { state: "default" 0.0;
+ min: 500 48;
+ max: 500 48;
+ align: 0 0.5;
+ rel1 {
+ to: "page_title";
+ relative: 0.0 1.0;
+ }
+ rel2 {
+ to: "page_title";
+ relative: 1.0 1.0;
+ }
+ color: 153 153 153 255;
+ text {
+ text: "Web page url";
+ font: "Sans";
+ size: 24;
+ align: 0 0.5;
+ }
+ }
+ description { state: "focus" 0.0;
+ inherit: "default" 0.0;
+ //color: focusTextColor;
+ }
+ description { state: "highlight" 0.0;
+ inherit: "default" 0.0;
+ //color: highlightTextColor;
+ }
+ }
+
+ part { name: "elm.thumbButton";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ rel1.to: "elm.thumbnail";
+ rel2.to: "elm.thumbnail";
+ }
+ }
+
+ part { name: "over2";
+ type: RECT;
+ mouse_events: 1;
+ repeat_events: 1;
+ description { state: "default" 0.0;
+ color: 0 0 0 0;
+ rel1.to: "bg";
+ rel2.to: "background";
+ }
+ }
+ part { name: "over3";
+ type: RECT;
+ mouse_events: 1;
+ repeat_events: 1;
+ description { state: "default" 0.0;
+ color: 0 0 0 0;
+ rel1.to: "background";
+ rel2.to: "background";
+ }
+ }
+ }
+
+ programs{
+ program { name: "mouse_in";
+ signal: "mouse,in";
+ source: "over2";
+ action: STATE_SET "selected" 0.0;
+ target: "background";
+ target: "focus_highlight";
+ target: "bg";
+ }
+ program { name: "mouse_out";
+ signal: "mouse,out";
+ source: "over2";
+ action: STATE_SET "default" 0.0;
+ target: "background";
+ target: "focus_highlight";
+ target: "bg";
+ }
+ }
+}
+
+group { name: "elm/genlist/item/small_grid_item/default";
+ data.item: "texts" "page_title page_url";
+ data.item: "contents" "elm.thumbnail elm.thumbButton";
+ images {
+ image: "web_frame_selected.png" COMP;
+ image: "ico_bg_round_shape_37x37.png" COMP;
+ }
+ parts {
+ part { name: "bg";
+ type: RECT;
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ min: 342 300;
+ max: 342 300;
+ visible: 1;
+ color: 231 231 231 255;
+ rel1.offset: 0 13;
+ }
+ description { state: "selected";
+ inherit: "default" 0.0;
+ color: 70 143 254 255;
+ }
+ }
+
+ part { name: "elm.thumbnail";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.0;
+ color : 231 231 231 255;
+ min: 342 203;
+ max: 342 203;
+ rel1 {
+ relative: 0.0 0.0; to: "bg";
+ }
+ rel2 {
+ relative: 1.0 1.0; to: "bg";
+ }
+ }
+ description { state: "selected";
+ inherit: "default" 0.0;
+ }
+ }
+
+ part { name: "focus_highlight";
+ type: IMAGE;
+ description { state: "default" 0.0;
+ rel1 {
+ to: "elm.thumbnail";
+ relative: 0.0 0.0;
+ }
+ rel2 {
+ to: "elm.thumbnail";
+ relative: 1.0 1.0;
+ }
+ image.normal: "web_frame_selected.png";
+ image.border: 8 8 8 0;
+ image.border_scale: 1;
+ image.middle: NONE;
+ visible: 0;
+ }
+ description { state: "selected";
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+
+ part { name: "background";
+ type: RECT;
+ description { state: "default" 0.0;
+ min: 342 87;
+ max: 342 87;
+ align: 0.0 0.0;
+ color: 231 231 231 255;
+ rel1 {
+ to: "elm.thumbnail";
+ relative: 0.0 1.0;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: 70 143 254 255;
+ }
+ }
+
+ part { name: "page_title";
+ type: TEXT;
+ description { state: "default" 0.0;
+ min: 320 48;
+ max: 320 48;
+ align: 0.0 0.5;
+ rel1 {
+ to: "background";
+ relative: 0.0 0.0;
+ offset: 17 0;
+ }
+ rel2 {
+ to: "background";
+ relative: 1.0 1.0;
+ }
+ color: 51 51 51 255;
+ text {
+ text: "Web page title";
+ font: "Sans";
+ size: 27;
+ align: 0 0.5;
+ }
+ }
+ description { state: "focus" 0.0;
+ inherit: "default" 0.0;
+ //color: focusTextColor;
+ }
+ description { state: "highlight" 0.0;
+ inherit: "default" 0.0;
+ //color: highlightTextColor;
+ }
+ }
+
+ part { name: "page_url";
+ type: TEXT;
+ description { state: "default" 0.0;
+ min: 320 48;
+ max: 320 48;
+ align: 0 0.5;
+ rel1 {
+ to: "page_title";
+ relative: 0.0 1.0;
+ }
+ rel2 {
+ to: "page_title";
+ relative: 1.0 1.0;
+ }
+ color: 153 153 153 255;
+ text {
+ text: "Web page url";
+ font: "Sans";
+ size: 24;
+ align: 0 0.5;
+ }
+ }
+ description { state: "focus" 0.0;
+ inherit: "default" 0.0;
+ //color: focusTextColor;
+ }
+ description { state: "highlight" 0.0;
+ inherit: "default" 0.0;
+ //color: highlightTextColor;
+ }
+ }
+
+ part { name: "elm.thumbButton";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ rel1.to: "elm.thumbnail";
+ rel2.to: "elm.thumbnail";
+ }
+ }
+
+ part { name: "over2";
+ type: RECT;
+ mouse_events: 1;
+ repeat_events: 1;
+ description { state: "default" 0.0;
+ color: 0 0 0 0;
+ rel1.to: "bg";
+ rel2.to: "background";
+ }
+ }
+ part { name: "over3";
+ type: RECT;
+ mouse_events: 1;
+ repeat_events: 1;
+ description { state: "default" 0.0;
+ color: 0 0 0 0;
+ rel1.to: "background";
+ rel2.to: "background";
+ }
+ }
+ }
+
+ programs{
+ program { name: "mouse_in";
+ signal: "mouse,in";
+ source: "over2";
+ action: STATE_SET "selected" 0.0;
+ target: "background";
+ target: "focus_highlight";
+ target: "bg";
+ }
+ program { name: "mouse_out";
+ signal: "mouse,out";
+ source: "over2";
+ action: STATE_SET "default" 0.0;
+ target: "background";
+ target: "focus_highlight";
+ target: "bg";
+ }
+ }
+}
+
+group { name: "elm/gengrid/item/grid_item/default";
+ data.item: "texts" "page_title page_url";
+ data.item: "contents" "elm.thumbnail elm.thumbButton";
+ images {
+ image: "web_frame_selected.png" COMP;
+ image: "ico_bg_round_shape_37x37.png" COMP;
+ }
+ parts {
+ part { name: "bg";
+ type: RECT;
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ min: 338 294;
+ max: 338 294;
+ visible: 1;
+ color: 231 231 231 255;
+ rel1.offset: -26 -26;
+ }
+ description { state: "selected";
+ inherit: "default" 0.0;
+ color: 70 143 254 255;
+ }
+ }
+
+ part { name: "elm.thumbnail";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.0;
+ color : 231 231 231 255;
+ min: 338 198;
+ max: 338 198;
+ rel1 {
+ relative: 0.0 0.0; to: "bg";
+ }
+ rel2 {
+ relative: 1.0 1.0; to: "bg";
+ }
+ }
+ description { state: "selected";
+ inherit: "default" 0.0;
+ }
+ }
+
+ part { name: "focus_highlight";
+ type: IMAGE;
+ description { state: "default" 0.0;
+ rel1 {
+ to: "elm.thumbnail";
+ relative: 0.0 0.0;
+ }
+ rel2 {
+ to: "elm.thumbnail";
+ relative: 1.0 1.0;
+ }
+ image.normal: "web_frame_selected.png";
+ image.border: 8 8 8 0;
+ image.border_scale: 1;
+ image.middle: NONE;
+ visible: 0;
+ }
+ description { state: "selected";
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+
+ part { name: "background";
+ type: RECT;
+ description { state: "default" 0.0;
+ min: 338 87;
+ max: 338 87;
+ align: 0.0 0.0;
+ color: 231 231 231 255;
+ rel1 {
+ to: "elm.thumbnail";
+ relative: 0.0 1.0;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: 70 143 254 255;
+ }
+ }
+
+ part { name: "page_title";
+ type: TEXT;
+ description { state: "default" 0.0;
+ min: 300 48;
+ max: 300 48;
+ align: 0.0 0.5;
+ rel1 {
+ to: "background";
+ relative: 0.0 0.0;
+ offset: 17 0;
+ }
+ rel2 {
+ to: "background";
+ relative: 1.0 1.0;
+ }
+ color: 51 51 51 255;
+ text {
+ text: "Web page title";
+ font: "Sans";
+ size: 27;
+ align: 0 0.5;
+ }
+ }
+ description { state: "focus" 0.0;
+ inherit: "default" 0.0;
+ //color: focusTextColor;
+ }
+ description { state: "highlight" 0.0;
+ inherit: "default" 0.0;
+ //color: highlightTextColor;
+ }
+ }
+
+ part { name: "page_url";
+ type: TEXT;
+ description { state: "default" 0.0;
+ min: 300 48;
+ max: 300 48;
+ align: 0 0.5;
+ rel1 {
+ to: "page_title";
+ relative: 0.0 1.0;
+ }
+ rel2 {
+ to: "page_title";
+ relative: 1.0 1.0;
+ }
+ color: 153 153 153 255;
+ text {
+ text: "Web page url";
+ font: "Sans";
+ size: 24;
+ align: 0 0.5;
+ }
+ }
+ description { state: "focus" 0.0;
+ inherit: "default" 0.0;
+ //color: focusTextColor;
+ }
+ description { state: "highlight" 0.0;
+ inherit: "default" 0.0;
+ //color: highlightTextColor;
+ }
+ }
+
+ part { name: "elm.thumbButton";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ rel1.to: "elm.thumbnail";
+ rel2.to: "elm.thumbnail";
+ }
+ }
+
+ part { name: "over2";
+ type: RECT;
+ mouse_events: 1;
+ repeat_events: 1;
+ description { state: "default" 0.0;
+ color: 0 0 0 0;
+ rel1.to: "bg";
+ rel2.to: "background";
+ }
+ }
+ part { name: "over3";
+ type: RECT;
+ mouse_events: 1;
+ repeat_events: 1;
+ description { state: "default" 0.0;
+ color: 0 0 0 0;
+ rel1.to: "background";
+ rel2.to: "background";
+ }
+ }
+ }
+
+ programs{
+ program { name: "mouse_in";
+ signal: "mouse,in";
+ source: "over2";
+ action: STATE_SET "selected" 0.0;
+ target: "background";
+ target: "focus_highlight";
+ target: "bg";
+ }
+ program { name: "mouse_out";
+ signal: "mouse,out";
+ source: "over2";
+ action: STATE_SET "default" 0.0;
+ target: "background";
+ target: "focus_highlight";
+ target: "bg";
+ }
+ }
+}
+
+group { name: "elm/genlist/item/top_button_item/default";
+ min: 1920 181;
+ max: 1920 181;
+ data.item: "texts" "mostvisited_text bookmark_text";
+ data.item: "contents" "mostvisited_click bookmark_click";
+ parts{
+ part {
+ name: "bg_clipper";
+ scale:1;
+ mouse_events: 1;
+ type: RECT;
+ description {
+ state: "default" 0.0;
+ color: 255 255 255 255;
+ align: 0 0;
+ min: 1920 181;
+ max: 1920 181;
+ rel1 { relative: 0.0 0.0;}
+ rel2 { relative: 1.0 1.0;}
+ }
+ }
+ part {
+ name: "mostvisited_button";
+ scale:1;
+ mouse_events: 1;
+ type: RECT;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ fixed: 1 1;
+ color: 192 192 192 255;
+ align: 0 0;
+ min: 348 65;
+ max: 348 65;
+ rel1 { relative: 0.0 0.0; to: "bg_clipper"; offset: 611 58;}
+ rel2 { relative: 1.0 1.0; to: "bg_clipper"; }
+ }
+ 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: "mostvisited_text";
+ type: TEXT;
+ scale: 1;
+ description { state: "default" 0.0;
+ visible: 1;
+ fixed: 1 1;
+ rel1 { relative: 0.0 0.0;to: "mostvisited_button";}
+ rel2 { relative: 1.0 1.0;to: "mostvisited_button";}
+ color: 0 0 0 255;
+ text {
+ text: "Most visited";
+ font: "Sans";
+ size: 27;
+ align: 0.5 0.5;
+ }
+ }
+ }
+ part {
+ name: "mostvisited_over";
+ scale:1;
+ type: RECT;
+ mouse_events: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ align: 0 0;
+ fixed: 1 1;
+ min: 348 65;
+ max: 348 65;
+ rel1 { relative: 0.0 0.0; to: "mostvisited_button";}
+ rel2 { relative: 1.0 1.0; to: "mostvisited_button";}
+ color_class: transparent;
+ }
+ }
+ part {
+ name: "mostvisited_click";
+ scale:1;
+ type: SWALLOW;
+ mouse_events: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ align: 0 0;
+ fixed: 1 1;
+ min: 348 65;
+ max: 348 65;
+ rel1 { relative: 0.0 0.0; to: "mostvisited_over";}
+ rel2 { relative: 1.0 1.0; to: "mostvisited_over";}
+ }
+ }
+ part {
+ name: "bookmark_button";
+ scale:1;
+ mouse_events: 1;
+ type: RECT;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ fixed: 1 1;
+ color: 192 192 192 255;
+ align: 0 0;
+ min: 348 65;
+ max: 348 65;
+ rel1 { relative: 0.0 0.0; to: "bg_clipper"; offset: 961 58;}
+ rel2 { relative: 1.0 1.0; to: "bg_clipper"; }
+ }
+ 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: "bookmark_text";
+ type: TEXT;
+ scale: 1;
+ description { state: "default" 0.0;
+ visible: 1;
+ fixed: 1 1;
+ rel1 { relative: 0.0 0.0;to: "bookmark_button";}
+ rel2 { relative: 1.0 1.0;to: "bookmark_button";}
+ color: 0 0 0 255;
+ text {
+ text: "Bookmark";
+ font: "Sans";
+ size: 27;
+ align: 0.5 0.5;
+ }
+ }
+ }
+ part {
+ name: "bookmark_over";
+ scale:1;
+ type: RECT;
+ mouse_events: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ align: 0 0;
+ fixed: 1 1;
+ min: 348 65;
+ max: 348 65;
+ rel1 { relative: 0.0 0.0; to: "bookmark_button";}
+ rel2 { relative: 1.0 1.0; to: "bookmark_button";}
+ color_class: transparent;
+ }
+ }
+ part {
+ name: "bookmark_click";
+ scale:1;
+ type: SWALLOW;
+ mouse_events: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ align: 0 0;
+ fixed: 1 1;
+ min: 348 65;
+ max: 348 65;
+ rel1 { relative: 0.0 0.0; to: "bookmark_over";}
+ rel2 { relative: 1.0 1.0; to: "bookmark_over";}
+ color_class: transparent;
+ }
+ }
+
+ programs{
+ program {
+ name: "mouse_click_mostvisited";
+ signal: "mouse,clicked,1";
+ source: "mostvisited_over";
+ script {
+ emit("elm,action,click", "");
+ }
+ }
+ program {
+ name: "mouse_in_mostvisited_click";
+ signal: "mouse,in";
+ source: "mostvisited_*";
+ action: STATE_SET "highlight" 0.0;
+ target: "mostvisited_button";
+ target: "mostvisited_over";
+ target: "mostvisited_text";
+ }
+ program {
+ name: "mouse_out_mostvisited_click";
+ signal: "mouse,out";
+ source: "mostvisited_*";
+ action: STATE_SET "default" 0.0;
+ target: "mostvisited_button";
+ target: "mostvisited_over";
+ target: "mostvisited_text";
+ }
+ program {
+ name: "mouse_click_bookmark";
+ signal: "mouse,clicked,1";
+ source: "bookmark_over";
+ script {
+ emit("elm,action,click", "");
+ }
+ }
+ program {
+ name: "mouse_in_bookmark_click";
+ signal: "mouse,in";
+ source: "bookmark_*";
+ action: STATE_SET "highlight" 0.0;
+ target: "bookmark_button";
+ target: "bookmark_over";
+ target: "bookmark_text";
+ }
+ program {
+ name: "mouse_out_bookmark_click";
+ signal: "mouse,out";
+ source: "bookmark_*";
+ action: STATE_SET "default" 0.0;
+ target: "bookmark_button";
+ target: "bookmark_over";
+ target: "mostvisited_text";
+ }
+ }
+ }
+}
+
+group { name: "elm/genlist/item/bottom_button_item/default";
+ min: 1920 181;
+ max: 1920 181;
+ data.item: "texts" "bookmarkmanager_text";
+ data.item: "contents" "bookmarkmanager_click";
+ parts{
+ part {
+ name: "bg_clipper";
+ scale:1;
+ mouse_events: 1;
+ type: RECT;
+ description {
+ state: "default" 0.0;
+ color: 255 255 255 255;
+ align: 0 0;
+ min: 1920 181;
+ max: 1920 181;
+ rel1 { relative: 0.0 0.0;}
+ rel2 { relative: 1.0 1.0;}
+ }
+ }
+ part {
+ name: "bookmarkmanager_button";
+ scale:1;
+ mouse_events: 1;
+ type: RECT;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ fixed: 1 1;
+ align: 0 0;
+ min: 348 65;
+ max: 348 65;
+ color: 192 192 192 255;
+ rel1 { relative: 0.0 0.0; to: "bg_clipper"; offset: 786 58;}
+ rel2 { relative: 1.0 1.0; to: "bg_clipper"; }
+ }
+ 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: "bookmarkmanager_text";
+ type: TEXT;
+ scale: 1;
+ description { state: "default" 0.0;
+ visible: 1;
+ fixed: 1 1;
+ rel1 { relative: 0.0 0.0;to: "bookmarkmanager_button";}
+ rel2 { relative: 1.0 1.0;to: "bookmarkmanager_button";}
+ color: 0 0 0 255;
+ text {
+ text: "Bookmark Manager";
+ font: "Sans";
+ size: 27;
+ align: 0.5 0.5;
+ }
+ }
+ }
+ part {
+ name: "bookmarkmanager_over";
+ scale:1;
+ type: RECT;
+ mouse_events: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ align: 0 0;
+ fixed: 1 1;
+ min: 348 65;
+ max: 348 65;
+ rel1 { relative: 0.0 0.0; to: "bookmarkmanager_button";}
+ rel2 { relative: 1.0 1.0; to: "bookmarkmanager_button";}
+ color_class: transparent;
+ }
+ }
+ part {
+ name: "bookmarkmanager_click";
+ scale:1;
+ type: SWALLOW;
+ mouse_events: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ align: 0 0;
+ fixed: 1 1;
+ min: 348 65;
+ max: 348 65;
+ rel1 { relative: 0.0 0.0; to: "bookmarkmanager_over";}
+ rel2 { relative: 1.0 1.0; to: "bookmarkmanager_over";}
+ }
+ }
+ }
+ programs{
+ program {
+ name: "mouse_click_bookmarkmanager";
+ signal: "mouse,clicked,1";
+ source: "bookmarkmanager_over";
+ script {
+ emit("elm,action,click", "");
+ }
+ }
+ program {
+ name: "mouse_in_bookmarkmanager_click";
+ signal: "mouse,in";
+ source: "bookmarkmanager_*";
+ action: STATE_SET "highlight" 0.0;
+ target: "bookmarkmanager_button";
+ target: "bookmarkmanager_over";
+ target: "bookmarkmanager_text";
+ }
+ program {
+ name: "mouse_out_bookmarkmanager_click";
+ signal: "mouse,out";
+ source: "bookmarkmanager_*";
+ action: STATE_SET "default" 0.0;
+ target: "bookmarkmanager_button";
+ target: "bookmarkmanager_over";
+ target: "bookmarkmanager_text";
+ }
+ }
+ }
+}
self->rightPressed();
else if(!keyName.compare("KEY_ENTER"))
self->enterPressed();
-// else if(!keyName.compare("BackSpace"))
-// self->backPressed();
+ // MERGE_ME dont know if should be commented out
+ else if(!keyName.compare("BackSpace"))
+ self->backPressed();
} else if(type == ECORE_EVENT_KEY_UP) {
M_ASSERT(event);
Ecore_Event_Key *ev = static_cast<Ecore_Event_Key *>(event);
--- /dev/null
+/*
+ * 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 "BookmarksManager.h"
+#include <memory>
+#include <string>
+#include <iostream>
+#include <Eina.h>
+#include <Evas.h>
+#include "BrowserLogger.h"
+
+namespace tizen_browser
+{
+namespace base_ui
+{
+
+BookmarksManagerItem::BookmarksManagerItem()
+ : action(std::make_shared<Action>())
+{
+
+}
+BookmarksManagerItem::BookmarksManagerItem( std::shared_ptr<Action> action)
+ : action(action)
+{
+
+}
+
+
+BookmarksManagerItem::BookmarksManagerItem(const BookmarksManagerItem& source)
+ : action(source.action)
+{
+
+}
+BookmarksManagerItem::BookmarksManagerItem(const BookmarksManagerItem* source)
+ : action(source->action)
+{
+
+}
+
+
+BookmarksManagerItem::~BookmarksManagerItem()
+{
+ //elm_genlist_item_class_free(m_itemClass);??
+}
+
+BookmarksManager::BookmarksManager(std::shared_ptr< Evas_Object > mainWindow, Evas_Object* parentButton)
+ : MenuButton(mainWindow, parentButton)
+ , m_popup (nullptr)
+ , m_isPopupShown (false)
+ , m_genlist(nullptr)
+ , m_itemClass(nullptr)
+ , m_internalPopup(nullptr)
+ , m_internalPopupVisible(false)
+ , m_pointerModeEnabled(true)
+{
+ std::string edjFilePath = EDJE_DIR;
+ edjFilePath.append("SimpleUI/BookmarksManager.edj");
+ elm_theme_extension_add(0, edjFilePath.c_str());
+
+ m_genlist = elm_genlist_add(m_window.get());
+
+ evas_object_smart_callback_add(m_genlist, "item,focused", focusItem, nullptr);
+ evas_object_smart_callback_add(m_genlist, "item,unfocused", unFocusItem, nullptr);
+
+ elm_object_style_set(m_genlist, "bookmarks_manager");
+ elm_genlist_homogeneous_set(m_genlist, EINA_TRUE);
+ elm_genlist_multi_select_set(m_genlist, EINA_FALSE);
+
+ elm_genlist_select_mode_set(m_genlist, ELM_OBJECT_SELECT_MODE_ALWAYS);
+
+ m_itemClass = elm_genlist_item_class_new();
+ m_itemClass->item_style = "bookmarks_manager_item";
+
+ m_itemClass->func.text_get = &gridTextGet;
+ m_itemClass->func.content_get = &gridOptionLabelGet;
+ m_itemClass->func.state_get = 0;
+ m_itemClass->func.del = 0;
+}
+
+BookmarksManager::~BookmarksManager()
+{
+
+}
+
+Evas_Object* BookmarksManager::getContent()
+{
+ return m_genlist;
+}
+
+tizen_browser::base_ui::MenuButton::ListSize BookmarksManager::calculateSize()
+{
+ ListSize result;
+
+ result.width = 490;
+ result.height = 426;
+
+ return result;
+}
+
+Evas_Object* BookmarksManager::getFirstFocus()
+{
+ return m_genlist;
+}
+
+void BookmarksManager::addAction(sharedAction action)
+{
+ std::shared_ptr<BookmarksManagerItem> bookmarks_managerItem = std::make_shared<BookmarksManagerItem>(action);
+ BROWSER_LOGD("[%s] %x: %s", __func__ , bookmarks_managerItem.get(), bookmarks_managerItem->action->getText().c_str() );
+ Elm_Object_Item* elmItem= elm_genlist_item_append(m_genlist, //genlist
+ m_itemClass, //item Class
+ bookmarks_managerItem.get(), //item data
+ 0, //parent item
+ ELM_GENLIST_ITEM_NONE,//item type
+ itemClicked,
+ this
+ );
+ m_bookmarks_managerItemsMap[elmItem] = bookmarks_managerItem;
+ BROWSER_LOGD("[%s:%d] \n\t %x:%s ", __PRETTY_FUNCTION__, __LINE__, elmItem, bookmarks_managerItem->action->getText().c_str());
+ if(!bookmarks_managerItem->action->isEnabled()){
+ elm_object_item_disabled_set(elmItem, EINA_TRUE);
+ }
+ if(bookmarks_managerItem->action->isCheckable()){
+ elm_object_item_signal_emit(elmItem,
+ (bookmarks_managerItem->action->isChecked() ? "switch,on" : "switch,off")
+ , "BookmarksManagerModel");
+ } else {
+ elm_object_item_signal_emit(elmItem, "switch,hide", "BookmarksManagerModel");
+ }
+ action->enabledChanged.connect(boost::bind(&BookmarksManager::onEnabledChanged, this, action));
+ m_actionButtonMap[action] = elmItem;
+}
+
+void BookmarksManager::onEnabledChanged(sharedAction action)
+{
+ BROWSER_LOGD("[%s]", __func__);
+ refreshAction(action);
+}
+
+void BookmarksManager::refreshAction(sharedAction action)
+{
+ BROWSER_LOGD("[%s]", __func__);
+ if(action->isEnabled())
+ elm_object_item_disabled_set(m_actionButtonMap[action], EINA_FALSE);
+ else
+ elm_object_item_disabled_set(m_actionButtonMap[action], EINA_TRUE);
+}
+
+char* BookmarksManager::gridTextGet(void* data, Evas_Object* /*obj*/, const char* part)
+{
+ BROWSER_LOGD("[%s]", __func__);
+ BookmarksManagerItem *bookmarks_managerItem =reinterpret_cast<BookmarksManagerItem*>(data);
+ if(!strcmp(part, "optionName")){
+ if(!bookmarks_managerItem->action->getText().empty()){
+ return strdup(bookmarks_managerItem->action->getText().c_str());
+ }
+ }
+ return strdup("");
+}
+
+Evas_Object* BookmarksManager::gridOptionLabelGet(void* data, Evas_Object* obj, const char* part)
+{
+ BookmarksManagerItem *bookmarks_managerItem =reinterpret_cast<BookmarksManagerItem*>(data);
+ if(!strcmp(part, "optionValue")){
+ if(bookmarks_managerItem->action->isEnabled() && bookmarks_managerItem->action->isCheckable()){
+ Evas_Object *label = elm_label_add(obj);
+ elm_object_text_set(label, (bookmarks_managerItem->action->isChecked() ? "On" :"Off" ));
+ elm_object_style_set(label, "bookmarks_manager_label");
+ return label;
+ }
+ }
+ return nullptr;
+
+}
+
+void BookmarksManager::itemClicked(void* data, Evas_Object* /*o*/, void* event_info)
+{
+ BROWSER_LOGD("[%s]", __func__);
+
+ BookmarksManager* bookmarks_manager = reinterpret_cast<BookmarksManager*>(data);
+ Elm_Object_Item* elmItem = reinterpret_cast<Elm_Object_Item*>(event_info);
+ BROWSER_LOGD("[%s:%d] \n\t %x", __PRETTY_FUNCTION__, __LINE__, elmItem);
+ if(bookmarks_manager->m_bookmarks_managerItemsMap.count(elmItem)){
+ std::shared_ptr<BookmarksManagerItem> bookmarks_managerItem(bookmarks_manager->m_bookmarks_managerItemsMap[elmItem]);// elm_object_item_data_get(elmItem)
+ if(bookmarks_managerItem->action->isEnabled()){
+ if(bookmarks_managerItem->action->isCheckable()) {
+ bookmarks_manager->showInternalPopup(elmItem);
+ } else{
+ bookmarks_managerItem->action->trigger();
+ }
+ }
+ }
+}
+
+void BookmarksManager::showPopup()
+{
+ BROWSER_LOGD("[%s:%d] this: %x ", __PRETTY_FUNCTION__, __LINE__, this);
+
+ if (isPopupShown()){
+ m_isPopupShown = false;
+ unbindFocus();
+ evas_object_hide(m_popup);
+ return;
+ }
+
+ if(!m_popup) {
+ m_popup = elm_popup_add(m_window.get());
+ BROWSER_LOGD("[%s:%d] - new popup: %x ", __PRETTY_FUNCTION__, __LINE__, m_popup);
+ evas_object_smart_callback_add(m_popup, "block,clicked", block_clicked, this);
+ // elm_object_content_set(m_popup, getContent());
+ elm_object_part_text_set(m_popup, "title,text", "Add to Bookmark");
+
+ Evas_Coord w,h,x,y;
+ evas_object_geometry_get(m_window.get(), &x, &y, &w, &h);
+ evas_object_geometry_set(m_popup,0,0,w,h);
+
+ //elm_object_style_set(m_popup, "message_popup");
+ }
+ //evas_object_resize(m_popup, 480, 800);
+ realShow(m_popup);
+}
+
+void BookmarksManager::realShow(Evas_Object* popup)
+{
+ elm_object_focus_next_object_set(m_parentButton, getFirstFocus(), ELM_FOCUS_DOWN);
+ elm_object_focus_next_object_set(getFirstFocus(), m_parentButton, ELM_FOCUS_UP);
+
+ // ListSize listSize = calculateSize();
+ // evas_object_size_hint_min_set(m_popup, listSize.width, listSize.height);
+ // evas_object_size_hint_max_set(m_popup, listSize.width, listSize.height);
+ elm_popup_item_append(popup,"Folde 1",nullptr,nullptr,this);
+ elm_popup_item_append(popup,"Folde 2",nullptr,nullptr,this);
+ elm_popup_item_append(popup,"Folde 3",nullptr,nullptr,this);
+ elm_popup_item_append(popup,"Folde 4",nullptr,nullptr,this);
+ elm_popup_item_append(popup,"Folde 5",nullptr,nullptr,this);
+ elm_popup_item_append(popup,"Folde 6",nullptr,nullptr,this);
+ elm_popup_item_append(popup,"Folde 7",nullptr,nullptr,this);
+ elm_popup_item_append(popup,"Folde 8",nullptr,nullptr,this);
+ elm_popup_item_append(popup,"Folde 8",nullptr,nullptr,this);
+ elm_popup_item_append(popup,"Folde 10",nullptr,nullptr,this);
+ elm_popup_item_append(popup,"Folde 11",nullptr,nullptr,this);
+ elm_popup_item_append(popup,"Folde 12",nullptr,nullptr,this);
+ evas_object_show(popup);
+ m_isPopupShown=true;
+}
+
+void BookmarksManager::unbindFocus()
+{
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+ elm_object_focus_next_object_set(m_parentButton, nullptr, ELM_FOCUS_DOWN);
+}
+
+bool BookmarksManager::isPopupShown()
+{
+ return m_isPopupShown;
+}
+
+void BookmarksManager::block_clicked(void *data, Evas_Object *obj, void *event_info)
+{
+ evas_object_hide(obj);
+}
+
+void BookmarksManager::hidePopup()
+{
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+ evas_object_hide(m_popup);
+ m_isPopupShown = false;
+}
+
+void BookmarksManager::showInternalPopup(Elm_Object_Item* listItem)
+{
+ BROWSER_LOGD("[%s]", __func__);
+ m_internalPopupVisible = true;
+ m_trackedItem = listItem;
+
+ if(!m_internalPopup){
+ m_internalPopup = elm_ctxpopup_add(m_window.get());
+ evas_object_smart_callback_add(m_internalPopup, "dismissed", BookmarksManager::dismissedCtxPopup, this);
+ }
+ Evas_Object * buttonBox = elm_box_add(m_internalPopup);
+ Evas_Object * radioOn = elm_radio_add(m_internalPopup);
+ Evas_Object * radioOff = elm_radio_add(m_internalPopup);
+
+
+ elm_object_text_set(radioOn, "On");
+ elm_object_text_set(radioOff, "Off");
+
+ elm_object_style_set(radioOn, "bookmarks_manager_radio");
+ elm_object_style_set(radioOff, "bookmarks_manager_radio");
+
+ elm_box_pack_end(buttonBox, radioOn);
+ elm_box_pack_end(buttonBox, radioOff);
+
+ m_checkState = (m_bookmarks_managerItemsMap[m_trackedItem]->action->isChecked() ? CheckStateOn : CheckStateOff );
+
+ elm_radio_state_value_set(radioOn, CheckStateOn);//true
+ elm_radio_value_pointer_set(radioOn, reinterpret_cast<int*>(&m_checkState));
+
+ elm_radio_state_value_set(radioOff, CheckStateOff);//false
+ elm_radio_value_pointer_set(radioOff, reinterpret_cast<int*>(&m_checkState));
+
+ elm_radio_group_add(radioOff, radioOn);
+
+ evas_object_smart_callback_add(radioOn, "changed", radioChanged, this);
+ evas_object_smart_callback_add(radioOff, "changed", radioChanged, this);
+
+ evas_object_size_hint_weight_set(buttonBox, EVAS_HINT_EXPAND,EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(buttonBox, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+ evas_object_show(buttonBox);
+ evas_object_show(radioOn);
+ evas_object_show(radioOff);
+
+
+ elm_object_content_set(m_internalPopup, buttonBox);
+ elm_ctxpopup_direction_priority_set(m_internalPopup,
+ ELM_CTXPOPUP_DIRECTION_DOWN,
+ ELM_CTXPOPUP_DIRECTION_DOWN,
+ ELM_CTXPOPUP_DIRECTION_DOWN,
+ ELM_CTXPOPUP_DIRECTION_DOWN);
+ Evas_Coord w,h,x,y;
+
+#if PLATFORM(TIZEN)
+ evas_object_geometry_get(elm_object_item_track(m_trackedItem), &x, &y, &w, &h);
+
+ BROWSER_LOGD("[%s:%d] \n\tx:%d; y:%d; w:%d; h:%d ", __PRETTY_FUNCTION__, __LINE__,
+ x, y, w, h);
+ evas_object_move(m_internalPopup, x + 354, y);//354 is proper value
+#endif
+
+ elm_object_style_set(m_internalPopup, "bookmarks_manager_button");
+ evas_object_show(m_internalPopup);
+ if(!m_pointerModeEnabled)
+ elm_object_focus_set(radioOn, EINA_TRUE);
+ elm_object_item_signal_emit(m_trackedItem, "selected", "BookmarksManagerModel");
+ elm_object_signal_emit(m_genlist, "show_popup", "BookmarksManagerModel");
+}
+
+void BookmarksManager::dismissedCtxPopup(void* data, Evas_Object* obj, void* /*event_info*/)
+{
+ BROWSER_LOGD("[%s]", __func__);
+ BookmarksManager* bookmarks_manager = static_cast<BookmarksManager*>(data);
+ evas_object_hide(obj);
+ bookmarks_manager->m_internalPopup = 0;
+ elm_object_signal_emit(bookmarks_manager->m_genlist, "hide_popup", "BookmarksManagerModel");
+ elm_object_item_signal_emit(bookmarks_manager->m_trackedItem, "unselected", "BookmarksManagerModel");
+
+#if PLATFORM(TIZEN)
+ elm_object_item_untrack(bookmarks_manager->m_trackedItem);
+#endif
+ bookmarks_manager->m_internalPopupVisible = false;
+}
+
+void BookmarksManager::radioChanged(void* data, Evas_Object* /*obj*/, void* /*event_info*/)
+{
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+ BookmarksManager *bookmarks_manager = static_cast<BookmarksManager*>(data);
+ std::shared_ptr<BookmarksManagerItem> bookmarks_managerItem(bookmarks_manager->m_bookmarks_managerItemsMap[bookmarks_manager->m_trackedItem]);
+ bookmarks_managerItem->action->toggle();
+ elm_object_item_signal_emit(bookmarks_manager->m_trackedItem,
+ (bookmarks_managerItem->action->isChecked() ? "switch,on" : "switch,off")
+ , "BookmarksManagerModel");
+ elm_genlist_item_update(bookmarks_manager->m_trackedItem);
+ elm_object_signal_emit(bookmarks_manager->m_internalPopup, "elm,state,hide", "elm");
+}
+
+void BookmarksManager::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", "option*");
+}
+
+void BookmarksManager::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", "option*");
+}
+
+void BookmarksManager::setPointerModeEnabled (bool enabled)
+{
+ m_pointerModeEnabled = enabled;
+}
+
+bool BookmarksManager::canBeDismissed()
+{
+ BROWSER_LOGD("[%s]", __func__);
+ bool internalPopupVisible = m_internalPopup && m_internalPopupVisible;
+ if(internalPopupVisible) {
+ elm_ctxpopup_dismiss(m_internalPopup);
+ return false;
+ }
+ return true;
+}
+
+}//namespace base_ui
+
+}//namespace tizen_browser
--- /dev/null
+/*
+ * 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 BOOKSMARK_MANAGER_H
+#define BOOKSMARK_MANAGER_H
+#include <Evas.h>
+#include <Elementary.h>
+#include <string>
+#include <list>
+#include <map>
+#include <memory>
+#include <ostream>
+#include <deque>
+
+#include "Action.h"
+#include "MenuButton.h"
+
+namespace tizen_browser
+{
+namespace base_ui
+{
+
+struct BookmarksManagerItem{
+ std::shared_ptr<Action> action;
+ BookmarksManagerItem();
+ BookmarksManagerItem(std::shared_ptr<Action> action);
+ BookmarksManagerItem(const BookmarksManagerItem& source);
+ BookmarksManagerItem(const BookmarksManagerItem* source);
+ ~BookmarksManagerItem();
+};
+
+
+class BookmarksManager: public MenuButton
+{
+public:
+ BookmarksManager(std::shared_ptr< Evas_Object > mainWindow, Evas_Object* parentButton);
+ ~BookmarksManager();
+ virtual Evas_Object *getContent();
+ virtual ListSize calculateSize();
+ virtual Evas_Object* getFirstFocus();
+ void addAction(sharedAction action);
+ void onEnabledChanged(sharedAction action);
+ void refreshAction(sharedAction action);
+ void setPointerModeEnabled (bool enabled);
+ void showPopup();
+ void hidePopup();
+ bool isPopupShown();
+ virtual bool canBeDismissed();
+private:
+ static char *gridTextGet(void *data, Evas_Object* obj, const char *part);
+ static Evas_Object *gridOptionLabelGet(void* data, Evas_Object* /*obj*/, const char* part);
+ static void itemClicked(void *data, Evas_Object *o, void *event_info);
+ static void block_clicked(void *data, Evas_Object *obj, void *event_info);
+
+ void showInternalPopup(Elm_Object_Item* parent);
+ static void dismissedCtxPopup(void* data, Evas_Object* obj, void* event_info);
+ static void radioChanged(void *data, Evas_Object *obj, void *event_info);
+
+private:
+ Evas_Object *m_popup;
+ Evas_Object *m_genlist;
+ Evas_Object *m_internalPopup;
+ Elm_Object_Item *m_trackedItem;
+ Elm_Genlist_Item_Class *m_itemClass;
+ bool m_internalPopupVisible;
+ bool m_pointerModeEnabled;
+ std::map<Elm_Object_Item*, std::shared_ptr<BookmarksManagerItem>> m_bookmarks_managerItemsMap;
+ std::map<sharedAction, Elm_Object_Item*> m_actionButtonMap;
+ enum CheckState{
+ CheckStateOn=1
+ ,CheckStateOff=2
+ };
+ CheckState m_checkState;
+ void realShow(Evas_Object* popup);
+ void unbindFocus();
+ bool m_isPopupShown;
+
+ static void focusItem(void* data, Evas_Object* obj, void* event_info);
+ static void unFocusItem(void* data, Evas_Object* obj, void* event_info);
+};
+
+}//namespace base_ui
+
+}//namespace tizen_browser
+
+#endif // BOOKSMARK_MANAGER_H
SimplePopup.cpp
ZoomList.cpp
TabList.cpp
+ BookmarksManager.cpp
Settings.cpp
SimpleScroller.cpp
WebTitleBar.cpp
SimplePopup.h
ZoomList.h
TabList.h
+ BookmarksManager.h
Settings.h
SimpleScroller.h
HistoryList.h
include_directories(${CMAKE_SOURCE_DIR}/services/WebEngineService)
include_directories(${CMAKE_SOURCE_DIR}/services/WebEngineService/src)
include_directories(${CMAKE_SOURCE_DIR}/services/StorageService)
+#MERGE_ME
+#include_directories(${CMAKE_SOURCE_DIR}/services/BookmarkManagerUI)
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/BookmarksUI)
+include_directories(${CMAKE_SOURCE_DIR}/services/MoreMenuUI)
+#MERGE_ME
+#include_directories(${CMAKE_SOURCE_DIR}/services/HistoryUI)
+include_directories(${CMAKE_SOURCE_DIR}/services/MainUI)
+#MERGE_ME
+#include_directories(${CMAKE_SOURCE_DIR}/services/SettingsUI)
+#include_directories(${CMAKE_SOURCE_DIR}/services/TabUI)
include_directories(${CMAKE_SOURCE_DIR}/services/PlatformInputManager)
include_directories(${CMAKE_SOURCE_DIR}/services/SessionStorage)
add_dependencies(${PROJECT_NAME} SimpleURI)
add_dependencies(${PROJECT_NAME} StorageService)
add_dependencies(${PROJECT_NAME} HistoryService)
-add_dependencies(${PROJECT_NAME} BookmarksUI)
+#MERGE_ME
+#add_dependencies(${PROJECT_NAME} MoreMenuUI)
+#add_dependencies(${PROJECT_NAME} BookmarkManagerUI)
+add_dependencies(${PROJECT_NAME} MainUI)
+#MERGE_ME
+#add_dependencies(${PROJECT_NAME} HistoryUI)
+#add_dependencies(${PROJECT_NAME} SettingsUI)
+#add_dependencies(${PROJECT_NAME} TabUI)
add_dependencies(${PROJECT_NAME} PlatformInputManager)
add_dependencies(${PROJECT_NAME} SessionStorage)
target_link_libraries(${PROJECT_NAME} SimpleURI)
target_link_libraries(${PROJECT_NAME} StorageService)
target_link_libraries(${PROJECT_NAME} HistoryService)
-target_link_libraries(${PROJECT_NAME} BookmarksUI)
+#MERGE_ME
+#target_link_libraries(${PROJECT_NAME} MoreMenuUI)
+target_link_libraries(${PROJECT_NAME} MainUI)
+#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)
target_link_libraries(${PROJECT_NAME} PlatformInputManager)
target_link_libraries(${PROJECT_NAME} SessionStorage)
target_link_libraries(${PROJECT_NAME} ${EFL_LDFLAGS})
AuthenticationPopup.edc
TabItem.edc
ZoomItem.edc
+ BookmarksManager.edc
Settings.edc
ScrollerDefault.edc
HistoryItem.edc
#include "EflTools.h"
#include <Evas.h>
+#if MERGE_ME
+#include <boost/date_time/posix_time/posix_time.hpp>
+#include <boost/date_time/date.hpp>
+#include <boost/date_time/date_defs.hpp>
+#include <boost/date_time/gregorian/gregorian.hpp>
+#endif
namespace tizen_browser
{
return strdup(id->h_item->getUrl().c_str());
}
}
+#if MERGE_ME
else if(!strcmp(part, "page_time"))
{
std::string retstr = boost::posix_time::to_simple_string(id->h_item->getLastVisit().time_of_day());
return strdup(retstr.c_str());
}
+#endif
return strdup("");
}
evas_object_del(popup);
}
- SimplePopup::SimplePopup() : content(NULL) { }
+ SimplePopup::SimplePopup() : content(nullptr) { }
SimplePopup::SimplePopup(const std::string &title, const std::string &message)
- : content(NULL)
+ : content(nullptr)
, title(title)
, message(message)
{ }
popup = elm_popup_add(mainUi->getMainWindow().get());
evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- if(content != NULL)
+ if(content != nullptr)
elm_object_content_set(popup, content);
else
elm_object_text_set(popup, message.c_str());
elm_popup_content_text_wrap_type_set(popup, ELM_WRAP_WORD);
+#if MERGE_ME
+ elm_popup_content_text_wrap_type_set(popup, ELM_WRAP_CHAR);
+#endif
elm_object_part_text_set(popup, "title,text", title.c_str());
int buttonsCounter = 1;
#include "browser_config.h"
#if defined(USE_EWEBKIT)
-//#include <EWebKit2.h>
#include <ewk_chromium.h>
#endif
#include "BrowserImage.h"
#include "SimpleURI.h"
#include "SimpleUI.h"
-#include "../BookmarksUI/BookmarksUI.h"
#include "BookmarkItem.h"
#include "Tools/EflTools.h"
#include "BrowserImage.h"
#include "HistoryItem.h"
+#include "BookmarkItem.h"
#include "boost/date_time/gregorian/gregorian.hpp"
#include "boost/date_time/posix_time/posix_time.hpp"
#include "NetworkErrorHandler.h"
const std::string HomePageURL = "about:home";
-SimpleUI::SimpleUI(/*Evas_Object *window*/)
+SimpleUI::SimpleUI()
: AbstractMainWindow()
- , m_mainLayout(NULL)
- , m_progressBar(NULL)
- , m_popup(NULL)
+ , m_mainLayout(nullptr)
+ , m_progressBar(nullptr)
+ , m_popup(nullptr)
+#if MERGE_ME
, m_settings()
+ , m_moreMenuUI()
+ , m_tabUI()
+ , m_bookmarkManagerUI()
+#endif
+ , m_mainUI()
, m_initialised(false)
+ , m_isHomePageActive(false)
, m_currentZoom(ZOOM_TYPE_100)
, items_vector()
, m_networkErrorPopup(0)
, m_wvIMEStatus(false)
{
- elm_init(static_cast<int>(NULL), static_cast<char**>(NULL));
+ elm_init(0, nullptr);
ewk_context_default_get();
Evas_Object *main_window = elm_win_util_standard_add("browserApp", "browserApp");
- if (main_window == NULL)
+ if (main_window == nullptr)
BROWSER_LOGE("Failed to create main window");
-// m_zoomList = NULL;
+
setMainWindow(main_window);
}
return std::string(EDJE_DIR) + file;
}
-std::vector<std::shared_ptr<tizen_browser::services::BookmarkItem> > SimpleUI::getBookmarks()
+std::vector<std::shared_ptr<tizen_browser::services::BookmarkItem> > SimpleUI::getBookmarks(int folder_id)
+{
+ return m_favoriteService->getBookmarks(folder_id);
+}
+
+std::vector<std::shared_ptr<tizen_browser::services::HistoryItem> > SimpleUI::getHistory()
{
- return m_favoriteService->getBookmarks();
+ return m_historyService->getMostVisitedHistoryItems();
}
+
+std::vector<std::shared_ptr<tizen_browser::services::BookmarkItem> > SimpleUI::getBookmarkFolders()
+{
+ return m_favoriteService->getBookmarkFolders();
+}
+
+
+
int SimpleUI::exec(const std::string& _url)
{
BROWSER_LOGD("[%s] _url=%s, initialised=%d", __func__, _url.c_str(), m_initialised);
std::string url = _url;
Session::Session lastSession;
+
if(!m_initialised){
if (m_window.get()) {
config::DefaultConfig config;
m_favoritesLimit = boost::any_cast <int> (config.get("FAVORITES_LIMIT"));
elm_win_alpha_set(m_window.get(), EINA_FALSE);
- // creatin main window
+ // creating main window
int width = 0;
int height = 0;
- //ecore_x_window_size_get(ecore_x_window_root_first_get(), &width, &height);
ecore_wl_screen_size_get(&width, &height);
evas_object_move(m_window.get(), 0, 0);
evas_object_resize(m_window.get(), width, height);
// bookmarks UI
BROWSER_LOGD("[%s:%d] service: bookmarksui ", __PRETTY_FUNCTION__, __LINE__);
- m_bookmarksUI =
- std::dynamic_pointer_cast
- <tizen_browser::base_ui::BookmarksUI,tizen_browser::core::AbstractService>
- (tizen_browser::core::ServiceManager::getInstance().getService("org.tizen.browser.bookmarksui"));
- M_ASSERT(m_bookmarksUI);
- m_bookmarksUI->init(m_mainLayout);
// favorites service
BROWSER_LOGD("[%s:%d] service: favoriteservice ", __PRETTY_FUNCTION__, __LINE__);
std::string favoriteService(boost::any_cast < std::string > (config.get("favorite_service_name")));
- BROWSER_LOGD("favorite config");
+ BROWSER_LOGD("favorite config");
m_favoriteService =
std::dynamic_pointer_cast
<tizen_browser::interfaces::AbstractFavoriteService,tizen_browser::core::AbstractService>
(tizen_browser::core::ServiceManager::getInstance().getService(favoriteService));
- BROWSER_LOGD("favorite create");
+ BROWSER_LOGD("favorite create");
M_ASSERT(m_favoriteService);
-// m_favoriteService->synchronizeBookmarks();
- BROWSER_LOGD("favorite before getBookmarks");
+ m_favoriteService->synchronizeBookmarks();
+ BROWSER_LOGD("favorite before getBookmarks");
m_favoriteService->getBookmarks();
- BROWSER_LOGD("favorite after getBookmarks");
+ BROWSER_LOGD("favorite after getBookmarks");
- // history service
+ // history service
BROWSER_LOGD("[%s:%d] service: historyservice ", __PRETTY_FUNCTION__, __LINE__);
m_historyService =
std::dynamic_pointer_cast
m_platformInputManager->backPressed.connect(boost::bind(&SimpleUI::onBackPressed, this));
createActions();
+
// left buttons
leftButtonBar = std::make_shared<ButtonBar>(m_mainLayout, "SimpleUI/LeftButtonBar.edj", "left_button_bar");
leftButtonBar->addAction(m_back, "prev_button");
leftButtonBar->addAction(m_forward, "next_button");
leftButtonBar->addAction(m_reload, "refresh_stop_button");
- leftButtonBar->addAction(m_bookmark, "bookmark_button");
//register action that will be used later by buttons
leftButtonBar->registerEnabledChangedCallback(m_stopLoading, "refresh_stop_button");
- leftButtonBar->registerEnabledChangedCallback(m_unbookmark, "bookmark_button");
// right buttons
rightButtonBar = std::make_shared<ButtonBar>(m_mainLayout, "SimpleUI/RightButtonBar.edj", "right_button_bar");
rightButtonBar->addAction(m_tab, "tab_button");
- rightButtonBar->addAction(m_history, "history_button");
- rightButtonBar->addAction(m_zoom_in, "zoom_in_button");
- rightButtonBar->addAction(m_showSettingsPopup, "setting_button");
+ rightButtonBar->addAction(m_showMoreMenu, "setting_button");
m_progressBar = elm_progressbar_add(m_mainLayout);
elm_object_style_set(m_progressBar,"play_buffer");
webTitleBar = std::make_shared<WebTitleBar>(m_mainLayout, "SimpleUI/WebTitleBar.edj", "web_title_bar");
elm_object_part_content_set(m_mainLayout, "web_title_bar", webTitleBar->getContent());
- // put components on layout
elm_object_part_content_set(m_mainLayout, "uri_entry", m_simpleURI->getContent(m_mainLayout));
elm_object_part_content_set(m_mainLayout, "uri_bar_buttons_left", leftButtonBar->getContent());
elm_object_part_content_set(m_mainLayout, "uri_bar_buttons_right", rightButtonBar->getContent());
m_favoriteService->bookmarkAdded.connect(boost::bind(&SimpleUI::onBookmarkAdded, this,_1));
m_favoriteService->bookmarkDeleted.connect(boost::bind(&SimpleUI::onBookmarkRemoved, this, _1));
- m_favoriteService->bookmarksDeleted.connect(boost::bind(&tizen_browser::base_ui::BookmarksUI::deleteAllItems, m_bookmarksUI.get()));
- m_bookmarksUI->bookmarkClicked.connect(boost::bind(&SimpleUI::onBookmarkClicked, this,_1));
- m_bookmarksUI->bookmarkDeleteClicked.connect(boost::bind(&SimpleUI::onBookmarkDeleteClicked, this,_1));
-
- m_historyService->historyEmpty.connect(boost::bind(&SimpleUI::disableHistoryButton, this, _1));
+ //m_historyService->historyEmpty.connect(boost::bind(&SimpleUI::disableHistoryButton, this, _1));
+ m_historyService->historyAdded.connect(boost::bind(&SimpleUI::onHistoryAdded, this,_1));
+ m_historyService->historyDeleted.connect(boost::bind(&SimpleUI::onHistoryRemoved, this,_1));
connectActions();
elm_layout_signal_callback_add(m_simpleURI->getContent(), "slide_websearch", "elm", SimpleUI::favicon_clicked, this);
- // add bookmarks for main screen
- m_bookmarksUI->addBookmarkItems(getBookmarks());
-
// show main layout and window
evas_object_show(m_mainLayout);
evas_object_show(m_window.get());
}
m_initialised = true;
+ // only when first run
+ if (url.empty()) {
+ BROWSER_LOGD("[%s]: changing to homeUrl", __func__);
+ switchViewToHomePage();
+#if MERGE_ME // Not sure if this should be enabled
+ filterURL(HomePageURL);
+#endif
+ if(lastSession.items().size() >= 1){
+ for(auto iter=lastSession.items().begin(),
+ end=lastSession.items().end();
+ iter != end;
+ iter++
+ ){
+ openNewTab(iter->second);
+ }
+ m_sessionService->getStorage()->deleteSession(lastSession);
+ }
+ }
+ else
+ openNewTab(url);
}
- // only when first run
- if (url.empty()) {
- BROWSER_LOGD("[%s]: changing to homeUrl", __func__);
- switchViewToHomePage();
- filterURL(HomePageURL);
- if(lastSession.items().size() >= 1){
- for(auto iter=lastSession.items().begin(),
- end=lastSession.items().end();
- iter != end;
- iter++
- ){
- openNewTab(iter->second);
- }
- m_sessionService->getStorage()->deleteSession(lastSession);
- }
- }
- else
- openNewTab(url);
-
BROWSER_LOGD("[%s]:%d url=%s", __func__, __LINE__, url.c_str());
+ saveFolder("Bookmark Bar",0,1);
+
m_simpleURI->setFocus();
return 0;
void SimpleUI::loadThemes()
{
- elm_theme_extension_add(NULL, edjePath("SimpleUI/ZoomItem.edj").c_str());
- elm_theme_extension_add(NULL, edjePath("SimpleUI/TabItem.edj").c_str());
- elm_theme_extension_add(NULL, edjePath("SimpleUI/ErrorMessage.edj").c_str());
+ elm_theme_extension_add(nullptr, edjePath("SimpleUI/ZoomItem.edj").c_str());
+ elm_theme_extension_add(nullptr, edjePath("SimpleUI/TabItem.edj").c_str());
+ elm_theme_extension_add(nullptr, edjePath("SimpleUI/ErrorMessage.edj").c_str());
elm_theme_overlay_add(0, edjePath("SimpleUI/ScrollerDefault.edj").c_str());
elm_theme_overlay_add(0, edjePath("SimpleUI/Tooltip.edj").c_str());
void SimpleUI::createActions()
{
///\todo Add MulitStateAction. and convert m_stopLoading and m_reload actons to it?
+
m_back = sharedAction(new Action("Back"));
m_back->setToolTip("Previous");
m_back->setIcon("browser/toolbar_prev");
m_reload = sharedAction(new Action("Reload"));
m_reload->setToolTip("Reload");
m_reload->setIcon("browser/toolbar_reload");
-
- m_bookmark = sharedAction(new Action("Bookmark"));
- m_bookmark->setToolTip("Add to favorite");
- m_bookmark->setIcon("browser/toolbar_bookmark");
-
- m_unbookmark = sharedAction(new Action("Unbookmark"));
- m_unbookmark->setToolTip("Unfavorite");
- m_unbookmark->setIcon("browser/toolbar_unbookmark");
-
m_tab = sharedAction(new Action("Tabs"));
m_tab->setToolTip("Tab page");
m_tab->setIcon("browser/toolbar_tab");
//m_tab->setCheckable(true);
- m_history = sharedAction(new Action("History"));
- m_history->setToolTip("History");
- m_history->setIcon("browser/toolbar_history");
- if(m_historyService->getHistoryItemsCount() == 0){
- m_history->setEnabled(false);
- }
-
- m_zoom_in = sharedAction(new Action("Zoom in"));
- m_zoom_in->setToolTip("Zoom in/out");
- m_zoom_in->setIcon("browser/toolbar_zoom_in");
-
-
- m_showSettingsPopup = sharedAction(new Action("Settings"));
- m_showSettingsPopup->setToolTip("Settings");
- m_showSettingsPopup->setIcon("browser/toolbar_setting");
+ m_showMoreMenu = sharedAction(new Action("Settings"));
+ m_showMoreMenu->setToolTip("Settings");
+ m_showMoreMenu->setIcon("browser/toolbar_setting");
/*
m_settingPointerMode = sharedAction(new Action("Pointer mode"));
m_settingPointerMode->setToolTip("Switch to Pointer Mode");
m_settingPointerMode->setChecked(m_platformInputManager->getPointerModeEnabled());
m_settingPointerMode->setEnabled(true);
*/
-/*
+
m_settingPrivateBrowsing = sharedAction(new Action("Private browsing"));
m_settingPrivateBrowsing->setToolTip("On exit from private mode all cookies, history, and stored data will be deleted");
m_settingPrivateBrowsing->setCheckable(true);
m_settingPrivateBrowsing->setChecked(m_webEngine->isPrivateMode());
m_settingPrivateBrowsing->setEnabled(true);
-*/
m_settingDeleteHistory = sharedAction(new Action("Delete history"));
m_settingDeleteHistory->setToolTip("Delete History");
m_settingDeleteFavorite = sharedAction(new Action("Delete favorite site"));
m_settingDeleteFavorite->setToolTip("Delete favorite site");
+
+ m_bookmarks_manager_Add_NewFolder = sharedAction(new Action("+ New Folder"));
+ m_bookmarks_manager_Add_NewFolder->setToolTip("Add a new Folder");
+
+ m_bookmarks_manager_BookmarkBar = sharedAction(new Action("Bookmark Bar"));
+ m_bookmarks_manager_BookmarkBar->setToolTip("show Bookmark bar");
+
+ m_bookmarks_manager_Folder3 = sharedAction(new Action("Folder 3"));
+ m_bookmarks_manager_Folder3->setToolTip("open Folder 3");
+
+ m_bookmarks_manager_Folder2 = sharedAction(new Action("Folder 2"));
+ m_bookmarks_manager_Folder2->setToolTip("open Folder 2");
+
+ m_bookmarks_manager_Folder1 = sharedAction(new Action("Folder 1"));
+ m_bookmarks_manager_Folder1->setToolTip("open Folder 1");
}
void SimpleUI::connectActions()
{
//left bar
m_back->triggered.connect(boost::bind(&tizen_browser::basic_webengine::AbstractWebEngine<Evas_Object>::back, m_webEngine.get()));
- m_back->triggered.connect(boost::bind(&SimpleUI::switchViewToBrowser, this));
+ m_back->triggered.connect(boost::bind(&SimpleUI::updateBrowserView, this));
m_forward->triggered.connect(boost::bind(&tizen_browser::basic_webengine::AbstractWebEngine<Evas_Object>::forward, m_webEngine.get()));
m_stopLoading->triggered.connect(boost::bind(&tizen_browser::basic_webengine::AbstractWebEngine<Evas_Object>::stopLoading, m_webEngine.get()));
m_reload->triggered.connect(boost::bind(&tizen_browser::basic_webengine::AbstractWebEngine<Evas_Object>::reload, m_webEngine.get()));
- m_reload->triggered.connect(boost::bind(&SimpleUI::switchViewToBrowser, this));
-
- m_bookmark->triggered.connect(boost::bind(&SimpleUI::addToBookmarks, this));
- m_unbookmark->triggered.connect(boost::bind(&SimpleUI::deleteBookmark, this));
+ m_reload->triggered.connect(boost::bind(&SimpleUI::updateBrowserView, this));
//right bar
- m_tab->triggered.connect(boost::bind(&SimpleUI::showTabMenu, this));
- m_zoom_in->triggered.connect(boost::bind(&SimpleUI::showZoomMenu, this));
- m_history->triggered.connect(boost::bind(&SimpleUI::showHistory, this));
- m_showSettingsPopup->triggered.connect(boost::bind(&SimpleUI::showSettingsMenu, this));
+ m_tab->triggered.connect(boost::bind(&SimpleUI::showTabUI, this));
+ m_showMoreMenu->triggered.connect(boost::bind(&SimpleUI::showMoreMenu, this));
-// m_settingPointerMode->toggled.connect(boost::bind(&tizen_browser::services::PlatformInputManager::setPointerModeEnabled, m_platformInputManager.get(), _1));
+// m_settingPointerMode->toggled.connect(boost::bind(&tizen_browser::services::PlatformInputManager::setPointerModeEnabled, m_platformInputManager.get(), _1));
+#if MERGE_ME
+ m_settingPrivateBrowsing->toggled.connect(boost::bind(&SimpleUI::settingsPrivateModeSwitch, this, _1));
+#endif
+ //m_settingDeleteHistory->triggered.connect(boost::bind(&SimpleUI::settingsDeleteHistory, this));
+ //m_settingDeleteData->triggered.connect(boost::bind(&SimpleUI::settingsDeleteData, this));;
+ //m_settingDeleteFavorite->triggered.connect(boost::bind(&SimpleUI::settingsDeleteFavorite, this));;
+#if MERGE_ME
// m_settingPrivateBrowsing->toggled.connect(boost::bind(&SimpleUI::settingsPrivateModeSwitch, this, _1));
m_settingDeleteHistory->triggered.connect(boost::bind(&SimpleUI::settingsDeleteHistory, this));
m_settingDeleteData->triggered.connect(boost::bind(&SimpleUI::settingsDeleteData, this));;
m_settingDeleteFavorite->triggered.connect(boost::bind(&SimpleUI::settingsDeleteFavorite, this));;
+#endif
}
-void SimpleUI::updateBrowserView()
+void SimpleUI::updateURIBarView()
{
+ m_simpleURI->changeUri(m_webEngine->getURI());
+ leftButtonBar->setActionForButton("refresh_stop_button", m_reload);
+ stopEnable(true);
+ reloadEnable(true);
+ hideProgressBar();
+}
+
+void SimpleUI::updateWebView()
+{
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
evas_object_hide(elm_object_part_content_get(m_mainLayout, "web_view"));
elm_object_part_content_unset(m_mainLayout, "web_view");
elm_object_part_content_set(m_mainLayout, "web_view", m_webEngine->getLayout());
evas_object_show(m_webEngine->getLayout());
}
+void SimpleUI::updateBrowserView()
+{
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+ if(isHomePageActive())
+ hideMainUI();
+
+ updateWebView();
+
+ updateURIBarView();
+}
+
void SimpleUI::switchToTab(const tizen_browser::basic_webengine::TabId& tabId)
{
BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
if(m_webEngine->currentTabId() != tabId) {
BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
m_webEngine->switchToTab(tabId);
- switchViewToBrowser();
}
-// if(!m_webEngine->isLoadError()){
-// BROWSER_LOGD("[%s:%d] swiching to web_view ", __PRETTY_FUNCTION__, __LINE__);
-// updateBrowserView();
-// switchViewToBrowser();
-// } else {
-// BROWSER_LOGD("[%s:%d] LOAD ERROR!", __PRETTY_FUNCTION__, __LINE__);
-// loadError();
-// }
-
if(m_webEngine->isLoadError()){
BROWSER_LOGD("[%s:%d] LOAD ERROR!", __PRETTY_FUNCTION__, __LINE__);
loadError();
- } else {
- BROWSER_LOGD("[%s:%d] swiching to web_view ", __PRETTY_FUNCTION__, __LINE__);
- updateBrowserView();
- switchViewToBrowser();
+ return;
}
+ BROWSER_LOGD("[%s:%d] swiching to web_view ", __PRETTY_FUNCTION__, __LINE__);
+ updateBrowserView();
}
bool SimpleUI::isHomePageActive()
{
- BROWSER_LOGD("[%s]:%d", __func__, elm_object_part_content_get(m_mainLayout,"web_view") == m_bookmarksUI->getContent());
- return elm_object_part_content_get(m_mainLayout,"web_view") == m_bookmarksUI->getContent();
+ BROWSER_LOGD("[%s:%d] isHomePageActive : %d", __PRETTY_FUNCTION__, __LINE__, m_isHomePageActive);
+ return m_isHomePageActive;
}
bool SimpleUI::isErrorPageActive()
return elm_object_part_content_get(m_mainLayout, "web_view") == m_errorLayout;
}
-
void SimpleUI::switchViewToHomePage()
{
+#if MERGE_ME // remove
if(!isHomePageActive()){
evas_object_hide(elm_object_part_content_get(m_mainLayout,"web_view"));
elm_object_part_content_unset(m_mainLayout, "web_view");
evas_object_show(m_bookmarksUI->getContent());
//m_simpleURI->changeUri(HomePageURL);
filterURL(HomePageURL);
+ }
+#endif
+ BROWSER_LOGD("[%s:%d] isHomePageActive : %d", __PRETTY_FUNCTION__, __LINE__, m_isHomePageActive);
+ if(isHomePageActive())
+ return;
- }
+ showMainUI();
+ filterURL(HomePageURL);
m_webEngine->disconnectCurrentWebViewSignals();
-
- leftButtonBar->setActionForButton("bookmark_button", m_bookmark);
leftButtonBar->setActionForButton("refresh_stop_button", m_reload);
- zoomEnable(false);
- addBookmarkEnable(false);
- removeBookmarkEnable(false);
stopEnable(false);
reloadEnable(false);
forwardEnable(false);
backEnable(false);
+ evas_object_hide(leftButtonBar->getContent());
+ elm_object_signal_emit(m_mainLayout, "shiftback_uri", "ui");
+ elm_object_signal_emit(m_simpleURI->getContent(), "shiftback_uribg", "ui");
webTitleBar->hide();
hideProgressBar();
}
-void SimpleUI::switchViewToBrowser()
-{
- if (isHomePageActive() || isErrorPageActive()) {
- updateBrowserView();
- }
-
- m_simpleURI->changeUri(m_webEngine->getURI());
- leftButtonBar->setActionForButton("refresh_stop_button", m_reload);
- zoomEnable(true);
- removeBookmarkEnable(true);
- stopEnable(true);
- reloadEnable(true);
- bookmarkCheck();
-
- hideProgressBar();
-}
-
void SimpleUI::checkTabId(const tizen_browser::basic_webengine::TabId& id){
BROWSER_LOGD("%s:%d %s", __FILE__, __LINE__, __func__);
if(m_webEngine->currentTabId() != id || isErrorPageActive()){
}
void SimpleUI::closeTab(){
+ BROWSER_LOGD("%s:%d %s", __FILE__, __LINE__, __func__);
auto tabId = m_webEngine->currentTabId();
closeTab(tabId);
}
void SimpleUI::closeTab(const tizen_browser::basic_webengine::TabId& id)
{
-
+ BROWSER_LOGD("%s:%d %s", __FILE__, __LINE__, __func__);
m_currentSession.removeItem(id.toString());
m_webEngine->closeTab(id);
updateView();
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());
- leftButtonBar->setActionForButton("bookmark_button", m_unbookmark);
+ // MERGE_ME
+ //leftButtonBar->setActionForButton("bookmark_button", m_unbookmark);
}
else{
BROWSER_LOGD("[%s] There is no bookmark for this site [%s], set indicator off", __func__, m_webEngine->getURI().c_str());
- leftButtonBar->setActionForButton("bookmark_button", m_bookmark);
- addBookmarkEnable(m_favoriteService->countBookmarksAndSubFolders() < m_favoritesLimit);
+ // MERGE_ME
+ //leftButtonBar->setActionForButton("bookmark_button", m_bookmark);
+ //addBookmarkEnable(m_favoriteService->countBookmarksAndSubFolders() < m_favoritesLimit);
}
}
void SimpleUI::onBookmarkAdded(std::shared_ptr<tizen_browser::services::BookmarkItem> bookmarkItem)
{
- m_bookmarksUI->addBookmarkItem(bookmarkItem);
+#if 0
BROWSER_LOGI("Bookmark added with address %s",bookmarkItem->getAddress().c_str());
bookmarkCheck();
webTitleBar->removeFavIcon();
webTitleBar->show("Added to favorites");
+#endif
+}
+
+void SimpleUI::onHistoryAdded(std::shared_ptr<tizen_browser::services::HistoryItem> historyItem)
+{
+#if 0
+ m_mainUI->addHistoryItem(historyItem);
+ BROWSER_LOGI("Bookmark added with address %s",historyItem->getUrl().c_str());
+#endif
+}
+
+void SimpleUI::onHistoryClicked(std::shared_ptr<tizen_browser::services::HistoryItem> historyItem)
+{
+ std::string historyAddress = historyItem->getUrl();
+ openNewTab(historyAddress);
+}
+
+void SimpleUI::onMostVisitedClicked(const std::string&)
+{
+ BROWSER_LOGD("[%s]", __func__);
+ m_mainUI->clearHistoryGenlist();
+ m_mainUI->clearBookmarkGengrid();
+ m_mainUI->addHistoryItems(getHistory());
+ m_mainUI->showHistoryGenlist();
+}
+
+void SimpleUI::onBookmarkButtonClicked(const std::string&)
+{
+ BROWSER_LOGD("[%s]", __func__);
+ m_mainUI->clearBookmarkGengrid();
+ m_mainUI->clearHistoryGenlist();
+ m_mainUI->addBookmarkItems(getBookmarks());
+ m_mainUI->showBookmarkGengrid();
+}
+
+void SimpleUI::onBookmarkManagerButtonClicked(const std::string&)
+{
+ BROWSER_LOGD("[%s]", __func__);
+ showBookmarkManagerMenu();
}
void SimpleUI::onBookmarkClicked(std::shared_ptr<tizen_browser::services::BookmarkItem> bookmarkItem)
void SimpleUI::onBookmarkRemoved(const std::string& uri)
{
+#if 0
BROWSER_LOGD("[%s] deleted %s", __func__, uri.c_str());
- m_bookmarksUI->removeBookmarkItem(uri.c_str());
bookmarkCheck();
-
webTitleBar->removeFavIcon();
webTitleBar->show("Removed from favorites");
+#endif
+}
+
+void SimpleUI::onHistoryRemoved(const std::string& uri)
+{
+ BROWSER_LOGD("[%s] deleted %s", __func__, uri.c_str());
+ //m_mainUI->removeHistoryItem(uri.c_str());
}
void SimpleUI::onReturnPressed(MenuButton *m)
m->hidePopup();
}
-void SimpleUI::setwvIMEStatus(bool status)
+void SimpleUI::setwvIMEStatus(bool status)
{
BROWSER_LOGD("[%s]", __func__);
m_wvIMEStatus = status;
void SimpleUI::onBackPressed()
{
BROWSER_LOGD("[%s]", __func__);
- if (!m_simpleURI->hasFocus() && !m_wvIMEStatus)
+ if (!m_simpleURI->hasFocus() && !m_wvIMEStatus && !isHomePageActive() && m_back->isEnabled())
m_webEngine->backButtonClicked();
}
void SimpleUI::addBookmarkEnable(bool enable)
{
- m_bookmark->setEnabled(enable);
+ //MERGE_ME
+ //m_bookmark->setEnabled(enable);
}
void SimpleUI::removeBookmarkEnable(bool enable)
{
- m_unbookmark->setEnabled(enable);
+ //MERGE_ME
+ //m_unbookmark->setEnabled(enable);
}
void SimpleUI::zoomEnable(bool enable)
{
m_zoom_in->setEnabled(enable);
}
-
void SimpleUI::settingsButtonEnable(bool enable)
{
- m_showSettingsPopup->setEnabled(enable);
+ m_showMoreMenu->setEnabled(enable);
}
-
void SimpleUI::loadStarted()
{
BROWSER_LOGD("Switching \"reload\" to \"stopLoading\".");
showProgressBar();
+ elm_object_signal_emit(m_simpleURI->getContent(), "shiftright_uribg", "ui");
+ elm_object_signal_emit(m_mainLayout, "shiftright_uri", "ui");
+ evas_object_show(leftButtonBar->getContent());
leftButtonBar->setActionForButton("refresh_stop_button", m_stopLoading);
addBookmarkEnable(false);
- zoomEnable(false);
if(!m_webEngine->isPrivateMode()){
m_currentSession.updateItem(m_webEngine->currentTabId().toString(), m_webEngine->getURI());
}
- //if(!m_platformInputManager->getPointerModeEnabled())
- // elm_object_focus_set(leftButtonBar->getButton("refresh_stop_button"), EINA_TRUE);
+#if 0
+ if(!m_platformInputManager->getPointerModeEnabled())
+ elm_object_focus_set(leftButtonBar->getButton("refresh_stop_button"), EINA_TRUE);
+#endif
}
void SimpleUI::progressChanged(double progress)
addBookmarkEnable(m_favoriteService->countBookmarksAndSubFolders() < m_favoritesLimit);
- zoomEnable(true);
-
if(m_simpleURI->getCurrentIconTyep() != SimpleURI::IconTypeFav){
m_simpleURI->setFavIcon(m_webEngine->getFavicon());
webTitleBar->setFavIcon(m_webEngine->getFavicon());
m_historyService->addHistoryItem(std::make_shared<tizen_browser::services::HistoryItem> (m_webEngine->getURI(),
m_webEngine->getTitle(),
m_webEngine->getFavicon()));
- m_history->setEnabled(true);
}
-/*
+#if 0
if(!m_platformInputManager->getPointerModeEnabled())
elm_object_focus_set(leftButtonBar->getButton("refresh_stop_button"), EINA_TRUE);
-*/
+#endif
}
void SimpleUI::loadError()
{
BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
-// if(!isHomePageActive()){
-// evas_object_hide(elm_object_part_content_get(m_mainLayout,"web_view"));
-// elm_object_part_content_unset(m_mainLayout, "web_view");
-// elm_object_part_content_set(m_mainLayout, "web_view", m_bookmarksUI->getContent());
-// evas_object_show(m_bookmarksUI->getContent());
-// //m_simpleURI->changeUri(HomePageURL);
-// m_bookmarksUI->showErrorMsg();
-// //filterURL(HomePageURL);
-// }
- setErrorButtons();
- evas_object_hide(elm_object_part_content_get(m_mainLayout,"web_view"));
- elm_object_part_content_unset(m_mainLayout, "web_view");
+ hideWebView();
elm_object_part_content_set(m_mainLayout, "web_view",m_errorLayout);
//evas_object_show(m_errorLayout);
}
void SimpleUI::setErrorButtons()
{
- leftButtonBar->setActionForButton("bookmark_button", m_bookmark);
+// leftButtonBar->setActionForButton("bookmark_button", m_bookmark);
leftButtonBar->setActionForButton("refresh_stop_button", m_reload);
- zoomEnable(false);
- addBookmarkEnable(false);
+// addBookmarkEnable(false);
stopEnable(false);
reloadEnable(true);
forwardEnable(false);
m_webEngine->setURI(url);
}
m_simpleURI->clearFocus();
- addBookmarkEnable(false);
+ //addBookmarkEnable(false);
}
void SimpleUI::webEngineURLChanged(const std::string& url)
m_webEngine->setZoomFactor(zoom_level);
m_currentZoom = static_cast<zoom_type> (zoom_level);
}
-void SimpleUI::showTabMenu()
-{
- if( !m_tabList ){
- BROWSER_LOGD("[%s:%d] - make_shared ", __PRETTY_FUNCTION__, __LINE__);
- m_tabList = std::make_shared<tizen_browser::base_ui::TabList>(m_window,
- rightButtonBar->getButton("tab_button"));
- m_tabList->newTabClicked.connect(boost::bind(&SimpleUI::newTabClicked,this));
- m_tabList->tabClicked.connect(boost::bind(&SimpleUI::tabClicked, this, _1));
- m_tabList->tabDelete.connect(boost::bind(&SimpleUI::closeTab, this, _1));
- m_platformInputManager->rightPressed.connect(boost::bind(&TabList::rightPressed, m_tabList.get()));
- m_platformInputManager->leftPressed.connect(boost::bind(&TabList::leftPressed, m_tabList.get()));
- m_platformInputManager->enterPressed.connect(boost::bind(&TabList::enterPressed, m_tabList.get()));
+void SimpleUI::AddBookmarkPopup(std::string& str)
+{
+ BROWSER_LOGD("[%s]", __func__);
+ if(!m_bookmarks_manager){
+ m_bookmarks_manager = std::make_shared<BookmarksManager>(m_window,
+ rightButtonBar->getButton("bookmark_button"));
+ m_bookmarks_manager->addAction( m_bookmarks_manager_Add_NewFolder);
+ m_bookmarks_manager->addAction( m_bookmarks_manager_BookmarkBar);
+ m_bookmarks_manager->addAction( m_bookmarks_manager_Folder1);
+ m_bookmarks_manager->addAction( m_bookmarks_manager_Folder2);
+ m_bookmarks_manager->addAction( m_bookmarks_manager_Folder3);
}
m_platformInputManager->returnPressed.disconnect_all_slots();
- m_platformInputManager->returnPressed.connect(boost::bind(&SimpleUI::onReturnPressed, this, m_tabList.get()));
- hidePopup.connect(boost::bind(&SimpleUI::onReturnPressed, this, m_tabList.get()));
- m_tabList->addItems(m_webEngine->getTabContents());
- m_tabList->setCurrentTabId(m_webEngine->currentTabId());
- m_tabList->disableNewTabBtn(m_tabList->getItemcCount() >= m_tabLimit);
- m_tabList->showPopup();
+ m_platformInputManager->returnPressed.connect(boost::bind(&SimpleUI::onReturnPressed, this, m_bookmarks_manager.get()));
+ hidePopup.connect(boost::bind(&SimpleUI::onReturnPressed, this, m_bookmarks_manager.get()));
+ m_bookmarks_manager->showPopup();
}
-void SimpleUI::newTabClicked()
+void SimpleUI::AddNewFolderPopup(std::string& str)
+{
+ BROWSER_LOGD("[%s]", __func__);
+}
+
+void SimpleUI::showTabUI()
+{
+#if MERGE_ME
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+ m_tabUI =
+ std::dynamic_pointer_cast
+ <tizen_browser::base_ui::TabUI,tizen_browser::core::AbstractService>
+ (tizen_browser::core::ServiceManager::getInstance().getService("org.tizen.browser.tabui"));
+ M_ASSERT(m_tabUI);
+ m_tabUI->closeTabUIClicked.connect(boost::bind(&SimpleUI::closeTabUI, this,_1));
+ m_tabUI->newTabClicked.connect(boost::bind(&SimpleUI::newTabClicked, this,_1));
+ m_tabUI->tabClicked.connect(boost::bind(&SimpleUI::tabClicked, this,_1));
+ m_tabUI->newIncognitoTabClicked.connect(boost::bind(&SimpleUI::newTabClicked, this,_1));
+ m_tabUI->show(m_window.get());
+ m_tabUI->addTabItems(m_webEngine->getTabContents());
+#endif
+}
+
+void SimpleUI::closeTabUI(const std::string& str)
+{
+#if MERGE_ME
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+ m_tabUI = nullptr;
+#endif
+}
+
+void SimpleUI::newTabClicked(const std::string& str)
{
BROWSER_LOGD("%s", __func__);
switchViewToHomePage();
}
+
void SimpleUI::tabClicked(const tizen_browser::basic_webengine::TabId& tabId)
{
BROWSER_LOGD("%s", __func__);
}
}
-void SimpleUI::showSettingsMenu()
+#if 0
+void SimpleUI::hideURIBar()
+{
+ evas_object_hide(m_simpleURI->getContent(m_mainLayout));
+ evas_object_hide(rightButtonBar->getContent());
+ evas_object_hide(leftButtonBar->getContent());
+ elm_object_part_content_unset(m_mainLayout, "uri_entry");
+ elm_object_part_content_unset(m_mainLayout, "uri_bar_buttons_left");
+ elm_object_part_content_unset(m_mainLayout, "uri_bar_buttons_right");
+}
+
+void SimpleUI::showURIBar()
+{
+ elm_object_part_content_unset(m_mainLayout, "uri_entry");
+ elm_object_part_content_unset(m_mainLayout, "uri_bar_buttons_left");
+ elm_object_part_content_unset(m_mainLayout, "uri_bar_buttons_right");
+ elm_object_part_content_set(m_mainLayout, "uri_entry", m_simpleURI->getContent(m_mainLayout));
+ elm_object_part_content_set(m_mainLayout, "uri_bar_buttons_left", leftButtonBar->getContent());
+ elm_object_part_content_set(m_mainLayout, "uri_bar_buttons_right", rightButtonBar->getContent());
+ evas_object_show(m_simpleURI->getContent(m_mainLayout));
+ evas_object_show(leftButtonBar->getContent());
+ evas_object_show(rightButtonBar->getContent());
+ m_simpleURI->setFocus();
+}
+#endif
+
+void SimpleUI::hideWebView()
+{
+ evas_object_hide(elm_object_part_content_get(m_mainLayout,"web_view"));
+ elm_object_part_content_unset(m_mainLayout, "web_view");
+}
+
+void SimpleUI::hideMainUI()
+{
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+ if(m_mainUI)
+ m_mainUI->hide();
+ m_mainUI = nullptr;
+ m_isHomePageActive = false;
+}
+
+void SimpleUI::showMainUI()
{
- if(!m_settings){
- m_settings = std::make_shared<Settings>(m_window,
- rightButtonBar->getButton("setting_button"));
- //m_settings->addAction( m_settingPointerMode);
- //m_settings->addAction( m_settingPrivateBrowsing);
- m_settings->addAction( m_settingDeleteHistory);
- m_settings->addAction( m_settingDeleteData);
- m_settings->addAction( m_settingDeleteFavorite);
- //m_settingPointerMode->toggled.connect(boost::bind(&tizen_browser::base_ui::Settings::setPointerModeEnabled, m_settings.get(), _1));
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+ m_mainUI =
+ std::dynamic_pointer_cast
+ <tizen_browser::base_ui::MainUI,tizen_browser::core::AbstractService>
+ (tizen_browser::core::ServiceManager::getInstance().getService("org.tizen.browser.mainui"));
+ M_ASSERT(m_mainUI);
+ hideWebView();
+ m_mainUI->show(m_window.get());
+ m_mainUI->addHistoryItems(getHistory());
+
+ m_historyService->historyAllDeleted.connect(boost::bind(&tizen_browser::base_ui::MainUI::clearHistoryGenlist, m_mainUI.get()));
+ m_mainUI->historyClicked.connect(boost::bind(&SimpleUI::onHistoryClicked, this,_1));
+ m_mainUI->mostVisitedClicked.connect(boost::bind(&SimpleUI::onMostVisitedClicked, this,_1));
+ m_mainUI->bookmarkClicked.connect(boost::bind(&SimpleUI::onBookmarkButtonClicked, this,_1));
+ m_mainUI->bookmarkManagerClicked.connect(boost::bind(&SimpleUI::onBookmarkManagerButtonClicked, this,_1));
+ m_isHomePageActive = true;
+}
+
+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
+}
+
+void SimpleUI::closeHistoryUI(const std::string& str)
+{
+#if MERGE_ME
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+ m_historyUI = nullptr;
+#endif
+}
+
+void SimpleUI::showSettingsUI(const std::string& str)
+{
+#if MERGE_ME
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+ if(!m_settingsUI){
+ m_settingsUI =
+ std::dynamic_pointer_cast
+ <tizen_browser::base_ui::SettingsUI,tizen_browser::core::AbstractService>
+ (tizen_browser::core::ServiceManager::getInstance().getService("org.tizen.browser.settingsui"));
+ M_ASSERT(m_settingsUI);
+ m_settingsUI->closeSettingsUIClicked.disconnect_all_slots();
+ m_settingsUI->closeSettingsUIClicked.connect(boost::bind(&SimpleUI::closeSettingsUI, this,_1));
+ m_settingsUI->deleteSelectedDataClicked.disconnect_all_slots();
+ m_settingsUI->deleteSelectedDataClicked.connect(boost::bind(&SimpleUI::settingsDeleteSelectedData, this,_1));
+ m_settingsUI->resetMostVisitedClicked.disconnect_all_slots();
+ m_settingsUI->resetMostVisitedClicked.connect(boost::bind(&SimpleUI::settingsResetMostVisited, this,_1));
+ m_settingsUI->resetBrowserClicked.disconnect_all_slots();
+ m_settingsUI->resetBrowserClicked.connect(boost::bind(&SimpleUI::settingsResetBrowser, this,_1));
+ m_settingsUI->show(m_window.get());
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
}
- m_platformInputManager->returnPressed.disconnect_all_slots();
- m_platformInputManager->returnPressed.connect(boost::bind(&SimpleUI::onReturnPressed, this, m_settings.get()));
- hidePopup.connect(boost::bind(&SimpleUI::onReturnPressed, this, m_settings.get()));
- m_settingDeleteHistory->setEnabled(m_historyService->getHistoryItemsCount());
- m_settingDeleteFavorite->setEnabled(m_favoriteService->countBookmarksAndSubFolders());
- m_settings->showPopup();
+#endif
+}
+
+void SimpleUI::closeSettingsUI(const std::string& str)
+{
+#if MERGE_ME
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+ m_settingsUI.reset();
+#endif
+}
+void SimpleUI::showMoreMenu()
+{
+#if MERGE_ME
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+ bool current_tab_as_new_tab = isHomePageActive() || (m_historyService->getHistoryItemsCount() == 0);
+ if(!m_moreMenuUI){
+ m_moreMenuUI =
+ std::dynamic_pointer_cast
+ <tizen_browser::base_ui::MoreMenuUI,tizen_browser::core::AbstractService>
+ (tizen_browser::core::ServiceManager::getInstance().getService("org.tizen.browser.moremenuui"));
+ M_ASSERT(m_moreMenuUI);
+ m_moreMenuUI->historyUIClicked.connect(boost::bind(&SimpleUI::showHistoryUI, this,_1));
+ m_moreMenuUI->settingsClicked.connect(boost::bind(&SimpleUI::showSettingsUI, this,_1));
+ m_moreMenuUI->closeMoreMenuClicked.disconnect_all_slots();
+ m_moreMenuUI->closeMoreMenuClicked.connect(boost::bind(&SimpleUI::closeMoreMenu, this,_1));
+ m_moreMenuUI->AddBookmarkInput.disconnect_all_slots();
+ m_moreMenuUI->AddBookmarkInput.connect(boost::bind(&SimpleUI::addToBookmarks, this,_1));
+ m_moreMenuUI->BookmarkFolderCreated.disconnect_all_slots();
+ m_moreMenuUI->BookmarkFolderCreated.connect(boost::bind(&SimpleUI::NewFolder, this,_1,_2,_3));
+ m_moreMenuUI->show(m_window.get());
+ m_moreMenuUI->getBookmarkFolderList(getBookmarkFolders());
+ m_moreMenuUI->showCurrentTab(current_tab_as_new_tab ? nullptr : m_historyService->getHistoryItems().front());
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+ }
+#endif
}
-void SimpleUI::showHistory()
+void SimpleUI::closeMoreMenu(const std::string& str)
{
- if(!m_historyList) {
- m_historyList = std::make_shared<HistoryList>(m_window, rightButtonBar->getButton("history_button"));
- m_historyList->clickedHistoryItem.connect(boost::bind(&SimpleUI::openLinkFromPopup, this,_1));
- m_historyList->deleteHistoryItem.connect(boost::bind(&tizen_browser::services::HistoryService::clearURLHistory, m_historyService.get(),_1));
- m_historyList->deleteHistoryItem.connect(boost::bind(&SimpleUI::hideHistory, this));
+#if MERGE_ME
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+ m_moreMenuUI.reset() ;
+#endif
+}
- m_platformInputManager->rightPressed.connect(boost::bind(&HistoryList::rightPressed, m_historyList.get()));
- m_platformInputManager->leftPressed.connect(boost::bind(&HistoryList::leftPressed, m_historyList.get()));
- m_platformInputManager->enterPressed.connect(boost::bind(&HistoryList::enterPressed, m_historyList.get()));
+void SimpleUI::showBookmarkManagerMenu()
+{
+#if MERGE_ME
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+ if(!m_bookmarkManagerUI){
+ m_bookmarkManagerUI =
+ std::dynamic_pointer_cast
+ <tizen_browser::base_ui::BookmarkManagerUI,tizen_browser::core::AbstractService>
+ (tizen_browser::core::ServiceManager::getInstance().getService("org.tizen.browser.bookmarkmanagerui"));
+ M_ASSERT(m_bookmarkManagerUI);
+ m_bookmarkManagerUI->closeBookmarkManagerClicked.disconnect_all_slots();
+ m_bookmarkManagerUI->closeBookmarkManagerClicked.connect(boost::bind(&SimpleUI::closeBookmarkManagerMenu, this,_1));
+ m_bookmarkManagerUI->saveFolderClicked.disconnect_all_slots();
+ m_bookmarkManagerUI->saveFolderClicked.connect(boost::bind(&SimpleUI::saveFolder, this,_1,_2,_3));
+ m_bookmarkManagerUI->bookmarkFolderClicked.disconnect_all_slots();
+ m_bookmarkManagerUI->bookmarkFolderClicked.connect(boost::bind(&SimpleUI::updateBookmakMangaerGenGrid, this,_1));
+ m_bookmarkManagerUI->show(m_window.get());
+ m_bookmarkManagerUI->addBookmarkFolderItems(getBookmarkFolders());
+ m_bookmarkManagerUI->showTopContent();
}
- m_platformInputManager->returnPressed.disconnect_all_slots();
- m_platformInputManager->returnPressed.connect(boost::bind(&SimpleUI::onReturnPressed, this, m_historyList.get()));
- hidePopup.connect(boost::bind(&SimpleUI::onReturnPressed, this, m_historyList.get()));
- m_historyList->addItems(m_historyService->getHistoryItems());
- m_historyList->showPopup();
+#endif
}
-void SimpleUI::disableHistoryButton(bool flag)
+void SimpleUI::updateBookmakMangaerGenGrid(int folder_id)
{
- BROWSER_LOGD("[%s:%d] flag:%d ", __PRETTY_FUNCTION__, __LINE__, flag);
- m_history->setEnabled(!flag);
- m_settingDeleteHistory->setEnabled(m_historyService->getHistoryItemsCount());
- hidePopup();
+#if MERGE_ME
+ m_bookmarkManagerUI->updateGengrid();
+ m_bookmarkManagerUI->addBookmarkItems(getBookmarks(folder_id));
+ m_bookmarkManagerUI->showTopContent();
+#endif
+}
+
+void SimpleUI::closeBookmarkManagerMenu(std::string& str)
+{
+#if MERGE_ME
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+ m_bookmarkManagerUI.reset();
+#endif
}
void SimpleUI::openLinkFromPopup(const std::string &uri)
BROWSER_LOGD("[%s:%d] webEngine private mode: %s", __PRETTY_FUNCTION__, __LINE__, (m_webEngine->isPrivateMode() ? "true" : "false"));
}
-void SimpleUI::settingsDeleteHistory()
+void SimpleUI::settingsDeleteSelectedData(const std::string& str)
{
BROWSER_LOGD("[%s]: Deleting Hisory", __func__);
SimplePopup *popup = SimplePopup::createPopup();
- popup->setTitle("Delete history");
+ popup->setTitle("Delete selected data");
popup->addButton(OK);
popup->addButton(CANCEL);
- popup->setMessage("Are you sure you want to clear all browsing history?");
- popup->buttonClicked.connect(boost::bind(&SimpleUI::onDeleteHistoryButton, this, _1, _2));
+ popup->setMessage("Are you sure you want to delete all selected data?");
+ std::shared_ptr<EntryPopupData> popupData = std::make_shared<EntryPopupData>();
+ popupData->text = str;
+ popup->setData(popupData);
+ popup->buttonClicked.connect(boost::bind(&SimpleUI::onDeleteSelectedDataButton, this, _1, _2));
popup->show();
}
-void SimpleUI::settingsDeleteData()
+void SimpleUI::onDeleteSelectedDataButton(PopupButtons button, std::shared_ptr< PopupData > popupData)
{
- BROWSER_LOGD("[%s]", __func__);
- SimplePopup *popup = SimplePopup::createPopup();
- popup->setTitle("Delete data");
- popup->addButton(OK);
- popup->addButton(CANCEL);
- popup->setMessage("Are you sure you want to clear all cookies and cache?");
- popup->buttonClicked.connect(boost::bind(&SimpleUI::onDeleteDataButton, this, _1, _2));
- popup->show();
-
+ if(button == OK){
+ BROWSER_LOGD("[%s]: OK", __func__);
+ std::string dataText = std::static_pointer_cast<EntryPopupData>(popupData)->text;
+ BROWSER_LOGD("[%s]: TYPE : %s", __func__, dataText.c_str());
+ if (dataText.find("CACHE") != std::string::npos)
+ m_webEngine->clearPrivateData();
+ if (dataText.find("COOKIES") != std::string::npos)
+ m_webEngine->clearPrivateData();
+ if (dataText.find("HISTORY") != std::string::npos)
+ m_historyService->clearAllHistory();
+ //webTitleBar->removeFavIcon();
+ //webTitleBar->show("History deleted");
+ }
}
-void SimpleUI::settingsDeleteFavorite()
+void SimpleUI::settingsResetMostVisited(const std::string& str)
{
- BROWSER_LOGD("[%s]", __func__);
+ BROWSER_LOGD("[%s]: Deleting Hisory", __func__);
SimplePopup *popup = SimplePopup::createPopup();
- popup->setTitle("Delete favorite site");
+ popup->setTitle("Delete most visited");
popup->addButton(OK);
popup->addButton(CANCEL);
- popup->setMessage("Are you sure you want to clear all favorite site?");
- popup->buttonClicked.connect(boost::bind(&SimpleUI::onDeleteFavoriteButton, this, _1, _2));
+ popup->setMessage("Are you sure you want to delete most visited sites?");
+ popup->buttonClicked.connect(boost::bind(&SimpleUI::onDeleteMostVisitedButton, this, _1, _2));
popup->show();
}
-void SimpleUI::onDeleteHistoryButton(PopupButtons button, std::shared_ptr< PopupData > /*popupData*/)
+void SimpleUI::onDeleteMostVisitedButton(PopupButtons button, std::shared_ptr< PopupData > /*popupData*/)
{
if(button == OK){
BROWSER_LOGD("[%s]: OK", __func__);
- m_historyService->clearAllHistory();
- m_history->setEnabled(false);
+ BROWSER_LOGD("[%s]: Deleting most visited", __func__);
+ /*m_historyService->clearAllHistory();
webTitleBar->removeFavIcon();
- webTitleBar->show("All histories are deleted");
- hidePopup();
+ webTitleBar->show("History deleted");*/
}
}
-void SimpleUI::onDeleteDataButton(PopupButtons button, std::shared_ptr< PopupData > /*popupData*/)
+void SimpleUI::settingsResetBrowser(const std::string& str)
{
- if(button == OK){
- BROWSER_LOGD("[%s]: OK", __func__);
- m_webEngine->clearPrivateData();
- webTitleBar->removeFavIcon();
- webTitleBar->show("All cookies and cache are deleted");
- hidePopup();
- }
+ BROWSER_LOGD("[%s]: Deleting Hisory", __func__);
+ SimplePopup *popup = SimplePopup::createPopup();
+ popup->setTitle("Reset browser");
+ popup->addButton(OK);
+ popup->addButton(CANCEL);
+ popup->setMessage("Are you sure you want to reset browser?");
+ popup->buttonClicked.connect(boost::bind(&SimpleUI::onResetBrowserButton, this, _1, _2));
+ popup->show();
}
-void SimpleUI::onDeleteFavoriteButton(PopupButtons button, std::shared_ptr< PopupData > /*popupData*/)
+void SimpleUI::onResetBrowserButton(PopupButtons button, std::shared_ptr< PopupData > /*popupData*/)
{
if(button == OK){
BROWSER_LOGD("[%s]: OK", __func__);
- m_favoriteService->deleteAllBookmarks();
- bookmarkCheck();
- webTitleBar->removeFavIcon();
- webTitleBar->show("Favorites deleted");
- hidePopup();
+ BROWSER_LOGD("[%s]: Resetting browser", __func__);
+ /*webTitleBar->removeFavIcon();
+ webTitleBar->show("History deleted");*/
}
}
switchViewToHomePage();
elm_object_part_text_set(rightButtonBar->getContent(), "tabs_number", "");
} else {
- if (isHomePageActive() != true) {
+ if (!isHomePageActive()) {
updateBrowserView();
}
elm_object_part_text_set(rightButtonBar->getContent(), "tabs_number", (boost::format("%1%") % tabs).str().c_str());
evas_object_hide(m_progressBar);
}
-
-
void SimpleUI::searchWebPage(std::string &text, int flags)
{
m_webEngine->searchOnWebsite(text, flags);
}
}
-void SimpleUI::addToBookmarks(void)
-{
+void SimpleUI::addToBookmarks(int folder_id)
+{ BROWSER_LOGD("[%s,%d],", __func__, __LINE__);
if (m_favoriteService)
- m_favoriteService->addToBookmarks(m_webEngine->getURI(), m_webEngine->getTitle(), std::string(),
+ { if( m_webEngine && !m_webEngine->getURI().empty())
+ { m_favoriteService->addToBookmarks(m_webEngine->getURI(), m_webEngine->getTitle(), std::string(),
m_webEngine->getSnapshotData(373, 240),
- m_webEngine->getFavicon());
+ m_webEngine->getFavicon(),(unsigned int)folder_id);
+ }
+ }
+}
+
+void SimpleUI::saveFolder(const char* title,int folder_id, int by_operator)
+{ BROWSER_LOGD("[%s,%d],", __func__, __LINE__);
+ int id = -1;
+ if (m_favoriteService)
+ m_favoriteService->save_folder(title, &id, folder_id, by_operator);
+ if (id >= 0 )
+ { BROWSER_LOGD("[%s], Added New Folder", __func__);
+ }
+#if MERGE_ME
+ if(m_bookmarkManagerUI)
+ { m_bookmarkManagerUI->updateGengrid();
+ m_bookmarkManagerUI->addBookmarkFolderItems(getBookmarkFolders());
+ }
+#endif
+}
+
+
+
+void SimpleUI::NewFolder(const char* title,int folder_id, int by_operator)
+{ BROWSER_LOGD("[%s,%d],", __func__, __LINE__);
+ int id = -1;
+ if (m_favoriteService)
+ m_favoriteService->save_folder(title, &id, folder_id, by_operator);
+ if (id >= 0 )
+ { BROWSER_LOGD("[%s], Added New Folder", __func__);
+ }
+ if (m_favoriteService)
+ { if( m_webEngine && !m_webEngine->getURI().empty())
+ { m_favoriteService->addToBookmarks(m_webEngine->getURI(), m_webEngine->getTitle(), std::string(),
+ m_webEngine->getSnapshotData(373, 240),
+ m_webEngine->getFavicon(),(unsigned int)id);
+ }
+ }
}
void SimpleUI::deleteBookmark(void)
#include <Evas.h>
-//#include <EWebKit2.h>
-//#include <ewk_chromium.h>
-
#include "AbstractMainWindow.h"
#include "AbstractService.h"
#include "AbstractFavoriteService.h"
// components
#include "AbstractWebEngine.h"
-#include "BookmarksUI.h"
+#if MERGE_ME
+#include "BookmarkManagerUI.h"
+#include "MoreMenuUI.h"
+#include "HistoryUI.h"
+#include "SettingsUI.h"
+#endif
+#include "MainUI.h"
+#if MERGE_ME
+#include "TabUI.h"
+#endif
#include "ButtonBar.h"
#include "HistoryService.h"
+#if MERGE_ME
+#include "BookmarkManagerUI.h"
+#endif
#include "SimpleURI.h"
#include "SimpleScroller.h"
#include "WebTitleBar.h"
#include "WebConfirmation.h"
#include "ZoomList.h"
#include "TabList.h"
+#include "BookmarksManager.h"
#include "Settings.h"
#include "HistoryList.h"
#include "NetworkErrorHandler.h"
m_window = std::shared_ptr<Evas_Object>(rawPtr, evas_object_del);
}
-
-
class BROWSER_EXPORT SimpleUI : public AbstractMainWindow<Evas_Object>
{
public:
bool isHomePageActive();
void switchViewToHomePage();
- void switchViewToBrowser();
void updateBrowserView();
+ void updateWebView();
+ void updateURIBarView();
void updateView();
void openNewTab(const std::string &uri);
void switchToTab(const tizen_browser::basic_webengine::TabId& tabId);
- void newTabClicked();
+ void newTabClicked(const std::string &);
void tabClicked(const tizen_browser::basic_webengine::TabId& tabId);
void tabCreated();
void tabClosed(const tizen_browser::basic_webengine::TabId& id);
void bookmarkCheck();
- std::vector<std::shared_ptr<tizen_browser::services::BookmarkItem> > getBookmarks();
+ std::vector<std::shared_ptr<tizen_browser::services::BookmarkItem> > getBookmarks(int folder_id = 0);
+ std::vector<std::shared_ptr<tizen_browser::services::BookmarkItem> > getBookmarkFolders();
+ std::vector<std::shared_ptr<tizen_browser::services::HistoryItem> > 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 onHistoryRemoved(const std::string& uri);
+ void onHistoryClicked(std::shared_ptr<tizen_browser::services::HistoryItem> historyItem);
+ void onMostVisitedClicked(const std::string&);
+ void onBookmarkButtonClicked(const std::string&);
+ void onBookmarkManagerButtonClicked(const std::string&);
+
void handleConfirmationRequest(basic_webengine::WebConfirmationPtr webConfirmation);
void authPopupButtonClicked(PopupButtons button, std::shared_ptr<PopupData> popupData);
void setwvIMEStatus(bool status);
-
-
sharedAction m_back;
sharedAction m_forward;
sharedAction m_stopLoading;
sharedAction m_bookmark;
sharedAction m_unbookmark;
sharedAction m_tab;
- sharedAction m_history;
+ sharedAction m_share;
sharedAction m_zoom_in;
- sharedAction m_showSettingsPopup;
+ sharedAction m_showMoreMenu;
+ sharedAction m_showBookmarkManagerUI;
sharedAction m_settingPointerMode;
-// sharedAction m_settingPrivateBrowsing;
+ sharedAction m_settingPrivateBrowsing;
sharedAction m_settingDeleteHistory;
sharedAction m_settingDeleteData;
sharedAction m_settingDeleteFavorite;
+ sharedAction m_mostvisited;
+ sharedAction m_bookmarksvisited;
+ sharedAction m_bookmarks_manager_Add_NewFolder;
+ sharedAction m_bookmarks_manager_BookmarkBar;
+ sharedAction m_bookmarks_manager_Folder1;
+ sharedAction m_bookmarks_manager_Folder2;
+ sharedAction m_bookmarks_manager_Folder3;
/**
* \brief filters URL before it is passed to WebEngine.
* and this is a back function that checks if address emited from browser should be changed.
*/
void webEngineURLChanged(const std::string& url);
-
- /**
+ void onmostHistoryvisitedClicked();
+ void onBookmarkvisitedClicked();
+ /**
* @brief Adds current page to bookmarks.
*
*/
- void addToBookmarks(void);
-
+ void addToBookmarks(int);
/**
* @brief Remove current page from bookmarks
*
void showHistory();
void hideHistory();
-
- /**
- * \brief shows Tab showTabMenu
- */
- void showTabMenu();
-
- void showSettingsMenu();
+ void AddBookmarkPopup(std::string& str);
+ void AddNewFolderPopup(std::string& str);
+
+ void saveFolder(const char* title, int folder_id, int by_user);
+ void NewFolder(const char* title, int folder_id, int by_user);
+ void showTabUI();
+ void closeTabUI(const std::string& str);
+ void showMoreMenu();
+ void closeMoreMenu(const std::string& str);
+ void showHistoryUI(const std::string& str);
+ void closeHistoryUI(const std::string& str);
+ void showMainUI();
+ void hideMainUI();
+ void showURIBar();
+ void hideURIBar();
+ void hideWebView();
void hideSettingsMenu();
+ void showSettingsUI(const std::string&);
+ void closeSettingsUI(const std::string&);
void showProgressBar();
void hideProgressBar();
+ void closeBookmarkManagerMenu(std::string& str);
+ void updateBookmakMangaerGenGrid(int folder_id);
+ void showBookmarkManagerMenu();
void showPopup(Evas_Object *content, char* btn1_text, char* btn2_text);
-
void closeTab();
void closeTab(const tizen_browser::basic_webengine::TabId& id);
void settingsPointerModeSwitch(bool newState);
void settingsPrivateModeSwitch(bool newState);
- void settingsDeleteHistory();
void settingsDeleteData();
void settingsDeleteFavorite();
- void onDeleteHistoryButton(PopupButtons button, std::shared_ptr<PopupData> popupData);
+ void settingsDeleteSelectedData(const std::string& str);
+ void settingsResetMostVisited(const std::string& str);
+ void settingsResetBrowser(const std::string& str);
+ void onDeleteSelectedDataButton(PopupButtons button, std::shared_ptr<PopupData> popupData);
+ void onDeleteMostVisitedButton(PopupButtons button, std::shared_ptr<PopupData> popupData);
+ void onResetBrowserButton(PopupButtons button, std::shared_ptr<PopupData> popupData);
void onDeleteDataButton(PopupButtons button, std::shared_ptr<PopupData> popupData);
void onDeleteFavoriteButton(PopupButtons button, std::shared_ptr<PopupData> popupData);
void tabLimitPopupButtonClicked(PopupButtons button, std::shared_ptr< PopupData > /*popupData*/);
Evas_Object *m_mainLayout;
Evas_Object *m_progressBar;
Evas_Object *m_popup;
+ Evas_Object *m_entry;
Evas_Object *m_errorLayout;
CustomPopup *m_ownPopup;
SimpleScroller *m_scroller;
std::shared_ptr<basic_webengine::AbstractWebEngine<Evas_Object>> m_webEngine;
std::shared_ptr<tizen_browser::base_ui::SimpleURI> m_simpleURI;
std::shared_ptr<ButtonBar> leftButtonBar;
+ std::shared_ptr<ButtonBar> webviewbar;
+
std::shared_ptr<ButtonBar> rightButtonBar;
std::shared_ptr<tizen_browser::interfaces::AbstractFavoriteService> m_favoriteService;
std::shared_ptr<tizen_browser::services::HistoryService> m_historyService;
- std::shared_ptr<tizen_browser::base_ui::BookmarksUI> m_bookmarksUI;
+#if MERGE_ME
+ std::shared_ptr<tizen_browser::base_ui::MoreMenuUI> m_moreMenuUI;
+ std::shared_ptr<tizen_browser::base_ui::BookmarkManagerUI> m_bookmarkManagerUI;
+#endif
+ std::shared_ptr<tizen_browser::base_ui::MainUI> m_mainUI;
+#if MERGE_ME
+ std::shared_ptr<tizen_browser::base_ui::HistoryUI> m_historyUI;
+ std::shared_ptr<tizen_browser::base_ui::SettingsUI> m_settingsUI;
+ std::shared_ptr<tizen_browser::base_ui::TabUI> m_tabUI;
+#endif
std::shared_ptr<tizen_browser::base_ui::ZoomList> m_zoomList;
std::shared_ptr<tizen_browser::base_ui::TabList> m_tabList;
std::shared_ptr<tizen_browser::services::PlatformInputManager> m_platformInputManager;
std::shared_ptr<tizen_browser::services::SessionStorage> m_sessionService;
tizen_browser::Session::Session m_currentSession;
+ std::shared_ptr<BookmarksManager> m_bookmarks_manager;
std::shared_ptr<Settings> m_settings;
std::shared_ptr<HistoryList> m_historyList;
std::shared_ptr<WebTitleBar> webTitleBar;
bool m_initialised;
+ bool m_isHomePageActive;
zoom_type m_currentZoom;
int m_tabLimit;
int m_favoritesLimit;
--- /dev/null
+#define WIDTH 473
+#define HEIGHT 490
+#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; } \
+ } \
+ }
+data { item: "width" WIDTH; item: "height" HEIGHT; }
+color_classes{
+ color_class{
+ name: "defaultFontColor";
+ color: 211 211 211 255;
+ }
+ color_class{
+ name: "disabledFontColor";
+ color: 60 60 60 160;
+ }
+ color_class{
+ name: "selectedItemFontColor";
+ color: 255 255 255 255;
+ }
+ color_class{
+ name: "transparent";
+ color: 0 0 0 0;
+ }
+ color_class{
+ name: "selectedBackground";
+ color: 69 143 255 255;
+ }
+ color_class{
+ name: "dimmColor";
+ color: 0 0 0 128;
+ }
+ color_class{
+ name: "on_offBackgroundColor";
+ color: 255 255 255 255;
+ }
+}
+collections {
+ group{ name: "elm/genlist/base/bookmarks_manager";
+ min: 473 426;
+ max: 473 426;
+ 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;
+ description{
+ state: "default" 0.0;
+ color: 18 22 34 255;
+ rel1{
+ relative: 0 0;
+ }
+ rel2{
+ relative: 1 1;
+ }
+ }
+ }
+ part{
+ name: "elm.swallow.content";
+ type: SWALLOW;
+ clip_to: "clipper";
+ mouse_events: 1;
+ description{
+ state: "default" 0.0;
+ align: 0.5 0.5;
+ fixed: 1 1;
+ rel1{
+ relative: 0 0;
+ }
+ rel2{
+ relative: 1 1;
+ }
+ }
+ }
+ part{
+ name: "elm.swallow.empty";
+ type: SWALLOW;
+ description{
+ state: "default" 0.0;
+ fixed: 1 1;
+ rel1{
+ relative: 0.5 0.5;
+ }
+ rel2{
+ relative: 0.5 0.5;
+ }
+ }
+ }
+ part{ name: "dimmer";
+ type: RECT;
+ description{
+ state: "default" 0.0;
+ color: 0 0 0 128;
+ visible: 0;
+ }
+ description{
+ state: "popup_show" 0.0;
+ inherit: "default";
+ visible:1;
+ }
+ }
+ }//parts
+ programs{
+ program{
+ name: "show_popup";
+ signal: "show_popup";
+ source: "SettingsModel";
+ action: STATE_SET "popup_show" 0.0;
+ target: "dimmer";
+ }
+ program{
+ name: "hide_popup";
+ signal: "hide_popup";
+ source: "SettingsModel";
+ action: STATE_SET "default" 0.0;
+ target: "dimmer";
+ }
+ }
+ }//group
+ group{ name: "elm/genlist/item/bookmarks_manager_item/default";
+ alias: "elm/genlist/item_odd/bookmarks_manager_item/default";
+ alias: "elm/genlist/item_compress/bookmarks_manager_item/default";
+ alias: "elm/genlist/item_compress_odd/bookmarks_manager_item/default";
+ min: 473 80;
+ max: 473 80;
+ data.item: "texts" "optionName";
+ data.item: "contents" "optionValue";
+ parts{
+ part{
+ name: "value_helper";
+ mouse_events:0;
+ description{
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ }
+ description{
+ state: "on" 0.0;
+ color: 0 0 0 0;
+ }
+ description{
+ state: "off" 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ part{
+ name: "optionBackground";
+ type: RECT;
+ mouse_events: 1;
+ description{
+ state: "default" 0.0;
+ color_class: "transparent";
+ rel1{
+ relative: 0.0 0.0;
+ }
+ rel2{
+ relative: 1.0 1.0;
+ }
+ }
+ description{
+ state: "mouseOver" 0.0;
+ inherit: "default";
+ color_class: "selectedBackground";
+ }
+ description{
+ state: "mouseOut" 0.0;
+ inherit: "default";
+ }
+ description{
+ state: "selected" 0.0;
+ inherit: "mouseOver";
+ }
+ }
+ part{ name:"optionName";
+ type: TEXT;
+ description{
+ state: "default" 0.0;
+ align: 0 0.5;
+ min: 298 80;
+ max: 298 80;
+ color_class: "defaultFontColor";
+ rel1{
+ relative: 0.0 0.0;
+ offset: 25 0;
+ }
+ rel2.relative: 1.0 1.0;
+ text{
+ size: 30;
+ align: 0 0.5;
+ }
+ }
+ description{
+ state: "mouseOut" 0.0;
+ inherit: "default";
+ }
+ description{
+ state: "mouseOver" 0.0;
+ inherit: "default" 0.0;
+ color_class: "selectedItemFontColor";
+ }
+ description{
+ state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ color_class: "disabledFontColor";
+ }
+ }
+ part{ name: "optionValue";
+ type: SWALLOW;
+ description{
+ state: "default" 0.0;
+ align: 0 0.5;
+ fixed: 1 1;
+ min: 100 40;
+ max: 100 40;
+ visible: 1;
+ rel1{
+ relative: 1.0 0.0;
+ to: "optionName";
+ offset: 25 0;
+ }
+ rel2{
+ relative: 1.0 1.0;
+ }
+ }
+ }
+ programs{
+ program{ name: "mouse_in";
+ signal: "mouse,in";
+ source: "option*";
+ script{
+ new cur_state_helper[31];
+ new Float:index;
+ get_state(PART:"optionName", cur_state_helper, 30, index);
+ if(!strcmp(cur_state_helper,"default")){
+ set_state(PART:"optionBackground", "mouseOver", 0.0);
+ }
+ }
+ }
+ program{ name: "mouse_out";
+ signal: "mouse,out";
+ source: "option*";
+ script{
+ new st[31];
+ new Float:vl
+ get_state(PART:"optionBackground", st, 30, vl);
+ if(strcmp(st,"selected")){
+ set_state(PART:"optionBackground", "mouseOut", 0.0);
+ }
+ }
+ }
+ program{ signal: "selected";
+ source: "SettingsModel";
+ action: STATE_SET "selected" 0.0;
+ target: "optionBackground";
+ }
+ program{ signal: "unselected";
+ source: "SettingsModel";
+ action: STATE_SET "mouseOut" 0.0;
+ target: "optionBackground";
+ }
+ program{ name: "go_disabled";
+ signal: "elm,state,disabled"; source: "elm";
+ action: STATE_SET "disabled" 0.0;
+ target: "optionName";
+ }
+ program{ name: "go_enabled";
+ signal: "elm,state,enabled"; source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "optionName";
+ }
+ program{ name: "go_Off";
+ signal: "switch,off";
+ source: "SettingsModel";
+ action: STATE_SET "off" 0.0;
+ target: "value_helper";
+ }
+ program{ name: "go_On";
+ signal: "switch,on";
+ source: "SettingsModel";
+ action: STATE_SET "on" 0.0;
+ target: "value_helper";
+ }
+ program{ name: "go_switch_hide";
+ signal: "switch,hide";
+ source: "SettingsModel";
+ action: STATE_SET "default" 0.0;
+ target: "value_helper";
+ }
+ }//programs
+ }//parts
+ }//group
+ group{ name: "elm/ctxpopup/bg/bookmarks_manager_button";
+ parts {
+ part{
+ name: "base_bg";
+ type: RECT;
+ mouse_events: 1;
+ description{
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ }
+ programs{
+ program {
+ signal: "mouse,clicked,*";
+ source: "base_bg";
+ action: SIGNAL_EMIT "elm,action,click" "";
+ }
+ }
+ }//group: "elm/ctxpopup/bg/bookmarks_manager_button";
+ group{ name: "elm/ctxpopup/base/bookmarks_manager_button";
+ max: 0 0;
+ parts{
+ part{
+ name: "base";
+ scale: 1;
+ type: RECT;
+ description{
+ state: "default" 0.0;
+ min: 185 164;
+ max: 185 164;
+ //color: 0 0 0 0;
+ color_class: "transparent";
+ visible: 0;
+ }
+ description {
+ state: "visible" 0.0;
+ inherit: "default" 0.0;
+ color_class: "on_offBackgroundColor";
+ visible: 1;
+ }
+ }
+ part{
+ name: "elm.swallow.content";
+ scale: 1;
+ type: SWALLOW;
+ description{
+ state: "default" 0.0;
+ rel1{
+ to:"base";
+ relative: 0 0;
+ }
+ rel2{
+ to:"base";
+ relative:1 1;
+ }
+ }
+ }
+ }
+ programs {
+ program {
+ signal: "elm,state,show"; source: "elm";
+ action: STATE_SET "visible" 0.0;
+ transition: LINEAR 0.2;
+ target: "base";
+ }
+ program {
+ signal: "elm,state,hide"; source: "elm";
+ action: STATE_SET "default" 0.0;
+ transition: LINEAR 0.3;
+ target: "base";
+ after: "hide2";
+ }
+ program { name: "hide2";
+ action: SIGNAL_EMIT "elm,action,hide,finished" "";
+ }
+ }
+ }//group "elm/ctxpopup/base/bookmarks_manager_button";
+ group{ name: "elm/radio/base/bookmarks_manager_radio";
+ images.image: "check_foc.png" COMP;
+ images.image: "check_nor.png" COMP;
+ parts{
+ part{name: "item_bg"; type: RECT; mouse_events:0;
+ scale: 1;
+ description{
+ state: "default" 0.0;
+ color_class: "transparent";
+ min: 185 82;
+ max: 185 82;
+ }
+ description{
+ state: "mouse_over" 0.0;
+ inherit: "default";
+ color_class: "selectedBackground";
+ }
+ }
+ part{name: "left_spacer"; type: SPACER;
+ scale: 1;
+ description{
+ state: "default" 0.0;
+ min: 20 82;
+ max: 20 82;
+ align: 0 0;
+ rel1{
+ relative:0 0;
+ to: item_bg;
+ }
+ }
+ }
+ part{name: "elm.text"; type: TEXT; mouse_events: 0;
+ scale: 1;
+ description{
+ state: "default" 0.0;
+ color_class: "defaultFontColor";
+ align: 0 0.5;
+ rel1{
+ relative: 1 0;
+ to: "left_spacer";
+ }
+ rel2{
+ relative: 0 1;
+ to_x: "indicator";
+ to_y: "right_spacer";
+ }
+ text{
+ size: 30;
+ align: 0 0.5;
+ }
+ }
+ description{
+ state: "mouse_over" 0.0;
+ inherit: "default";
+ color_class: "selectedItemFontColor";
+ }
+ }
+ part { name: "indicator"; mouse_events: 0;
+ scale: 1;
+ type: IMAGE;
+ description { state: "default" 0.0;
+ align: 1 0.5;
+ rel2{
+ relative: 0 1;
+ to: "right_spacer";
+ }
+ min: 38 38;
+ max: 38 38;
+ visible: 0;
+ }
+ description {
+ state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ image.normal: "check_foc.png";
+ }
+ description{
+ state: "selected_mouse_over" 0.0;
+ inherit: "selected";
+ image.normal: "check_nor.png";
+ }
+ }
+ part{ name: "right_spacer"; type: SPACER;
+ scale: 1;
+ description{
+ state: "default" 0.0;
+ min: 20 82;
+ max: 20 82;
+ align: 1 1;
+ rel2{
+ relative:1 1;
+ to: item_bg;
+ }
+ }
+ }
+ part{ name: "event"; type: RECT;
+ description{
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ }//parts
+ script {
+ public mouse_in() {
+ new st[31];
+ new Float:vl
+ get_state(PART:"indicator", st, 30, vl)
+ if(!strcmp(st,"selected"))
+ set_state(PART:"indicator", "selected_mouse_over", 0.0);
+ set_state(PART:"item_bg", "mouse_over", 0.0);
+ set_state(PART:"elm.text", "mouse_over", 0.0);
+ }
+ public mouse_out() {
+ new st[31];
+ new Float:vl
+ get_state(PART:"indicator", st, 30, vl)
+ if(!strcmp(st,"selected_mouse_over"))
+ set_state(PART:"indicator", "selected", 0.0);
+ set_state(PART:"item_bg", "default", 0.0);
+ set_state(PART:"elm.text", "default", 0.0);
+ }
+ }
+ programs{
+ program{
+ signal: "mouse,clicked,1"; source: "event";
+ action: SIGNAL_EMIT "elm,action,radio,toggle" "";
+ }
+ program{
+ signal: "mouse,in"; source: "event";
+ script{
+ mouse_in();
+ }
+ }
+ program{
+ signal: "mouse,out"; source: "event";
+ script{
+ mouse_out();
+ }
+ }
+ program{
+ signal: "elm,action,focus"; source: "elm";
+ script{
+ mouse_in();
+ }
+ }
+ program{
+ signal: "elm,action,unfocus"; source: "elm";
+ script{
+ mouse_out();
+ }
+ }
+ program{
+ signal: "elm,state,radio,on"; source: "elm";
+ action: STATE_SET "selected" 0.0;
+ target: "indicator";
+ }
+ program{
+ signal: "elm,state,radio,off"; source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "indicator";
+ }
+ }
+ }//group "elm/radio/base/bookmarks_manager_radio";
+
+ group { name: "elm/label/base/bookmarks_manager_label";
+ styles {
+ style { name: "label_style";
+ base: "font="FNBD" font_size=30 text_class=tb_plain align=center color=#d3d3d3ff";
+ tag: "br" "\n";
+ tag: "hilight" "+ font="FNBD" color=#d3d3d3ff text_class=tb_plain";
+ tag: "b" "+ font="FNBD" color=#d3d3d3ff text_class=tb_light";
+ }
+ }
+ parts {
+ part { name: "elm.text"; type: TEXTBLOCK;
+ scale: 1;
+ description { state: "default" 0.0;
+ text { style: "label_style";
+ min: 1 1;
+ }
+ }
+ }
+ }
+ }
+}//collections
collections {
-FOUR_STATE_IMAGE_BUTTON("browser/toolbar_prev", 70, 70, "web_ico_prev.png")
+FOUR_STATE_IMAGE_BUTTON("browser/toolbar_prev", 82, 102, "btn_bar_back_nor.png")
-FOUR_STATE_IMAGE_BUTTON("browser/toolbar_next", 70, 70, "web_ico_next.png")
+FOUR_STATE_IMAGE_BUTTON("browser/toolbar_next", 82, 102, "btn_bar_forward_nor.png")
-FOUR_STATE_IMAGE_BUTTON("browser/toolbar_reload", 70, 70, "web_ico_reload.png")
+FOUR_STATE_IMAGE_BUTTON("browser/toolbar_reload", 82, 102, "btn_bar_reload_nor.png")
-FOUR_STATE_IMAGE_BUTTON("browser/toolbar_stop", 70, 70, "web_ico_stop.png")
-
-FOUR_STATE_IMAGE_BUTTON("browser/toolbar_bookmark", 70, 70, "web_ico_favorite_on.png")
-
-FOUR_STATE_IMAGE_BUTTON("browser/toolbar_unbookmark", 70, 70, "web_ico_favorite_off.png")
+FOUR_STATE_IMAGE_BUTTON("browser/toolbar_stop", 82, 102, "btn_bar_stop_nor.png")
group {
name: "left_button_bar";
}
}
- ADD_SPACER("spacer_3", "refresh_stop_button", 10, 70)
-
- part { name: "bookmark_button";
- type : SWALLOW;
- scale: 1;
- description {
- state: "default" 0.0;
- visible: 1;
- align: 0.0 0.0;
- fixed: 1 1;
- min: 70 70;
- max: 70 70;
- rel1 { relative: 1.0 0.0; to: spacer_3; }
- rel2 { relative: 0.0 0.0; }
- }
- description {
- state: "hidden" 0.0;
- inherit: "default" 0.0;
- visible: 0;
- }
- description {
- state: "visible" 0.0;
- inherit: "default" 0.0;
- visible: 1;
- }
- }
-
}
}
}
+#define URI_LENGTH 1720
+#define URI_LENGTH_SHORT 1460
+#define URI_WIDTH 82
#include "Spacer.edc"
#define DEBUG_RECT_OVER(over_part, r, g, b) \
part { name: __CONCAT("dbg_rect_at_", __stringify(__LINE__)); \
description { \
state: "default" 0.0; \
visible: 1; \
- color: r g b 128; \
+ color: r g b 255; \
rel1 { to: over_part; relative: 0 0; } \
rel2 { to: over_part; relative: 1 1; } \
} \
visible: 1;
fixed: 1 1;
align: 0 0;
- min: 0 130;
- max: 99999 130;
- color: 18 22 34 230;
+ min: 1920 104;
+ max: 1920 104;
+ color: 255 255 255 255;
rel1 { relative: 0.0 0.0; }
rel2 { relative: 1.0 0.0; }
}
}
- ADD_SPACER_OVER("left_spacer", "uri_bar_bg", 74, 130)
+ ADD_SPACER_OVER("left_spacer", "uri_bar_bg", 7, 104)
part { name: "uri_bar_buttons_left";
type : SWALLOW;
scale: 1;
state: "default" 0.0;
visible: 1;
align: 0 0.5;
- min: 310 70;
- max: 310 70;
+ min: 246 102;
+ max: 246 102;
fixed: 1 1;
rel1 { relative: 1.0 1.0; to: "left_spacer"; }
rel2 { relative: 0.0 0.0; to: "left_spacer"; }
visible: 1;
}
}
- ADD_SPACER("left_buttons_spacer", "uri_bar_buttons_left", 39, 70)
+ ADD_SPACER("left_buttons_spacer", "uri_bar_buttons_left", 0.5, 102)
part { name: "uri_entry";
type : SWALLOW;
scale: 1;
state: "default" 0.0;
visible: 1;
align: 0.0 0.5;
- min: 994 70;
- max: 994 70;
+ min: URI_LENGTH URI_WIDTH;
+ max: URI_LENGTH URI_WIDTH;
fixed: 1 1;
+ rel1 { relative: 1.0 0.5; to: "left_spacer"; }
+ rel2 { relative: 1.0 0.5; to: "left_spacer"; }
+ }
+ description {
+ state: "moveright" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ min: URI_LENGTH_SHORT URI_WIDTH;
+ max: URI_LENGTH_SHORT URI_WIDTH;
rel1 { relative: 1.0 0.5; to: "left_buttons_spacer"; }
rel2 { relative: 1.0 0.5; to: "left_buttons_spacer"; }
}
visible: 1;
}
}
- ADD_SPACER("right_buttons_spacer", "uri_entry", 39, 70)
+ ADD_SPACER("right_buttons_spacer", "uri_entry", 26, 102)
part { name: "uri_bar_buttons_right";
type : SWALLOW;
scale: 1;
state: "default" 0.0;
visible: 1;
align: 0.0 0.5;
- min: 390 70;
- max: 390 70;
+ min: 164 102;
+ max: 164 102;
fixed: 1 1;
rel1 { relative: 1.0 0.5; to: "right_buttons_spacer"; }
rel2 { relative: 1.0 0.5; to: "right_buttons_spacer"; }
visible: 1;
}
}
- ADD_SPACER("right_spacer", "uri_bar_buttons_right", 74, 70)
+ ADD_SPACER("right_spacer", "uri_bar_buttons_right", 74, 102)
part { name: "web_view";
type : SWALLOW;
scale: 1;
visible: 1;
align: 0.0 0.0;
fixed: 0 0;
- min: 1936 8;
- max: 1936 8;
+ min: 1920 2;
+ max: 1920 2;
rel1 {
relative: 0.0 0.0;
offset: -12 -10;
}
}
+
part {name: "popup_bg";
type: RECT;
scale: 1;
+ mouse_events: 1;
description {state: "default" 0.0;
visible: 0;
min: 1920 1080;
fixed: 1 1;
- color: 100 100 100 0;
+ color: 100 100 100 128;
rel1 {relative: 0.0 0.0; }
rel2 {relative: 1.0 1.0; }
}
description { state: "default" 0.0;
visible: 0;
min: 0 0;
- max: 1920 1080;
+ max: 700 800;
align: 0.5 0.5;
rel1 { relative: 0.0 0.0; to: "web_view";}
rel2 { relative: 1.0 1.0; to: "web_view";}
}
}
}
+}
programs {
+ program { name: "shiftright_uribar";
+ signal: "shiftright_uri";
+ source: "ui";
+ action: STATE_SET "moveright" 0.0;
+ target: "uri_entry";
+ }
+ program { name: "shiftback_uribar";
+ signal: "shiftback_uri";
+ source: "ui";
+ action: STATE_SET "default" 0.0;
+ target: "uri_entry";
+ }
program { name: "hide_progress";
signal: "hide_progressbar_bg";
source: "ui";
}
}
}
+}
#include "ImageButton.edc"
#include "Spacer.edc"
collections {
-FOUR_STATE_IMAGE_BUTTON("browser/toolbar_tab", 70, 70, "web_ico_tab.png")
-FOUR_STATE_IMAGE_BUTTON("browser/toolbar_history", 70, 70, "web_ico_history.png")
-FOUR_STATE_IMAGE_BUTTON("browser/toolbar_zoom_in", 70, 70, "web_ico_zoom_in.png")
-FOUR_STATE_IMAGE_BUTTON("browser/toolbar_rss", 70, 70, "web_ico_rss.png")
-FOUR_STATE_IMAGE_BUTTON("browser/toolbar_setting", 70, 70, "web_ico_setting.png")
+FOUR_STATE_IMAGE_BUTTON("browser/toolbar_tab", 82, 102, "btn_bar_manager_nor.png")
+FOUR_STATE_IMAGE_BUTTON("browser/toolbar_setting", 82, 102, "btn_bar_more_nor.png")
group {
name: "right_button_bar";
parts {
align: 0.0 0.0;
min: 70 70;
max: 70 70;
- color: 255 255 255 153;
- rel1 { relative: 0.0 0.0; to: "tab_button"; offset: -3 4;}
- rel2 { relative: 1.0 1.0; to: "tab_button";}
+ color: 86 86 86 255;
+ rel1 { relative: 0.0 0.0; to: "tab_button"; offset: 5 13; }
+ rel2 { relative: 1.0 1.0; to: "tab_button"; }
text {
text: "";
font: "Tizen:style=Bold";
}
}
ADD_SPACER("spacer_1", "tab_button", 10, 70)
- part { name: "history_button";
- type : SWALLOW;
- scale: 1;
- description {
- state: "default" 0.0;
- visible: 1;
- fixed: 1 1;
- align: 0.0 0.0;
- min: 70 70;
- max: 70 70;
- rel1 { relative: 1.0 0.0; to: "spacer_1"; }
- rel2 { relative: 0.0 0.0; }
- }
- description {
- state: "hidden" 0.0;
- inherit: "default" 0.0;
- visible: 0;
- }
- description {
- state: "visible" 0.0;
- inherit: "default" 0.0;
- visible: 1;
- }
- }
- ADD_SPACER("spacer_2", "history_button", 10, 70)
- part { name: "zoom_in_button";
- type : SWALLOW;
- scale: 1;
- description {
- state: "default" 0.0;
- visible: 1;
- fixed: 1 1;
- align: 0.0 0.0;
- min: 70 70;
- max: 70 70;
- rel1 { relative: 1.0 0.0; to: "spacer_2"; }
- rel2 { relative: 0.0 0.0; }
- }
- description {
- state: "hidden" 0.0;
- inherit: "default" 0.0;
- visible: 0;
- }
- description {
- state: "visible" 0.0;
- inherit: "default" 0.0;
- visible: 1;
- }
- }
- ADD_SPACER("spacer_3", "zoom_in_button", 10, 70)
- part { name: "rss_button";
- type : SWALLOW;
- scale: 1;
- description {
- state: "default" 0.0;
- visible: 1;
- fixed: 1 1;
- align: 0.0 0.0;
- min: 70 70;
- max: 70 70;
- rel1 { relative: 1.0 0.0; to: "spacer_3"; }
- rel2 { relative: 0.0 0.0; }
- }
- description {
- state: "hidden" 0.0;
- inherit: "default" 0.0;
- visible: 0;
- }
- description {
- state: "visible" 0.0;
- inherit: "default" 0.0;
- visible: 1;
- }
- }
- ADD_SPACER("spacer_4", "rss_button", 10, 70)
part { name: "setting_button";
type : SWALLOW;
scale: 1;
min: 70 70;
max: 70 70;
fixed: 1 1;
- rel1 { relative: 1.0 0.0; to: "spacer_4"; }
+ rel1 { relative: 1.0 0.0; to: "spacer_1"; }
rel2 { relative: 0.0 0.0; }
}
description {
}
}
}
-}
\ No newline at end of file
+}
--- /dev/null
+#include "ImageButton.edc"
+#include "Spacer.edc"
+collections {
+
+FOUR_STATE_IMAGE_BUTTON("browser/toolbar_history", 70, 70, "web_ico_history.png")
+FOUR_STATE_IMAGE_BUTTON("browser/toolbar_bookmark", 70, 70, "web_ico_favorite_on.png")
+
+ group {
+ name: "web_view_bar";
+ parts {
+ part { name: "most_visited_button";
+ type :RECT;
+ scale: 1;
+ description {
+
+ state: "default" 0.0;
+ visible: 1;
+ fixed :1 1;
+ align: 0.5 0.5;
+ min: 70 70;
+ max: 70 70;
+
+
+
+ rel1 {
+
+ relative: 1.0 1.0;
+
+ offset: 150 150;
+
+ }
+
+ rel2 {
+
+ relative: 0.9 0.8;
+
+ offset: 150 150;
+
+ }
+}
+
+}
+
+
+
+part { name: "visited_bookmarks";
+ type :RECT;
+ scale: 1;
+ description {
+
+ state: "default" 0.0;
+ visible: 1;
+
+ align: 0.5 0.5;
+ min: 70 70;
+ max: 70 70;
+
+ fixed :1 1;
+
+
+ rel1 {
+
+ relative: 1.0 1.0;
+
+ offset: 150 150;
+
+ }
+
+ rel2 {
+
+ relative: 0.9 0.8;
+
+ offset: 150 150;
+
+ }
+}
+
+}
+
+
+
+
+
+
+
+
+
+
+ }
+ }
+ }
-#define URI_WIDTH 994
+#define URI_INPUTBOX_LENGTH 1720
+#define URI_INPUTBOX_LENGTH_SMALL 1460
+#define URI_INPUTBOX_WIDTH 82
collections {
group { name: "elm/entry/selection/browser_entry";
parts {
type: RECT;
mouse_events: 0;
description { state: "default" 0.0;
- color: 0 0 128 64;
+ color: 255 255 255 255;
}
}
}
type: RECT;
mouse_events: 0;
description { state: "default" 0.0;
- color: 69 149 255 255;
+ color: 22 120 237 255;
min: 2 36;
max: 2 36;
visible: 0;
styles {
style {
name: "browser-entry-uri-style-unselected";
- base: "font=Tizen:style=SVD_Medium font_size="32" wrap=none color=#CCCCCC";
+ base: "font=Sans:style=SVD_Medium font_size="42" wrap=none color=#969696";
}
style {
name: "browser-entry-uri-style-selected";
- base: "font=Tizen:style=SVD_Medium font_size="32" wrap=none color=#3D3D3D";
+ base: "font=Sans:style=SVD_Medium font_size="42" wrap=none color=#4088d3";
}
}
data {
item: focus_highlight "off";
}
parts {
+
+ part { name: "bg";
+ scale:1;
+ type: RECT;
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ color: 255 255 255 255;
+ }
+ }
+
part {
name: "elm.guide";
scale:1;
group {
name: "uri_entry_layout";
- images {
- image: "search_searchbar_bg_foc.png" COMP;
- image: "search_searchbar_bg_nor.png" COMP;
- image: "ico_search.png" COMP;
- image: "ico_url.png" COMP;
- }
parts {
- part { name: "bg";
- mouse_events: 1;
- scale:1;
- type: IMAGE;
- description {
- state: "default" 0.0;
- visible: 1;
- align: 0.0 0.0;
- min: 11 11;
- max: URI_WIDTH 70;
- fixed: 1 1;
- rel1 { relative: 0.0 0.0; }
- rel2 { relative: 1.0 1.0; }
- image.normal: "search_searchbar_bg_nor.png";
- image.border: 5 5 5 5;
- //image.border_scale: 0;
- //image.middle: NONE;
- fill {
- type: SCALE;
- smooth: 0;
- origin {
- relative: 0 0;
- offset: 0 0;
- }
- size {
- relative: 1 1;
- offset: 0 0;
- }
- }
- }
- description {
- state: "focused" 0.0;
- inherit: "default" 0.0;
- image.normal: "search_searchbar_bg_foc.png";
- //image.border: 5 5 5 5;
- //image.border_scale: 0;
- //image.middle: NONE;
- }
- }
part {
name: "spacer_1";
type: SPACER;
rel2 { relative: 0.0 0.0; offset: 15 0; }
align: 0.0 0.0;
fixed: 1 1;
- min: 15 70;
- max: 15 70;
- }
- }
- part { name: "uri_icon";
- type: IMAGE;
- scale: 1;
- description {
- state: "default" 0.0;
- rel1 { relative: 1 0; to: "spacer_1"; }
- rel2 { relative: 1 1; to: "spacer_1"; }
- align: 0.0 0.0;
- fixed: 1 1;
- min: 60 70;
- max: 60 70;
- image.normal: "ico_search.png";
- visible: 1;
- }
- description {
- state: "document" 0.0;
- inherit: "default" 0.0;
- image.normal: "ico_url.png";
- }
- description{
- state: "hidden" 0.0;
- inherit: "default" 0.0;
- visible: 0;
- }
- }
- part { name: "fav_icon";
- type: SWALLOW;
- scale: 1;
- description{
- state: "default" 0.0;
- rel1 { relative: 0 0; to: "uri_icon";}
- rel2 { relative: 1 1; to: "uri_icon";}
- align: 0.5 0.5;
- fixed: 1 1;
- min: 36 36;
- max: 36 36;
- visible: 0;
- }
- description{
- state: "visible" 0.0;
- inherit: "default" 0.0;
- visible: 1;
+ min: 1 102;
+ max: 1 102;
}
}
part { name: "uri_entry_swallow";
description {
state: "default" 0.0;
visible: 1;
+ color: 255 255 255 255;
align: 0.0 0.0;
- min: 889 70;
- max: 889 70;
+ min: URI_INPUTBOX_LENGTH URI_INPUTBOX_WIDTH;
+ max: URI_INPUTBOX_LENGTH URI_INPUTBOX_WIDTH;
fixed: 1 1;
- rel1 { relative: 1 0; to: "uri_icon"; }
- rel2 { relative: 1 1; to: "uri_icon"; }
+ rel1 { relative: 1 0; to: "spacer_1"; }
+ rel2 { relative: 1 1; to: "spacer_1"; }
}
+ description {
+ state: "moveright" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ min: URI_INPUTBOX_LENGTH_SMALL URI_INPUTBOX_WIDTH;
+ max: URI_INPUTBOX_LENGTH_SMALL URI_INPUTBOX_WIDTH;
+ }
description {
state: "hidden" 0.0;
inherit: "default" 0.0;
description {
state: "default" 0.0;
color: 0 0 0 0;
- rel1 { relative: 0 0; to: "bg"; }
- rel2 { relative: 1 1; to: "bg"; }
+ rel1 { relative: 0 0; to: "spacer_1"; }
+ rel2 { relative: 1 1; to: "spacer_1"; }
}
}
part { name: "uri_entry_btn";
description {
state: "default" 0.0;
visible: 1;
- rel1.to: "bg";
- rel2.to: "bg";
+ rel1.to: "uri_entry_swallow";
+ rel2.to: "uri_entry_swallow";
}
- }
+ }
}
programs {
+ program { name: "shiftright_uribarbg";
+ signal: "shiftright_uribg";
+ source: "ui";
+ action: STATE_SET "moveright" 0.0;
+ target: "uri_entry_swallow";
+ }
+ program { name: "shiftback_uribarbg";
+ signal: "shiftback_uribg";
+ source: "ui";
+ action: STATE_SET "default" 0.0;
+ target: "uri_entry_swallow";
+ }
program {
name: "mouse_in_entry";
source: "over";
signal: "mouse,in";
action: STATE_SET "focused" 0.0;
- target: "bg";
+ target: "spacer_1";
}
program {
name: "mouse_out_entry";
source: "over";
signal: "mouse,out";
action: STATE_SET "default" 0.0;
- target: "bg";
- }
- program{
- name: "set_search_icon";
- source: "model";
- signal: "set_search_icon";
- script{
- set_state(PART:"uri_icon", "default", 0.0);
- set_state(PART:"fav_icon", "default", 0.0);
- }
- }
- program {
- name: "fav_icon_clicked";
- source: "fav_icon";
- signal: "mouse,clicked,*";
- action: SIGNAL_EMIT "slide_websearch" "elm";
- }
- program {
- name: "uri_icon_clicked";
- source: "uri_icon";
- signal: "mouse,clicked,*";
- action: SIGNAL_EMIT "slide_websearch" "elm";
- }
- program{
- name: "set_doc_icon";
- source: "model";
- signal: "set_doc_icon";
- script{
- set_state(PART:"uri_icon", "document", 0.0);
- set_state(PART:"fav_icon", "default", 0.0);
- }
- }
- program{
- name: "show_favicon";
- source: "model";
- signal: "show_favicon";
- script{
- set_state(PART:"uri_icon", "hidden", 0.0);
- set_state(PART:"fav_icon", "visible", 0.0);
- }
+ target: "spacer_1";
}
}
}
-}
\ No newline at end of file
+}
WebKitEngineService::WebKitEngineService()
: m_initialised(false)
, m_privateMode(false)
- , m_guiParent(NULL)
+ , m_guiParent(nullptr)
, m_currentTabId(TabId::NONE)
{
m_mostRecentTab.clear();
std::string WebKitEngineService::getURI() const
{
M_ASSERT(m_currentWebView);
- return m_currentWebView->getURI();
+ if(m_currentWebView)
+ return m_currentWebView->getURI();
+ else
+ return std::string("");
}
bool WebKitEngineService::isLoadError() const
std::string WebKitEngineService::getTitle() const
{
M_ASSERT(m_currentWebView);
- return m_currentWebView->getTitle();
+ if(m_currentWebView)
+ return m_currentWebView->getTitle();
+ else
+ return std::string("");
}
void WebKitEngineService::stopLoading(void)
std::shared_ptr<tizen_browser::tools::BrowserImage> WebKitEngineService::getSnapshotData(int width, int height)
{
M_ASSERT(m_currentWebView);
- return m_currentWebView->captureSnapshot(width, height);
+ if(m_currentWebView)
+ return m_currentWebView->captureSnapshot(width, height);
+ else
+ return std::make_shared<tizen_browser::tools::BrowserImage>();
+
}
std::shared_ptr<tizen_browser::tools::BrowserImage> WebKitEngineService::getSnapshotData(TabId id, int width, int height){
std::shared_ptr<tizen_browser::tools::BrowserImage> WebKitEngineService::getFavicon()
{
M_ASSERT(m_currentWebView);
- return m_currentWebView->getFavicon();
+ if(m_currentWebView)
+ return m_currentWebView->getFavicon();
+ else
+ return std::make_shared<tizen_browser::tools::BrowserImage>();
}
void WebKitEngineService::webViewClicked()
void WebKitEngineService::clearPrivateData()
{
for(std::map<TabId, WebViewPtr>::const_iterator it = m_tabs.begin(); it != m_tabs.end(); it++){
- auto item = *it;
- item.second->clearPrivateData();
+ it->second->clearPrivateData();
}
}
void WebKitEngineService::backButtonClicked() const
{
M_ASSERT(m_currentWebView);
- if (isBackEnabled()) {
+ if (isBackEnabled()) {
m_currentWebView->back();
} else {
app_efl_exit();
#include "WebView.h"
#if defined(USE_EWEBKIT)
-//#include <EWebKit2.h>
#include <ewk_chromium.h>
#endif
#include "ServiceManager.h"
#define certificate_crt_path CERTS_DIR
+#if MERGE_ME
#define APPLICATION_NAME_FOR_USER_AGENT "SamsungBrowser/1.0"
+#else
+#define APPLICATION_NAME_FOR_USER_AGENT "Mozilla/5.0 (X11; SMART-TV; Linux) AppleWebkit/538.1 (KHTML, like Gecko) Safari/538.1"
+#endif
using namespace tizen_browser::tools;
WebView::WebView(Evas_Object * obj, TabId tabId)
: m_parent(obj)
, m_tabId(tabId)
- , m_ewkView(NULL)
+ , m_title(std::string())
+ , m_ewkView(nullptr)
, m_isLoading(false)
, m_loadError(false)
{
#if defined(USE_EWEBKIT)
#if 0 //not using smart class
- static Ewk_View_Smart_Class *clasz = NULL;
+ static Ewk_View_Smart_Class *clasz = nullptr;
Ewk_Context *context = ewk_context_default_get();
if (!clasz) {
clasz = smartClass();
// clasz->run_javascript_alert = onJavascriptAlert;
// clasz->run_javascript_confirm = onJavascriptConfirm;
// clasz->run_javascript_prompt = onJavascriptPrompt;
- clasz->window_create = onWindowCreate;
- clasz->window_close = onWindowClose;
+// clasz->window_create = onWindowCreate;
+// clasz->window_close = onWindowClose;
+
ewk_context_cache_model_set(context, EWK_CACHE_MODEL_PRIMARY_WEBBROWSER);
ewk_context_certificate_file_set(context, certificate_crt_path);
+
}
Evas_Smart *smart = evas_smart_class_new(&clasz->sc);
/// \todo: Consider process model. Now, One UIProcess / One WebProcess.
// if (opener)
// m_ewkView = ewk_view_smart_add(evas_object_evas_get(m_parent), smart, context, ewk_view_page_group_get(opener));
- else
- m_ewkView = ewk_view_smart_add(evas_object_evas_get(m_parent), smart, context, ewk_page_group_create(NULL));
+// else
+ m_ewkView = ewk_view_smart_add(evas_object_evas_get(m_parent), smart, context, ewk_page_group_create(nullptr));
#else
m_ewkView = ewk_view_add(evas_object_evas_get(m_parent));
// Ewk_Context *context = ewk_view_context_get(m_ewkView);
M_ASSERT(targetHeight);
Evas_Coord vw, vh;
std::shared_ptr<tizen_browser::tools::BrowserImage> noImage = std::make_shared<tizen_browser::tools::BrowserImage>();
- evas_object_geometry_get(m_ewkView, NULL, NULL, &vw, &vh);
+ evas_object_geometry_get(m_ewkView, nullptr, nullptr, &vw, &vh);
if (vw == 0 || vh == 0)
return noImage;
{
BROWSER_LOGD("Stop signal emitted");
BROWSER_LOGD("Error description: %s", ewk_error_description_get(error));
- evas_object_smart_callback_call(obj, "load,stop", NULL);
+ evas_object_smart_callback_call(obj, "load,stop", nullptr);
}
else
{
double WebView::getZoomFactor() const
{
- if(EINA_UNLIKELY(m_ewkView == NULL)){
+ if(EINA_UNLIKELY(m_ewkView == nullptr)){
return 1.0;
}
M_ASSERT(m_ewkView);
#if defined(USE_EWEBKIT)
- if (faviconImage.get() == NULL) {
-
-#if PLATFORM(TIZEN)
-// Evas_Object * favicon = ewk_view_favicon_get(m_ewkView);
- Evas_Object * favicon = ewk_context_icon_database_icon_object_add(ewk_view_context_get(m_ewkView), ewk_view_url_get(m_ewkView),evas_object_evas_get(m_ewkView));
+ if (faviconImage.get() == nullptr) {
+#if MERGE_ME
+//#if PLATFORM(TIZEN)
+ Evas_Object * favicon = ewk_view_favicon_get(m_ewkView);
+ Evas_Object * favicon = ewk_context_icon_database_icon_object_add(ewk_view_context_get(m_ewkView), ewk_view_url_get(m_ewkView),evas_object_evas_get(m_ewkView));
#else
Ewk_Favicon_Database * database = ewk_context_favicon_database_get(ewk_view_context_get(m_ewkView));
Evas_Object * favicon = ewk_favicon_database_icon_get(database, ewk_view_url_get(m_ewkView), evas_object_evas_get(m_ewkView));
#endif
-
#ifndef NDEBUG
int w = 0, h = 0;
evas_object_image_size_get(favicon, &w, &h);