Custom style created for buttons 65/183665/4
authorMichal Skorupinski <m.skorupinsk@samsung.com>
Mon, 9 Jul 2018 17:09:08 +0000 (19:09 +0200)
committerMichal Skorupinski <m.skorupinsk@samsung.com>
Fri, 13 Jul 2018 16:26:55 +0000 (18:26 +0200)
Change-Id: I1b8005900a8cdaea5a42dc184da8616293ebd62d
Signed-off-by: Michal Skorupinski <m.skorupinsk@samsung.com>
20 files changed:
edje/images/button_bottom.png [new file with mode: 0644]
edje/images/button_left.png [new file with mode: 0644]
edje/images/button_left_pressed.png [new file with mode: 0644]
edje/images/button_right.png [new file with mode: 0644]
edje/images/button_right_pressed.png [new file with mode: 0644]
inc/utils.h
inc/view/view_base.h
res/edje/button_style.edc [new file with mode: 0644]
res/edje/gear-racing-controller.edc
res/images/no.png [new file with mode: 0644]
res/images/yes.png [new file with mode: 0644]
src/view/view_base.c
src/view/view_car_selection.c
src/view/view_connect_to_car.c
src/view/view_connection_successed.c
src/view/view_help.c
src/view/view_name_input.c
src/view/view_network_failure.c
src/view/view_reset.c
src/view_manager/view_manager.c

diff --git a/edje/images/button_bottom.png b/edje/images/button_bottom.png
new file mode 100644 (file)
index 0000000..f0ad2ad
Binary files /dev/null and b/edje/images/button_bottom.png differ
diff --git a/edje/images/button_left.png b/edje/images/button_left.png
new file mode 100644 (file)
index 0000000..8484c6c
Binary files /dev/null and b/edje/images/button_left.png differ
diff --git a/edje/images/button_left_pressed.png b/edje/images/button_left_pressed.png
new file mode 100644 (file)
index 0000000..835abda
Binary files /dev/null and b/edje/images/button_left_pressed.png differ
diff --git a/edje/images/button_right.png b/edje/images/button_right.png
new file mode 100644 (file)
index 0000000..9962dc6
Binary files /dev/null and b/edje/images/button_right.png differ
diff --git a/edje/images/button_right_pressed.png b/edje/images/button_right_pressed.png
new file mode 100644 (file)
index 0000000..b7c9e1e
Binary files /dev/null and b/edje/images/button_right_pressed.png differ
index fff49aa..f0fa69e 100644 (file)
@@ -19,7 +19,8 @@
 #define UTILS_H_
 
 void app_get_resource(const char *edj_file_in, char *edj_path_out);
-Evas_Object *create_button(Evas_Object *parent, char *part, char *text, Evas_Smart_Cb callback, void *data);
+Evas_Object *create_button(Evas_Object *parent, char *part, char *text, char *image_path, char *style, Evas_Smart_Cb callback, void *data);
+Evas_Object *create_image(Evas_Object *parent, char *path);
 Evas_Object *create_layout(Evas_Object *parent, char *edj_file, char *group);
 void get_screen_size(int *width, int *height);
 
index cd5e0f0..d4a5e5b 100644 (file)
@@ -43,7 +43,7 @@ typedef struct _s_view_base {
 void view_base_init(Evas_Object *parent);
 
 void view_base_get_resource(const char *edj_file_in, char *edj_path_out);
-Evas_Object *view_base_create_button(Evas_Object *parent, char *part, char *text, Evas_Smart_Cb callback, void *data);
+Evas_Object *view_base_create_button(Evas_Object *parent, char *part, char *text, char *image_path, char *style, Evas_Smart_Cb callback, void *data);
 Evas_Object *view_base_create_layout(Evas_Object *parent, char *edj_file, char *group);
 void view_base_set_position(Evas_Object *image, int pos_X, int pos_Y,
                e_horizontal_align horizontal_align, e_vertical_align vertical_align);
diff --git a/res/edje/button_style.edc b/res/edje/button_style.edc
new file mode 100644 (file)
index 0000000..36e5ca1
--- /dev/null
@@ -0,0 +1,119 @@
+collections {
+   base_scale: 1.0;
+   group { "elm/button/base/racing_bottom";
+      images {
+         image: "button_bottom.png" COMP;
+         image: "bg.png" COMP;
+      }
+      parts {
+         image { "background"
+            desc { "default";
+               rel1.relative: 0.0 0.0;
+               rel2.relative: 1.0 1.0;
+               image.normal: "button_bottom.png";
+            }
+            desc { "pressed";
+               image.normal: "bg.png";
+            }
+         }
+         swallow { "elm.swallow.content";
+            desc { "default";
+               rel1.relative: 0.4601 0.2923;
+               rel2.relative: 0.5435 0.8462;
+            }
+         }
+         text { "elm.text";
+            desc { "default";
+               rel1.relative: 0.0 0.0;
+               rel2.relative: 1.0 1.0;
+               text {
+                  text: "";
+                  size: 20;
+               }
+            }
+         }
+         rect { "event";
+            desc { "default";
+               rel1.relative: 0.0 0.0;
+               rel2.relative: 1.0 1.0;
+               color: 0 0 0 0;
+            }
+         }
+      }
+      programs {
+         program { "pressed";
+            signal: "mouse,down,*";
+            source: "event";
+            sequence {
+               action: SIGNAL_EMIT "elm,action,press" "elm";
+               action: STATE_SET "pressed";
+               target: background;
+            }
+         }
+         program { "unpressed";
+            signal: "mouse,up,*";
+            source: "event";
+            sequence {
+               action: SIGNAL_EMIT "elm,action,unpress" "elm";
+               action: STATE_SET "default";
+               target: "background";
+            }
+         }
+         program {
+            signal: "mouse,clicked,1";
+            source: "event";
+            action: SIGNAL_EMIT "elm,action,click" "elm";
+         }
+      }
+   }
+   group { "elm/button/base/racing_left";
+      inherit: "elm/button/base/racing_bottom";
+      images {
+         image: "button_left.png" COMP;
+         image: "button_left_pressed.png" COMP;
+      }
+      parts {
+         image { "background"
+            desc { "default";
+               rel1.relative: 0.0 0.0;
+               rel2.relative: 1.0 1.0;
+               image.normal: "button_left.png";
+            }
+            desc { "pressed";
+               image.normal: "button_left_pressed.png";
+            }
+         }
+         swallow { "elm.swallow.content";
+            desc { "default";
+               rel1.relative: 0.2089 0.4456;
+               rel2.relative: 0.6567 0.5471;
+            }
+         }
+      }
+   }
+   group { "elm/button/base/racing_right";
+      inherit: "elm/button/base/racing_bottom";
+      images {
+         image: "button_right.png" COMP;
+         image: "button_right_pressed.png" COMP;
+      }
+      parts {
+         image { "background"
+            desc { "default";
+               rel1.relative: 0.0 0.0;
+               rel2.relative: 1.0 1.0;
+               image.normal: "button_right.png";
+            }
+            desc { "pressed";
+               image.normal: "button_right_pressed.png";
+            }
+         }
+         swallow { "elm.swallow.content";
+            desc { "default";
+               rel1.relative: 0.2923 0.4601;
+               rel2.relative: 0.8462 0.5435;
+            }
+         }
+      }
+   }
+}
\ No newline at end of file
index 920aaa1..a7c9f79 100644 (file)
@@ -1,40 +1,39 @@
 collections {
+   styles {
+      style { "main_style";
+         base: "font='SamsungOne' font_size=36 font_width='condensed' color=#F8EECC valign=0.5 align=center wrap=word";
+      }
+   }
    group { name: "main";
       parts {
-         part { name: "txt_title";
-            type: TEXT;
+         text { "txt_title";
+            type: TEXTBLOCK;
             mouse_events: 0;
-            description { state: "default" 0.0;
+            desc { "default";
+               rel1.relative: 0.20 0.00;
+               rel2.relative: 0.80 1.00;
                text {
-                  text: "Hello Tizen";
-                  font: "Tizen:style=regular";
-                  size: 20;
-                  min: 1 1;
-                  align: 0.5 0.5;
-                  ellipsis: -1;
+                  text: "";
+                  style: "main_style";
                }
-               color: 0 255 255 255;
             }
          }
-         swallow { "Button_Ok";
-            scale: 1;
+         swallow { "Button_Cancel";
             desc { "default";
                visible: 1;
                align: 0.5 0.5;
-               rel1.relative: 0.0686 0.7029;
-               rel2.relative: 0.4886 0.8729;
+               rel1.relative: 0.0000 0.1167;
+               rel2.relative: 0.1805 0.8834;
             }
          }
-         swallow { "Button_Cancel";
-            scale: 1;
+         swallow { "Button_Ok";
             desc { "default";
                visible: 1;
                align: 0.5 0.5;
-               rel1.relative: 0.5429 0.7029;
-               rel2.relative: 0.9629 0.8729;
+               rel1.relative: 0.8194 0.1167;
+               rel2.relative: 1.0000 0.8834;
             }
          }
-
       }
    }
 }
diff --git a/res/images/no.png b/res/images/no.png
new file mode 100644 (file)
index 0000000..ec8d120
Binary files /dev/null and b/res/images/no.png differ
diff --git a/res/images/yes.png b/res/images/yes.png
new file mode 100644 (file)
index 0000000..0540264
Binary files /dev/null and b/res/images/yes.png differ
index 4240536..7e90139 100644 (file)
@@ -47,7 +47,22 @@ Evas_Object *view_base_create_layout(Evas_Object *parent, char *edj_file, char *
        return layout;
 }
 
-Evas_Object *view_base_create_button(Evas_Object *parent, char *part, char *text, Evas_Smart_Cb callback, void *data)
+Evas_Object *view_base_create_image(Evas_Object *parent, char *path)
+{
+       char edj_path[PATH_MAX] = { 0 };
+       view_base_get_resource(path, edj_path);
+
+       Evas_Object *image = elm_image_add(parent);
+       evas_object_size_hint_weight_set(parent, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+
+       if (!elm_image_file_set(image, edj_path, NULL)) {
+               dlog_print(DLOG_ERROR, LOG_TAG, "Failed to load file: %s", path);
+       }
+
+       return image;
+}
+
+Evas_Object *view_base_create_button(Evas_Object *parent, char *part, char *text, char *image_path, char *style, Evas_Smart_Cb callback, void *data)
 {
        Evas_Object *button = elm_button_add(parent);
        if (!button) {
@@ -55,7 +70,19 @@ Evas_Object *view_base_create_button(Evas_Object *parent, char *part, char *text
        }
 
        evas_object_size_hint_weight_set(button, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
-       elm_object_text_set(button, text);
+
+       if (style && !elm_object_style_set(button, style)) {
+               dlog_print(DLOG_ERROR, LOG_TAG, "Failed to set style: %s", style);
+       }
+
+       if (text) {
+               elm_object_text_set(button, text);
+       }
+
+       if (image_path) {
+               Evas_Object *image = view_base_create_image(button, image_path);
+               elm_object_content_set(button, image);
+       }
 
        if (callback) {
                evas_object_smart_callback_add(button, "clicked", callback, data);
index a721755..6a2e139 100644 (file)
@@ -42,8 +42,8 @@ static void _car_selection_create_gui(Evas_Object *parent)
        eext_object_event_callback_add(s_info.view_base.layout, EEXT_CALLBACK_BACK, _layout_back_cb, NULL);
        elm_layout_text_set(s_info.view_base.layout, "txt_title", "Car selection");
 
-       view_base_create_button(s_info.view_base.layout, "Button_Ok", "Ok", _ok_button_clicked_cb, NULL);
-       view_base_create_button(s_info.view_base.layout, "Button_Cancel", "Cancel", NULL, NULL);
+       view_base_create_button(s_info.view_base.layout, "Button_Ok", "Ok", NULL, NULL, _ok_button_clicked_cb, NULL);
+       view_base_create_button(s_info.view_base.layout, "Button_Cancel", "Cancel",  NULL, NULL, NULL, NULL);
 }
 
 s_view_base *view_car_selection_init(Evas_Object *parent)
index ab97b10..6a29840 100644 (file)
@@ -41,8 +41,9 @@ static void connect_to_car_create_gui(Evas_Object *parent)
        s_info.view_base.layout = view_base_create_layout(parent, EDJ_FILE, GRP_MAIN);
        eext_object_event_callback_add(s_info.view_base.layout, EEXT_CALLBACK_BACK, _layout_back_cb, NULL);
        elm_layout_text_set(s_info.view_base.layout, "txt_title", "Connect to a car?");
-       view_base_create_button(s_info.view_base.layout, "Button_Ok", "Ok", _ok_button_clicked_cb, NULL);
-       view_base_create_button(s_info.view_base.layout, "Button_Cancel", "Cancel", NULL, NULL);
+
+       view_base_create_button(s_info.view_base.layout, "Button_Cancel", NULL,  "images/no.png", "racing_left", NULL, NULL);
+       view_base_create_button(s_info.view_base.layout, "Button_Ok", NULL,  "images/yes.png", "racing_right", _ok_button_clicked_cb, NULL);
 }
 
 
index ece5a97..ea010ca 100644 (file)
@@ -42,8 +42,8 @@ static void _view_connection_successed_create_gui(Evas_Object *parent)
        eext_object_event_callback_add(s_info.view_base.layout, EEXT_CALLBACK_BACK, _layout_back_cb, NULL);
        elm_layout_text_set(s_info.view_base.layout, "txt_title", "Connection successed");
 
-       view_base_create_button(s_info.view_base.layout, "Button_Ok", "Ok", _ok_button_clicked_cb, NULL);
-       view_base_create_button(s_info.view_base.layout, "Button_Cancel", "Cancel", NULL, NULL);
+       view_base_create_button(s_info.view_base.layout, "Button_Ok", "Ok",  NULL, NULL, _ok_button_clicked_cb, NULL);
+       view_base_create_button(s_info.view_base.layout, "Button_Cancel", "Cancel",  NULL, NULL, NULL, NULL);
 }
 
 s_view_base *view_connection_successed_init(Evas_Object *parent)
index 088afd9..648f210 100644 (file)
@@ -42,8 +42,8 @@ static void _view_help_create_gui(Evas_Object *parent)
        eext_object_event_callback_add(s_info.view_base.layout, EEXT_CALLBACK_BACK, _layout_back_cb, NULL);
        elm_layout_text_set(s_info.view_base.layout, "txt_title", "Help");
 
-       view_base_create_button(s_info.view_base.layout, "Button_Ok", "Ok", _ok_button_clicked_cb, NULL);
-       view_base_create_button(s_info.view_base.layout, "Button_Cancel", "Cancel", NULL, NULL);
+       view_base_create_button(s_info.view_base.layout, "Button_Ok", "Ok",  NULL, NULL, _ok_button_clicked_cb, NULL);
+       view_base_create_button(s_info.view_base.layout, "Button_Cancel", "Cancel",  NULL, NULL, NULL, NULL);
 }
 
 s_view_base *view_help_init(Evas_Object *parent)
index 5bfc6e0..24bbe02 100644 (file)
@@ -42,8 +42,8 @@ static void _view_name_input_create_gui(Evas_Object *parent)
        eext_object_event_callback_add(s_info.view_base.layout, EEXT_CALLBACK_BACK, _layout_back_cb, NULL);
        elm_layout_text_set(s_info.view_base.layout, "txt_title", "Name input");
 
-       view_base_create_button(s_info.view_base.layout, "Button_Ok", "Ok", _ok_button_clicked_cb, NULL);
-       view_base_create_button(s_info.view_base.layout, "Button_Cancel", "Cancel", NULL, NULL);
+       view_base_create_button(s_info.view_base.layout, "Button_Ok", "Ok",  NULL, NULL, _ok_button_clicked_cb, NULL);
+       view_base_create_button(s_info.view_base.layout, "Button_Cancel", "Cancel",  NULL, NULL, NULL, NULL);
 }
 
 s_view_base *view_name_input_init(Evas_Object *parent)
index 207c60f..6734608 100644 (file)
@@ -42,8 +42,8 @@ static void _view_network_failure_create_gui(Evas_Object *parent)
        eext_object_event_callback_add(s_info.view_base.layout, EEXT_CALLBACK_BACK, _layout_back_cb, NULL);
        elm_layout_text_set(s_info.view_base.layout, "txt_title", "Network failure");
 
-       view_base_create_button(s_info.view_base.layout, "Button_Ok", "Ok", _ok_button_clicked_cb, NULL);
-       view_base_create_button(s_info.view_base.layout, "Button_Cancel", "Cancel", NULL, NULL);
+       view_base_create_button(s_info.view_base.layout, "Button_Ok", "Ok",  NULL, NULL, _ok_button_clicked_cb, NULL);
+       view_base_create_button(s_info.view_base.layout, "Button_Cancel", "Cancel",  NULL, NULL, NULL, NULL);
 }
 
 s_view_base *view_network_failure_init(Evas_Object *parent)
index 5d9fc57..4b01cf2 100644 (file)
@@ -43,8 +43,8 @@ static void _view_reset_create_gui(Evas_Object *parent)
        eext_object_event_callback_add(s_info.view_base.layout, EEXT_CALLBACK_BACK, _layout_back_cb, NULL);
        elm_layout_text_set(s_info.view_base.layout, "txt_title", "Reset");
 
-       view_base_create_button(s_info.view_base.layout, "Button_Ok", "Ok", _ok_button_clicked_cb, NULL);
-       view_base_create_button(s_info.view_base.layout, "Button_Cancel", "Cancel", NULL, NULL);
+       view_base_create_button(s_info.view_base.layout, "Button_Ok", "Ok",  NULL, NULL, _ok_button_clicked_cb, NULL);
+       view_base_create_button(s_info.view_base.layout, "Button_Cancel", "Cancel",  NULL, NULL, NULL, NULL);
 }
 
 s_view_base *view_reset_init(Evas_Object *parent)
index 835d006..06abacb 100644 (file)
@@ -15,6 +15,7 @@
 */
 
 #include <assert.h>
+#include "gear-racing-controller.h"
 #include "view_manager/view_manager.h"
 
 typedef struct _s_ui {
@@ -62,6 +63,13 @@ static void _create_naviframe(void)
        evas_object_show(s_info.conform);
 }
 
+static void _create_theme_extension(void)
+{
+       char edj_path[PATH_MAX] = { 0 };
+       view_base_get_resource("edje/button_style.edj", edj_path);
+       elm_theme_extension_add(NULL, edj_path);
+}
+
 void view_manager_set_view(view_id id)
 {
        view_base_hide(s_info.current_view);
@@ -76,6 +84,7 @@ void view_manager_set_view(view_id id)
 
 void view_manager_initialize_ui(void)
 {
+       _create_theme_extension();
        _create_window();
        _create_conformant();
        _create_naviframe();