virtual std::vector<std::shared_ptr<tizen_browser::services::BookmarkItem>> getAllBookmarkItems(
int parent = tizen_browser::services::ROOT_FOLDER_ID) = 0;
virtual std::shared_ptr<tizen_browser::services::BookmarkItem> getRoot() = 0;
- virtual int getQuickAccessRoot() = 0;
virtual std::shared_ptr<tizen_browser::services::BookmarkItem> getBookmarkItem(int id) = 0;
virtual void editBookmark(int id, const std::string & url, const std::string & title, int parent = -1,
int order = -1) = 0;
#include <string>
#include <memory>
-#include "BrowserImageTypedef.h"
+#include "BrowserImage.h"
#include "TabIdTypedef.h"
#include "TabOrigin.h"
Tools/Blob.cpp
Tools/BookmarkItem.cpp
Tools/BookmarkFolder.cpp
+ Tools/QuickAccessItem.cpp
Tools/CapiWebErrorCodes.cpp
Tools/FeedItem.cpp
Tools/FeedChannel.cpp
m_data["DB_HISTORY"] = std::string(".browser.history.db");
m_data["DB_SESSION"] = std::string(".browser.session.db");
m_data["DB_CERTIFICATE"] = std::string(".browser.certificate.db");
+ m_data["DB_QUICKACCESS"] = std::string(".browser.quickaccess.db");
m_data["TOOLTIP_DELAY"] = 0.05; // time from mouse in to tooltip show
m_data["TOOLTIP_HIDE_TIMEOUT"] = 2.0; // time from tooltip show to tooltip hide
#define __BROWSER_IMAGE_H__
#include <Evas.h>
+#include <memory>
namespace tizen_browser
{
namespace tools
Evas_Colorspace m_colorSpace;
};
+using BrowserImagePtr = std::shared_ptr<BrowserImage>;
} /* end of namespace tools */
} /* end of namespace tizen_browser */
+++ /dev/null
-/*
- * Copyright (c) 2015 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 BROWSERIMAGETYPEDEF_H_
-#define BROWSERIMAGETYPEDEF_H_
-
-#include <memory>
-
-namespace tizen_browser
-{
-namespace tools
-{
-
-class BrowserImage;
-typedef std::shared_ptr<BrowserImage> BrowserImagePtr;
-typedef std::shared_ptr<const BrowserImage> BrowserImagePtrConst;
-
-}
-}
-
-#endif /* BROWSERIMAGETYPEDEF_H_ */
#define __EFL_TOOLS_H__ 1
#include <Evas.h>
-#include "BrowserImageTypedef.h"
#include "BrowserImage.h"
#include "Blob.h"
static const char * PROTCOL_BEGIN = "://";
static const char END_SLASH = '/';
// which protocol, when only domain is available?
- static const std::string PROTOCOL_DEFAULT("http://");
+ static const std::string PROTOCOL_HTTP("http://");
+ static const std::string PROTOCOL_HTTPS("https://");
+ static const std::string PROTOCOL_FTP("ftp://");
// declaration using 'unused' attribute because in some modules not all functions are used
static std::string fromChar(const char* c) __attribute__ ((unused));
--- /dev/null
+/*
+ * Copyright (c) 2016 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 "browser_config.h"
+#include "QuickAccessItem.h"
+
+#include <string>
+#include <Evas.h>
+
+namespace tizen_browser{
+namespace services{
+
+QuickAccessItem::QuickAccessItem()
+ : m_id(0)
+ , m_url("")
+ , m_title("")
+ , m_color(0)
+ , m_order(0)
+ , m_has_favicon(false)
+{
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+}
+
+QuickAccessItem::QuickAccessItem(
+ int id,
+ const std::string &url,
+ const std::string &title,
+ int color,
+ int order,
+ bool hasFavicon)
+ : m_id(id)
+ , m_url(url)
+ , m_title(title)
+ , m_color(color)
+ , m_order(order)
+ , m_has_favicon(hasFavicon)
+{
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+}
+
+void QuickAccessItem::setFavicon(tools::BrowserImagePtr favicon)
+{
+ m_has_favicon = true;
+ m_favicon = favicon;
+}
+
+tools::BrowserImagePtr QuickAccessItem::getFavicon() const
+{
+ return m_favicon;
+}
+
+}//end namespace storage
+}//end namespace tizen_browser
--- /dev/null
+/*
+ * Copyright (c) 2016 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 QUICKACCESSITEM_H
+#define QUICKACCESSITEM_H
+
+#include "BrowserLogger.h"
+#include "BrowserImage.h"
+
+namespace tizen_browser{
+namespace services{
+
+class QuickAccessItem
+{
+public:
+ QuickAccessItem();
+ QuickAccessItem(
+ int id,
+ const std::string& url = "",
+ const std::string& title = "",
+ int color = 0,
+ int order = 0,
+ bool hasFavicon = false
+ // TODO: favicon
+ );
+
+ void setId(int id) { m_id = id; }
+ int getId() const { return m_id; }
+
+ void setUrl(const std::string & url) { m_url = url; }
+ std::string getUrl() const { return m_url; }
+
+ void setTitle(const std::string & title) { m_title = title; }
+ std::string getTitle() const { return m_title; }
+
+ void setColor(int color) { m_color = color; }
+ int getColor() const { return m_color; }
+
+ void setOrder(int order) { m_order = order; }
+ int getOrder() const { return m_order; }
+
+ void setFavicon(tools::BrowserImagePtr favicon);
+ tools::BrowserImagePtr getFavicon() const;
+
+ bool has_favicon() const { return m_has_favicon; }
+
+private:
+ int m_id;
+ std::string m_url;
+ std::string m_title;
+ int m_color;
+ int m_order;
+ std::shared_ptr<tools::BrowserImage> m_favicon;
+ bool m_has_favicon;
+
+};
+
+using SharedQuickAccessItem = std::shared_ptr<QuickAccessItem>;
+using SharedQuickAccessItemVector = std::vector<SharedQuickAccessItem>;
+
+}//end namespace storage
+}//end namespace tizen_browser
+
+#endif // QUICKACCESSITEM_H
update.url = elm_entry_markup_to_utf8(elm_entry_entry_get(entry));
bookmarkFlowUI->editBookmark(update);
}
+
+ if (bookmarkFlowUI->m_add_to_qa)
+ bookmarkFlowUI->addToQuickAccess(bookmarkFlowUI->m_url, bookmarkFlowUI->m_title);
+
bookmarkFlowUI->closeBookmarkFlowClicked();
+ bookmarkFlowUI->m_add_to_qa = false;
} else
BROWSER_LOGW("[%s] data = nullptr", __PRETTY_FUNCTION__);
}
if (data) {
BookmarkFlowUI* bookmarkFlowUI = static_cast<BookmarkFlowUI*>(data);
bookmarkFlowUI->closeBookmarkFlowClicked();
+ bookmarkFlowUI->m_add_to_qa = false;
} else
BROWSER_LOGW("[%s] data = nullptr", __PRETTY_FUNCTION__);
}
boost::signals2::signal<void (BookmarkUpdate)> saveBookmark;
boost::signals2::signal<void (BookmarkUpdate)> editBookmark;
boost::signals2::signal<void (services::SharedBookmarkItem)> showSelectFolderUI;
+ boost::signals2::signal<void (std::string, std::string)> addToQuickAccess;
private:
struct FolderData {
m_root = std::make_shared<BookmarkItem>(ROOT_FOLDER_ID, "", _("IDS_BR_BODY_BOOKMARKS"), "", -1, 1);
m_root->set_folder_flag(true);
-
-
- //TODO: temporary folder. Refactor this when quickaccess dabatabe will be available.
- if (folderExists("QuickAccess"))
- m_quickAccess_root = getFolderId("QuickAccess", ROOT_FOLDER_ID);
- else {
- addFolder("QuickAccess");
- m_quickAccess_root = getFolderId("QuickAccess", ROOT_FOLDER_ID);
- }
}
BookmarkService::~BookmarkService()
std::vector<std::shared_ptr<BookmarkItem>> getAllBookmarkItems(int parent = ROOT_FOLDER_ID);
std::shared_ptr<services::BookmarkItem> getRoot();
- int getQuickAccessRoot() {return m_quickAccess_root;}
std::shared_ptr<services::BookmarkItem> getBookmarkItem(int id);
int getBookmarkId(const std::string & url);
std::shared_ptr<services::BookmarkItem> m_root;
- int m_quickAccess_root;
};
}
#include <vector>
#include "BrowserImage.h"
-#include "BrowserImageTypedef.h"
namespace tizen_browser {
namespace services {
#include <memory>
#include <boost/date_time/gregorian/gregorian.hpp>
#include <boost/signals2/signal.hpp>
-#include "BrowserImageTypedef.h"
#include "ServiceFactory.h"
#include "service_macros.h"
m_quickAccess_item_class = elm_gengrid_item_class_new();
m_quickAccess_item_class->item_style = "quickAccess";
m_quickAccess_item_class->func.text_get = nullptr;
- m_quickAccess_item_class->func.content_get = _grid_bookmark_content_get;
+ m_quickAccess_item_class->func.content_get = _grid_quickaccess_content_get;
m_quickAccess_item_class->func.state_get = nullptr;
- m_quickAccess_item_class->func.del = _grid_bookmark_del;
+ m_quickAccess_item_class->func.del = _grid_quickaccess_del;
}
if (!m_mostVisited_item_class) {
m_mostVisited_item_class = elm_gengrid_item_class_new();
elm_gengrid_align_set(quickAccessGengrid, 0.5, 0.1);
if (isOrientationLandscape()) {
- elm_gengrid_item_size_set(quickAccessGengrid, Z3_SCALE_SIZE(BOOKMARK_ITEM_WIDTH_LANDSCAPE), Z3_SCALE_SIZE(BOOKAMRK_ITEM_HEIGHT_LANDSCAPE));
+ elm_gengrid_item_size_set(
+ quickAccessGengrid,
+ Z3_SCALE_SIZE(QUICKACCESS_ITEM_WIDTH_LANDSCAPE),
+ Z3_SCALE_SIZE(QUICKACCESS_ITEM_HEIGHT_LANDSCAPE));
} else {
- elm_gengrid_item_size_set(quickAccessGengrid, Z3_SCALE_SIZE(BOOKMARK_ITEM_WIDTH), Z3_SCALE_SIZE(BOOKAMRK_ITEM_HEIGHT));
+ elm_gengrid_item_size_set(
+ quickAccessGengrid,
+ Z3_SCALE_SIZE(QUICKACCESS_ITEM_WIDTH),
+ Z3_SCALE_SIZE(QUICKACCESS_ITEM_HEIGHT));
}
elm_scroller_bounce_set(quickAccessGengrid, EINA_FALSE, EINA_FALSE);
evas_object_size_hint_align_set(mostVisitedGengrid, EVAS_HINT_FILL, EVAS_HINT_EXPAND);
elm_gengrid_align_set(mostVisitedGengrid, 0.5, 0.1);
if (isOrientationLandscape()) {
- elm_gengrid_item_size_set(mostVisitedGengrid, Z3_SCALE_SIZE(MOSTVISITED_ITEM_WIDTH_LANDSCAPE), Z3_SCALE_SIZE(MOSTVISITED_ITEM_HEIGHT_LANDSCAPE));
+ elm_gengrid_item_size_set(
+ mostVisitedGengrid,
+ Z3_SCALE_SIZE(MOSTVISITED_ITEM_WIDTH_LANDSCAPE),
+ Z3_SCALE_SIZE(MOSTVISITED_ITEM_HEIGHT_LANDSCAPE));
} else {
- elm_gengrid_item_size_set(mostVisitedGengrid, Z3_SCALE_SIZE(MOSTVISITED_ITEM_WIDTH), Z3_SCALE_SIZE(MOSTVISITED_ITEM_HEIGHT));
+ elm_gengrid_item_size_set(
+ mostVisitedGengrid,
+ Z3_SCALE_SIZE(MOSTVISITED_ITEM_WIDTH),
+ Z3_SCALE_SIZE(MOSTVISITED_ITEM_HEIGHT));
}
elm_scroller_bounce_set(mostVisitedGengrid, EINA_FALSE, EINA_FALSE);
items->clear();
}
-void QuickAccess::addQuickAccessItem(std::shared_ptr<tizen_browser::services::BookmarkItem> bi)
+void QuickAccess::addQuickAccessItem(services::SharedQuickAccessItem qa)
{
BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
- if (bi->is_folder())
- return;
- BookmarkItemData *itemData = new BookmarkItemData(); // deleted in _grid_bookmark_del
- itemData->item = bi;
+ QuickAccessItemData *itemData = new QuickAccessItemData(); // deleted in _grid_quickaccess_del
+ itemData->item = qa;
itemData->quickAccess = this;
elm_gengrid_item_append(m_quickAccessGengrid, m_quickAccess_item_class, itemData, _thumbQuickAccessClicked, itemData);
}
elm_gengrid_clear(m_mostVisitedGengrid);
}
-void QuickAccess::setQuickAccessItems(std::vector<std::shared_ptr<tizen_browser::services::BookmarkItem> > items)
+void QuickAccess::setQuickAccessItems(services::SharedQuickAccessItemVector items)
{
clearQuickAccessGengrid();
}
}
-Evas_Object * QuickAccess::_grid_bookmark_content_get(void *data, Evas_Object* obj, const char *part)
+Evas_Object * QuickAccess::_grid_quickaccess_content_get(void *data, Evas_Object* obj, const char *part)
{
BROWSER_LOGD("[%s:%d] part=%s", __PRETTY_FUNCTION__, __LINE__, part);
if (data) {
- BookmarkItemData *itemData = reinterpret_cast<BookmarkItemData*>(data);
+ QuickAccessItemData *itemData = reinterpret_cast<QuickAccessItemData*>(data);
if (!strcmp(part, "elm.swallow.icon")) {
Evas_Object *button = elm_button_add(obj);
return nullptr;
}
-void QuickAccess::_grid_bookmark_del(void* data, Evas_Object*)
+void QuickAccess::_grid_quickaccess_del(void* data, Evas_Object*)
{
- auto itemData = static_cast<BookmarkItemData*>(data);
+ auto itemData = static_cast<QuickAccessItemData*>(data);
if (itemData)
delete itemData;
}
void QuickAccess::__quckAccess_del_clicked(void *data, Evas_Object */*obj*/, void *)
{
BROWSER_LOGD("[%s:%d] part=%s", __PRETTY_FUNCTION__, __LINE__);
- auto itemData = static_cast<BookmarkItemData*>(data);
+ auto itemData = static_cast<QuickAccessItemData*>(data);
itemData->quickAccess->deleteQuickAccessItem(itemData->item);
elm_object_item_del(elm_gengrid_selected_item_get(itemData->quickAccess->m_quickAccessGengrid));
Evas_Object *QuickAccess::_grid_mostVisited_content_get(void *data, Evas_Object *obj, const char *part)
{
- if (data) {
+ if (data && obj && part) {
HistoryItemData *itemData = reinterpret_cast<HistoryItemData*>(data);
if (!strcmp(part, "elm.swallow.icon")) {
void QuickAccess::_thumbQuickAccessClicked(void * data, Evas_Object * , void *)
{
- BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
- HistoryItemData * itemData = reinterpret_cast<HistoryItemData *>(data);
- if (itemData->quickAccess->m_state == QuickAccessState::Default) {
- itemData->quickAccess->openURL(itemData->item, itemData->quickAccess->isDesktopMode());
- itemData->quickAccess->m_after_history_thumb = false;
+ if (data) {
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+ QuickAccessItemData * itemData = reinterpret_cast<QuickAccessItemData *>(data);
+ if (itemData->quickAccess->m_state == QuickAccessState::Default) {
+ itemData->quickAccess->openURLquickaccess(itemData->item, itemData->quickAccess->isDesktopMode());
+ itemData->quickAccess->m_after_history_thumb = false;
+ }
+ } else {
+ BROWSER_LOGW("[%s] data = nullptr", __PRETTY_FUNCTION__);
}
+
}
void QuickAccess::_thumbMostVisitedClicked(void* data, Evas_Object*, void*)
{
- BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
- HistoryItemData * itemData = reinterpret_cast<HistoryItemData *>(data);
- if (itemData->quickAccess->m_state == QuickAccessState::Default) {
- itemData->quickAccess->openURL(itemData->item, false);
+ if (data) {
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+ HistoryItemData * itemData = reinterpret_cast<HistoryItemData *>(data);
+ if (itemData->quickAccess->m_state == QuickAccessState::Default) {
+ itemData->quickAccess->openURLhistory(itemData->item, false);
+ }
+ } else {
+ BROWSER_LOGW("[%s] data = nullptr", __PRETTY_FUNCTION__);
}
+
}
void QuickAccess::_check_state_changed(void *data, Evas_Object *obj, void *)
#include "service_macros.h"
#include "services/HistoryService/HistoryItem.h"
#include "services/HistoryService/HistoryItemTypedef.h"
-#include "BookmarkItem.h"
+#include "QuickAccessItem.h"
#include "Tools/EflTools.h"
namespace tizen_browser{
};
class BROWSER_EXPORT QuickAccess
- : public tizen_browser::core::AbstractService
+ : public core::AbstractService
, public interfaces::AbstractRotatable
{
public:
void setQuickAccessState(QuickAccessState state) {m_state = state;}
QuickAccessState getQuickAccessState() {return m_state;}
void setMostVisitedItems(std::shared_ptr<services::HistoryItemVector> vec);
- void setQuickAccessItems(std::vector<std::shared_ptr<tizen_browser::services::BookmarkItem> > vec);
+ void setQuickAccessItems(services::SharedQuickAccessItemVector vec);
void hideUI();
void showUI();
virtual std::string getName();
void deleteSelectedMostVisitedItems();
void editingFinished();
- boost::signals2::signal<void (std::shared_ptr<tizen_browser::services::HistoryItem>, bool)>
- openURL;
+ boost::signals2::signal<void (services::SharedQuickAccessItem, bool)> openURLquickaccess;
+ boost::signals2::signal<void (std::shared_ptr<services::HistoryItem>, bool)> openURLhistory;
boost::signals2::signal<void ()> getMostVisitedItems;
boost::signals2::signal<void ()> getQuickAccessItems;
boost::signals2::signal<void ()> addQuickAccessClicked;
boost::signals2::signal<void ()> switchViewToWebPage;
- boost::signals2::signal<void (std::shared_ptr<tizen_browser::services::BookmarkItem>)>
- deleteQuickAccessItem;
- boost::signals2::signal<void (std::shared_ptr<tizen_browser::services::HistoryItem>, int)>
- removeMostVisitedItem;
+ boost::signals2::signal<void (services::SharedQuickAccessItem)> deleteQuickAccessItem;
+ boost::signals2::signal<void (std::shared_ptr<services::HistoryItem>, int)> removeMostVisitedItem;
boost::signals2::signal<void (int)> sendSelectedMVItemsCount;
private:
struct HistoryItemData
{
- std::shared_ptr<tizen_browser::services::HistoryItem> item;
+ std::shared_ptr<services::HistoryItem> item;
QuickAccess* quickAccess;
};
- struct BookmarkItemData
+ struct QuickAccessItemData
{
- std::shared_ptr<tizen_browser::services::BookmarkItem> item;
+ services::SharedQuickAccessItem item;
QuickAccess* quickAccess;
};
void createItemClasses();
void addMostVisitedItem(std::shared_ptr<services::HistoryItem>);
- void addQuickAccessItem(std::shared_ptr<tizen_browser::services::BookmarkItem>);
+ void addQuickAccessItem(services::SharedQuickAccessItem);
void clearMostVisitedGengrid();
void clearQuickAccessGengrid();
Evas_Object* createQuickAccessGengrid(Evas_Object *parent);
void createMostVisitedView(Evas_Object *parent);
void createQuickAccessView(Evas_Object *parent);
- 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 _grid_bookmark_del(void *data, Evas_Object *obj);
+ static Evas_Object * _grid_quickaccess_content_get(void *data, Evas_Object *obj, const char *part);
+ static void _grid_quickaccess_del(void *data, Evas_Object *obj);
static void __quckAccess_del_clicked(void *data, Evas_Object *, void *);
static char* _grid_mostVisited_text_get(void *data, Evas_Object *obj, const char *part);
static Evas_Object * _grid_mostVisited_content_get(void *data, Evas_Object *obj, const char *part);
Evas_Object* m_index;
Evas_Object* m_verticalScroller;
Elm_Gengrid_Item_Class * m_quickAccess_tile_class;
- std::list<std::shared_ptr<tizen_browser::services::HistoryItem>> m_mv_delete_list;
+ std::list<std::shared_ptr<services::HistoryItem>> m_mv_delete_list;
bool m_landscapeView;
static const int MOST_VISITED_PAGE = 1;
static const int QUICKACCESS_PAGE = 0;
- static const int BOOKMARK_ITEM_WIDTH = 150;
- static const int BOOKAMRK_ITEM_HEIGHT = 204;
- static const int BOOKMARK_ITEM_WIDTH_LANDSCAPE = 150;
- static const int BOOKAMRK_ITEM_HEIGHT_LANDSCAPE = 204;
+ static const int QUICKACCESS_ITEM_WIDTH = 150;
+ static const int QUICKACCESS_ITEM_HEIGHT = 204;
+ static const int QUICKACCESS_ITEM_WIDTH_LANDSCAPE = 150;
+ static const int QUICKACCESS_ITEM_HEIGHT_LANDSCAPE = 204;
static const int MOSTVISITED_ITEM_WIDTH = 200;
static const int MOSTVISITED_ITEM_HEIGHT = 208;
static const int MOSTVISITED_ITEM_WIDTH_LANDSCAPE = 200;
m_webPageUI->switchToDesktopMode.connect(boost::bind(&SimpleUI::switchToDesktopMode, this));
m_webPageUI->quickAccessEdit.connect(boost::bind(&SimpleUI::editQuickAccess, this));
m_webPageUI->deleteMostVisited.connect(boost::bind(&SimpleUI::deleteMostVisited, this));
- m_webPageUI->addToQuickAccess.connect(boost::bind(&SimpleUI::addQuickAccess, this));
+ m_webPageUI->addToQuickAccess.connect(boost::bind(&SimpleUI::addQuickAccessItem, this, _1, _2));
+ m_webPageUI->getTitle.connect(boost::bind(&basic_webengine::AbstractWebEngine::getTitle, m_webEngine.get()));
m_webPageUI->getEngineState.connect(boost::bind(&basic_webengine::AbstractWebEngine::getState, m_webEngine.get()));
// WPA
m_webPageUI->requestCurrentPageForWebPageUI.connect(boost::bind(&SimpleUI::requestSettingsCurrentPage, this));
void SimpleUI::connectQuickAccessSignals()
{
M_ASSERT(m_quickAccess.get());
- m_quickAccess->openURL.connect(boost::bind(&SimpleUI::openURL, this, _1, _2));
+ m_quickAccess->openURLquickaccess.connect(boost::bind(&SimpleUI::openURLquickaccess, this, _1, _2));
+ m_quickAccess->openURLhistory.connect(boost::bind(&SimpleUI::openURLhistory, this, _1, _2));
m_quickAccess->getMostVisitedItems.connect(boost::bind(&SimpleUI::onMostVisitedClicked, this));
m_quickAccess->getQuickAccessItems.connect(boost::bind(&SimpleUI::onQuickAccessClicked, this));
m_quickAccess->switchViewToWebPage.connect(boost::bind(&SimpleUI::switchViewToWebPage, this));
m_quickAccess->addQuickAccessClicked.connect(boost::bind(&SimpleUI::onNewQuickAccessClicked, this));
- m_quickAccess->deleteQuickAccessItem.connect(boost::bind(&SimpleUI::onBookmarkDeleted, this, _1));
+ m_quickAccess->deleteQuickAccessItem.connect(boost::bind(&SimpleUI::onQuickAccessDeleted, this, _1));
m_quickAccess->removeMostVisitedItem.connect(
boost::bind(&SimpleUI::setMostVisitedFrequencyValue, this, _1, _2));
m_quickAccess->sendSelectedMVItemsCount.connect(
m_bookmarkFlowUI->editBookmark.connect(boost::bind(&SimpleUI::editBookmark, this, _1));
m_bookmarkFlowUI->showSelectFolderUI.connect(boost::bind(&SimpleUI::showBookmarkManagerUI, this,
_1, BookmarkManagerState::SelectFolder));
+ m_bookmarkFlowUI->addToQuickAccess.connect(boost::bind(&SimpleUI::addQuickAccessItem, this, _1, _2));
}
void SimpleUI::connectBookmarkManagerSignals()
bool SimpleUI::checkQuickAccess()
{
BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
- //TODO: switch this to quickaccess database when it will be implemented
- return checkBookmark();
+ return m_storageService->getQuickAccessStorage().quickAccessItemExist(m_webEngine->getURI());
}
-void SimpleUI::openURL(std::shared_ptr<tizen_browser::services::HistoryItem> historyItem, bool desktopMode)
+void SimpleUI::openURLhistory(std::shared_ptr<tizen_browser::services::HistoryItem> historyItem, bool desktopMode)
{
openURL(historyItem->getUrl(), historyItem->getTitle(), desktopMode);
}
+void SimpleUI::openURLquickaccess(services::SharedQuickAccessItem quickaccessItem, bool desktopMode)
+{
+ openURL(quickaccessItem->getUrl(), quickaccessItem->getTitle(), desktopMode);
+}
+
void SimpleUI::openURL(const std::string& url)
{
// TODO: desktop mode should be checked in WebView or QuickAcces
void SimpleUI::onQuickAccessClicked()
{
BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
- //TODO: Elements added here shouldn't be bookmark items, but quick access items.
- m_quickAccess->setQuickAccessItems(
- m_favoriteService->getAllBookmarkItems(m_favoriteService->getQuickAccessRoot()));
+ m_quickAccess->setQuickAccessItems(m_storageService->getQuickAccessStorage().getQuickAccessList());
}
-void SimpleUI::onBookmarkClicked(std::shared_ptr<tizen_browser::services::BookmarkItem> bookmarkItem)
+void SimpleUI::onBookmarkClicked(services::SharedBookmarkItem bookmarkItem)
{
BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
}
}
-void SimpleUI::onBookmarkEdit(std::shared_ptr<services::BookmarkItem> bookmarkItem)
+void SimpleUI::onBookmarkEdit(services::SharedBookmarkItem bookmarkItem)
{
BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
if (bookmarkItem->is_folder()) {
}
}
-void SimpleUI::onBookmarkOrderEdited(std::shared_ptr<tizen_browser::services::BookmarkItem> bookmarkItem)
+void SimpleUI::onBookmarkOrderEdited(services::SharedBookmarkItem bookmarkItem)
{
BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
m_favoriteService->editBookmark(bookmarkItem->getId(), "", "", -1, bookmarkItem->getOrder());
}
-void SimpleUI::onBookmarkDeleted(std::shared_ptr<tizen_browser::services::BookmarkItem> bookmarkItem)
+void SimpleUI::onBookmarkDeleted(services::SharedBookmarkItem bookmarkItem)
{
BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
m_favoriteService->deleteBookmark(bookmarkItem->getId());
void SimpleUI::onNewQuickAccessClicked()
{
BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
- //TODO: Implement it right with a correct functionality.
auto inputPopup = InputPopup::createPopup(
m_viewManager.getContent(),
"Add to Quick access",
_("IDS_BR_SK_CANCEL_ABB"));
// TODO Add missing translations
inputPopup->setTip(_("Enter web address"));
- inputPopup->button_clicked.connect(boost::bind(&SimpleUI::addQuickAccessItem, this, _1)); //TODO: connect new function
- inputPopup->popupShown.connect(boost::bind(&SimpleUI::showPopup, this, _1)); //TODO: connect new function
- inputPopup->popupDismissed.connect(boost::bind(&SimpleUI::dismissPopup, this, _1)); //TODO: connect new function
+ inputPopup->button_clicked.connect(boost::bind(&SimpleUI::addQuickAccessItem, this, _1, ""));
+ inputPopup->popupShown.connect(boost::bind(&SimpleUI::showPopup, this, _1));
+ inputPopup->popupDismissed.connect(boost::bind(&SimpleUI::dismissPopup, this, _1));
inputPopup->show();
}
-void SimpleUI::addQuickAccessItem(const std::string& name)
+void SimpleUI::addQuickAccessItem(const string &urlArg, const string &titleArg)
{
BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
- std::string url = name;
- std::string title;
+ bool showQA = false;
+ std::string url = urlArg;
+ std::string title = titleArg;
- //TODO: extract all prefixes to external file
- if (!strncmp(name.c_str(), "http://", strlen("http://")))
- title = name.substr(strlen("http://"), std::string::npos);
- else if (!strncmp(name.c_str(), "https://", strlen("https://")))
- title = name.substr(strlen("https://"), std::string::npos);
- else if (!strncmp(name.c_str(), "ftp://", strlen("ftp://")))
- title = name.substr(strlen("ftp://"), std::string::npos);
- else {
- url = std::string("http://") + name;
- title = name;
+ if (url.compare(0, tools::PROTOCOL_HTTP.length(), tools::PROTOCOL_HTTP))
+ url = std::string(tools::PROTOCOL_HTTP) + url;
+
+ if (titleArg.empty()) {
+ title = urlArg;
+ showQA = true;
}
- m_favoriteService->addBookmark(url, title, std::string(),
- std::shared_ptr<tizen_browser::tools::BrowserImage>(),
- std::shared_ptr<tizen_browser::tools::BrowserImage>(), m_favoriteService->getQuickAccessRoot());
- showQuickAccess();
+ if (!title.compare(0, tools::PROTOCOL_HTTP.length(), tools::PROTOCOL_HTTP))
+ title = title.substr(tools::PROTOCOL_HTTP.length(), std::string::npos);
+ else if (!title.compare(0, tools::PROTOCOL_HTTPS.length(), tools::PROTOCOL_HTTPS))
+ title = title.substr(tools::PROTOCOL_HTTPS.length(), std::string::npos);
+ else if (!title.compare(0, tools::PROTOCOL_FTP.length(), tools::PROTOCOL_FTP))
+ title = title.substr(tools::PROTOCOL_FTP.length(), std::string::npos);
+
+ //TODO: add support for reorder, color and images
+ m_storageService->getQuickAccessStorage().addQuickAccessItem(url, title, 0, 0, false);
+
+ if (showQA)
+ showQuickAccess();
+
+ //TODO: display toast message
+}
+
+void SimpleUI::onQuickAccessDeleted(services::SharedQuickAccessItem quickaccessItem)
+{
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+ m_storageService->getQuickAccessStorage().deleteQuickAccessItem(quickaccessItem->getId());
+}
+
+void SimpleUI::editQuickAccess()
+{
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+ m_quickAccess->editQuickAccess();
+ pushViewToStack(m_webPageUI->getQuickAccessEditUI());
+}
+
+void SimpleUI::deleteMostVisited()
+{
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+ m_quickAccess->deleteMostVisited();
+ pushViewToStack(m_webPageUI->getQuickAccessEditUI());
}
void SimpleUI::onDeleteFolderClicked(const std::string& folder_name)
popup->show();
}
-void SimpleUI::onRemoveFoldersClicked(std::vector<std::shared_ptr<tizen_browser::services::BookmarkItem>> items)
+void SimpleUI::onRemoveFoldersClicked(services::SharedBookmarkItemList items)
{
BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
for (auto it = items.begin(); it != items.end(); ++it) {
}
}
-void SimpleUI::editQuickAccess()
-{
- BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
- m_quickAccess->editQuickAccess();
- pushViewToStack(m_webPageUI->getQuickAccessEditUI());
-}
-
-void SimpleUI::deleteMostVisited()
-{
- BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
- m_quickAccess->deleteMostVisited();
- pushViewToStack(m_webPageUI->getQuickAccessEditUI());
-}
-
-void SimpleUI::addQuickAccess()
-{
- BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
- BookmarkUpdate item;
- item.folder_id = m_favoriteService->getQuickAccessRoot();
- item.old_url = "";
- item.title = m_webEngine->getTitle();
- item.url = m_webEngine->getURI();
-
- //TODO: extract all prefixes to external file
- if (!strncmp(item.title.c_str(), "http://", strlen("http://")))
- item.title = item.title.substr(strlen("http://"), std::string::npos);
- else if (!strncmp(item.title.c_str(), "https://", strlen("https://")))
- item.title = item.title.substr(strlen("https://"), std::string::npos);
- else if (!strncmp(item.title.c_str(), "ftp://", strlen("ftp://")))
- item.title = item.title.substr(strlen("ftp://"), std::string::npos);
-
- addBookmark(item);
-
- //TODO: display toast message
-}
-
void SimpleUI::showBookmarkFlowUI()
{
BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
void setMostVisitedFrequencyValue(std::shared_ptr<tizen_browser::services::HistoryItem> historyItem,
int visitFrequency);
- void onBookmarkClicked(std::shared_ptr<tizen_browser::services::BookmarkItem> bookmarkItem);
+ void onBookmarkClicked(services::SharedBookmarkItem bookmarkItem);
void onNewQuickAccessClicked();
- void addQuickAccessItem(const std::string &name);
- void onBookmarkEdit(std::shared_ptr<tizen_browser::services::BookmarkItem> bookmarkItem);
- void onBookmarkOrderEdited(std::shared_ptr<tizen_browser::services::BookmarkItem> bookmarkItem);
- void onBookmarkDeleted(std::shared_ptr<tizen_browser::services::BookmarkItem> bookmarkItem);
+ void addQuickAccessItem(const std::string &urlArg, const std::string &titleArg);
+ void onQuickAccessDeleted(services::SharedQuickAccessItem quickaccessItem);
+ void editQuickAccess();
+ void deleteMostVisited();
+ void onBookmarkEdit(services::SharedBookmarkItem bookmarkItem);
+ void onBookmarkOrderEdited(services::SharedBookmarkItem bookmarkItem);
+ void onBookmarkDeleted(services::SharedBookmarkItem bookmarkItem);
void onNewFolderClicked(int parent);
void onNewFolderPopupClick(const std::string& folder_name, int parent);
void onDeleteFolderClicked(const std::string& folder_name);
- void onRemoveFoldersClicked(std::vector<std::shared_ptr<services::BookmarkItem>> items);
- void onEditFolderPopupClicked(const std::string& newName, std::shared_ptr<services::BookmarkItem> item);
+ void onRemoveFoldersClicked(services::SharedBookmarkItemList items);
+ void onEditFolderPopupClicked(const std::string& newName, services::SharedBookmarkItem item);
void onDeleteFolderPopupClicked(PopupButtons button);
static void onUrlIMEOpened(void* data, Evas_Object*, void*);
static void onUrlIMEClosed(void* data, Evas_Object*, void*);
void onHistoryRemoved(const std::string& uri);
- void openURL(std::shared_ptr<tizen_browser::services::HistoryItem> historyItem, bool desktopMode);
+ void openURLhistory(std::shared_ptr<tizen_browser::services::HistoryItem> historyItem, bool desktopMode);
+ void openURLquickaccess(services::SharedQuickAccessItem quickaccessItem, bool desktopMode);
/**
* @brief Handles 'openUrlInNewTab' signals. Uses QuickAccess to indicate
* desktop/mobile mode.
void refetchTabUIData();
void switchToMobileMode();
void switchToDesktopMode();
- void editQuickAccess();
- void deleteMostVisited();
- void addQuickAccess();
Evas_Object* showHistoryUI(Evas_Object* parent, SharedNaviframeWrapper naviframe, bool removeMode = false);
void showSettings(unsigned);
void onDefSearchEngineClicked();
DriverManager.cpp
Field.cpp
FoldersStorage.cpp
+ QuickAccessStorage.cpp
CertificateStorage.cpp
SQLTransactionScope.cpp
DBTools.cpp
--- /dev/null
+/*
+ * Copyright (c) 2016 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/any.hpp>
+#include <boost/format.hpp>
+
+#include "Field.h"
+#include "BrowserLogger.h"
+#include "DriverManager.h"
+#include "DBTools.h"
+#include "Config.h"
+#include "StorageExceptionInitialization.h"
+#include "SQLTransactionScope.h"
+
+
+#include "QuickAccessStorage.h"
+
+namespace {
+// ------ Database QUICKACCESS ------
+const std::string TABLE_QUICKACCESS = "QUICKACCESS";
+const std::string COL_ID = "ID";
+const std::string COL_URL = "URL";
+const std::string COL_TITLE = "TITLE";
+const std::string COL_COLOR = "COLOR";
+const std::string COL_ORDER = "QA_ORDER";
+const std::string COL_HAS_FAVICON = "HAS_FAVICON";
+const std::string COL_FAVICON = "FAVICON";
+
+const std::string CREATE_TABLE_QUICKACCESS
+ = "CREATE TABLE " + TABLE_QUICKACCESS
+ + " ( " + COL_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, "
+ + COL_URL + " TEXT UNIQUE, "
+ + COL_TITLE + " TEXT, "
+ + COL_COLOR + " INTEGER, "
+ + COL_ORDER + " INTEGER NOT NULL, "
+ + COL_HAS_FAVICON + " INTEGER "
+ + " );";
+// ------ (end) Database QUICKACCESS ------
+}
+
+namespace tizen_browser {
+namespace storage {
+
+QuickAccessStorage::QuickAccessStorage()
+ : m_isInitialized(false)
+ , m_dbQuickAccessInitialized(false)
+{
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+ init();
+}
+
+void QuickAccessStorage::init()
+{
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+ if (m_isInitialized)
+ return;
+
+ std::string resourceDbDir(boost::any_cast<std::string> (tizen_browser::config::Config::getInstance().get("resourcedb/dir")));
+ std::string quickaccessDb(boost::any_cast<std::string> (tizen_browser::config::Config::getInstance().get("DB_QUICKACCESS")));
+ DB_QUICKACCESS = resourceDbDir + quickaccessDb;
+ BROWSER_LOGD("[%s:%d] DB_QUICKACCESS=%s", __PRETTY_FUNCTION__, __LINE__, DB_QUICKACCESS.c_str());
+ try {
+ initDatabaseQuickAccess(DB_QUICKACCESS);
+ } catch (storage::StorageExceptionInitialization & e) {
+ BROWSER_LOGE("[%s:%d] Cannot initialize database %s!", __PRETTY_FUNCTION__, __LINE__, DB_QUICKACCESS.c_str());
+ }
+ m_isInitialized = true;
+}
+
+void QuickAccessStorage::addQuickAccessItem(const std::string &url, const std::string &title, int color, int order, bool hasFavicon)
+{
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+ int hasFaviconInt = hasFavicon ? 1 : 0; // Convert to int bacause of SQLite doesn't have bool type.
+ boost::format addQuickAccessItemQueryString("INSERT OR REPLACE INTO %1% (%2%, %3%, %4%, %5%, %6%) VALUES (?, ?, ?, ?, ?);");
+ addQuickAccessItemQueryString % TABLE_QUICKACCESS % COL_URL % COL_TITLE % COL_COLOR % COL_ORDER % COL_HAS_FAVICON;
+ try {
+ storage::SQLTransactionScope scope(storage::DriverManager::getDatabase(DB_QUICKACCESS));
+ std::shared_ptr<storage::SQLDatabase> db = scope.database();
+ storage::SQLQuery addQuickAccessItemQuery(db->prepare(addQuickAccessItemQueryString.str()));
+ addQuickAccessItemQuery.bindText(1, url);
+ addQuickAccessItemQuery.bindText(2, title);
+ addQuickAccessItemQuery.bindInt(3, color);
+ addQuickAccessItemQuery.bindInt(4, order);
+ addQuickAccessItemQuery.bindInt(5, hasFaviconInt);
+ addQuickAccessItemQuery.exec();
+ } catch (storage::StorageException &e) {
+ BROWSER_LOGD("[%s:%d] SQLException (%d): %s ", __PRETTY_FUNCTION__, __LINE__, e.getErrorCode(), e.getMessage());
+ }
+}
+
+void QuickAccessStorage::deleteQuickAccessItem(unsigned int id)
+{
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+ boost::format deleteQuickAccessItemQueryString("DELETE FROM %1% WHERE %2% = ?;");
+ deleteQuickAccessItemQueryString % TABLE_QUICKACCESS % COL_ID;
+ try {
+ storage::SQLTransactionScope scope(storage::DriverManager::getDatabase(DB_QUICKACCESS));
+ std::shared_ptr<storage::SQLDatabase> db = scope.database();
+ storage::SQLQuery deleteQuickAccessItemQuery(db->prepare(deleteQuickAccessItemQueryString.str()));
+ deleteQuickAccessItemQuery.bindInt(1, id);
+ deleteQuickAccessItemQuery.exec();
+ } catch (storage::StorageException &e) {
+ BROWSER_LOGD("[%s:%d] SQLException (%d): %s ", __PRETTY_FUNCTION__, __LINE__, e.getErrorCode(), e.getMessage());
+ }
+}
+
+unsigned int QuickAccessStorage::getQuickAccessCount()
+{
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+ boost::format getCountString("SELECT COUNT (*) FROM " + TABLE_QUICKACCESS + " ;");
+ try {
+ storage::SQLTransactionScope scope(storage::DriverManager::getDatabase(DB_QUICKACCESS));
+ std::shared_ptr<storage::SQLDatabase> db = scope.database();
+ storage::SQLQuery getCountQuery(db->prepare(getCountString.str()));
+ getCountQuery.exec();
+ return getCountQuery.getInt(0);
+ } catch (storage::StorageException &e) {
+ BROWSER_LOGD("[%s:%d] SQLException (%d): %s ", __PRETTY_FUNCTION__, __LINE__, e.getErrorCode(), e.getMessage());
+ }
+ return 0;
+}
+
+bool QuickAccessStorage::quickAccessItemExist(const std::string &url)
+{
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+ boost::format isItemExistString("SELECT COUNT(*) FROM %1% WHERE %2% = ?;");
+ isItemExistString % TABLE_QUICKACCESS % COL_URL;
+ try {
+ storage::SQLTransactionScope scope(storage::DriverManager::getDatabase(DB_QUICKACCESS));
+ std::shared_ptr<storage::SQLDatabase> db = scope.database();
+ storage::SQLQuery isItemExistQuery(db->prepare(isItemExistString.str()));
+ isItemExistQuery.bindText(1, url);
+ isItemExistQuery.exec();
+ return static_cast<bool>(isItemExistQuery.getInt(0));
+ } catch (storage::StorageException &e) {
+ BROWSER_LOGD("[%s:%d] SQLException (%d): %s ", __PRETTY_FUNCTION__, __LINE__, e.getErrorCode(), e.getMessage());
+ }
+ return false;
+}
+
+services::SharedQuickAccessItemVector QuickAccessStorage::getQuickAccessList()
+{
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+ services::SharedQuickAccessItemVector QAList;
+ int QACount = getQuickAccessCount();
+ if (QACount > 0) {
+ boost::format getQuickAccessListString("SELECT %1%, %2%, %3%, %4%, %5%, %6% FROM %7% ;");
+ getQuickAccessListString % COL_ID % COL_URL % COL_TITLE % COL_COLOR % COL_ORDER % COL_HAS_FAVICON % TABLE_QUICKACCESS;
+ try {
+ storage::SQLTransactionScope scope(storage::DriverManager::getDatabase(DB_QUICKACCESS));
+ std::shared_ptr<storage::SQLDatabase> db = scope.database();
+ storage::SQLQuery getQuickAccesListQuery(db->prepare(getQuickAccessListString.str()));
+ getQuickAccesListQuery.exec();
+
+ for (int i = 0; i < QACount; i++) {
+ services::SharedQuickAccessItem QuickAccesItem = std::make_shared<services::QuickAccessItem>(
+ getQuickAccesListQuery.getInt(0),
+ getQuickAccesListQuery.getString(1),
+ getQuickAccesListQuery.getString(2),
+ getQuickAccesListQuery.getInt(3),
+ getQuickAccesListQuery.getInt(4),
+ static_cast<bool>(getQuickAccesListQuery.getInt(5)));
+ QAList.push_back(QuickAccesItem);
+ getQuickAccesListQuery.next();
+ }
+ } catch (storage::StorageException& e){
+ BROWSER_LOGD("[%s:%d] SQLException (%d): %s ", __PRETTY_FUNCTION__, __LINE__, e.getErrorCode(), e.getMessage());
+ }
+ }
+ return QAList;
+}
+
+void QuickAccessStorage::initDatabaseQuickAccess(const std::string &db_str)
+{
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+ if (!m_dbQuickAccessInitialized) {
+ try {
+ dbtools::checkAndCreateTable(db_str, TABLE_QUICKACCESS, CREATE_TABLE_QUICKACCESS);
+ } catch (storage::StorageException &e) {
+ throw storage::StorageExceptionInitialization(e.getMessage(), e.getErrorCode());
+ }
+
+ m_dbQuickAccessInitialized = true;
+ }
+
+ M_ASSERT(m_dbQuickAccessInitialized);
+}
+
+
+}//end namespace storage
+}//end namespace tizen_browser
+
--- /dev/null
+/*
+ * Copyright (c) 2016 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 QUICKACCESSSTORAGE_H
+#define QUICKACCESSSTORAGE_H
+
+#include "QuickAccessItem.h"
+#include "SQLDatabase.h"
+
+namespace tizen_browser {
+namespace storage {
+
+class QuickAccessStorage
+{
+public:
+
+ QuickAccessStorage();
+ void init();
+ void addQuickAccessItem(const std::string &url, const std::string &title, int color, int order, bool hasFavicon);
+ void deleteQuickAccessItem(unsigned int id);
+ unsigned int getQuickAccessCount();
+ bool quickAccessItemExist(const std::string &url);
+ services::SharedQuickAccessItemVector getQuickAccessList();
+
+private:
+
+ void initDatabaseQuickAccess(const std::string &db_str);
+ bool m_isInitialized;
+ bool m_dbQuickAccessInitialized;
+ std::string DB_QUICKACCESS;
+};
+
+}//end namespace storage
+}//end namespace tizen_browser
+
+#endif // QUICKACCESSSTORAGE_H
#include "SettingsStorage.h"
#include "FoldersStorage.h"
#include "CertificateStorage.h"
+#include "QuickAccessStorage.h"
#define DOMAIN_STORAGE_SERVICE "org.tizen.browser.storageservice"
storage::SettingsStorage& getSettingsStorage() { return m_settingsStorage; }
storage::FoldersStorage& getFoldersStorage() { return m_foldersStorage; }
storage::CertificateStorage& getCertificateStorage() { return m_certificateStorage; }
+ storage::QuickAccessStorage& getQuickAccessStorage() { return m_quickaccessStorage; }
private:
storage::SettingsStorage m_settingsStorage;
storage::FoldersStorage m_foldersStorage;
storage::CertificateStorage m_certificateStorage;
+ storage::QuickAccessStorage m_quickaccessStorage;
};
#include <boost/optional.hpp>
#include <web/web_tab.h>
#include "TabIdTypedef.h"
-#include "BrowserImageTypedef.h"
+#include "BrowserImage.h"
#include "AbstractWebEngine/TabOrigin.h"
namespace tizen_browser {
if (data != nullptr) {
WebPageUI* webPageUI = static_cast<WebPageUI*>(data);
_cm_dismissed(nullptr, webPageUI->m_ctxpopup, nullptr);
- webPageUI->addToQuickAccess();
+ auto signal = webPageUI->getTitle();
+ if (signal)
+ webPageUI->addToQuickAccess(webPageUI->getURI(), *signal);
+ else
+ BROWSER_LOGW("Signal does not exist!");
} else
BROWSER_LOGW("[%s] data = nullptr", __PRETTY_FUNCTION__);
}
boost::signals2::signal<void ()> switchToDesktopMode;
boost::signals2::signal<void ()> quickAccessEdit;
boost::signals2::signal<void ()> deleteMostVisited;
- boost::signals2::signal<void ()> addToQuickAccess;
+ boost::signals2::signal<void (std::string, std::string)> addToQuickAccess;
+ boost::signals2::signal<std::string ()> getTitle;
boost::signals2::signal<bool ()> isMostVisited;
boost::signals2::signal<bool ()> isFindOnPageVisible;