Tickernoti "clicked" signal emission on clicking the area other than the button
authorRajeev Ranjan <rajeev.r@samsung.com>
Fri, 9 Sep 2011 03:47:44 +0000 (12:47 +0900)
committerRajeev Ranjan <rajeev.r@samsung.com>
Sat, 10 Sep 2011 11:17:26 +0000 (20:17 +0900)
Change-Id: I5b2e1343cbd750c6ab0a4f3018fa9e732d431a93

src/lib/Elementary.h.in
src/lib/elm_tickernoti.c

index e2738f8..d0d8dd7 100644 (file)
@@ -8227,6 +8227,12 @@ typedef enum
    EAPI void                      elm_tickernoti_mode_set (Evas_Object *obj, Elm_Tickernoti_Mode mode) EINA_ARG_NONNULL(1);
    EAPI Elm_Tickernoti_Mode       elm_tickernoti_mode_get (const Evas_Object *obj) EINA_ARG_NONNULL(1);
    /* ############################################################################### */
+   /* smart callbacks called:
+    * @li "clicked" - emitted when tickernoti is clicked, except at the
+    * swallow/button region, if any.
+    * @li "hide" - emitted when the tickernoti is completelyhidden. In case of
+    * any hide animation, this signal is raised after the animation.
+    */
 
    /* colorpalette */
    typedef struct _Colorpalette_Color Elm_Colorpalette_Color;
index 4476c2b..a69995b 100644 (file)
@@ -31,6 +31,13 @@ static void _del_hook(Evas_Object *obj);
 static void _theme_hook(Evas_Object *obj);
 static void _sizing_eval(Evas_Object *obj);
 
+static const char SIG_CLICKED[] = "clicked";
+static const char SIG_HIDDEN[] = "hide";
+static const Evas_Smart_Cb_Description _signals[] = {
+       {SIG_CLICKED, ""},
+       {SIG_HIDDEN, ""},
+       {NULL, NULL}
+};
 static void
 _del_job(void *data)
 {
@@ -103,11 +110,12 @@ static void
 _sizing_eval(Evas_Object *obj)
 {
    Widget_Data *wd = elm_widget_data_get(obj);
-   Evas_Coord minw = -1, minh = -1, maxw = -1, maxh = -1;
+   Evas_Coord minw = -1, minh = -1;
 
    if (!wd) return;
-   edje_object_size_min_calc(wd->win, &minw, &minh);
-//TODO:
+   elm_coords_finger_size_adjust(1, &minw, 1, &minh);
+   edje_object_size_min_restricted_calc(wd->edje_obj, &minw, &minh, minw, minh);
+   evas_object_size_hint_min_set(obj, minw, minh);
 }
 
 #ifdef HAVE_ELEMENTARY_X
@@ -142,7 +150,17 @@ static void _hide_cb (void *data, Evas_Object *obj __UNUSED__,
 
    if (!wd) return;
    evas_object_hide (wd->win);
-   evas_object_smart_callback_call (data, "hide", NULL);
+   evas_object_smart_callback_call (data, SIG_HIDDEN, NULL);
+}
+
+static void _clicked_cb (void *data, Evas_Object *obj __UNUSED__,
+                             const char *emission __UNUSED__,
+                             const char *source __UNUSED__)
+{
+   Widget_Data *wd = elm_widget_data_get(data);
+
+   if (!wd) return;
+   evas_object_smart_callback_call (data, SIG_CLICKED, NULL);
 }
 
 static Evas_Object
@@ -193,6 +211,7 @@ _create_tickernoti (Evas_Object *obj)
 #endif
 
    edje_object_signal_callback_add(wd->edje_obj, "request,hide", "", _hide_cb, obj);
+   edje_object_signal_callback_add(wd->edje_obj, "clicked", "", _clicked_cb, obj);
    evas_object_show (wd->edje_obj);
 }
 
@@ -278,7 +297,7 @@ elm_tickernoti_add(Evas_Object *parent)
 
    evas_object_event_callback_add (obj, EVAS_CALLBACK_SHOW, _show, NULL);
    evas_object_event_callback_add (obj, EVAS_CALLBACK_HIDE, _hide, NULL);
-
+   evas_object_smart_callbacks_descriptions_set(obj, _signals);
    return obj;
 }
 
@@ -431,7 +450,7 @@ elm_tickernoti_rotation_set (Evas_Object *obj, int angle)
 
    /*
    * manual calculate win_tickernoti_indi window position & size
-   *  - win_indi is not full size window (480 x 27)
+   *  - win_indi is not full size window
    */
    ecore_x_window_size_get (ecore_x_window_root_first_get(), &root_w, &root_h);