Switching between mobile/desktop mode per tab. 15/47715/3
authorMaciej Skrzypkowski <m.skrzypkows@samsung.com>
Tue, 8 Sep 2015 08:27:34 +0000 (10:27 +0200)
committerJanusz Majnert <j.majnert@samsung.com>
Tue, 8 Sep 2015 09:34:52 +0000 (02:34 -0700)
[Issue#]   https://bugs.tizen.org/jira/browse/TT-132
[Problem]  View mode was set as global flag.
[Cause]    N/A
[Solution] Added flag for each tab to remeber current mode.
[Verify]   Open new tab (google.com), open settings, switch to mobile
           mode, page should reload in mobile view.

Change-Id: I19a6f1965938930b45f46b076ce030f2fe9c10ed
Signed-off-by: Maciej Skrzypkowski <m.skrzypkows@samsung.com>
13 files changed:
core/AbstractWebEngine/AbstractWebEngine.h
services/MainUI/DetailPopup.cpp
services/MainUI/DetailPopup.h
services/MainUI/MainUI.cpp
services/MainUI/MainUI.h
services/MoreMenuUI/MoreMenuUI.cpp
services/MoreMenuUI/MoreMenuUI.h
services/SimpleUI/SimpleUI.cpp
services/SimpleUI/SimpleUI.h
services/WebKitEngineService/WebKitEngineService.cpp
services/WebKitEngineService/WebKitEngineService.h
services/WebKitEngineService/WebView.cpp
services/WebKitEngineService/WebView.h

index 8416229..ea0e663 100644 (file)
@@ -132,9 +132,10 @@ public:
     /**
      * Adds new tab
      * @param uri if not empty opens specified uri
+     * @param desktopMode true if desktop mode, false if mobile mode
      * @return TabId of created tab
      */
-    virtual TabId addTab(const std::string & uri = std::string(), const TabId * openerId = NULL) = 0;
+    virtual TabId addTab(const std::string & uri = std::string(), const TabId * openerId = NULL, bool desktopMode = true) = 0;
 
     /**
      * @param tab id
@@ -257,14 +258,21 @@ public:
     virtual void backButtonClicked() const = 0;
 
     /**
-     * @brief Switch view to mobile
+     * @brief Switch current view to mobile mode
      */
-    virtual void switchToMobileView() = 0;
+    virtual void switchToMobileMode() = 0;
 
     /**
-     * @brief Switch view to desktop
+     * @brief Switch current view to desktop mode
      */
-    virtual void switchToDesktopView() = 0;
+    virtual void switchToDesktopMode() = 0;
+
+    /**
+     * @brief Check if desktop mode is enabled for current view
+     *
+     * @return true if desktop mode is enabled
+     */
+    virtual bool isDesktopMode() const = 0;
 
     /**
      * FavIcon of current page changed
index f3d2ced..4aa5604 100644 (file)
@@ -75,7 +75,6 @@ void DetailPopup::createLayout(Evas_Object *parent)
     evas_object_show(m_layout);
 }
 
-
 void DetailPopup::show(Evas_Object *parent, std::shared_ptr<services::HistoryItem> currItem, std::shared_ptr<services::HistoryItemVector> prevItems)
 {
     BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
@@ -86,6 +85,10 @@ void DetailPopup::show(Evas_Object *parent, std::shared_ptr<services::HistoryIte
 
 void DetailPopup::hide()
 {
+    edje_object_signal_callback_del(elm_layout_edje_get(m_layout), "mouse,clicked,1", "bg", _bg_click);
+    edje_object_signal_callback_del(elm_layout_edje_get(m_layout), "mouse,clicked,1", "url_over", _url_click);
+    edje_object_signal_callback_del(elm_layout_edje_get(m_layout), "mouse,clicked,1", "thumbnail", _url_click);
+    elm_genlist_clear(m_historyList);
     evas_object_hide(m_layout);
 }
 
@@ -101,7 +104,7 @@ void DetailPopup::_url_click(void* data, Evas_Object* obj, const char* emission,
     BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
     DetailPopup *dp = reinterpret_cast<DetailPopup*>(data);
     dp->hide();
-    dp->m_mainUI->openURLInNewTab(dp->m_item);
+    dp->openURLInNewTab(dp->m_item, dp->m_mainUI->isDesktopMode());
 }
 
 char* DetailPopup::_get_history_link_text(void* data, Evas_Object* obj, const char* part)
index 8d24a51..1ad8a02 100644 (file)
@@ -38,7 +38,7 @@ namespace base_ui{
         */
         void show(Evas_Object *parent, std::shared_ptr<services::HistoryItem> currItem, std::shared_ptr<services::HistoryItemVector> prevItems);
 
-        boost::signals2::signal<void (std::shared_ptr<services::HistoryItem>)> openURLInNewTab;
+        boost::signals2::signal<void (std::shared_ptr<tizen_browser::services::HistoryItem>, bool)> openURLInNewTab;
 
         static const int HISTORY_ITEMS_NO;
     private:
index 74a2c52..6dbdbbc 100644 (file)
@@ -130,6 +130,7 @@ void MainUI::show(Evas_Object* parent)
 Evas_Object* MainUI::createQuickAccessLayout(Evas_Object* parent)
 {
     BROWSER_LOGD("%s:%d %s", __FILE__, __LINE__, __func__);
+    m_desktopMode = true;
 
     Evas_Object* layout = elm_layout_add(parent);
     evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
@@ -429,16 +430,6 @@ Evas_Object * MainUI::_grid_bookmark_content_get(void *data, Evas_Object *obj, c
     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->openURLInNewTab(itemData->item);
-}
-
 void MainUI::_thumbSelected(void * data, Evas_Object * /* obj */, void * /* event_info */)
 {
     HistoryItemData * itemData = reinterpret_cast<HistoryItemData *>(data);
@@ -544,5 +535,20 @@ void MainUI::setEmptyView(bool empty)
     }
 }
 
+bool MainUI::isDesktopMode() const
+{
+    return m_desktopMode;
+}
+
+void MainUI::setDesktopMode(bool mode)
+{
+    m_desktopMode = mode;
+}
+
+DetailPopup& MainUI::getDetailPopup()
+{
+    return m_detailPopup;
+}
+
 }
 }
index 352051d..667a844 100644 (file)
@@ -49,13 +49,15 @@ public:
     void showBookmarks();
     void clearItems();
     void openDetailPopup(std::shared_ptr<services::HistoryItem> currItem, std::shared_ptr<services::HistoryItemVector> prevItems);
+    bool isDesktopMode() const;
+    void setDesktopMode(bool mode);
+    DetailPopup & getDetailPopup();
 
     void addHistoryItem(std::shared_ptr<services::HistoryItem>);
     void addHistoryItems(std::shared_ptr<services::HistoryItemVector>);
     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>)> openURLInNewTab;
     boost::signals2::signal<void (std::shared_ptr<tizen_browser::services::HistoryItem>, int)> mostVisitedTileClicked;
     boost::signals2::signal<void (const std::string & )> mostVisitedClicked;
     boost::signals2::signal<void (const std::string & )> bookmarkClicked;
@@ -63,8 +65,8 @@ public:
 
     static const int MAX_TILE_WIDTH;
     static const int MAX_TILE_HEIGHT;
-private:
 
+private:
     void createItemClasses();
 
     Evas_Object* createQuickAccessLayout(Evas_Object *parent);
@@ -82,11 +84,12 @@ private:
     static void _thumbSelected(void * data, Evas_Object * obj, void * event_info);
     static void _deleteBookmark(void *data, Evas_Object *obj, void *event_info);
     void setEmptyView(bool empty);
+    void showNoHistoryLabel();
 
     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_parent;
     Evas_Object *m_layout;
     Evas_Object *m_bookmarksView;
@@ -107,7 +110,7 @@ private:
     std::map<std::string,Elm_Object_Item*> m_map_bookmark_views;
     bool m_gengridSetup;
     std::string edjFilePath;
-    void showNoHistoryLabel();
+    bool m_desktopMode;
 };
 
 }
index 8279289..088ae44 100644 (file)
@@ -48,7 +48,7 @@ MoreMenuUI::MoreMenuUI()
     : m_gengrid(NULL)
     , m_parent(NULL)
     , m_item_class(NULL)
-    , m_desktopView(true)
+    , m_desktopMode(true)
 {
     BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
     m_edjFilePath = EDJE_DIR;
@@ -59,10 +59,11 @@ MoreMenuUI::~MoreMenuUI()
 {
 }
 
-void MoreMenuUI::show(Evas_Object* parent)
+void MoreMenuUI::show(Evas_Object* parent, bool desktopMode)
 {
     BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
     m_parent = parent;
+    m_desktopMode = desktopMode;
     elm_theme_extension_add(NULL, m_edjFilePath.c_str());
     m_mm_layout = elm_layout_add(parent);
     elm_layout_file_set(m_mm_layout, m_edjFilePath.c_str(), "moremenu-layout");
@@ -234,9 +235,9 @@ void MoreMenuUI::addItems()
      for (int i = 0; i <= EXIT_BROWSER; i++) {
          ItemType type = static_cast<ItemType>(i);
          // take proper image for desktop/mobile view
-         if (type == ItemType::VIEW_DESKTOP_WEB && m_desktopView)
+         if (type == ItemType::VIEW_DESKTOP_WEB && m_desktopMode)
              continue;
-         if (type == ItemType::VIEW_MOBILE_WEB && !m_desktopView)
+         if (type == ItemType::VIEW_MOBILE_WEB && !m_desktopMode)
              continue;
 
          MoreMenuItemData *itemData = new MoreMenuItemData();
@@ -441,14 +442,16 @@ void MoreMenuUI::_thumbSelected(void* data, Evas_Object*, void*)
         case FOCUS_MODE:
             break;
         case VIEW_MOBILE_WEB:
-            itemData->moreMenuUI->switchToMobileView();
-            itemData->moreMenuUI->m_desktopView = false;
-            itemData->moreMenuUI->refreshGengrid();
+            itemData->moreMenuUI->switchToMobileMode();
+            itemData->moreMenuUI->m_desktopMode = false;
+            itemData->moreMenuUI->closeMoreMenuClicked(std::string());
+            itemData->moreMenuUI->clearItems();
             break;
         case VIEW_DESKTOP_WEB:
-            itemData->moreMenuUI->switchToDesktopView();
-            itemData->moreMenuUI->m_desktopView = true;
-            itemData->moreMenuUI->refreshGengrid();
+            itemData->moreMenuUI->switchToDesktopMode();
+            itemData->moreMenuUI->m_desktopMode = true;
+            itemData->moreMenuUI->closeMoreMenuClicked(std::string());
+            itemData->moreMenuUI->clearItems();
             break;
         case SHARE:
             break;
@@ -477,13 +480,6 @@ void MoreMenuUI::clearItems()
     elm_cache_all_flush();
 }
 
-void MoreMenuUI::refreshGengrid()
-{
-    elm_gengrid_clear(m_gengrid);
-    m_map_menu_views.clear();
-    addItems();
-}
-
 void MoreMenuUI::_exitClicked()
 {
     BROWSER_LOGD("[%s:%d]", __PRETTY_FUNCTION__, __LINE__);
index a6df318..4bbf489 100644 (file)
@@ -61,7 +61,7 @@ class BROWSER_EXPORT MoreMenuUI
 public:
     MoreMenuUI();
     ~MoreMenuUI();
-    void show(Evas_Object *main_layout);
+    void show(Evas_Object *main_layout, bool desktopMode);
     void showCurrentTab();
     virtual std::string getName();
     void addItems();
@@ -80,8 +80,8 @@ public:
     boost::signals2::signal<void (std::string)> historyUIClicked;
     boost::signals2::signal<void (const std::string&)> settingsClicked;
     boost::signals2::signal<void (std::string)> closeMoreMenuClicked;
-    boost::signals2::signal<void ()> switchToMobileView;
-    boost::signals2::signal<void ()> switchToDesktopView;
+    boost::signals2::signal<void ()> switchToMobileMode;
+    boost::signals2::signal<void ()> switchToDesktopMode;
 private:
     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);
@@ -95,8 +95,6 @@ private:
     void AddBookmarkPopupCalled();
     void addToBookmarks(int folder_id);
 
-    void refreshGengrid();
-
     static void _star_clicked(void *data, Evas_Object *obj, void *event_info);
     static void _close_clicked(void *data, Evas_Object *obj, void *event_info);
 
@@ -117,7 +115,7 @@ private:
     std::string m_folderName;
     bool m_gengridSetup;
     Evas_Object *m_icon;
-    bool m_desktopView;
+    bool m_desktopMode;
 };
 
 }
index 1b0e8d5..d2f532e 100644 (file)
@@ -48,6 +48,7 @@
 #include "boost/date_time/posix_time/posix_time.hpp"
 #include "NetworkErrorHandler.h"
 #include "SqlStorage.h"
+#include "DetailPopup.h"
 
 
 namespace tizen_browser{
@@ -308,7 +309,7 @@ int SimpleUI::exec(const std::string& _url)
         M_ASSERT(m_mainUI.get());
 
         m_historyService->historyAllDeleted.connect(boost::bind(&tizen_browser::base_ui::MainUI::clearHistoryGenlist, m_mainUI.get()));
-        m_mainUI->openURLInNewTab.connect(boost::bind(&SimpleUI::onOpenURLInNewTab, this,_1));
+        m_mainUI->getDetailPopup().openURLInNewTab.connect(boost::bind(&SimpleUI::onOpenURLInNewTab, this, _1, _2));
         m_mainUI->mostVisitedTileClicked.connect(boost::bind(&SimpleUI::onMostVisitedTileClicked, this, _1, _2));
         m_mainUI->mostVisitedClicked.connect(boost::bind(&SimpleUI::onMostVisitedClicked, this,_1));
         m_mainUI->bookmarkClicked.connect(boost::bind(&SimpleUI::onBookmarkButtonClicked, this,_1));
@@ -486,7 +487,6 @@ void SimpleUI::switchToTab(const tizen_browser::basic_webengine::TabId& tabId)
 
 bool SimpleUI::isHomePageActive()
 {
-    BROWSER_LOGD("[%s:%d] isHomePageActive : %d", __PRETTY_FUNCTION__, __LINE__, m_isHomePageActive);
     return m_isHomePageActive;
 }
 
@@ -540,9 +540,9 @@ void SimpleUI::checkTabId(const tizen_browser::basic_webengine::TabId& id){
     }
 }
 
-void SimpleUI::openNewTab(const std::string &uri)
+void SimpleUI::openNewTab(const std::string &uri, bool desktopMode)
 {
-    switchToTab(m_webEngine->addTab(uri));
+    switchToTab(m_webEngine->addTab(uri, nullptr, desktopMode));
 }
 
 void SimpleUI::closeTab(){
@@ -595,8 +595,9 @@ void SimpleUI::onHistoryAdded(std::shared_ptr<tizen_browser::services::HistoryIt
 #endif
 }
 
-void SimpleUI::onOpenURLInNewTab(std::shared_ptr<tizen_browser::services::HistoryItem> historyItem)
+void SimpleUI::onOpenURLInNewTab(std::shared_ptr<tizen_browser::services::HistoryItem> historyItem, bool desktopMode)
 {
+    BROWSER_LOGD("%s:%d %s", __FILE__, __LINE__, __func__);
     std::string historyAddress = historyItem->getUrl();
     if(m_historyUI) {                // TODO: remove this section when naviframes will be available
         m_historyUI->clearItems();
@@ -607,7 +608,7 @@ void SimpleUI::onOpenURLInNewTab(std::shared_ptr<tizen_browser::services::Histor
         m_moreMenuUI->clearItems();
         m_moreMenuUI = nullptr;
     }
-    openNewTab(historyAddress);
+    openNewTab(historyAddress, desktopMode);
 }
 
 void SimpleUI::onMostVisitedTileClicked(std::shared_ptr< services::HistoryItem > historyItem, int itemsNumber)
@@ -1123,7 +1124,7 @@ void SimpleUI::showHistoryUI(const std::string& str)
         M_ASSERT(m_historyUI);
         m_historyUI->clearHistoryClicked.connect(boost::bind(&SimpleUI::onClearHistoryClicked, this,_1));
         m_historyUI->closeHistoryUIClicked.connect(boost::bind(&SimpleUI::closeHistoryUI, this,_1));
-        m_historyUI->historyItemClicked.connect(boost::bind(&SimpleUI::onOpenURLInNewTab, this,_1));
+        m_historyUI->historyItemClicked.connect(boost::bind(&SimpleUI::onOpenURLInNewTab, this, _1, true));     // desktop mode as default
         m_historyUI->addHistoryItems(getHistory());
         m_historyUI->show(m_window.get());
     }
@@ -1166,7 +1167,7 @@ void SimpleUI::closeSettingsUI(const std::string& str)
 void SimpleUI::showMoreMenu()
 {
     BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
-    bool current_tab_as_new_tab = isHomePageActive() || (m_historyService->getHistoryItemsCount() == 0);
+    bool desktopMode = isHomePageActive() ? m_mainUI->isDesktopMode() : m_webEngine->isDesktopMode();
     if(!m_moreMenuUI){
         m_moreMenuUI =
                 std::dynamic_pointer_cast
@@ -1183,13 +1184,13 @@ void SimpleUI::showMoreMenu()
         m_moreMenuUI->historyUIClicked.connect(boost::bind(&SimpleUI::showHistoryUI, this,_1));
         m_moreMenuUI->settingsClicked.connect(boost::bind(&SimpleUI::showSettingsUI, this,_1));
         m_moreMenuUI->closeMoreMenuClicked.connect(boost::bind(&SimpleUI::closeMoreMenu, this,_1));
-        m_moreMenuUI->switchToMobileView.connect(boost::bind(&SimpleUI::switchToMobileView, this));
-        m_moreMenuUI->switchToDesktopView.connect(boost::bind(&SimpleUI::switchToDesktopView, this));
+        m_moreMenuUI->switchToMobileMode.connect(boost::bind(&SimpleUI::switchToMobileMode, this));
+        m_moreMenuUI->switchToDesktopMode.connect(boost::bind(&SimpleUI::switchToDesktopMode, this));
         m_moreMenuUI->addToBookmarkClicked.connect(boost::bind(&SimpleUI::addBookmarkFolders, this));
         m_moreMenuUI->AddBookmarkInput.connect(boost::bind(&SimpleUI::addToBookmarks, this,_1));
         m_moreMenuUI->BookmarkFolderCreated.connect(boost::bind(&SimpleUI::newFolderMoreMenu, this,_1,_2));
 
-        m_moreMenuUI->show(m_window.get());
+        m_moreMenuUI->show(m_window.get(), desktopMode);
         m_moreMenuUI->showCurrentTab();
         m_moreMenuUI->setFavIcon(m_webEngine->getFavicon());
         m_moreMenuUI->setWebTitle(m_webEngine->getTitle());
@@ -1204,13 +1205,26 @@ void SimpleUI::closeMoreMenu(const std::string& str)
     m_moreMenuUI.reset();
 }
 
-void SimpleUI::switchToMobileView()
+void SimpleUI::switchToMobileMode()
 {
-    m_webEngine->switchToMobileView();
+    BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+    if (!isHomePageActive()) {
+        m_webEngine->switchToMobileMode();
+        m_webEngine->reload();
+    } else {
+        m_mainUI->setDesktopMode(false);
+    }
 }
 
-void SimpleUI::switchToDesktopView() {
-    m_webEngine->switchToDesktopView();
+void SimpleUI::switchToDesktopMode()
+{
+    BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+    if (!isHomePageActive()) {
+        m_webEngine->switchToDesktopMode();
+        m_webEngine->reload();
+    } else {
+        m_mainUI->setDesktopMode(true);
+    }
 }
 
 void SimpleUI::showBookmarkManagerMenu()
index f8faab1..8c13280 100644 (file)
@@ -112,7 +112,7 @@ private:
     void updateURIBarView();
     void updateView();
 
-    void openNewTab(const std::string &uri);
+    void openNewTab(const std::string &uri, bool desktopMode = true);
     void switchToTab(const tizen_browser::basic_webengine::TabId& tabId);
     void newTabClicked(const std::string &);
     void tabClicked(const tizen_browser::basic_webengine::TabId& tabId);
@@ -133,7 +133,7 @@ private:
 
     void onHistoryAdded(std::shared_ptr<tizen_browser::services::HistoryItem> historyItem);
     void onHistoryRemoved(const std::string& uri);
-    void onOpenURLInNewTab(std::shared_ptr<tizen_browser::services::HistoryItem> historyItem);
+    void onOpenURLInNewTab(std::shared_ptr<tizen_browser::services::HistoryItem> historyItem, bool desktopMode);
     void onMostVisitedTileClicked(std::shared_ptr<tizen_browser::services::HistoryItem> historyItem, int itemsNumber);
     void onClearHistoryClicked(const std::string&);
 
@@ -230,8 +230,8 @@ private:
     void closeTabUI(const std::string& str);
     void showMoreMenu();
     void closeMoreMenu(const std::string& str);
-    void switchToMobileView();
-    void switchToDesktopView();
+    void switchToMobileMode();
+    void switchToDesktopMode();
     void showHistoryUI(const std::string& str);
     void closeHistoryUI(const std::string&);
     void showMainUI();
index 2506a63..f88b5da 100644 (file)
@@ -45,7 +45,6 @@ WebKitEngineService::WebKitEngineService()
     , m_privateMode(false)
     , m_guiParent(nullptr)
     , m_currentTabId(TabId::NONE)
-    , m_desktopView(true)
 {
     m_mostRecentTab.clear();
     m_tabs.clear();
@@ -279,7 +278,7 @@ std::vector<std::shared_ptr<TabContent> > WebKitEngineService::getTabContents()
     return result;
 }
 
-TabId WebKitEngineService::addTab(const std::string & uri, const TabId * openerId)
+TabId WebKitEngineService::addTab(const std::string & uri, const TabId * openerId, bool desktopMode)
 {
     BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
 
@@ -287,9 +286,9 @@ TabId WebKitEngineService::addTab(const std::string & uri, const TabId * openerI
     TabId newTabId;
     WebViewPtr p = std::make_shared<WebView>(reinterpret_cast<Evas_Object *>(m_guiParent), newTabId);
     if (openerId)
-        p->init(m_desktopView, getTabView(*openerId));
+        p->init(desktopMode, getTabView(*openerId));
     else
-        p->init(m_desktopView);
+        p->init(desktopMode);
 
     m_tabs[newTabId] = p;
 
@@ -508,20 +507,22 @@ void WebKitEngineService::backButtonClicked() const
     }
 }
 
-void WebKitEngineService::switchToDesktopView()
+void WebKitEngineService::switchToDesktopMode()
 {
-    m_desktopView = true;
-    for (auto it = m_tabs.begin(); it != m_tabs.end(); ++it) {
-        it->second->switchToDesktopView();
-    }
+    M_ASSERT(m_currentWebView);
+    m_currentWebView->switchToDesktopMode();
 }
 
-void WebKitEngineService::switchToMobileView()
+void WebKitEngineService::switchToMobileMode()
 {
-    m_desktopView = false;
-    for (auto it = m_tabs.begin(); it != m_tabs.end(); ++it) {
-        it->second->switchToMobileView();
-    }
+    M_ASSERT(m_currentWebView);
+    m_currentWebView->switchToMobileMode();
+}
+
+bool WebKitEngineService::isDesktopMode() const
+{
+    M_ASSERT(m_currentWebView);
+    return m_currentWebView->isDesktopMode();
 }
 
 } /* end of webkitengine_service */
index 5c0f47d..4f586cb 100644 (file)
@@ -77,7 +77,7 @@ public:
      * @param uri
      * @return TabId of created tab
      */
-    TabId addTab(const std::string & uri = std::string(), const TabId * openerId = NULL);
+    TabId addTab(const std::string & uri = std::string(), const TabId * openerId = NULL, bool desktopMode = true);
     Evas_Object* getTabView(TabId id);
     bool switchToTab(TabId);
     bool closeTab();
@@ -159,8 +159,9 @@ public:
      */
     void backButtonClicked() const;
 
-    void switchToMobileView();
-    void switchToDesktopView();
+    void switchToMobileMode();
+    void switchToDesktopMode();
+    bool isDesktopMode() const;
 
 private:
     // callbacks from WebView
@@ -209,8 +210,6 @@ private:
     std::list<TabId> m_mostRecentTab;
     // recently added tabs first
     std::list<TabId> m_chronoTabs;
-    // true if desktop view is enabled, false if mobile
-    bool m_desktopView;
 };
 
 } /* end of webkitengine_service */
index 603543c..3c5c5d4 100644 (file)
@@ -83,7 +83,7 @@ WebView::~WebView()
     ewk_context_delete(m_ewkContext);
 }
 
-void WebView::init(bool desktopView, Evas_Object * opener)
+void WebView::init(bool desktopMode, Evas_Object * opener)
 {
 #if defined(USE_EWEBKIT)
     m_ewkView = ewk_view_add_with_context(evas_object_evas_get(m_parent), m_ewkContext);
@@ -94,10 +94,11 @@ void WebView::init(bool desktopView, Evas_Object * opener)
     evas_object_color_set(m_ewkView, 255, 255, 255, 255);
     evas_object_size_hint_weight_set(m_ewkView, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
     evas_object_size_hint_align_set(m_ewkView, EVAS_HINT_FILL, EVAS_HINT_FILL);
-    if (desktopView)
-        switchToDesktopView();
-    else
-        switchToMobileView();
+    if (desktopMode) {
+        switchToDesktopMode();
+    } else {
+        switchToMobileMode();
+    }
     //\todo: when value is other than 1.0, scroller is located improperly
 //    ewk_view_device_pixel_ratio_set(m_ewkView, 1.0f);
 
@@ -877,14 +878,20 @@ void WebView::searchOnWebsite(const std::string & searchString, int flags)
     BROWSER_LOGD("Ewk search; word: %s, result: %d", searchString.c_str(), result);
 }
 
-void WebView::switchToDesktopView() {
+void WebView::switchToDesktopMode() {
     BROWSER_LOGD("%s:%d %s", __FILE__, __LINE__, __func__);
     int res = ewk_view_user_agent_set(m_ewkView, APPLICATION_NAME_FOR_USER_AGENT);
+    m_desktopMode = true;
 }
 
-void WebView::switchToMobileView() {
+void WebView::switchToMobileMode() {
     BROWSER_LOGD("%s:%d %s", __FILE__, __LINE__, __func__);
     int res = ewk_view_user_agent_set(m_ewkView, APPLICATION_NAME_FOR_USER_AGENT_MOBILE);
+    m_desktopMode = false;
+}
+
+bool WebView::isDesktopMode() const {
+    return m_desktopMode;
 }
 
 } /* namespace webkitengine_service */
index 846af9c..98b3e65 100644 (file)
@@ -41,7 +41,7 @@ class WebView
 public:
     WebView(Evas_Object *, TabId);
     virtual ~WebView();
-    void init(bool desktopView = true, Evas_Object * opener = NULL);
+    void init(bool desktopMode, Evas_Object * opener = NULL);
 
 
     void setURI(const std::string &);
@@ -112,12 +112,19 @@ public:
     /**
      * @brief Change user agent to desktop type
      */
-    void switchToDesktopView();
+    void switchToDesktopMode();
 
     /**
      * @brief Change user agent to mobile type
      */
-    void switchToMobileView();
+    void switchToMobileMode();
+
+    /**
+     * @brief Check if desktop mode is enabled
+     *
+     * @return true if desktop mode is enabled
+     */
+    bool isDesktopMode() const;
 
     /**
      * @brief Get favicon of URL
@@ -194,8 +201,8 @@ private:
     bool m_isLoading;
     double m_loadProgress;
     bool m_loadError;
-
-
+    // true if desktop view is enabled, false if mobile
+    bool m_desktopMode;
 
     config::DefaultConfig config;