Fix for N_SE-10234 and Redefine of system language change action
authorTaejeong Lee <taejeong.lee@samsung.com>
Thu, 20 Sep 2012 09:24:51 +0000 (18:24 +0900)
committerTaejeong Lee <taejeong.lee@samsung.com>
Tue, 25 Sep 2012 04:41:38 +0000 (13:41 +0900)
When change system language setting, the webapp in background  comes out foreground.
Re-designed about wrt system language change action. It doesn't works as reset event any more.

src/api_new/i_runnable_widget_object.h
src/api_new/runnable_widget_object.cpp
src/api_new/runnable_widget_object.h
src/view/i_view_module.h
src/view/webkit/view_logic.cpp
src/view/webkit/view_logic.h
src/wrt-client/wrt-client.cpp

index 342c4f3..1b1f0df 100644 (file)
@@ -100,6 +100,10 @@ public:
      */
     virtual WidgetModelPtr GetModel() = 0;
     /**
+     * Reload start page on widget.
+     */
+    virtual void ReloadStartPage() = 0;
+    /**
      * Retrieve widget's top level webview
      * @return Evas_Object*
      */
index 054d3c9..cf7df6b 100644 (file)
@@ -176,23 +176,26 @@ void RunnableWidgetObject::Suspend() {
 void RunnableWidgetObject::Resume()
 {
     LogDebug("Resuming widget");
-    Assert(m_widgetModel);
     m_view->resumeWidget();
 }
 
 void RunnableWidgetObject::Reset()
 {
-    LogDebug("Resetting widget");
-    Assert(m_widgetModel);
-
+    LogDebug("Reseting widget");
     m_view->resetWidget();
 }
 
-WidgetModelPtr RunnableWidgetObject::GetModel() {
+WidgetModelPtr RunnableWidgetObject::GetModel()
+{
     Assert(m_widgetModel);
     return m_widgetModel;
 }
 
+void RunnableWidgetObject::ReloadStartPage()
+{
+    m_view->reloadStartPage();
+}
+
 Evas_Object* RunnableWidgetObject::GetCurrentWebview() {
     return m_view->getCurrentWebview();
 }
index 065a4ee..e414173 100644 (file)
@@ -49,6 +49,7 @@ public:
     void Resume();
     void Reset();
     WidgetModelPtr GetModel();
+    void ReloadStartPage();
     Evas_Object* GetCurrentWebview();
     void SetUserCallbacks(UserCallbacksPtr cbs, void *data);
     void GoBack();
index 923fbdd..869e298 100644 (file)
@@ -50,6 +50,7 @@ public:
     virtual void resumeWidget() = 0;
     virtual void resetWidget() = 0;
     virtual void goBack() = 0;
+    virtual void reloadStartPage() = 0;
     virtual Evas_Object* getCurrentWebview() = 0;
     virtual void setUserCallbacks(WRT::UserCallbacksPtr cbs, void *data) = 0;
 };
index 5c355cf..0a8fa97 100644 (file)
@@ -365,6 +365,58 @@ void ViewLogic::goBack()
     }
 }
 
+void ViewLogic::reloadStartPage()
+{
+    LogInfo("Reload Start Page");
+
+    if (m_ewkViewList.size() == 0)
+    {
+        // create new webview
+        createEwkView();
+        ewkClientInit(m_currentEwkView);
+    }
+    else
+    {
+        // close opened windows
+        while (m_ewkViewList.size() > 1)
+        {
+            if (m_cbs->bufferUnset) {
+                m_cbs->bufferUnset(m_currentEwkView, m_cbsData);
+            }
+            removeEwkView(m_currentEwkView);
+
+            m_currentEwkView = m_ewkViewList.back();
+        }
+
+        LogInfo("Close ewkViews done : m_ewkViewList.size() = "
+                << m_ewkViewList.size());
+    }
+
+    setStartPage();
+    prepareEwkView(m_currentEwkView);
+    initializePluginLoading();
+
+    // load page
+    WKURLRef baseUrl = WKURLCreateWithUTF8CString(m_currentUri.c_str());
+
+    if (!baseUrl)
+    {
+        LogError("URL creation failed");
+        return;
+    }
+
+    WKPageLoadURL(ewk_view_WKPage_get(m_currentEwkView), baseUrl);
+    WKRelease(baseUrl);
+
+    // show ewkView
+    if (m_cbs->bufferSet)
+    {
+        m_cbs->bufferSet(m_currentEwkView, m_cbsData);
+    }
+
+    LogInfo("Reloading Start Page is done!");
+}
+
 Evas_Object* ViewLogic::getCurrentWebview()
 {
     LogInfo("get current webview");
index 69c5a59..43bbcd6 100644 (file)
@@ -55,6 +55,7 @@ class ViewLogic : public ViewModule::IViewModule
     void resumeWidget();
     void resetWidget();
     void goBack();
+    void reloadStartPage();
     Evas_Object* getCurrentWebview();
     void setUserCallbacks(WRT::UserCallbacksPtr cbs, void *data);
 
index 67aee80..daf05a1 100644 (file)
@@ -656,7 +656,7 @@ int WrtClient::languageChangedCallback(void *data)
 
         if (true == wrtClient->m_launched &&
                 wrtClient->m_widgetState != WidgetState_Stopped) {
-            wrtClient->m_widget->Reset();
+            wrtClient->m_widget->ReloadStartPage();
         }
     }
     return 0;