Fixed certificate popup of circle
authorJongHeon Choi <j-h.choi@samsung.com>
Thu, 7 Jul 2016 12:11:59 +0000 (21:11 +0900)
committerJongHeon Choi <j-h.choi@samsung.com>
Thu, 7 Jul 2016 12:11:59 +0000 (21:11 +0900)
packaging/crosswalk-tizen.spec
runtime/browser/popup.cc
runtime/browser/popup.h
runtime/browser/web_application.cc
runtime/resources/icons/tw_ic_popup_btn_check.png [new file with mode: 0644]
runtime/resources/icons/tw_ic_popup_btn_delete.png [new file with mode: 0644]
runtime/resources/resources.gyp
runtime/runtime.gyp

index 2889a4b..523d7da 100755 (executable)
@@ -20,6 +20,7 @@ BuildRequires: edje-tools
 BuildRequires: gettext
 BuildRequires: ninja
 BuildRequires: python
+BuildRequires: model-build-features
 BuildRequires: pkgconfig(appsvc)
 BuildRequires: pkgconfig(aul)
 BuildRequires: pkgconfig(bundle)
@@ -105,6 +106,7 @@ GYP_OPTIONS="$GYP_OPTIONS -Dtizen_feature_rotary_event_support=%{?tizen_feature_
 GYP_OPTIONS="$GYP_OPTIONS -Dtizen_feature_web_ime_support=%{?tizen_feature_web_ime_support}"
 GYP_OPTIONS="$GYP_OPTIONS -Dtizen_feature_watch_face_support=%{?tizen_feature_watch_face_support}"
 GYP_OPTIONS="$GYP_OPTIONS -Dtizen_feature_manual_rotate_support=%{?tizen_feature_manual_rotate_support}"
+GYP_OPTIONS="$GYP_OPTIONS -Dtizen_model_formfactor=%{?model_build_feature_formfactor}"
 
 # Extension Path
 GYP_OPTIONS="$GYP_OPTIONS -Dextension_path=%{extension_path}"
@@ -123,6 +125,7 @@ mkdir -p %{buildroot}%{_libdir}
 mkdir -p %{buildroot}%{_bindir}
 mkdir -p %{buildroot}%{_datadir}/license
 mkdir -p %{buildroot}%{_datadir}/locale
+mkdir -p %{buildroot}%{_datadir}/icons/xwalk
 mkdir -p %{buildroot}%{_datadir}/edje/xwalk
 mkdir -p %{buildroot}%{extension_path}
 
@@ -134,6 +137,9 @@ cat LICENSE.BSD >> %{buildroot}%{_datadir}/license/%{name}
 mkdir -p %{buildroot}%{_datadir}/aul/
 cp %{SOURCE1002} %{buildroot}%{_datadir}/aul/
 
+# Popup icon
+cp runtime/resources/icons/*.png %{buildroot}%{_datadir}/icons/xwalk/
+
 # xwalk_common
 install -p -m 644 out/Default/lib/libxwalk_tizen_common.so %{buildroot}%{_libdir}
 
@@ -169,6 +175,7 @@ rm -fr %{buildroot}
 %manifest %{name}.manifest
 %attr(644,root,root) %{_datadir}/license/%{name}
 %attr(755,root,root) %{_datadir}/locale/*
+%attr(644,root,root) %{_datadir}/icons/xwalk/*
 %attr(644,root,root) %{_datadir}/edje/xwalk/*.edj
 %attr(644,root,root) %{_libdir}/libxwalk_tizen_common.so
 %attr(644,root,root) %{_libdir}/libxwalk_injected_bundle.so
index aaeacac..06fe2a9 100644 (file)
@@ -28,11 +28,32 @@ namespace {
 
 const char* kWRTEdjePath = "/usr/share/edje/xwalk/xwalk_tizen.edj";
 
+#ifdef MODEL_FORMFACTOR_CIRCLE
+const char* kWRTIconDeletePath = "/usr/share/icons/xwalk/tw_ic_popup_btn_delete.png";
+const char* kWRTIconCheckPath = "/usr/share/icons/xwalk/tw_ic_popup_btn_check.png";
+
+const char* kLayoutTheme = "content/circle/buttons2";
+const char* kContentTitle = "elm.text.title";
+const char* kContentText = "elm.text";
+
+const char* kStylePopup = "circle";
+const char* kStyleCheck = "small";
+const char* kStyleButtonLeft = "popup/circle/left";
+const char* kStyleButtonRight = "popup/circle/right";
+#else
+const char* kLayoutTheme = "default";
 const char* kContentTitle = "title,text";
+const char* kContentText = NULL;
+
+const char* kStylePopup = "default";
+const char* kStyleCheck = "default";
+const char* kStyleButtonLeft = "popup";
+const char* kStyleButtonRight = "popup";
+#endif  // MODEL_FORMFACTOR_CIRCLE
+
 const char* kContentButton1 = "button1";
 const char* kContentButton2 = "button2";
 
-const char* kStyleDefault = "default";
 const char* kStyleLabel = "popup/default";
 const char* kStyleButton = "popup";
 const char* kStyleEditPw = "editfield/password/popup";
@@ -54,16 +75,28 @@ static void ButtonClickedCallback(void* data,
 }
 
 // caution: not Evas_Object* but Popup*
-static Evas_Object* AddButton(Popup* popup,
-                              const char* str_id, const char* content) {
+static Evas_Object* AddButton(Popup* popup, const char* str_id,
+                                  const char* content,
+                                  const char* style_button) {
   Evas_Object* btn = elm_button_add(popup->popup());
-  elm_object_style_set(btn, kStyleButton);
+  elm_object_style_set(btn, style_button);
   elm_object_domain_translatable_part_text_set(btn, 0,
                                                kTextDomainRuntime,
                                                str_id);
   elm_object_part_content_set(popup->popup(), content, btn);
   evas_object_smart_callback_add(btn, kStateClicked,
                                  ButtonClickedCallback, popup);
+#ifdef MODEL_FORMFACTOR_CIRCLE
+  Evas_Object* icon = elm_image_add(btn);
+  if (!strcmp(content, kContentButton1)) {
+    elm_image_file_set(icon, kWRTIconDeletePath, NULL);
+  } else {
+    elm_image_file_set(icon, kWRTIconCheckPath, NULL);
+  }
+  evas_object_size_hint_weight_set(icon, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+  elm_object_part_content_set(btn, "elm.swallow.content", icon);
+  evas_object_show(icon);
+#endif  // MODEL_FORMFACTOR_CIRCLE
   return btn;
 }
 
@@ -121,9 +154,11 @@ static Evas_Object* AddEntrySet(Evas_Object* parent,
 
 static Evas_Object* AddCheckBox(Evas_Object* parent) {
   Evas_Object* check = elm_check_add(parent);
-  elm_object_style_set(check, kStyleDefault);
-  elm_object_style_set(check, "multiline");
+  elm_object_style_set(check, kStyleCheck);
   evas_object_size_hint_align_set(check, EVAS_HINT_FILL, EVAS_HINT_FILL);
+#ifndef MODEL_FORMFACTOR_CIRCLE
+  elm_object_style_set(check, "multiline");
+#endif  // MODEL_FORMFACTOR_CIRCLE
   elm_check_state_set(check, EINA_TRUE);
   return check;
 }
@@ -136,7 +171,21 @@ std::set<Popup*> Popup::opened_popups_;
 Popup* Popup::CreatePopup(NativeWindow* window) {
   Evas_Object* popup = elm_popup_add(window->evas_object());
   evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
-  elm_object_style_set(popup, kStyleDefault);
+  elm_object_style_set(popup, kStylePopup);
+
+  Evas_Object* layout = elm_layout_add(popup);
+  elm_layout_theme_set(layout, "layout", "popup", kLayoutTheme);
+#ifdef MODEL_FORMFACTOR_CIRCLE
+  elm_object_content_set(popup, layout);
+
+  Evas_Object* box = elm_box_add(layout);
+  elm_box_padding_set(box, 0, 10);
+  evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+  evas_object_size_hint_align_set(box, EVAS_HINT_FILL, EVAS_HINT_FILL);
+  elm_object_part_content_set(layout, "elm.swallow.content", box);
+  evas_object_show(box);
+#else
+  //elm_object_content_set(popup, layout);
 
   Evas_Object* box = elm_box_add(popup);
   elm_box_padding_set(box, 0, 10);
@@ -144,10 +193,12 @@ Popup* Popup::CreatePopup(NativeWindow* window) {
   evas_object_size_hint_align_set(box, EVAS_HINT_FILL, EVAS_HINT_FILL);
   elm_object_part_content_set(popup, "default", box);
   evas_object_show(box);
+#endif  // MODEL_FORMFACTOR_CIRCLE
 
   evas_object_event_callback_add(popup, EVAS_CALLBACK_RESIZE, NULL, NULL);
 
-  return new Popup(popup, box);
+  return new Popup(popup, layout, box);
+
 }
 
 void Popup::ForceCloseAllPopup() {
@@ -163,25 +214,25 @@ void Popup::SetButtonType(ButtonType type) {
   switch (type) {
     case ButtonType::OkButton:
       button1_ = AddButton(this, popup_string::kPopupButtonOk,
-                           kContentButton1);
+                           kContentButton1, kStyleButton);
       break;
     case ButtonType::OkCancelButton:
       button1_ = AddButton(this, popup_string::kPopupButtonCancel,
-                           kContentButton1);
+                           kContentButton1, kStyleButtonLeft);
       button2_ = AddButton(this, popup_string::kPopupButtonOk,
-                           kContentButton2);
+                           kContentButton2, kStyleButtonRight);
       break;
     case ButtonType::LoginCancelButton:
       button1_ = AddButton(this, popup_string::kPopupButtonCancel,
-                           kContentButton1);
+                           kContentButton1, kStyleButtonLeft);
       button2_ = AddButton(this, popup_string::kPopupButtonLogin,
-                           kContentButton2);
+                           kContentButton2, kStyleButtonRight);
       break;
     case ButtonType::AllowDenyButton:
       button1_ = AddButton(this, popup_string::kPopupButtonDeny,
-                           kContentButton1);
+                           kContentButton1, kStyleButtonLeft);
       button2_ = AddButton(this, popup_string::kPopupButtonAllow,
-                           kContentButton2);
+                           kContentButton2, kStyleButtonRight);
       break;
   }
 }
@@ -224,10 +275,14 @@ void Popup::SetCheckBox(const std::string& str_id) {
   check_box_ = AddCheckBox(box_);
   if (!str_id.empty()) {
     elm_object_domain_translatable_part_text_set(
-        check_box_, 0,
+        check_box_, kContentText,
         kTextDomainRuntime,
         str_id.c_str());
   }
+#ifdef MODEL_FORMFACTOR_CIRCLE
+  elm_object_part_content_set(box_, "elm.swallow.checkbox", check_box_);
+  evas_object_size_hint_min_set(check_box_, 0, 80);
+#endif  // MODEL_FORMFACTOR_CIRCLE
   elm_box_pack_end(box_, check_box_);
   evas_object_show(check_box_);
 }
@@ -238,7 +293,12 @@ bool Popup::GetCheckBoxResult() const {
 
 void Popup::SetTitle(const std::string& str_id) {
   elm_object_domain_translatable_part_text_set(
-      popup_, kContentTitle,
+#ifdef MODEL_FORMFACTOR_CIRCLE
+      layout_,
+#else
+      popup_,
+#endif  // MODEL_FORMFACTOR_CIRCLE
+      kContentTitle,
       kTextDomainRuntime,
       str_id.c_str());
 }
@@ -247,23 +307,15 @@ void Popup::SetBody(const std::string& str_id) {
   Evas_Object* label = elm_label_add(box_);
   elm_object_style_set(label, kStyleLabel);
   elm_label_line_wrap_set(label, ELM_WRAP_MIXED);
-  elm_object_domain_translatable_part_text_set(
-      label, 0, kTextDomainRuntime, str_id.c_str());
-  evas_object_color_set(label, 0, 0, 0, 255);
+  elm_object_part_text_set(label, kContentText, str_id.c_str());
   evas_object_size_hint_weight_set(label, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
   evas_object_size_hint_align_set(label, EVAS_HINT_FILL, EVAS_HINT_FILL);
-  elm_box_pack_end(box_, label);
-  evas_object_show(label);
-}
-
-void Popup::SetUrl(const std::string& url) {
-  Evas_Object* label = elm_label_add(box_);
-  elm_object_style_set(label, kStyleLabel);
-  elm_label_line_wrap_set(label, ELM_WRAP_MIXED);
-  elm_object_text_set(label, url.c_str());
+#ifdef MODEL_FORMFACTOR_CIRCLE
+  evas_object_color_set(label, 255, 255, 255, 255);
+  elm_object_part_content_set(box_, "elm.swallow.label", label);
+#else
   evas_object_color_set(label, 0, 0, 0, 255);
-  evas_object_size_hint_weight_set(label, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
-  evas_object_size_hint_align_set(label, EVAS_HINT_FILL, EVAS_HINT_FILL);
+#endif  // MODEL_FORMFACTOR_CIRCLE
   elm_box_pack_end(box_, label);
   evas_object_show(label);
 }
@@ -313,8 +365,8 @@ void Popup::Result(bool is_positive) {
   handler_(this, user_data_);
 }
 
-Popup::Popup(Evas_Object* popup, Evas_Object* box)
-  : popup_(popup), box_(box), button1_(NULL), button2_(NULL),
+Popup::Popup(Evas_Object* popup, Evas_Object* layout, Evas_Object* box)
+  : popup_(popup), layout_(layout), box_(box), button1_(NULL), button2_(NULL),
     entry1_(NULL), entry2_(NULL), check_box_(NULL), user_data_(NULL),
     enable_button_(false), result_button_(false), enable_entry_(false),
     enable_check_box_(false), result_check_box_(false) {}
index 0dcb0d5..f6b3081 100644 (file)
@@ -64,7 +64,6 @@ class Popup {
   // etc.
   void SetTitle(const std::string& str_id);
   void SetBody(const std::string& str_id);
-  void SetUrl(const std::string& url);
   void SetResultHandler(std::function
       <void(Popup* popup, void* user_data)> handler, void* user_data);
 
@@ -77,10 +76,11 @@ class Popup {
   Evas_Object* popup() { return popup_; }
 
  private:
-  Popup(Evas_Object* popup, Evas_Object* box);
+  Popup(Evas_Object* popup, Evas_Object* layout, Evas_Object* box);
   ~Popup();
 
   Evas_Object* popup_;
+  Evas_Object* layout_;
   Evas_Object* box_;
   Evas_Object* button1_;
   Evas_Object* button2_;
index 52c34e8..ef09759 100644 (file)
@@ -1062,8 +1062,8 @@ void WebApplication::OnCertificateAllowRequest(
   Popup* popup = Popup::CreatePopup(window_);
   popup->SetButtonType(Popup::ButtonType::AllowDenyButton);
   popup->SetTitle(popup_string::kPopupTitleCert);
-  popup->SetBody(popup_string::kPopupBodyCert);
-  popup->SetUrl(url);
+  popup->SetBody(popup_string::GetText(
+                 popup_string::kPopupBodyCert)+" ["+url+"]");
   popup->SetCheckBox(popup_string::kPopupCheckRememberPreference);
   popup->SetResultHandler(
       [db, result_handler, pem](Popup* popup, void* /*user_data*/) {
diff --git a/runtime/resources/icons/tw_ic_popup_btn_check.png b/runtime/resources/icons/tw_ic_popup_btn_check.png
new file mode 100644 (file)
index 0000000..f20f62e
Binary files /dev/null and b/runtime/resources/icons/tw_ic_popup_btn_check.png differ
diff --git a/runtime/resources/icons/tw_ic_popup_btn_delete.png b/runtime/resources/icons/tw_ic_popup_btn_delete.png
new file mode 100644 (file)
index 0000000..5f346cb
Binary files /dev/null and b/runtime/resources/icons/tw_ic_popup_btn_delete.png differ
index 8ab0f7c..5930dd6 100644 (file)
@@ -70,6 +70,8 @@
         'locales/ur.po',
         'locales/vi.po',
         'locales/zh_CN.po',
+        'icons/tw_ic_popup_btn_check.png',
+        'icons/tw_ic_popup_btn_delete.png',
       ],
     }, # end of target 'xwalk_runtime_resources_locales'
   ],
index 2e0f476..d3a2299 100755 (executable)
@@ -72,6 +72,9 @@
         ['profile == "tv"', {
           'defines': ['PROFILE_TV'],
         }],
+        ['tizen_model_formfactor == "circle"', {
+          'defines': ['MODEL_FORMFACTOR_CIRCLE'],
+        }],
         ['tizen_feature_rotary_event_support == 1', {
           'defines': ['ROTARY_EVENT_FEATURE_SUPPORT'],
         }],