Setting page title in the URI entry. 76/49276/12 accepted/tizen/tv/20151015.053420 submit/tizen_tv/20151014.225154
authorAlbert Malewski <a.malewski@samsung.com>
Mon, 12 Oct 2015 08:26:52 +0000 (10:26 +0200)
committerAlbert Malewski <a.malewski@samsung.com>
Wed, 14 Oct 2015 13:21:57 +0000 (15:21 +0200)
[Issue]    https://bugs.tizen.org/jira/browse/TT-193
[Problem]  After page is loaded URL full URL address is displayed
           instead of the name of the page.
[Cause]    N/A
[Solution] Added setPageTitle function and connected it to titleChanged
           signal. Added showing URI when entry is focused and page title
           when unfocused. Additionally removed unneded _cb_mouse_in
           and _cb_mouse_out callbacks.
[Verify]   Launch browser > Enter an URL address > Obs
           Only page name should be visible.

Change-Id: Icd9da0fc2dbffb1779be895130d36391dd04835d

services/SimpleUI/SimpleUI.cpp
services/WebPageUI/URIEntry.cpp
services/WebPageUI/URIEntry.h
services/WebPageUI/WebPageUI.cpp
services/WebPageUI/WebPageUI.h

index 3630e3d6ea7658067efd8f868e2521c490006e5b..a0d577a0b2e842ec7290dee62e9f9e67e1ada212 100644 (file)
@@ -395,6 +395,7 @@ void SimpleUI::connectModelSignals()
     m_webEngine->IMEStateChanged.connect(boost::bind(&SimpleUI::setwvIMEStatus, this, _1));
     m_webEngine->favIconChanged.connect(boost::bind(&MoreMenuUI::setFavIcon, m_moreMenuUI.get(), _1));
     m_webEngine->titleChanged.connect(boost::bind(&MoreMenuUI::setWebTitle, m_moreMenuUI.get(), _1));
+    m_webEngine->titleChanged.connect(boost::bind(&WebPageUI::setPageTitle, m_webPageUI.get(), _1));
 
     m_favoriteService->bookmarkAdded.connect(boost::bind(&SimpleUI::onBookmarkAdded, this,_1));
     m_favoriteService->bookmarkDeleted.connect(boost::bind(&SimpleUI::onBookmarkRemoved, this, _1));
@@ -428,7 +429,7 @@ void SimpleUI::switchViewToWebPage()
 {
     BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
     M_ASSERT(m_viewManager);
-    m_webPageUI->switchViewToWebPage(m_webEngine->getLayout(), m_webEngine->getURI());
+    m_webPageUI->switchViewToWebPage(m_webEngine->getLayout(), m_webEngine->getURI(), m_webEngine->getTitle());
 }
 
 void SimpleUI::switchToTab(const tizen_browser::basic_webengine::TabId& tabId)
index cc3fadbc018135bbafc4495904105c12b6067e65..8863c1864171a16f8ff8a8e30ca7101a842386b4 100644 (file)
@@ -91,7 +91,6 @@ Evas_Object* URIEntry::getContent()
 
         m_entryBtn = elm_button_add(m_entry_layout);
 
-        evas_object_event_callback_add(m_entryBtn, EVAS_CALLBACK_MOUSE_IN, __cb_mouse_in, this);
         evas_object_smart_callback_add(m_entryBtn, "focused", URIEntry::focusedBtn, this);
         evas_object_smart_callback_add(m_entryBtn, "unfocused", URIEntry::unfocusedBtn, this);
 
@@ -103,10 +102,14 @@ Evas_Object* URIEntry::getContent()
     return m_entry_layout;
 }
 
-void URIEntry::changeUri(const std::string newUri)
+void URIEntry::changeUri(const std::string& newUri)
 {
     BROWSER_LOGD("%s: newUri=%s", __func__, newUri.c_str());
-    elm_entry_entry_set(m_entry, elm_entry_utf8_to_markup(newUri.c_str()));
+    m_URI = newUri;
+    if (m_URI.empty()) {
+        elm_entry_entry_set(m_entry, elm_entry_utf8_to_markup(""));
+        m_pageTitle = std::string();
+    }
 }
 
 void URIEntry::setFavIcon(std::shared_ptr< tizen_browser::tools::BrowserImage > favicon)
@@ -141,6 +144,30 @@ void URIEntry::setDocIcon()
     elm_object_signal_emit(m_entry_layout, "set_doc_icon", "model");
 }
 
+void URIEntry::setPageTitle(const std::string& title)
+{
+    BROWSER_LOGD("%s", __func__);
+    m_pageTitle = title;
+    elm_entry_entry_set(m_entry, elm_entry_utf8_to_markup(m_pageTitle.c_str()));
+}
+
+void URIEntry::setURI(const std::string& uri)
+{
+    BROWSER_LOGD("%s, URI: %s", __func__, uri.c_str());
+    m_URI = uri;
+}
+
+void URIEntry::showPageTitle()
+{
+    BROWSER_LOGD("%s, Page title: %s", __func__, m_pageTitle.c_str());
+    if (!m_pageTitle.empty())
+        elm_entry_entry_set(m_entry, elm_entry_utf8_to_markup(m_pageTitle.c_str()));
+    else if (!m_URI.empty())
+        elm_entry_entry_set(m_entry, elm_entry_utf8_to_markup(m_URI.c_str()));
+    else
+        elm_entry_entry_set(m_entry, elm_entry_utf8_to_markup(""));
+}
+
 URIEntry::IconType URIEntry::getCurrentIconTyep()
 {
     return m_currentIconType;
@@ -210,13 +237,15 @@ void URIEntry::unfocused(void* data, Evas_Object*, void*)
     self->m_entrySelectedAllFirst = false;
 
     elm_object_signal_emit(self->m_entry_layout, "mouse,out", "over");
+    elm_entry_entry_set(self->m_entry, elm_entry_utf8_to_markup(self->m_pageTitle.c_str()));
 }
 
 void URIEntry::focused(void* data, Evas_Object* /* obj */, void* /* event_info */)
 {
     URIEntry* self = static_cast<URIEntry*>(data);
     elm_object_signal_emit(self->m_entry_layout, "mouse,in", "over");
-    BROWSER_LOGD("%s", __func__);
+    elm_entry_entry_set(self->m_entry, elm_entry_utf8_to_markup(self->m_URI.c_str()));
+    BROWSER_LOGD("%s, URI: %s", __func__, self->m_URI.c_str());
 }
 
 void URIEntry::fixed_entry_key_down_handler(void* data, Evas* /*e*/, Evas_Object* /*obj*/, void* event_info)
@@ -254,6 +283,7 @@ void URIEntry::editingCompleted()
 
     elm_entry_input_panel_hide(m_entry);
     uriChanged(rewriteURI(userString));
+    elm_object_focus_set(m_entryBtn, EINA_TRUE);
 }
 
 std::string URIEntry::rewriteURI(const std::string& url)
@@ -315,16 +345,6 @@ bool URIEntry::hasFocus() const
     return elm_object_focus_get(m_entry) == EINA_TRUE ? true : false;
 }
 
-void URIEntry::__cb_mouse_in(void* /*data*/, Evas* /*e*/, Evas_Object* obj, void* /*event_info*/)
-{
-    elm_object_focus_set(obj, EINA_TRUE);
-}
-
-void URIEntry::__cb_mouse_out(void* /*data*/, Evas* /*e*/, Evas_Object* obj, void* /*event_info*/)
-{
-    elm_object_focus_set(obj, EINA_FALSE);
-}
-
 void URIEntry::focusedBtn(void* data, Evas_Object* /*obj*/, void* /*event_info*/)
 {
     URIEntry* self = static_cast<URIEntry*>(data);
@@ -335,6 +355,7 @@ void URIEntry::unfocusedBtn(void* data, Evas_Object* /*obj*/, void* /*event_info
 {
     URIEntry* self = static_cast<URIEntry*>(data);
     elm_object_signal_emit(self->m_entry_layout, "mouse,out", "over");
+    //elm_entry_entry_set(self->m_entry, elm_entry_utf8_to_markup(self->m_pageTitle.c_str()));
 }
 
 void URIEntry::setDisabled(bool disabled)
index b0e8b934ef345cb659af068d59a7324eb0daae24..9b6537fd54612c9a2923de9ee39a3627e49f0bf0 100644 (file)
@@ -42,13 +42,16 @@ public:
     Evas_Object* getContent();
 
 
-    void changeUri(const std::string);
+    void changeUri(const std::string&);
     boost::signals2::signal<void (const std::string&)> uriChanged;
 
     void setFavIcon(std::shared_ptr<tizen_browser::tools::BrowserImage> favicon);
     void setCurrentFavIcon();
     void setSearchIcon();
     void setDocIcon();
+    void setPageTitle(const std::string& title);
+    void setURI(const std::string& uri);
+    void showPageTitle();
     IconType getCurrentIconTyep();
     /**
      * \brief Adds Action to URI bar.
@@ -100,8 +103,6 @@ private:
 
     static void _uriEntryClicked(void* data, Evas_Object* obj, void* event_info);
 
-    static void __cb_mouse_in(void* data, Evas* e, Evas_Object* obj, void* event_info);
-    static void __cb_mouse_out(void* data, Evas* e, Evas_Object* obj, void* event_info);
     static void focusedBtn(void* data, Evas_Object* obj, void* event_info);
     static void unfocusedBtn(void* data, Evas_Object* obj, void* event_info);
 
@@ -115,6 +116,8 @@ private:
     Evas_Object* m_entryBtn;
     bool m_entrySelectedAllFirst;
     std::string m_oryginalEntryText;
+    std::string m_pageTitle;
+    std::string m_URI;
     bool m_searchTextEntered;
 };
 
index 0a8e92fbdfe1c8746992148fadd921c253f44e0e..a1456d2b3bf20f30826378d9c8b5aac3e05a9c65 100644 (file)
@@ -117,6 +117,7 @@ void WebPageUI::loadFinished()
     BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
     elm_object_signal_emit(m_mainLayout, "hide_progressbar_bg", "ui");
     m_leftButtonBar->setActionForButton("refresh_stop_button", m_reload);
+    m_URIEntry->showPageTitle();
 }
 
 bool WebPageUI::isErrorPageActive()
@@ -124,6 +125,12 @@ bool WebPageUI::isErrorPageActive()
     return elm_object_part_content_get(m_mainLayout, "web_view") == m_errorLayout;
 }
 
+void WebPageUI::setPageTitle(const std::string& title)
+{
+     BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+     m_URIEntry->setPageTitle(title);
+}
+
 void WebPageUI::setMainContent(Evas_Object* content)
 {
     BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
@@ -143,7 +150,7 @@ void WebPageUI::switchViewToErrorPage()
     refreshFocusChain();
 }
 
-void WebPageUI::switchViewToWebPage(Evas_Object* content, const std::string uri)
+void WebPageUI::switchViewToWebPage(Evas_Object* content, const std::string uri, const std::string title)
 {
     BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
     if (m_homePageActive)
@@ -153,6 +160,8 @@ void WebPageUI::switchViewToWebPage(Evas_Object* content, const std::string uri)
     }
     setMainContent(content);
     updateURIBar(uri);
+    m_URIEntry->setPageTitle(title);
+    m_URIEntry->showPageTitle();
     refreshFocusChain();
     evas_object_show(m_leftButtonBar->getContent());
     elm_object_focus_custom_chain_append(m_mainLayout, content, NULL);
@@ -320,9 +329,10 @@ void WebPageUI::setErrorButtons()
 
 void WebPageUI::updateURIBar(const std::string& uri)
 {
-    BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+    BROWSER_LOGD("[%s:%d] URI:%s", __PRETTY_FUNCTION__, __LINE__, uri.c_str());
     m_URIEntry->changeUri(uri);
     m_leftButtonBar->setActionForButton("refresh_stop_button", m_reload);
+    m_URIEntry->setURI(uri);
 
     m_stopLoading->setEnabled(true);
     m_reload->setEnabled(true);
index cd616f0fcb15b54ccd048c7632ed34d81ced03c3..de0612f5befb67e5b17280bbba679687c7ef5c67 100644 (file)
@@ -44,9 +44,10 @@ public:
     bool isErrorPageActive();
     bool isHomePageActive() { return m_homePageActive; }
     void switchViewToErrorPage();
-    void switchViewToWebPage(Evas_Object* content, const std::string uri);
+    void switchViewToWebPage(Evas_Object* content, const std::string uri, const std::string title);
     void switchViewToQuickAccess(Evas_Object* content);
     URIEntry& getURIEntry() const { return *m_URIEntry.get(); }
+    void setPageTitle(const std::string& title);
     void setTabsNumber(int tabs);
     void setBackButtonEnabled(bool enabled) { m_back->setEnabled(enabled); }
     void setForwardButtonEnabled(bool enabled) { m_forward->setEnabled(enabled); }