*/
virtual void backButtonClicked() const = 0;
+ /**
+ * @brief Switch view to mobile
+ */
+ virtual void switchToMobileView() = 0;
+
+ /**
+ * @brief Switch view to desktop
+ */
+ virtual void switchToDesktopView() = 0;
+
/**
* FavIcon of current page changed
*/
: m_gengrid(NULL)
, m_parent(NULL)
, m_item_class(NULL)
+ , m_desktopView(true)
{
BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
m_edjFilePath = EDJE_DIR;
void MoreMenuUI::addItems()
{
BROWSER_LOGD("%s:%d %s", __FILE__, __LINE__, __func__);
- for (size_t i = 0; i < static_cast<int>(END_OF_RANGE); i++) {
+ 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)
+ continue;
+ if (type == ItemType::VIEW_MOBILE_WEB && !m_desktopView)
+ continue;
+
MoreMenuItemData *itemData = new MoreMenuItemData();
- itemData->item = static_cast<ItemType>(i);;
+ itemData->item = type;
itemData->moreMenuUI = std::shared_ptr<tizen_browser::base_ui::MoreMenuUI>(this);
Elm_Object_Item* bookmarkView = elm_gengrid_item_append(m_gengrid, m_item_class, itemData, NULL, this);
m_map_menu_views.insert(std::pair<ItemType, Elm_Object_Item*>(itemData->item, bookmarkView));
case VIEW_MOBILE_WEB:
item_name = "View mobile web";
break;
+ case VIEW_DESKTOP_WEB:
+ item_name = "View desktop web";
+ break;
case SHARE:
item_name = "Share";
break;
case VIEW_MOBILE_WEB:
file_name = focused ? "ic_more_mobileview_foc.png" : "ic_more_mobileview_nor.png";
break;
+ case VIEW_DESKTOP_WEB:
+ file_name = focused ? "ic_more_desktopview_foc.png" : "ic_more_desktopview_nor.png";
+ break;
case SHARE:
file_name = focused ? "ic_more_share_foc.png" : "ic_more_share_nor.png";
break;
BROWSER_LOGD("[%s:%d]", __PRETTY_FUNCTION__, __LINE__);
if (data) {
MoreMenuItemData *itemData = static_cast<MoreMenuItemData*>(data);
+ BROWSER_LOGD("type: %d", itemData->item);
switch (itemData->item) {
case HISTORY:
itemData->moreMenuUI->historyUIClicked(std::string());
case FOCUS_MODE:
break;
case VIEW_MOBILE_WEB:
+ itemData->moreMenuUI->switchToMobileView();
+ itemData->moreMenuUI->m_desktopView = false;
+ itemData->moreMenuUI->refreshGengrid();
+ break;
+ case VIEW_DESKTOP_WEB:
+ itemData->moreMenuUI->switchToDesktopView();
+ itemData->moreMenuUI->m_desktopView = true;
+ itemData->moreMenuUI->refreshGengrid();
break;
case SHARE:
break;
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__);
#endif
FOCUS_MODE,
VIEW_MOBILE_WEB,
+ VIEW_DESKTOP_WEB,
SHARE,
SETTINGS,
- EXIT_BROWSER,
- END_OF_RANGE
+ EXIT_BROWSER
} item;
class BROWSER_EXPORT MoreMenuUI
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;
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);
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);
std::string m_folderName;
bool m_gengridSetup;
Evas_Object *m_icon;
+ bool m_desktopView;
};
}
RESOURCE_IMAGE_LOSSY("ic_more_minibrowser_nor.png")
RESOURCE_IMAGE_LOSSY("ic_more_focusmode_nor.png")
RESOURCE_IMAGE_LOSSY("ic_more_mobileview_nor.png")
+RESOURCE_IMAGE_LOSSY("ic_more_desktopview_nor.png")
RESOURCE_IMAGE_LOSSY("ic_more_share_nor.png")
RESOURCE_IMAGE_LOSSY("ic_more_setting_nor.png")
RESOURCE_IMAGE_LOSSY("ic_more_exit_nor.png")
RESOURCE_IMAGE_LOSSY("ic_more_minibrowser_foc.png")
RESOURCE_IMAGE_LOSSY("ic_more_focusmode_foc.png")
RESOURCE_IMAGE_LOSSY("ic_more_mobileview_foc.png")
+RESOURCE_IMAGE_LOSSY("ic_more_desktopview_foc.png")
RESOURCE_IMAGE_LOSSY("ic_more_share_foc.png")
RESOURCE_IMAGE_LOSSY("ic_more_setting_foc.png")
RESOURCE_IMAGE_LOSSY("ic_more_exit_foc.png")
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->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.reset();
}
+void SimpleUI::switchToMobileView()
+{
+ m_webEngine->switchToMobileView();
+}
+
+void SimpleUI::switchToDesktopView() {
+ m_webEngine->switchToDesktopView();
+}
+
void SimpleUI::showBookmarkManagerMenu()
{
BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
void closeTabUI(const std::string& str);
void showMoreMenu();
void closeMoreMenu(const std::string& str);
+ void switchToMobileView();
+ void switchToDesktopView();
void showHistoryUI(const std::string& str);
void closeHistoryUI(const std::string&);
void showMainUI();
, m_privateMode(false)
, m_guiParent(nullptr)
, m_currentTabId(TabId::NONE)
+ , m_desktopView(true)
{
m_mostRecentTab.clear();
m_tabs.clear();
TabId newTabId;
WebViewPtr p = std::make_shared<WebView>(reinterpret_cast<Evas_Object *>(m_guiParent), newTabId);
if (openerId)
- p->init(getTabView(*openerId));
+ p->init(m_desktopView, getTabView(*openerId));
else
- p->init();
+ p->init(m_desktopView);
m_tabs[newTabId] = p;
}
}
+void WebKitEngineService::switchToDesktopView()
+{
+ m_desktopView = true;
+ for (auto it = m_tabs.begin(); it != m_tabs.end(); ++it) {
+ it->second->switchToDesktopView();
+ }
+}
+
+void WebKitEngineService::switchToMobileView()
+{
+ m_desktopView = false;
+ for (auto it = m_tabs.begin(); it != m_tabs.end(); ++it) {
+ it->second->switchToMobileView();
+ }
+}
+
} /* end of webkitengine_service */
} /* end of basic_webengine */
} /* end of tizen_browser */
*/
void backButtonClicked() const;
+ void switchToMobileView();
+ void switchToDesktopView();
+
private:
// callbacks from WebView
void _favIconChanged(std::shared_ptr<tizen_browser::tools::BrowserImage> bi);
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 */
#define APPLICATION_NAME_FOR_USER_AGENT "Mozilla/5.0 (X11; SMART-TV; Linux) AppleWebkit/538.1 (KHTML, like Gecko) Safari/538.1"
#endif
+//TODO: temporary user agent for mobile display, change to proper one
+#define APPLICATION_NAME_FOR_USER_AGENT_MOBILE "Mozilla/5.0 (Linux; Tizen 3.0; SAMSUNG SM-Z130H) AppleWebKit/538.1 (KHTML, like Gecko) SamsungBrowser/1.0 Mobile Safari/538.1"
+
using namespace tizen_browser::tools;
namespace tizen_browser {
ewk_context_delete(m_ewkContext);
}
-void WebView::init(Evas_Object * opener)
+void WebView::init(bool desktopView, Evas_Object * opener)
{
#if defined(USE_EWEBKIT)
m_ewkView = ewk_view_add_with_context(evas_object_evas_get(m_parent), m_ewkContext);
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);
- ewk_view_application_name_for_user_agent_set(m_ewkView, APPLICATION_NAME_FOR_USER_AGENT);
+ if (desktopView)
+ switchToDesktopView();
+ else
+ switchToMobileView();
//\todo: when value is other than 1.0, scroller is located improperly
// ewk_view_device_pixel_ratio_set(m_ewkView, 1.0f);
BROWSER_LOGD("Ewk search; word: %s, result: %d", searchString.c_str(), result);
}
+void WebView::switchToDesktopView() {
+ BROWSER_LOGD("%s:%d %s", __FILE__, __LINE__, __func__);
+ int res = ewk_view_user_agent_set(m_ewkView, APPLICATION_NAME_FOR_USER_AGENT);
+}
+
+void WebView::switchToMobileView() {
+ BROWSER_LOGD("%s:%d %s", __FILE__, __LINE__, __func__);
+ int res = ewk_view_user_agent_set(m_ewkView, APPLICATION_NAME_FOR_USER_AGENT_MOBILE);
+}
+
} /* namespace webkitengine_service */
} /* end of basic_webengine */
} /* end of tizen_browser */
public:
WebView(Evas_Object *, TabId);
virtual ~WebView();
- void init(Evas_Object * opener = NULL);
+ void init(bool desktopView = true, Evas_Object * opener = NULL);
void setURI(const std::string &);
void searchOnWebsite(const std::string &, int);
/**
- * @brief Get favicon of URL
+ * @brief Change user agent to desktop type
+ */
+ void switchToDesktopView();
+
+ /**
+ * @brief Change user agent to mobile type
*/
+ void switchToMobileView();
+ /**
+ * @brief Get favicon of URL
+ */
std::shared_ptr<tizen_browser::tools::BrowserImage> getFavicon();
// signals