Elm_Gengrid_Item_Class * m_item_class;
std::map<ItemType,Elm_Object_Item*> m_map_menu_views;
std::string m_edjFilePath;
- bool m_gengridSetup;
bool m_desktopMode;
#if PROFILE_MOBILE
bool m_shouldShowFindOnPage;
, m_currPage(QuickAccess::QUICKACCESS_PAGE)
, m_quickAccess_item_class(nullptr)
, m_mostVisited_item_class(nullptr)
+ , m_state(QuickAccessState::Default)
, m_index(nullptr)
, m_verticalScroller(nullptr)
, m_quickAccess_tile_class(nullptr)
void QuickAccess::createBox(Evas_Object* parent)
{
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
if (m_box)
elm_box_clear(m_box);
m_box = elm_box_add(parent);
evas_object_show(m_mostVisitedGengrid);
}
-void QuickAccess::createQuickAccessView (Evas_Object * parent)
+void QuickAccess::createQuickAccessView(Evas_Object * parent)
{
BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
}
}
- if (!strcmp(part, "elm.button")) {
- auto button = elm_button_add(obj);
- elm_object_style_set(button, "delete_button");
- evas_object_smart_callback_add(button, "clicked", __quckAccess_del_clicked, data);
- return button;
+ if (itemData->quickAccess->m_state == QuickAccessState::Edit) {
+ if (!strcmp(part, "elm.button")) {
+ auto button = elm_button_add(obj);
+ elm_object_style_set(button, "delete_button");
+ evas_object_smart_callback_add(button, "clicked", __quckAccess_del_clicked, data);
+ return button;
+ }
}
}
return nullptr;
BROWSER_LOGD("[%s:%d] part=%s", __PRETTY_FUNCTION__, __LINE__);
auto itemData = static_cast<BookmarkItemData*>(data);
itemData->quickAccess->deleteQuickAccessItem(itemData->item);
+
+ elm_object_item_del(elm_gengrid_selected_item_get(itemData->quickAccess->m_quickAccessGengrid));
+ elm_gengrid_realized_items_update(itemData->quickAccess->m_quickAccessGengrid);
}
char *QuickAccess::_grid_mostVisited_text_get(void *data, Evas_Object *, const char *part)
{
BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
HistoryItemData * itemData = reinterpret_cast<HistoryItemData *>(data);
- itemData->quickAccess->openURL(itemData->item, itemData->quickAccess->isDesktopMode());
- itemData->quickAccess->m_after_history_thumb = false;
+ if (itemData->quickAccess->m_state == QuickAccessState::Default) {
+ itemData->quickAccess->openURL(itemData->item, itemData->quickAccess->isDesktopMode());
+ itemData->quickAccess->m_after_history_thumb = false;
+ }
}
void QuickAccess::_thumbMostVisitedClicked(void* data, Evas_Object*, void*)
void QuickAccess::editQuickAccess()
{
BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
-
+ m_state = QuickAccessState::Edit;
+ showUI();
elm_gengrid_reorder_mode_set(m_quickAccessGengrid, EINA_TRUE);
+}
- //TODO: show delete buttons in corners
-
+void QuickAccess::editingFinished()
+{
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+ elm_gengrid_reorder_mode_set(m_quickAccessGengrid, EINA_FALSE);
+ m_state = QuickAccessState::Default;
+ showUI();
}
void QuickAccess::showScrollerPage(int page)
void QuickAccess::showUI()
{
BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
-
- bool currentViewLandscape = isOrientationLandscape();
- if (currentViewLandscape != m_landscapeView) {
- m_landscapeView = currentViewLandscape;
- createBox(m_horizontalScroller);
- }
-
- evas_object_show(m_layout);
- getMostVisitedItems();
- getQuickAccessItems();
+ orientationChanged();
showScrollerPage(m_currPage);
}
void QuickAccess::hideUI()
{
BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
- evas_object_hide(m_layout);
- clearMostVisitedGengrid();
- clearQuickAccessGengrid();
+ if (m_state == QuickAccessState::Default) {
+ evas_object_hide(m_layout);
+ clearMostVisitedGengrid();
+ clearQuickAccessGengrid();
+ }
}
void QuickAccess::showNoMostVisitedLabel()
#include "services/HistoryService/HistoryItem.h"
#include "services/HistoryService/HistoryItemTypedef.h"
#include "BookmarkItem.h"
+#include "NaviframeWrapper.h"
namespace tizen_browser{
namespace base_ui{
+enum class QuickAccessState {
+ Default,
+ Edit,
+};
+
class BROWSER_EXPORT QuickAccess
: public tizen_browser::core::AbstractService
, public interfaces::AbstractRotatable
~QuickAccess();
void init(Evas_Object *main_layout);
Evas_Object* getContent();
+ Evas_Object* getQuickAccessGengrid() {return m_quickAccessGengrid;}
+ void setQuickAccessState(QuickAccessState state) {m_state = state;}
void setMostVisitedItems(std::shared_ptr<services::HistoryItemVector> vec);
void setQuickAccessItems(std::vector<std::shared_ptr<tizen_browser::services::BookmarkItem> > vec);
void hideUI();
void showMostVisited();
void showQuickAccess();
void editQuickAccess();
+ void editingFinished();
boost::signals2::signal<void (std::shared_ptr<tizen_browser::services::HistoryItem>, bool)> openURL;
boost::signals2::signal<void ()> getMostVisitedItems;
Elm_Gengrid_Item_Class * m_quickAccess_item_class;
Elm_Gengrid_Item_Class * m_mostVisited_item_class;
std::shared_ptr<services::HistoryItemVector> m_mostVisitedItems;
- bool m_gengridSetup;
std::string edjFilePath;
bool m_desktopMode;
+ QuickAccessState m_state;
+ SharedNaviframeWrapper m_naviframe;
Evas_Object* m_index;
Evas_Object* m_verticalScroller;
m_webPageUI->forwardPage.connect(boost::bind(&basic_webengine::AbstractWebEngine::forward, m_webEngine.get()));
m_webPageUI->showQuickAccess.connect(boost::bind(&SimpleUI::showQuickAccess, this));
m_webPageUI->hideQuickAccess.connect(boost::bind(&QuickAccess::hideUI, m_quickAccess));
+ m_webPageUI->getQuickAccessEditUI()->requestQuickAccessGengrid.connect(boost::bind(&QuickAccess::getQuickAccessGengrid, m_quickAccess.get()));
+ m_webPageUI->getQuickAccessEditUI()->editingFinished.connect(boost::bind(&QuickAccess::editingFinished, m_quickAccess.get()));
+ m_webPageUI->getQuickAccessEditUI()->closeUI.connect(boost::bind(&SimpleUI::closeTopView, this));
m_webPageUI->focusWebView.connect(boost::bind(&basic_webengine::AbstractWebEngine::setFocus, m_webEngine.get()));
m_webPageUI->unfocusWebView.connect(boost::bind(&basic_webengine::AbstractWebEngine::clearFocus, m_webEngine.get()));
m_webPageUI->bookmarkManagerClicked.connect(boost::bind(&SimpleUI::showBookmarkManagerUI, this,
m_popupVector.back()->onBackPressed();
} else if (m_viewManager.topOfStack() == m_bookmarkManagerUI.get()) {
m_bookmarkManagerUI->onBackPressed();
+ } else if (m_viewManager.topOfStack() == m_webPageUI->getQuickAccessEditUI().get()) {
+ m_webPageUI->getQuickAccessEditUI()->backPressed();
} else if (m_viewManager.topOfStack() == nullptr) {
switchViewToQuickAccess();
} else if ((m_viewManager.topOfStack() == m_webPageUI.get())) {
{
BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
m_quickAccess->editQuickAccess();
+ m_viewManager.pushViewToStack(m_webPageUI->getQuickAccessEditUI().get());
}
void SimpleUI::addQuickAccess()
#include "ViewManager.h"
#include "MenuButton.h"
#include "ProgressiveWebApp.h"
+#include "NaviframeWrapper.h"
namespace tizen_browser{
namespace base_ui{
ViewManager m_viewManager;
Evas_Object *main_window;
ProgressiveWebApp m_pwa;
+ SharedNaviframeWrapper m_QAEditNaviframe;
#if PROFILE_MOBILE
Evas_Object *m_conformant;
int m_current_angle;
WebPageUI.cpp
WebPageUIStatesManager.cpp
ButtonBar.cpp
+ EditQuickAccessUI.cpp
URIEntry.cpp
UrlHistoryList/UrlHistoryList.cpp
UrlHistoryList/GenlistManager.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 "EditQuickAccessUI.h"
+
+#include <Elementary.h>
+#include <AbstractMainWindow.h>
+#include "ServiceManager.h"
+#include "BrowserLogger.h"
+#include "Tools/EflTools.h"
+#include "QuickAccess.h"
+
+namespace tizen_browser{
+namespace base_ui{
+
+EditQuickAccessUI::EditQuickAccessUI()
+ : m_parent(nullptr)
+{
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+}
+
+EditQuickAccessUI::~EditQuickAccessUI()
+{
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+}
+
+void EditQuickAccessUI::showUI()
+{
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+ M_ASSERT(m_naviframe->getLayout());
+ m_naviframe->show();
+}
+
+void EditQuickAccessUI::hideUI()
+{
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+ M_ASSERT(m_naviframe->getLayout());
+ m_naviframe->hide();
+}
+
+void EditQuickAccessUI::init(Evas_Object *parent)
+{
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+ M_ASSERT(parent);
+ m_parent = parent;
+}
+
+Evas_Object *EditQuickAccessUI::getContent()
+{
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+ M_ASSERT(m_parent);
+ if (!m_naviframe)
+ createEditQuickAccessLayout();
+
+ auto signal = requestQuickAccessGengrid();
+ if (signal)
+ m_naviframe->setContent(*signal);
+ else
+ BROWSER_LOGW("Missing signal value");
+
+ return m_naviframe->getLayout();
+}
+
+void EditQuickAccessUI::backPressed()
+{
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+ editingFinished();
+ closeUI();
+}
+
+void EditQuickAccessUI::_cancel_clicked(void *data, Evas_Object *, void *)
+{
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+ auto self = static_cast<EditQuickAccessUI*>(data);
+ self->backPressed();
+}
+
+void EditQuickAccessUI::_done_clicked(void *data, Evas_Object *, void *)
+{
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+ auto self = static_cast<EditQuickAccessUI*>(data);
+ self->editingFinished();
+ //TODO: save reordered items
+ self->closeUI();
+}
+
+void EditQuickAccessUI::createEditQuickAccessLayout()
+{
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+ M_ASSERT(m_parent);
+
+ m_naviframe = std::make_shared<NaviframeWrapper>(m_parent);
+ m_naviframe->setTitle("Edit quick access");
+
+ m_naviframe->addLeftButton(_cancel_clicked, this);
+ m_naviframe->setLeftButtonText("Cancel");
+ m_naviframe->setLeftButtonVisible(true);
+
+ m_naviframe->addRightButton(_done_clicked, this);
+ m_naviframe->setRightButtonText("Done");
+ m_naviframe->setRightButtonVisible(true);
+}
+
+} // namespace tizen_browser
+} // namespace base_ui
+
--- /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 EDITQUICKACCESSUI
+#define EDITQUICKACCESSUI
+
+#include <Evas.h>
+
+#include "AbstractUIComponent.h"
+#include "AbstractService.h"
+#include "AbstractRotatable.h"
+#include "ServiceFactory.h"
+#include "service_macros.h"
+#include "NaviframeWrapper.h"
+#include "QuickAccess.h"
+
+namespace tizen_browser{
+namespace base_ui{
+
+class BROWSER_EXPORT EditQuickAccessUI
+ : public tizen_browser::interfaces::AbstractUIComponent
+{
+public:
+ EditQuickAccessUI();
+ ~EditQuickAccessUI();
+ //AbstractUIComponent interface implementation
+ void showUI();
+ void hideUI();
+ void init(Evas_Object *parent);
+ Evas_Object* getContent();
+ void backPressed();
+
+ boost::signals2::signal<Evas_Object* ()> requestQuickAccessGengrid;
+ boost::signals2::signal<void ()> editingFinished;
+
+private:
+
+ static void _cancel_clicked(void *data, Evas_Object *, void *);
+ static void _done_clicked(void *data, Evas_Object *, void *);
+
+ void createEditQuickAccessLayout();
+ SharedNaviframeWrapper m_naviframe;
+ Evas_Object *m_parent;
+ std::shared_ptr<QuickAccess> m_quickAccess;
+};
+
+} // namespace tizen_browser
+} // namespace base_ui
+
+#endif // EDITQUICKACCESSUI
+
, m_bookmarkManagerButton(nullptr)
, m_statesMgr(std::make_shared<WebPageUIStatesManager>(WPUState::MAIN_WEB_PAGE))
, m_URIEntry(new URIEntry(m_statesMgr))
+ , m_editQuickAccessUI(std::make_shared<EditQuickAccessUI>())
, m_urlHistoryList(std::make_shared<UrlHistoryList>(getStatesMgr()))
, m_webviewLocked(false)
, m_WebPageUIvisible(false)
BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
M_ASSERT(parent);
m_parent = parent;
+ m_editQuickAccessUI->init(parent);
}
Evas_Object* WebPageUI::getContent()
#include "ButtonBar.h"
#include "URIEntry.h"
#include "AbstractWebEngine/State.h"
+#include "EditQuickAccessUI.h"
namespace tizen_browser {
namespace base_ui {
void switchViewToIncognitoPage();
void switchViewToQuickAccess(Evas_Object* content);
URIEntry& getURIEntry() const { return *m_URIEntry.get(); }
+ std::shared_ptr<EditQuickAccessUI> getQuickAccessEditUI() { return m_editQuickAccessUI; }
void setTabsNumber(int tabs);
void setBackButtonEnabled(bool enabled) { m_back->setEnabled(enabled); }
void setForwardButtonEnabled(bool enabled) { m_forward->setEnabled(enabled); }
std::unique_ptr<ButtonBar> m_rightButtonBar;
WPUStatesManagerPtr m_statesMgr;
std::unique_ptr<URIEntry> m_URIEntry;
+ std::shared_ptr<EditQuickAccessUI> m_editQuickAccessUI;
UrlHistoryPtr m_urlHistoryList;
bool m_webviewLocked;
bool m_WebPageUIvisible;