Implemented progressbar for web application 53/134653/3
authorjaekuk, lee <juku1999@samsung.com>
Tue, 20 Jun 2017 00:59:40 +0000 (09:59 +0900)
committerjaekuk, lee <juku1999@samsung.com>
Tue, 20 Jun 2017 02:13:42 +0000 (11:13 +0900)
Change-Id: I59bea64514e4a7adb53736bacb9267690b8a44ab
Signed-off-by: jaekuk, lee <juku1999@samsung.com>
runtime/browser/native_window.cc
runtime/browser/native_window.h
runtime/browser/web_application.cc
runtime/browser/web_application.h

index 9350c66..40162be 100755 (executable)
@@ -75,6 +75,10 @@ NativeWindow::NativeWindow()
       currentViewModeFullScreen_(false),
       focus_(NULL),
       content_(NULL),
+#ifdef PROFILE_MOBILE
+      progressbar_(NULL),
+      top_layout_(NULL),
+#endif
       rotation_(0),
       handler_id_(0) {
 }
@@ -126,6 +130,9 @@ void NativeWindow::Initialize() {
   EVAS_SIZE_EXPAND_FILL(top_layout);
   elm_object_content_set(conformant, top_layout);
   evas_object_show(top_layout);
+#ifdef PROFILE_MOBILE
+  top_layout_ = top_layout;
+#endif
 
   // focus
   Evas_Object* focus = elm_bg_add(top_layout);
@@ -139,6 +146,17 @@ void NativeWindow::Initialize() {
   evas_object_show(focus);
   focus_ = focus;
 
+#ifdef PROFILE_MOBILE
+  // progressbar
+  Evas_Object *progressbar = elm_progressbar_add(top_layout);
+  EVAS_SIZE_EXPAND_FILL(progressbar);
+  elm_progressbar_unit_format_set(progressbar, "%1.1f%%");
+  elm_progressbar_horizontal_set(progressbar, EINA_TRUE);
+  elm_object_part_content_set(top_layout, "elm.swallow.progress", progressbar);
+  evas_object_show(progressbar);
+  progressbar_ = progressbar;
+#endif
+
   // focus callback
   auto focus_callback = [](void* user_data,
                            Evas_Object*,
@@ -306,4 +324,15 @@ void NativeWindow::ManualRotationDone() {
 }
 #endif  // MANUAL_ROTATE_FEATURE_SUPPORT
 
+#ifdef PROFILE_MOBILE
+void NativeWindow::SignalEmit(const char* emission,
+    const char* source) {
+  elm_object_signal_emit(top_layout_, emission, source);
+}
+
+void NativeWindow::UpdateProgress(double value) {
+  elm_progressbar_value_set(progressbar_, ELM_SCALE_SIZE(value));
+}
+#endif
+
 }  // namespace runtime
index 7d23aa0..a44acd7 100755 (executable)
@@ -65,6 +65,10 @@ class NativeWindow {
   void EnableManualRotation(bool enable);
   void ManualRotationDone();
 #endif  // MANUAL_ROTATE_FEATURE_SUPPORT
+#ifdef PROFILE_MOBILE
+  void SignalEmit(const char* emission, const char* source);
+  void UpdateProgress(double value);
+#endif
 
  protected:
   virtual Evas_Object* CreateWindowInternal() = 0;
@@ -82,6 +86,10 @@ class NativeWindow {
   bool currentViewModeFullScreen_;
   Evas_Object* focus_;
   Evas_Object* content_;
+#ifdef PROFILE_MOBILE
+  Evas_Object* progressbar_;
+  Evas_Object* top_layout_;
+#endif
   int rotation_;
   int handler_id_;
   ScreenOrientation natural_orientation_;
index 191023c..f70c87a 100755 (executable)
@@ -143,6 +143,12 @@ const char* kDefaultCSPRule =
 const char* kResWgtPath = "res/wgt/";
 const char* kAppControlMain = "http://tizen.org/appcontrol/operation/main";
 
+#ifdef PROFILE_MOBILE
+// window signal callback
+const char *kEdjeShowProgressSignal = "show,progress,signal";
+const char *kEdjeHideProgressSignal = "hide,progress,signal";
+#endif
+
 const std::string kViewmodeTypeFullscreen = "fullscreen";
 const std::string kViewmodeTypeWindowed = "windowed";
 
@@ -1125,8 +1131,30 @@ void WebApplication::OnLoadStart(WebView* /*view*/) {
   LOGGER(DEBUG) << "LoadStart";
 }
 
+#ifdef PROFILE_MOBILE
+void WebApplication::OnLoadProgress(WebView* view, double persent) {
+  LOGGER(DEBUG) << "LoadProgress, progress ;"<<persent;
+
+  if ((app_data_->setting_info() != NULL &&
+       app_data_->setting_info()->progressbar_presence()) ||
+       (app_data_->widget_info() != NULL &&
+       app_data_->widget_info()->view_modes() == kViewmodeTypeWindowed)) {
+    window_->SignalEmit(kEdjeShowProgressSignal, "");
+    window_->UpdateProgress(persent);
+  }
+}
+#endif
+
 void WebApplication::OnLoadFinished(WebView* /*view*/) {
   LOGGER(DEBUG) << "LoadFinished";
+#ifdef PROFILE_MOBILE
+  if ((app_data_->setting_info() != NULL &&
+       app_data_->setting_info()->progressbar_presence()) ||
+       (app_data_->widget_info() != NULL &&
+       app_data_->widget_info()->view_modes() == kViewmodeTypeWindowed)) {
+    window_->SignalEmit(kEdjeHideProgressSignal, "");
+  }
+#endif
   splash_screen_->HideSplashScreen(SplashScreen::HideReason::LOADFINISHED);
 }
 
index 20d9082..f088e43 100755 (executable)
@@ -70,6 +70,9 @@ class WebApplication : public WebView::EventListener {
   virtual void OnHardwareKey(WebView* view, const std::string& keyname);
   virtual void OnConsoleMessage(const std::string& msg, int level);
   virtual void OnLoadStart(WebView* view);
+#ifdef PROFILE_MOBILE
+  virtual void OnLoadProgress(WebView* view, double persent);
+#endif
   virtual void OnLoadFinished(WebView* view);
   virtual void OnRendered(WebView* view);
   virtual void OnLanguageChanged();