Replace elm_progressbar with own implementation 93/74493/2
authorDariusz Frankiewicz <d.frankiewic@samsung.com>
Tue, 14 Jun 2016 10:19:35 +0000 (12:19 +0200)
committerDariusz Frankiewicz <d.frankiewic@samsung.com>
Tue, 14 Jun 2016 11:14:34 +0000 (13:14 +0200)
[Issue] http://suprem.sec.samsung.net/jira/browse/TWF-1454
[Problem] elm_progressbar_value_set makes too frequent composite calling.
[Solution] Replace elm_progressbar with own implementation in edc file.
[Verify] Load some pages and measure composite calls on engine side.

Change-Id: I03e10cc3729738cfeb46f59ff1326931f0ca0add

services/WebPageUI/WebPageUI.cpp
services/WebPageUI/WebPageUI.h
services/WebPageUI/edc/WebPageUI_mob.edc
services/WebPageUI/images_mob/I01_toolbar_progress.#.png [new file with mode: 0644]
services/WebPageUI/images_mob/I01_toolbar_progress_bg.#.png [new file with mode: 0644]

index 289c2d28881645003982ae574ceba7174d99b05a..4020210c53ae2effaed35d0cfea3602625261f8b 100755 (executable)
@@ -30,12 +30,15 @@ namespace base_ui {
 
 EXPORT_SERVICE(WebPageUI, "org.tizen.browser.webpageui")
 
+#define MAX_SIGNAL_NAME 32
+#define MAX_PROGRESS_LEVEL 20
+#define PROGRESS_STEP 0.05
+
 WebPageUI::WebPageUI()
     : m_parent(nullptr)
     , m_mainLayout(nullptr)
     , m_errorLayout(nullptr)
     , m_privateLayout(nullptr)
-    , m_progressBar(nullptr)
     , m_bookmarkManagerButton(nullptr)
     , m_URIEntry(new URIEntry())
     , m_statesMgr(std::make_shared<WebPageUIStatesManager>(WPUState::MAIN_WEB_PAGE))
@@ -151,7 +154,10 @@ void WebPageUI::progressChanged(double progress)
     if (progress == 1.0) {
         hideProgressBar();
     } else {
-        elm_progressbar_value_set(m_progressBar, progress);
+        int level = (int)(progress * MAX_PROGRESS_LEVEL);
+        char signal_name[MAX_SIGNAL_NAME] = { 0 };
+        snprintf(signal_name, MAX_SIGNAL_NAME, "update,progress,%.02f,signal", ((double)level * PROGRESS_STEP));
+        elm_object_signal_emit(m_mainLayout, signal_name, "");
     }
 }
 
@@ -434,11 +440,6 @@ void WebPageUI::createLayout()
     m_rightButtonBar->addAction(m_tab, "tab_button");
     m_rightButtonBar->addAction(m_showMoreMenu, "setting_button");
 
-    // progress bar
-    m_progressBar = elm_progressbar_add(m_mainLayout);
-    elm_object_style_set(m_progressBar, "default");
-    elm_progressbar_unit_format_set(m_progressBar, "");
-
     //URL bar (Evas Object is shipped by URIEntry object)
     m_URIEntry->init(m_mainLayout);
     elm_object_part_content_set(m_mainLayout, "uri_entry", m_URIEntry->getContent());
@@ -566,17 +567,14 @@ void WebPageUI::connectActions()
 void WebPageUI::showProgressBar()
 {
     BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
-    elm_object_signal_emit(m_mainLayout, "show_progressbar_bg", "ui");
-    elm_object_part_content_set(m_mainLayout, "progress_bar", m_progressBar);
+    elm_object_signal_emit(m_mainLayout, "show,progress,signal", "");
+    elm_object_signal_emit(m_mainLayout, "update,progress,0.00,signal", "");
 }
 
 void WebPageUI::hideProgressBar()
 {
     BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
-    elm_object_signal_emit(m_mainLayout, "hide_progressbar_bg", "ui");
-    elm_progressbar_value_set(m_progressBar, 0.0);
-    elm_object_part_content_unset(m_mainLayout, "progress_bar");
-    evas_object_hide(m_progressBar);
+    elm_object_signal_emit(m_mainLayout, "hide,progress,signal", "");
 }
 
 void WebPageUI::hideFindOnPage()
@@ -600,7 +598,6 @@ void WebPageUI::setErrorButtons()
     m_stopLoading->setEnabled(false);
     m_reload->setEnabled(true);
     m_forward->setEnabled(false);
-    evas_object_hide(m_progressBar);
 }
 
 void WebPageUI::setPrivateButtons()
@@ -609,7 +606,6 @@ void WebPageUI::setPrivateButtons()
     m_stopLoading->setEnabled(false);
     m_reload->setEnabled(false);
     m_forward->setEnabled(false);
-    evas_object_hide(m_progressBar);
 }
 
 void WebPageUI::updateURIBar(const std::string& uri)
index d6b98bde7c542637290e54e25dbff8a213ac5c57..33db8af13b072d9d70849af0a225163aa17c762e 100644 (file)
@@ -159,7 +159,6 @@ private:
     Evas_Object* m_mainLayout;
     Evas_Object* m_errorLayout;
     Evas_Object* m_privateLayout;
-    Evas_Object* m_progressBar;
     Evas_Object* m_bookmarkManagerButton;
 
     std::unique_ptr<ButtonBar> m_leftButtonBar;
index 771515953ed0ab4fad7112e2c5f24fc6f600caac..cab12602ef1416733ee31671722ef03936d11947 100644 (file)
@@ -8,9 +8,75 @@
 #define FINDONPAGE_WIDTH 720
 #include "../../../core/Tools/edc/Spacer.edc"
 
+#define PROGRESS_DESCRIPTIONS\
+    PROGRESS_DESCRIPTION(0.00)\
+    PROGRESS_DESCRIPTION(0.05)\
+    PROGRESS_DESCRIPTION(0.10)\
+    PROGRESS_DESCRIPTION(0.15)\
+    PROGRESS_DESCRIPTION(0.20)\
+    PROGRESS_DESCRIPTION(0.25)\
+    PROGRESS_DESCRIPTION(0.30)\
+    PROGRESS_DESCRIPTION(0.35)\
+    PROGRESS_DESCRIPTION(0.40)\
+    PROGRESS_DESCRIPTION(0.45)\
+    PROGRESS_DESCRIPTION(0.50)\
+    PROGRESS_DESCRIPTION(0.55)\
+    PROGRESS_DESCRIPTION(0.60)\
+    PROGRESS_DESCRIPTION(0.65)\
+    PROGRESS_DESCRIPTION(0.70)\
+    PROGRESS_DESCRIPTION(0.75)\
+    PROGRESS_DESCRIPTION(0.80)\
+    PROGRESS_DESCRIPTION(0.85)\
+    PROGRESS_DESCRIPTION(0.90)\
+    PROGRESS_DESCRIPTION(0.95)\
+    PROGRESS_DESCRIPTION(1.00)
+
+#define PROGRESS_DESCRIPTION(RATE)\
+    description { state: "progress" RATE;\
+        inherit: "default" 0.0;\
+        visible: 1;\
+        rel1 { relative: 0.0 0.0; to: "progressbar_bg"; }\
+        rel2 { relative: RATE 1.0; to: "progressbar_bg"; }\
+    }
+
+#define PROGRESS_PROGRAMS\
+    PROGRESS_PROGRAM(0.10)\
+    PROGRESS_PROGRAM(0.15)\
+    PROGRESS_PROGRAM(0.20)\
+    PROGRESS_PROGRAM(0.25)\
+    PROGRESS_PROGRAM(0.30)\
+    PROGRESS_PROGRAM(0.35)\
+    PROGRESS_PROGRAM(0.40)\
+    PROGRESS_PROGRAM(0.45)\
+    PROGRESS_PROGRAM(0.50)\
+    PROGRESS_PROGRAM(0.55)\
+    PROGRESS_PROGRAM(0.60)\
+    PROGRESS_PROGRAM(0.65)\
+    PROGRESS_PROGRAM(0.70)\
+    PROGRESS_PROGRAM(0.75)\
+    PROGRESS_PROGRAM(0.80)\
+    PROGRESS_PROGRAM(0.85)\
+    PROGRESS_PROGRAM(0.90)\
+    PROGRESS_PROGRAM(0.95)
+
+#define PROGRESS_PROGRAM(RATE)\
+    program { name: "update,progress,"RATE;\
+        signal: "update,progress,"RATE",signal";\
+        transition: DECELERATE 0.1;\
+        action: STATE_SET "progress" RATE;\
+        target: "progress_bar";\
+    }
+
+#define PROGRESS_BG_IMAGE "I01_toolbar_progress_bg.#.png"
+#define PROGRESS_BAR_IMAGE "I01_toolbar_progress.#.png"
+
 collections { base_scale: 2.6;
     group {
         name: "main_layout";
+        images {
+            image: PROGRESS_BG_IMAGE COMP;
+            image: PROGRESS_BAR_IMAGE COMP;
+        }
         parts {
             part {
                 name: "bg";
@@ -231,50 +297,66 @@ collections { base_scale: 2.6;
                     rel2 { relative: 1.0 1.0; to: "bg"; }
                 }
             }
-            part {
-                name: "progress_bar";
-                type: SWALLOW;
+            part { name: "progressbar_bg";
+                type: IMAGE;
                 scale: 1;
                 description {
                     state: "default" 0.0;
+                    visible: 0;
+                    fixed: 0 1;
+                    min: 0 5;
+                    max: -1 5;
+                    align: 0.5 1;
+                    image.normal: PROGRESS_BG_IMAGE;
+                    rel1 { relative: 0.0 0.0; to: "uri_bar_bg";}
+                    rel2 { relative: 1.0 1.0; to: "uri_bar_bg";}
+                }
+                description {
+                    state: "progress" 0.0;
+                    inherit: "default" 0.0;
                     visible: 1;
-                    align: 0.0 0.0;
-                    fixed: 0 0;
-                    min: 0 2;
-                    max: -1 2;
-                    rel1 {
-                        relative: 0.0 0.5;
-                        to: "uri_bar_bg";
-                    }
                 }
             }
-            part {
-                name: "progress_bar_light_bg";
-                type: RECT;
+            part { name: "progress_bar";
+                type: IMAGE;
                 scale: 1;
-                repeat_events: 1;
                 description {
                     state: "default" 0.0;
-                    fixed: 0 1;
-                    min: 0 2;
-                    max: -1 2;
-                    align: 0 0;
                     visible: 0;
-                    rel1.to: "uri_bar_bg";
-                    rel1.relative: 0.0 0.5;
-                    color: 255 255 255 0;
-                }
-                description {
-                    state: "visible" 0.0;
-                    inherit: "default" 0.0;
-                    visible: 1;
+                    align: 0.0 0.0;
+                    image.normal: PROGRESS_BAR_IMAGE;
+                    rel1 { relative: 0.0 0.0; to: "progressbar_bg"; }
+                    rel2 { relative: 1.0 1.0; to: "progressbar_bg"; }
                 }
-                description {
-                    state: "moveright" 0.0;
-                    inherit: "default" 0.0;
-                    visible: 1;
+                PROGRESS_DESCRIPTIONS
+            }
+            programs {
+                program { name: "hide,progress";
+                    signal: "hide,progress,signal";
+                    transition: DECELERATE 0.1;
+                    action: STATE_SET "default" 0.0;
+                    target: "progress_bar";
+                    target: "bg";
+                }
+                program { name: "show,progress";
+                    signal: "show,progress,signal";
+                    action: STATE_SET "progress" 0.0;
+                    target: "bg";
+                }
+                program { name: "update,progress,0.00";
+                    signal: "update,progress,0.00,signal";
+                    action: STATE_SET "progress" 0.05;
+                    target: "progress_bar";
+                }
+                PROGRESS_PROGRAMS
+                program { name: "update,progress,1.0";
+                    signal: "update,progress,1.00,signal";
+                    transition: DECELERATE 0.05;
+                    action: STATE_SET "progress" 1.00;
+                    target: "progress_bar";
                 }
             }
+
             #include "WebPageUIUrlHistoryList.edc"
             part {
                 name: "moremenu_dimmed_bg";
@@ -442,20 +524,6 @@ collections { base_scale: 2.6;
                 target: "uri_bar_buttons_left";
                 target: "uri_bar_buttons_right";
             }
-            program {
-                name: "hide_progress";
-                signal: "hide_progressbar_bg";
-                source: "ui";
-                action: STATE_SET "default" 0.0;
-                target: "progress_bar_light_bg";
-            }
-            program {
-                name: "show_progress";
-                signal: "show_progressbar_bg";
-                source: "ui";
-                action: STATE_SET "visible" 0.0;
-                target: "progress_bar_light_bg";
-            }
             program {
                 name: "hide_uri_bar_landscape";
                 signal: "hide_uri_bar_landscape";
diff --git a/services/WebPageUI/images_mob/I01_toolbar_progress.#.png b/services/WebPageUI/images_mob/I01_toolbar_progress.#.png
new file mode 100644 (file)
index 0000000..4e29977
Binary files /dev/null and b/services/WebPageUI/images_mob/I01_toolbar_progress.#.png differ
diff --git a/services/WebPageUI/images_mob/I01_toolbar_progress_bg.#.png b/services/WebPageUI/images_mob/I01_toolbar_progress_bg.#.png
new file mode 100644 (file)
index 0000000..8af964d
Binary files /dev/null and b/services/WebPageUI/images_mob/I01_toolbar_progress_bg.#.png differ