From: Sohyun Kim <anna1014.kim@samsung.com>
authorSohyun Kim <anna1014.kim@samsung.com>
Tue, 4 Jan 2011 08:42:55 +0000 (08:42 +0000)
committerCarsten Haitzler <raster@rasterman.com>
Tue, 4 Jan 2011 08:42:55 +0000 (08:42 +0000)
Subject: [E-devel] [Patch] elm_bubble theme patch

I'm Sohyun Kim. Nice to meet you.

This is a patch for bubble theme.

The bubble has a region for icon, label and info text.
However, it has the region, if icon, label and info text are not set.
I modified theme and added edje signals.

1. add edje signal for label and info text state
2. remove text size for label and info text default state
   -> set it on "visible" state
3. add base image state for info text only

SVN revision: 55839

AUTHORS
data/themes/default.edc
src/lib/elm_bubble.c

diff --git a/AUTHORS b/AUTHORS
index 5a0740e..05c8c13 100644 (file)
--- a/AUTHORS
+++ b/AUTHORS
@@ -31,3 +31,4 @@ Daniel Juyung Seo (SeoZ) <juyung.seo@samsung.com> <seojuyung2@gmail.com>
 Sangho Park <sangho.g.park@samsung.com> <gouache95@gmail.com>
 Rajeev Ranjan (Rajeev) <rajeev.r@samsung.com> <rajeev.jnnce@gmail.com>
 Seunggyun Kim <sgyun.kim@samsung.com> <tmdrbs@gmail.com>
+Sohyun Kim <anna1014.kim@samsung.com> <sohyun.anna@gmail.com>
index f59b815..2f65557 100644 (file)
@@ -9307,6 +9307,7 @@ collections {
         description { state: "default" 0.0;
           align: 0.0 0.0;
           fixed: 0 1;
+          visible: 0;
           rel1 {
             to_x: "elm.swallow.icon";
             relative: 1.0 0.0;
@@ -9317,6 +9318,10 @@ collections {
             relative: 0.0 0.0;
             offset: -5 4;
           }
+        }
+        description { state: "visible" 0.0;
+          inherit: "default" 0.0;
+          visible: 1;
           color: 0 0 0 255;
           text {
             font: "Sans:style=Bold,Edje-Vera-Bold";
@@ -9325,7 +9330,7 @@ collections {
             max: 0 1;
             align: 0.0 0.0;
           }
-        }
+        } 
       }
       part { name: "elm.info";
         type: TEXT;
@@ -9334,6 +9339,7 @@ collections {
         description { state: "default" 0.0;
           align: 1.0 0.0;
           fixed: 1 1;
+          visible: 0;
           rel1 {
             relative: 1.0 0.0;
             offset: -5 4;
@@ -9342,6 +9348,10 @@ collections {
             relative: 1.0 0.0;
             offset: -5 4;
           }
+        }
+        description { state: "visible" 0.0;
+          inherit: "default" 0.0;
+          visible: 1;
           color: 0 0 0 64;
           text {
             font: "Sans:style=Bold,Edje-Vera-Bold";
@@ -9350,7 +9360,7 @@ collections {
             max: 1 1;
             align: 1.0 0.0;
           }
-        }
+        } 
       }
       part { name: "base0";
         mouse_events:  0;
@@ -9367,6 +9377,10 @@ collections {
           image.middle: SOLID;
           fill.smooth: 0;
         }
+        description { state: "infobase" 0.0;
+          inherit: "default" 0.0;
+          rel1.to_y: "elm.info";
+        }
       }
       part { name: "elm.swallow.content";
         type: SWALLOW;
@@ -9406,15 +9420,62 @@ collections {
         name: "icon_show";
         signal: "elm,state,icon,visible";
         source: "elm";
-        action: STATE_SET "visible" 0.0;
-        target: "elm.swallow.icon";
+        script {
+          new st[31];
+          new Float:vl;
+          get_state(PART:"base0", st, 30, vl);
+          if (!strcmp(st, "infobase"))
+            set_state(PART:"base0", "default", 0.0);
+          set_state(PART:"elm.swallow.icon", "visible", 0.0);
+        }
       }
       program {
         name: "icon_hide";
         signal: "elm,state,icon,hidden";
         source: "elm";
+        script {
+          new st[31];
+          new Float:vl;
+          get_state(PART:"elm.info", st, 30, vl);
+          if (!strcmp(st, "visible"))
+            set_state(PART:"base0", "infobase", 0.0);
+          set_state(PART:"elm.swallow.icon", "default", 0.0);
+        }
+      }
+      program {
+        name: "text_show";
+        signal: "elm,state,text,visible";
+        source: "elm";
+        action: STATE_SET "visible" 0.0;
+        target: "elm.text";
+      }
+      program {
+        name: "text_hide";
+        signal: "elm,state,text,hidden";
+        source: "elm";
         action: STATE_SET "default" 0.0;
-        target: "elm.swallow.icon";
+        target: "elm.text";
+      }
+      program {
+        name: "info_show";
+        signal: "elm,state,info,visible";
+        source: "elm";
+        script {
+          new st[31];
+          new Float:vl;
+          get_state(PART:"elm.swallow.icon", st, 30, vl);
+          if (!strcmp(st, "default"))
+            set_state(PART:"base0", "infobase", 0.0);
+          set_state(PART:"elm.info", "visible", 0.0);
+        }
+      }
+      program {
+        name: "info_hide";
+        signal: "elm,state,info,hidden";
+        source: "elm";
+        action: STATE_SET "default" 0.0;
+        target: "elm.info";
+        target: "base0";
       }
     }
   }
@@ -9462,6 +9523,7 @@ collections {
         description { state: "default" 0.0;
           align: 0.0 0.0;
           fixed: 0 1;
+          visible: 0;
           rel1 {
             relative: 0.0 0.0;
             offset: 4 4;
@@ -9471,6 +9533,10 @@ collections {
             relative: 0.0 0.0;
             offset: -5 4;
           }
+        }
+        description { state: "visible" 0.0;
+          inherit: "default" 0.0;
+          visible: 1;
           color: 0 0 0 255;
           text {
             font: "Sans:style=Bold,Edje-Vera-Bold";
@@ -9488,6 +9554,7 @@ collections {
         description { state: "default" 0.0;
           align: 1.0 0.0;
           fixed: 1 1;
+          visible: 0;
           rel1 {
             relative: 1.0 0.0;
             offset: -5 4;
@@ -9497,6 +9564,10 @@ collections {
             relative: 0.0 0.0;
             offset: -5 4;
           }
+        }
+        description { state: "visible" 0.0;
+          inherit: "default" 0.0;
+          visible: 1;
           color: 0 0 0 64;
           text {
             font: "Sans:style=Bold,Edje-Vera-Bold";
@@ -9522,6 +9593,10 @@ collections {
           image.middle: SOLID;
           fill.smooth: 0;
         }
+        description { state: "infobase" 0.0;
+          inherit: "default" 0.0;
+          rel1.to_y: "elm.info";
+        }
       }
       part { name: "elm.swallow.content";
         type: SWALLOW;
@@ -9561,15 +9636,62 @@ collections {
         name: "icon_show";
         signal: "elm,state,icon,visible";
         source: "elm";
-        action: STATE_SET "visible" 0.0;
-        target: "elm.swallow.icon";
+        script {
+          new st[31];
+          new Float:vl;
+          get_state(PART:"base0", st, 30, vl);
+          if (!strcmp(st, "infobase"))
+            set_state(PART:"base0", "default", 0.0);
+          set_state(PART:"elm.swallow.icon", "visible", 0.0);
+        }
       }
       program {
         name: "icon_hide";
         signal: "elm,state,icon,hidden";
         source: "elm";
+        script {
+          new st[31];
+          new Float:vl;
+          get_state(PART:"elm.info", st, 30, vl);
+          if (!strcmp(st, "visible"))
+            set_state(PART:"base0", "infobase", 0.0);
+          set_state(PART:"elm.swallow.icon", "default", 0.0);
+        }
+      }
+      program {
+        name: "text_show";
+        signal: "elm,state,text,visible";
+        source: "elm";
+        action: STATE_SET "visible" 0.0;
+        target: "elm.text";
+      }
+      program {
+        name: "text_hide";
+        signal: "elm,state,text,hidden";
+        source: "elm";
+        action: STATE_SET "default" 0.0;
+        target: "elm.text";
+      }
+      program {
+        name: "info_show";
+        signal: "elm,state,info,visible";
+        source: "elm";
+        script {
+          new st[31];
+          new Float:vl;
+          get_state(PART:"elm.swallow.icon", st, 30, vl);
+          if (!strcmp(st, "default"))
+            set_state(PART:"base0", "infobase", 0.0);
+          set_state(PART:"elm.info", "visible", 0.0);
+        }
+      }
+      program {
+        name: "info_hide";
+        signal: "elm,state,info,hidden";
+        source: "elm";
         action: STATE_SET "default" 0.0;
-        target: "elm.swallow.icon";
+        target: "elm.info";
+        target: "base0";
       }
     }
   }
@@ -9617,6 +9739,7 @@ collections {
         description { state: "default" 0.0;
           align: 0.0 1.0;
           fixed: 0 1;
+          visible: 0;
           rel1 {
             to_x: "elm.swallow.icon";
             relative: 1.0 1.0;
@@ -9627,6 +9750,10 @@ collections {
             relative: 0.0 1.0;
             offset: -5 -5;
           }
+        }
+        description { state: "visible" 0.0;
+          inherit: "default" 0.0;
+          visible: 1;
           color: 0 0 0 255;
           text {
             font: "Sans:style=Bold,Edje-Vera-Bold";
@@ -9644,6 +9771,7 @@ collections {
         description { state: "default" 0.0;
           align: 1.0 1.0;
           fixed: 1 1;
+          visible: 0;
           rel1 {
             relative: 1.0 1.0;
             offset: -5 -5;
@@ -9652,6 +9780,10 @@ collections {
             relative: 1.0 1.0;
             offset: -5 -5;
           }
+        }
+        description { state: "visible" 0.0;
+          inherit: "default" 0.0;
+          visible: 1;
           color: 0 0 0 64;
           text {
             font: "Sans:style=Bold,Edje-Vera-Bold";
@@ -9677,6 +9809,10 @@ collections {
           image.middle: SOLID;
           fill.smooth: 0;
         }
+        description { state: "infobase" 0.0;
+          inherit: "default" 0.0;
+          rel2.to_y: "elm.info";
+        }
       }
       part { name: "elm.swallow.content";
         type: SWALLOW;
@@ -9716,15 +9852,62 @@ collections {
         name: "icon_show";
         signal: "elm,state,icon,visible";
         source: "elm";
-        action: STATE_SET "visible" 0.0;
-        target: "elm.swallow.icon";
+        script {
+          new st[31];
+          new Float:vl;
+          get_state(PART:"base0", st, 30, vl);
+          if (!strcmp(st, "infobase"))
+            set_state(PART:"base0", "default", 0.0);
+          set_state(PART:"elm.swallow.icon", "visible", 0.0);
+        }
       }
       program {
         name: "icon_hide";
         signal: "elm,state,icon,hidden";
         source: "elm";
+        script {
+          new st[31];
+          new Float:vl;
+          get_state(PART:"elm.info", st, 30, vl);
+          if (!strcmp(st, "visible"))
+            set_state(PART:"base0", "infobase", 0.0);
+          set_state(PART:"elm.swallow.icon", "default", 0.0);
+        }
+      }
+      program {
+        name: "text_show";
+        signal: "elm,state,text,visible";
+        source: "elm";
+        action: STATE_SET "visible" 0.0;
+        target: "elm.text";
+      }
+      program {
+        name: "text_hide";
+        signal: "elm,state,text,hidden";
+        source: "elm";
+        action: STATE_SET "default" 0.0;
+        target: "elm.text";
+      }
+      program {
+        name: "info_show";
+        signal: "elm,state,info,visible";
+        source: "elm";
+        script {
+          new st[31];
+          new Float:vl;
+          get_state(PART:"elm.swallow.icon", st, 30, vl);
+          if (!strcmp(st, "default"))
+            set_state(PART:"base0", "infobase", 0.0);
+          set_state(PART:"elm.info", "visible", 0.0);
+        }
+      }
+      program {
+        name: "info_hide";
+        signal: "elm,state,info,hidden";
+        source: "elm";
         action: STATE_SET "default" 0.0;
-        target: "elm.swallow.icon";
+        target: "elm.info";
+        target: "base0";
       }
     }
   }
@@ -9772,6 +9955,7 @@ collections {
         description { state: "default" 0.0;
           align: 0.0 1.0;
           fixed: 0 1;
+          visible: 0;
           rel1 {
             relative: 0.0 1.0;
             offset: 4 -5;
@@ -9781,6 +9965,10 @@ collections {
             relative: 0.0 1.0;
             offset: -5 -5;
           }
+        }
+        description { state: "visible" 0.0;
+          inherit: "default" 0.0;
+          visible: 1;
           color: 0 0 0 255;
           text {
             font: "Sans:style=Bold,Edje-Vera-Bold";
@@ -9798,6 +9986,7 @@ collections {
         description { state: "default" 0.0;
           align: 1.0 1.0;
           fixed: 1 1;
+          visible: 0;
           rel1 {
             relative: 1.0 1.0;
             offset: -5 -5;
@@ -9807,6 +9996,10 @@ collections {
             relative: 0.0 1.0;
             offset: -5 -5;
           }
+        }
+        description { state: "visible" 0.0;
+          inherit: "default" 0.0;
+          visible: 1;
           color: 0 0 0 64;
           text {
             font: "Sans:style=Bold,Edje-Vera-Bold";
@@ -9832,6 +10025,10 @@ collections {
           image.middle: SOLID;
           fill.smooth: 0;
         }
+        description { state: "infobase" 0.0;
+          inherit: "default" 0.0;
+          rel2.to_y: "elm.info";
+        }
       }
       part { name: "elm.swallow.content";
         type: SWALLOW;
@@ -9871,15 +10068,62 @@ collections {
         name: "icon_show";
         signal: "elm,state,icon,visible";
         source: "elm";
-        action: STATE_SET "visible" 0.0;
-        target: "elm.swallow.icon";
+        script {
+          new st[31];
+          new Float:vl;
+          get_state(PART:"base0", st, 30, vl);
+          if (!strcmp(st, "infobase"))
+            set_state(PART:"base0", "default", 0.0);
+          set_state(PART:"elm.swallow.icon", "visible", 0.0);
+        }
       }
       program {
         name: "icon_hide";
         signal: "elm,state,icon,hidden";
         source: "elm";
+        script {
+          new st[31];
+          new Float:vl;
+          get_state(PART:"elm.info", st, 30, vl);
+          if (!strcmp(st, "visible"))
+            set_state(PART:"base0", "infobase", 0.0);
+          set_state(PART:"elm.swallow.icon", "default", 0.0);
+        }
+      }
+      program {
+        name: "text_show";
+        signal: "elm,state,text,visible";
+        source: "elm";
+        action: STATE_SET "visible" 0.0;
+        target: "elm.text";
+      }
+      program {
+        name: "text_hide";
+        signal: "elm,state,text,hidden";
+        source: "elm";
+        action: STATE_SET "default" 0.0;
+        target: "elm.text";
+      }
+      program {
+        name: "info_show";
+        signal: "elm,state,info,visible";
+        source: "elm";
+        script {
+          new st[31];
+          new Float:vl;
+          get_state(PART:"elm.swallow.icon", st, 30, vl);
+          if (!strcmp(st, "default"))
+            set_state(PART:"base0", "infobase", 0.0);
+          set_state(PART:"elm.info", "visible", 0.0);
+        }
+      }
+      program {
+        name: "info_hide";
+        signal: "elm,state,info,hidden";
+        source: "elm";
         action: STATE_SET "default" 0.0;
-        target: "elm.swallow.icon";
+        target: "elm.info";
+        target: "base0";
       }
     }
   }
index e24c6ff..2be1dcd 100644 (file)
@@ -54,7 +54,11 @@ _theme_hook(Evas_Object *obj)
    _elm_theme_object_set(obj, wd->bbl, "bubble", wd->corner,
                          elm_widget_style_get(obj));
    edje_object_part_text_set(wd->bbl, "elm.text", wd->label);
+   if (wd->label) edje_object_signal_emit(wd->bbl, "elm,state,text,visible", "elm");
+   else edje_object_signal_emit(wd->bbl, "elm,state,text,hidden", "elm");
    edje_object_part_text_set(wd->bbl, "elm.info", wd->info);
+   if (wd->info) edje_object_signal_emit(wd->bbl, "elm,state,info,visible", "elm");
+   else edje_object_signal_emit(wd->bbl, "elm,state,info,hidden", "elm");
    if (wd->content)
      {
         edje_object_part_swallow(wd->bbl, "elm.swallow.content", wd->content);
@@ -197,6 +201,8 @@ elm_bubble_label_set(Evas_Object *obj, const char *label)
    if (!wd) return;
    eina_stringshare_replace(&wd->label, label);
    edje_object_part_text_set(wd->bbl, "elm.text", label);
+   if (label) edje_object_signal_emit(wd->bbl, "elm,state,text,visible", "elm");
+   else edje_object_signal_emit(wd->bbl, "elm,state,text,hidden", "elm");
    _sizing_eval(obj);
 }
 
@@ -241,6 +247,8 @@ elm_bubble_info_set(Evas_Object *obj, const char *info)
    if (!wd) return;
    eina_stringshare_replace(&wd->info, info);
    edje_object_part_text_set(wd->bbl, "elm.info", info);
+   if (info) edje_object_signal_emit(wd->bbl, "elm,state,info,visible", "elm");
+   else edje_object_signal_emit(wd->bbl, "elm,state,info,hidden", "elm");
    _sizing_eval(obj);
 }