merge with master
authorJinkun Jang <jinkun.jang@samsung.com>
Fri, 15 Mar 2013 16:04:46 +0000 (01:04 +0900)
committerJinkun Jang <jinkun.jang@samsung.com>
Fri, 15 Mar 2013 16:04:46 +0000 (01:04 +0900)
21 files changed:
daemon/idletxt/idletxt.c
daemon/minictrl/minictrl.c
daemon/notifications/brightness.c
daemon/notifications/noti.c
daemon/notifications/noti.h
daemon/notifications/noti_box.c
daemon/notifications/noti_display_app.c [deleted file]
daemon/notifications/noti_display_app.h [deleted file]
daemon/notifications/noti_win.c
daemon/notifications/ticker.c
daemon/quickpanel-ui.c
daemon/quickpanel-ui.h
data/quickpanel.xml.in
data/quickpanel_def.h
data/quickpanel_notibox.edc
data/quickpanel_spn.edc
data/quickpanel_theme.edc
data/quickpanel_theme_element.edc
org.tizen.quickpanel.manifest
packaging/org.tizen.quickpanel.spec
packaging/quickpanel.service

index 0b4c72e..4026fd3 100755 (executable)
 #include <vconf.h>
 #include "common.h"
 #include "quickpanel-ui.h"
+#include "quickpanel_def.h"
 
+#define QP_ENABLE_SLIDING_TEXT 0
+#define QP_ENABLE_SAT 0
 #define QP_IDLETXT_PART                "qp.noti.swallow.spn"
 
 #define QP_SPN_BASE_PART       "qp.base.spn.swallow"
@@ -98,6 +101,21 @@ static Evas_Object *_quickpanel_idletxt_create_label(Evas_Object * parent,
 
        obj = elm_label_add(parent);
        if (obj != NULL) {
+               struct appdata *ad = quickpanel_get_app_data();
+
+               if (ad != NULL)
+                       elm_label_wrap_width_set(obj, QP_SPN_TEXT_W * ad->scale);
+               else
+                       elm_label_wrap_width_set(obj, QP_SPN_TEXT_W);
+
+#if QP_ENABLE_SLIDING_TEXT
+               elm_label_slide_mode_set(obj, ELM_LABEL_SLIDE_MODE_AUTO);
+               elm_label_slide_duration_set(obj, 3);
+               elm_object_style_set(obj, "slide_bounce");
+#else
+               elm_label_ellipsis_set(obj, EINA_TRUE);
+#endif
+
                elm_object_text_set(obj, buf);
 
                evas_object_size_hint_weight_set(obj, EVAS_HINT_EXPAND,
@@ -184,9 +202,6 @@ static Evas_Object *_quickpanel_idletxt_add_label(Evas_Object * box,
                obj = _quickpanel_idletxt_create_label(box, txt);
 
                if (obj != NULL) {
-                       if (len > QP_IDLETXT_SLIDE_LEN)
-                               elm_label_slide_set(obj, EINA_TRUE);
-
                        return obj;
                }
        }
@@ -224,9 +239,6 @@ static Evas_Object *_quickpanel_idletxt_exception_add_label(Evas_Object * box)
                obj = _quickpanel_idletxt_create_label(box, text);
 
                if (obj != NULL) {
-                       if (strlen(text) > QP_IDLETXT_SLIDE_LEN)
-                               elm_label_slide_set(obj, EINA_TRUE);
-
                        return obj;
                }
        }
@@ -298,25 +310,26 @@ static Evas_Object *_quickpanel_idletxt_get_sat_text(Evas_Object * box)
        return label;
 }
 
+static Eina_Bool _quickpanel_idletxt_button_clicked_timer_cb(void *data)
+{
+       quickpanel_launch_app(QP_SETTING_PKG_SETTING, NULL);
+       quickpanel_close_quickpanel(true);
+
+       return ECORE_CALLBACK_CANCEL;
+}
+
+
 static void _quickpanel_idletxt_button_clicked(void *data, Evas_Object * obj, void *event_info)
 {
        struct appdata *ad = data;
+
+       quickpanel_play_feedback();
+
        retif(obj == NULL, , "Invalid parameter!");
        retif(ad == NULL, , "Invalid parameter!");
        retif(ad->win == NULL, , "ad->win is NULL");
 
-       Ecore_X_Window zone;
-
-       if (ad->is_emul == 1)
-               quickpanel_launch_app(QP_SETTING_PKG_SETTING_EMUL, NULL);
-       else
-               quickpanel_launch_app(QP_SETTING_PKG_SETTING, NULL);
-
-       zone = ecore_x_e_illume_zone_get(elm_win_xwindow_get(ad->win));
-       ecore_x_e_illume_quickpanel_state_send(zone,
-                       ECORE_X_ILLUME_QUICKPANEL_STATE_OFF);
-
-       elm_object_signal_emit(obj, "elm,action,button,reset", "elm");
+       ecore_idler_add(_quickpanel_idletxt_button_clicked_timer_cb, NULL);
 }
 
 static void quickpanel_idletxt_update(void *data)
@@ -353,9 +366,11 @@ static void quickpanel_idletxt_update(void *data)
                elm_box_pack_end(idletxtbox, label);
 
        /* get sat idle text */
+#if QP_ENABLE_SAT
        label = _quickpanel_idletxt_get_sat_text(idletxtbox);
        if (label != NULL)
                elm_box_pack_end(idletxtbox, label);
+#endif
 
        if (button_settings == NULL) {
                button_settings = elm_button_add(spn);
@@ -519,13 +534,56 @@ static int quickpanel_idletxt_fini(void *data)
        return QP_OK;
 }
 
+#if QP_ENABLE_SLIDING_TEXT
+static Evas_Object *_quickpanel_spn_label_get(void *data)
+{
+       Evas_Object *spn = NULL;
+       Evas_Object *label = NULL;
+       Evas_Object *idletxtbox = NULL;
+       struct appdata *ad = NULL;
+       retif(!data, NULL, "Invalid parameter!");
+       ad = data;
+
+       retif(!ad->ly, NULL, "layout is NULL!");
+
+       spn = elm_object_part_content_get(ad->ly, QP_SPN_BASE_PART);
+       retif(!spn, NULL, "spn layout is NULL!");
+
+       idletxtbox = elm_object_part_content_get(spn, QP_SPN_BOX_PART);
+       retif(!idletxtbox, NULL, "idletxtbox is NULL!");
+
+       Eina_List *list = elm_box_children_get(idletxtbox);
+       retif(!list, NULL, "list is NULL!");
+
+       label = eina_list_nth(list, 0);
+
+       return label;
+}
+#endif
+
 static int quickpanel_idletxt_suspend(void *data)
 {
+#if QP_ENABLE_SLIDING_TEXT
+       Evas_Object *label = _quickpanel_spn_label_get(data);
+
+       if (label != NULL) {
+               elm_label_slide_mode_set(label, ELM_LABEL_SLIDE_MODE_NONE);
+       }
+#endif
+
        return QP_OK;
 }
 
 static int quickpanel_idletxt_resume(void *data)
 {
+#if QP_ENABLE_SLIDING_TEXT
+       Evas_Object *label = _quickpanel_spn_label_get(data);
+
+       if (label != NULL) {
+               elm_label_slide_mode_set(label, ELM_LABEL_SLIDE_MODE_AUTO);
+       }
+#endif
+
        return QP_OK;
 }
 
index e7c7e74..3a009de 100755 (executable)
 static int quickpanel_minictrl_init(void *data);
 static int quickpanel_minictrl_fini(void *data);
 static unsigned int quickpanel_minictrl_get_height(void *data);
+static int quickpanel_minictrl_suspend(void *data);
+static int quickpanel_minictrl_resume(void *data);
 
 QP_Module minictrl = {
        .name = "minictrl",
        .init = quickpanel_minictrl_init,
        .fini = quickpanel_minictrl_fini,
-       .suspend = NULL,
-       .resume = NULL,
+       .suspend = quickpanel_minictrl_suspend,
+       .resume = quickpanel_minictrl_resume,
        .hib_enter = NULL,
        .hib_leave = NULL,
        .lang_changed = NULL,
@@ -59,6 +61,30 @@ struct _viewer_item {
 
 GHashTable *g_prov_table;
 
+static void _viewer_freeze(Evas_Object *viewer)
+{
+       int freezed_count = 0;
+       retif(viewer == NULL, , "Invalid parameter!");
+
+       freezed_count = elm_object_scroll_freeze_get(viewer);
+
+       if (freezed_count <= 0) {
+               elm_object_scroll_freeze_push(viewer);
+       }
+}
+
+static void _viewer_unfreeze(Evas_Object *viewer)
+{
+       int i = 0, freezed_count = 0;
+       retif(viewer == NULL, , "Invalid parameter!");
+
+       freezed_count = elm_object_scroll_freeze_get(viewer);
+
+       for (i = 0 ; i < freezed_count; i++) {
+               elm_object_scroll_freeze_pop(viewer);
+       }
+}
+
 static void _viewer_set_size(Evas_Object *viewer, void *data, int width, int height)
 {
        retif(viewer == NULL, , "Invalid parameter!");
@@ -69,8 +95,6 @@ static void _viewer_set_size(Evas_Object *viewer, void *data, int width, int hei
        int max_width = 0;
        int resized_width = 0;
 
-       DBG("mini w:%d h:%d", width, height);
-
        if (ad->angle == 90 || ad->angle == 270) {
                max_width = (ad->scale * MINICONTROL_WIDTH_L_MAX) - 1;
        } else {
@@ -218,6 +242,16 @@ qp_item_type_e _minictrl_priority_to_type(minicontrol_priority_e priority)
        return type;
 }
 
+static void _minictrl_release_cb(void *data, Evas *e,
+               Evas_Object *obj, void *event_info) {
+       struct appdata *ad;
+       retif(!data, , "data is NULL");
+       ad = data;
+
+       DBG("");
+       _viewer_unfreeze(ad->list);
+}
+
 static void _minictrl_add(const char *name, unsigned int width,
                                unsigned int height,
                                minicontrol_priority_e priority,
@@ -268,6 +302,9 @@ static void _minictrl_add(const char *name, unsigned int width,
                return;
        }
 
+       evas_object_event_callback_add(viewer, EVAS_CALLBACK_MOUSE_UP,
+                       _minictrl_release_cb, ad);
+
        vit = malloc(sizeof(struct _viewer_item));
        if (!vit) {
                ERR("fail to alloc vit");
@@ -358,18 +395,24 @@ static void _minictrl_update(const char *name, unsigned int width,
 
 static void _minictrl_request(const char *name, int action, void *data)
 {
-       Ecore_X_Window xwin;
        struct appdata *ad = NULL;
        retif(!name, , "name is NULL");
        retif(!data, , "data is NULL");
        ad = data;
 
        if (action == MINICONTROL_REQ_HIDE_VIEWER) {
-               xwin = elm_win_xwindow_get(ad->win);
-               if (xwin != 0) {
-                       DBG("close by minictrl:%s", name);
-                       debug_printf("close by minictrl:%s", name);
-                       ecore_x_e_illume_quickpanel_state_send(ecore_x_e_illume_zone_get(xwin),ECORE_X_ILLUME_QUICKPANEL_STATE_OFF);
+               quickpanel_close_quickpanel(true);
+       }
+       if (action == MINICONTROL_REQ_FREEZE_SCROLL_VIEWER) {
+               if (ad->list != NULL) {
+                       ERR("freezed by %s", name);
+                       _viewer_freeze(ad->list);
+               }
+       }
+       if (action == MINICONTROL_REQ_UNFREEZE_SCROLL_VIEWER) {
+               if (ad->list != NULL) {
+                       ERR("unfreezed by %s", name);
+                       _viewer_unfreeze(ad->list);
                }
        }
 }
@@ -455,3 +498,28 @@ static unsigned int quickpanel_minictrl_get_height(void *data)
 
        return height_minictrl;
 }
+
+static int quickpanel_minictrl_suspend(void *data)
+{
+       struct appdata *ad = data;
+       retif(ad == NULL, QP_FAIL, "Invalid parameter!");
+
+       if (ad->list != NULL) {
+               _viewer_unfreeze(ad->list);
+       }
+
+       return QP_OK;
+}
+
+static int quickpanel_minictrl_resume(void *data)
+{
+       int i = 0, freezed_count;
+       struct appdata *ad = data;
+       retif(ad == NULL, QP_FAIL, "Invalid parameter!");
+
+       if (ad->list != NULL) {
+               _viewer_unfreeze(ad->list);
+       }
+
+       return QP_OK;
+}
index 1a98da7..852152d 100755 (executable)
@@ -59,7 +59,7 @@ typedef struct _brightness_ctrl_obj {
        void *data;
 } brightness_ctrl_obj;
 
-brightness_ctrl_obj *g_ctrl_obj;
+static brightness_ctrl_obj *g_ctrl_obj;
 
 static void _brightness_vconf_cb(keynode_t *key, void* data) {
        brightness_ctrl_obj *ctrl_obj = NULL;
@@ -210,6 +210,8 @@ static void _brightness_ctrl_checker_toggle_cb(void *data,
                                                                Evas_Object * obj,
                                                                void *event_info)
 {
+       quickpanel_play_feedback();
+
        retif(obj == NULL, , "obj parameter is NULL");
 
        int status = elm_check_state_get(obj);
index ecec5c3..3f93794 100755 (executable)
@@ -27,9 +27,7 @@
 #include <unicode/udat.h>
 #include <unicode/udatpg.h>
 #include <unicode/ustring.h>
-#ifdef QP_DETAILED_NOTI_CHANGE_CB_ENABLE
 #include "noti_node.h"
-#endif
 #include <notification.h>
 
 #include "quickpanel-ui.h"
 
 static int suspended;
 
-#ifdef QP_DETAILED_NOTI_CHANGE_CB_ENABLE
 noti_node *g_noti_node;
-#else
-static notification_list_h g_notification_list;
-static notification_list_h g_notification_ongoing_list;
-#endif
 static Eina_List *g_animated_image_list;
 
 static Evas_Object *g_noti_gridbox;
@@ -120,6 +113,8 @@ static void _quickpanel_noti_clear_clicked_cb(void *data, Evas_Object * obj,
        noti_err = notifiation_clear(NOTIFICATION_TYPE_NOTI);
 
        DBG("Clear Clicked : noti_err(%d)", noti_err);
+
+       quickpanel_play_feedback();
 }
 
 static char *_quickpanel_noti_get_progress(notification_h noti, char *buf,
@@ -173,7 +168,6 @@ static notification_h _quickpanel_noti_update_item_progress(const char *pkgname,
                                                            int priv_id,
                                                            double progress)
 {
-#ifdef QP_DETAILED_NOTI_CHANGE_CB_ENABLE
        char *noti_pkgname = NULL;
        int noti_priv_id = 0;
 
@@ -188,44 +182,6 @@ static notification_h _quickpanel_noti_update_item_progress(const char *pkgname,
                        return node->noti;
                }
        }
-#else
-       notification_h noti = NULL;
-       notification_list_h head = NULL;
-       char *noti_pkgname = NULL;
-       int noti_priv_id = 0;
-
-       if (g_notification_ongoing_list) {
-               head = notification_list_get_head(g_notification_ongoing_list);
-
-               while (head != NULL) {
-                       noti = notification_list_get_data(head);
-                       notification_get_pkgname(noti, &noti_pkgname);
-                       notification_get_id(noti, NULL, &noti_priv_id);
-                       if (!strcmp(noti_pkgname, pkgname)
-                           && priv_id == noti_priv_id) {
-                               notification_set_progress(noti, progress);
-                               return noti;
-                       }
-                       head = notification_list_get_next(head);
-               }
-       }
-
-       if (g_notification_list) {
-               head = notification_list_get_head(g_notification_list);
-
-               while (head != NULL) {
-                       noti = notification_list_get_data(head);
-                       notification_get_pkgname(noti, &noti_pkgname);
-                       notification_get_id(noti, NULL, &noti_priv_id);
-                       if (!strcmp(noti_pkgname, pkgname)
-                           && priv_id == noti_priv_id) {
-                               notification_set_progress(noti, progress);
-                               return noti;
-                       }
-                       head = notification_list_get_next(head);
-               }
-       }
-#endif
 
        return NULL;
 }
@@ -234,7 +190,6 @@ static notification_h _quickpanel_noti_update_item_size(const char *pkgname,
                                                        int priv_id,
                                                        double size)
 {
-#ifdef QP_DETAILED_NOTI_CHANGE_CB_ENABLE
        char *noti_pkgname = NULL;
        int noti_priv_id = 0;
 
@@ -249,44 +204,6 @@ static notification_h _quickpanel_noti_update_item_size(const char *pkgname,
                        return node->noti;
                }
        }
-#else
-       notification_h noti = NULL;
-       notification_list_h head = NULL;
-       char *noti_pkgname = NULL;
-       int noti_priv_id = 0;
-
-       if (g_notification_ongoing_list) {
-               head = notification_list_get_head(g_notification_ongoing_list);
-
-               while (head != NULL) {
-                       noti = notification_list_get_data(head);
-                       notification_get_pkgname(noti, &noti_pkgname);
-                       notification_get_id(noti, NULL, &noti_priv_id);
-                       if (!strcmp(noti_pkgname, pkgname)
-                           && priv_id == noti_priv_id) {
-                               notification_set_size(noti, size);
-                               return noti;
-                       }
-                       head = notification_list_get_next(head);
-               }
-       }
-
-       if (g_notification_list) {
-               head = notification_list_get_head(g_notification_list);
-
-               while (head != NULL) {
-                       noti = notification_list_get_data(head);
-                       notification_get_pkgname(noti, &noti_pkgname);
-                       notification_get_id(noti, NULL, &noti_priv_id);
-                       if (!strcmp(noti_pkgname, pkgname)
-                           && priv_id == noti_priv_id) {
-                               notification_set_size(noti, size);
-                               return noti;
-                       }
-                       head = notification_list_get_next(head);
-               }
-       }
-#endif
 
        return NULL;
 }
@@ -295,7 +212,6 @@ static notification_h _quickpanel_noti_update_item_content(const char *pkgname,
                                                        int priv_id,
                                                        char *content)
 {
-#ifdef QP_DETAILED_NOTI_CHANGE_CB_ENABLE
        char *noti_pkgname = NULL;
        int noti_priv_id = 0;
 
@@ -313,50 +229,6 @@ static notification_h _quickpanel_noti_update_item_content(const char *pkgname,
                        return node->noti;
                }
        }
-#else
-       notification_h noti = NULL;
-       notification_list_h head = NULL;
-       char *noti_pkgname = NULL;
-       int noti_priv_id = 0;
-
-       if (g_notification_ongoing_list) {
-               head = notification_list_get_head(g_notification_ongoing_list);
-
-               while (head != NULL) {
-                       noti = notification_list_get_data(head);
-                       notification_get_pkgname(noti, &noti_pkgname);
-                       notification_get_id(noti, NULL, &noti_priv_id);
-                       if (!strcmp(noti_pkgname, pkgname)
-                           && priv_id == noti_priv_id) {
-                               notification_set_text(noti,
-                                       NOTIFICATION_TEXT_TYPE_CONTENT,
-                                       content, NULL,
-                                       NOTIFICATION_VARIABLE_TYPE_NONE);
-                               return noti;
-                       }
-                       head = notification_list_get_next(head);
-               }
-       }
-
-       if (g_notification_list) {
-               head = notification_list_get_head(g_notification_list);
-
-               while (head != NULL) {
-                       noti = notification_list_get_data(head);
-                       notification_get_pkgname(noti, &noti_pkgname);
-                       notification_get_id(noti, NULL, &noti_priv_id);
-                       if (!strcmp(noti_pkgname, pkgname)
-                           && priv_id == noti_priv_id) {
-                               notification_set_text(noti,
-                                       NOTIFICATION_TEXT_TYPE_CONTENT,
-                                       content, NULL,
-                                       NOTIFICATION_VARIABLE_TYPE_NONE);
-                               return noti;
-                       }
-                       head = notification_list_get_next(head);
-               }
-       }
-#endif
 
        return NULL;
 }
@@ -372,7 +244,6 @@ static void _quickpanel_noti_update_progressbar(void *data,
 
        retif(!ad->list, , "ad->list is NULL");
 
-#ifdef QP_DETAILED_NOTI_CHANGE_CB_ENABLE
        int priv_id = 0;
 
        if (notification_get_id(update_noti, NULL, &priv_id) == NOTIFICATION_ERROR_NONE) {
@@ -382,16 +253,6 @@ static void _quickpanel_noti_update_progressbar(void *data,
                        found = node->view;
                }
        }
-#else
-       if (ad->show_setting)
-               found = quickpanel_list_util_find_item_by_type(ad->list,
-                               update_noti, ongoing_first,
-                               QP_ITEM_TYPE_ONGOING_NOTI);
-       else
-               found = quickpanel_list_util_find_item_by_type(ad->list,
-                               update_noti, noti_first,
-                               QP_ITEM_TYPE_NOTI);
-#endif
 
        retif(!found, , "fail to find %p related gl item", update_noti);
 
@@ -819,6 +680,20 @@ static char *_quickpanel_ongoing_noti_gl_get_text(void *data, Evas_Object * obj,
                if (noti_err != NOTIFICATION_ERROR_NONE)
                        text = NULL;
        } else if (!strcmp(part, "elm.text.content")) {
+               if (layout == NOTIFICATION_LY_ONGOING_EVENT) {
+                       return NULL;
+               }
+
+               noti_err = notification_get_text(noti,
+                                       NOTIFICATION_TEXT_TYPE_CONTENT,
+                                       &text);
+               if (noti_err != NOTIFICATION_ERROR_NONE)
+                       text = NULL;
+       } else if (!strcmp(part, "elm.text.content.multiline")) {
+               if (layout != NOTIFICATION_LY_ONGOING_EVENT) {
+                       return NULL;
+               }
+
                noti_err = notification_get_text(noti,
                                        NOTIFICATION_TEXT_TYPE_CONTENT,
                                        &text);
@@ -851,6 +726,7 @@ static Eina_Bool _quickpanel_noti_gl_get_state(void *data, Evas_Object * obj,
        int group_id = 0, priv_id = 0;
        char *content = NULL;
        time_t time;
+       notification_ly_type_e layout = NOTIFICATION_LY_NONE;
 
        retif(!data, EINA_FALSE, "data is NULL");
        qid = data;
@@ -860,11 +736,17 @@ static Eina_Bool _quickpanel_noti_gl_get_state(void *data, Evas_Object * obj,
 
        notification_get_pkgname(noti, &pkgname);
        notification_get_id(noti, &group_id, &priv_id);
+       notification_get_layout(noti, &layout);
 
        if (!strcmp(part, "elm.text.content")) {
                notification_get_text(noti,
                        NOTIFICATION_TEXT_TYPE_CONTENT, &content);
-               if (content != NULL)
+               if (content != NULL && layout != NOTIFICATION_LY_ONGOING_EVENT)
+                       return EINA_TRUE;
+       } else if (!strcmp(part, "elm.text.content.multiline")) {
+               notification_get_text(noti,
+                       NOTIFICATION_TEXT_TYPE_CONTENT, &content);
+               if (content != NULL && layout == NOTIFICATION_LY_ONGOING_EVENT)
                        return EINA_TRUE;
        } else if (!strcmp(part, "elm.text.time")) {
                notification_get_time(noti, &time);
@@ -882,6 +764,8 @@ static void _quickpanel_do_noti_delete(notification_h noti) {
        int flags = 0, priv_id = 0, flag_delete = 0;
        notification_type_e type = NOTIFICATION_TYPE_NONE;
 
+       quickpanel_play_feedback();
+
        retif(noti == NULL, , "Invalid parameter!");
 
        notification_get_pkgname(noti, &caller_pkgname);
@@ -905,6 +789,7 @@ static void _quickpanel_do_noti_delete(notification_h noti) {
 }
 
 static void _quickpanel_do_noti_press(notification_h noti) {
+       int ret = -1;
        char *pkgname = NULL;
        char *caller_pkgname = NULL;
        bundle *args = NULL;
@@ -915,6 +800,8 @@ static void _quickpanel_do_noti_press(notification_h noti) {
                        flag_delete = 0;
        notification_type_e type = NOTIFICATION_TYPE_NONE;
 
+       quickpanel_play_feedback();
+
        retif(noti == NULL, , "Invalid parameter!");
 
        notification_get_pkgname(noti, &caller_pkgname);
@@ -945,10 +832,7 @@ static void _quickpanel_do_noti_press(notification_h noti) {
 
        if (flag_launch == 1) {
                /* Hide quickpanel */
-               Ecore_X_Window zone;
-               zone = ecore_x_e_illume_zone_get(elm_win_xwindow_get(g_window));
-               ecore_x_e_illume_quickpanel_state_send(zone,
-                               ECORE_X_ILLUME_QUICKPANEL_STATE_OFF);
+               quickpanel_close_quickpanel(true);
 
                if (group_id != NOTIFICATION_GROUP_ID_NONE)
                        notification_get_count(type,
@@ -957,33 +841,33 @@ static void _quickpanel_do_noti_press(notification_h noti) {
                else
                        count = 1;
 
-               if (count > 1 && multi_service_handle != NULL)
-                       appsvc_run_service(multi_service_handle, 0, NULL, NULL);
-               else if (single_service_handle != NULL)
-                       appsvc_run_service(single_service_handle, 0, NULL,
-                                       NULL);
+               if (count > 1 && multi_service_handle != NULL) {
+                       ret = quickpanel_launch_app(NULL, multi_service_handle);
+                       quickpanel_launch_app_inform_result(pkgname, ret);
+               }
+               else if (single_service_handle != NULL) {
+                       ret = quickpanel_launch_app(NULL, single_service_handle);
+                       quickpanel_launch_app_inform_result(pkgname, ret);
+               }
                else {
                        notification_get_args(noti, &args, &group_args);
 
                        if (count > 1 && group_args != NULL) {
-                               quickpanel_launch_app(pkgname, group_args);
+                               ret = quickpanel_launch_app(pkgname, group_args);
+                               quickpanel_launch_app_inform_result(pkgname, ret);
                        } else {
-                               quickpanel_launch_app(pkgname, args);
+                               ret = quickpanel_launch_app(pkgname, args);
+                               quickpanel_launch_app_inform_result(pkgname, ret);
                        }
                }
        }
 
-#ifdef QP_DETAILED_NOTI_CHANGE_CB_ENABLE
+
        if (flag_delete == 1 && type == NOTIFICATION_TYPE_NOTI) {
                notification_delete_by_priv_id(caller_pkgname,
                                NOTIFICATION_TYPE_NOTI,
                                priv_id);
        }
-#else
-       if (flag_delete == 1 && type == NOTIFICATION_TYPE_NOTI)
-               notification_delete_group_by_priv_id(caller_pkgname,
-                               NOTIFICATION_TYPE_NOTI, priv_id);
-#endif
 }
 
 static void quickpanel_notibox_delete_cb(void *data, Evas_Object * obj) {
@@ -1011,12 +895,8 @@ static void quickpanel_notibox_select_cb(void *data, Evas_Object * obj) {
 
 static void quickpanel_noti_select_cb(void *data, Evas_Object * obj,
                void *event_info) {
-#ifdef QP_DETAILED_NOTI_CHANGE_CB_ENABLE
+       retif(data == NULL, , "Invalid parameter!");
        notification_h noti = (notification_h) quickpanel_list_util_item_get_data(data);
-#else
-       notification_h noti = (notification_h) data;
-#endif
-
        retif(noti == NULL, , "Invalid parameter!");
 
        elm_genlist_item_selected_set((Elm_Object_Item *) event_info, EINA_FALSE);
@@ -1212,93 +1092,6 @@ static inline void __ongoing_comp_n_copy(notification_h old, notification_h new)
        }
 }
 
-#ifndef QP_DETAILED_NOTI_CHANGE_CB_ENABLE
-static void _quickpanel_noti_get_new_divided_list(void)
-{
-       notification_list_h new_noti_list = NULL;
-       notification_list_h head = NULL;
-       notification_list_h new_head = NULL;
-       notification_h noti = NULL;
-       notification_h new_noti = NULL;
-
-       /* Get ongoing list */
-       notification_get_grouping_list(NOTIFICATION_TYPE_ONGOING, -1,
-                               &new_noti_list);
-       if (g_notification_ongoing_list != NULL) {
-               head = notification_list_get_head(g_notification_ongoing_list);
-               while (head != NULL) {
-                       new_head = notification_list_get_head(new_noti_list);
-                       while (new_head != NULL) {
-                               noti = notification_list_get_data(head);
-                               new_noti = notification_list_get_data(new_head);
-
-                               __ongoing_comp_n_copy(noti, new_noti);
-
-                               new_head = notification_list_get_next(new_head);
-                       }
-                       head = notification_list_get_next(head);
-               }
-
-               notification_free_list(g_notification_ongoing_list);
-               g_notification_ongoing_list = new_noti_list;
-       } else {
-               g_notification_ongoing_list = new_noti_list;
-       }
-
-       /* Get noti list */
-       notification_get_grouping_list(NOTIFICATION_TYPE_NOTI, -1,
-                                      &new_noti_list);
-       if (g_notification_list != NULL) {
-               notification_free_list(g_notification_list);
-               g_notification_list = new_noti_list;
-       }
-
-       g_notification_list = new_noti_list;
-}
-
-static void _quickpanel_noti_get_new_list(void)
-{
-       notification_list_h new_noti_list = NULL;
-       notification_list_h head = NULL;
-       notification_list_h new_head = NULL;
-       notification_h noti = NULL;
-       notification_h new_noti = NULL;
-       notification_type_e new_type = NOTIFICATION_TYPE_NONE;
-
-       if (g_notification_ongoing_list != NULL) {
-               notification_free_list(g_notification_ongoing_list);
-               g_notification_ongoing_list = new_noti_list;
-       }
-
-       /* Get all list */
-       notification_get_grouping_list(NOTIFICATION_TYPE_NONE, -1,
-                                      &new_noti_list);
-       if (g_notification_list != NULL) {
-               head = notification_list_get_head(g_notification_list);
-               while (head != NULL) {
-                       new_head = notification_list_get_head(new_noti_list);
-                       while (new_head != NULL) {
-                               noti = notification_list_get_data(head);
-                               new_noti = notification_list_get_data(new_head);
-
-                               notification_get_type(new_noti, &new_type);
-
-                               if (new_type == NOTIFICATION_TYPE_ONGOING)
-                                       __ongoing_comp_n_copy(noti, new_noti);
-
-                               new_head = notification_list_get_next(new_head);
-                       }
-                       head = notification_list_get_next(head);
-               }
-
-               notification_free_list(g_notification_list);
-               g_notification_list = new_noti_list;
-       } else {
-               g_notification_list = new_noti_list;
-       }
-}
-#endif
-
 static void _quickpanel_noti_clear_ongoinglist(Evas_Object *list)
 {
        if (!list)
@@ -1353,19 +1146,12 @@ static void _quickpanel_noti_ongoing_add(Evas_Object *list, void *data)
        if (!qid)
                return;
 
-#ifdef QP_DETAILED_NOTI_CHANGE_CB_ENABLE
        it = quickpanel_list_util_sort_insert(list, itc_ongoing, qid, NULL,
                        ELM_GENLIST_ITEM_NONE, quickpanel_noti_select_cb, qid);
-#else
-       it = quickpanel_list_util_sort_insert(list, itc_ongoing, qid, NULL,
-                       ELM_GENLIST_ITEM_NONE, quickpanel_noti_select_cb, data);
-#endif
 
        if (it) {
                ongoing_first = it;
-#ifdef QP_DETAILED_NOTI_CHANGE_CB_ENABLE
                noti_node_add(g_noti_node, (void *)data, (void *)it);
-#endif
        }
        else
                ERR("fail to insert item to list : %p", data);
@@ -1427,7 +1213,6 @@ static void _quickpanel_noti_noti_add(Evas_Object *list, void *data, int is_prep
        if (!noti_group)
                _quickpanel_noti_group_add(list, NULL);
 
-#ifdef QP_DETAILED_NOTI_CHANGE_CB_ENABLE
        if (noti_first == NULL) {
                if (g_noti_gridbox == NULL) {
                        g_noti_gridbox = gridbox_create(list, quickpanel_get_app_data());
@@ -1438,10 +1223,6 @@ static void _quickpanel_noti_noti_add(Evas_Object *list, void *data, int is_prep
                                ELM_GENLIST_ITEM_NONE, NULL, qid);
                noti_first = it;
        }
-#else
-       it = quickpanel_list_util_sort_insert(list, itc_noti, qid, noti_group,
-                       ELM_GENLIST_ITEM_NONE, quickpanel_noti_select_cb, data);
-#endif
 
        if (noti != NULL) {
                notification_get_layout(noti, &layout);
@@ -1449,7 +1230,6 @@ static void _quickpanel_noti_noti_add(Evas_Object *list, void *data, int is_prep
        Evas_Object *noti_box = noti_box_create(list, layout);
 
        if (noti_box != NULL) {
-#ifdef QP_DETAILED_NOTI_CHANGE_CB_ENABLE
                noti_node_item *item = noti_node_add(g_noti_node, (void*)data, (void*)noti_box);
                if (item != NULL) {
                        noti_box_node_set(noti_box, item);
@@ -1457,7 +1237,6 @@ static void _quickpanel_noti_noti_add(Evas_Object *list, void *data, int is_prep
                        noti_box_set_item_deleted_cb(noti_box, quickpanel_notibox_delete_cb);
                        gridbox_add_item(g_noti_gridbox, noti_box, is_prepend);
                }
-#endif
        } else
                ERR("fail to insert item to list : %p", data);
 
@@ -1481,7 +1260,6 @@ void _quickpanel_noti_update_notilist(struct appdata *ad)
        list = ad->list;
        retif(list == NULL, , "Failed to get noti genlist.");
 
-#ifdef QP_DETAILED_NOTI_CHANGE_CB_ENABLE
        _quickpanel_noti_clear_list_all(list);
 
        notification_get_list(NOTIFICATION_TYPE_ONGOING, -1, &get_list);
@@ -1515,51 +1293,6 @@ void _quickpanel_noti_update_notilist(struct appdata *ad)
        if (g_noti_gridbox != NULL) {
                elm_box_recalculate(g_noti_gridbox);
        }
-#else
-       /* Clear genlist */
-       _quickpanel_noti_clear_list_all(list);
-
-       /* Update notification list */
-       if (ad->show_setting)
-               _quickpanel_noti_get_new_divided_list();
-       else
-               _quickpanel_noti_get_new_list();
-
-       /* append ongoing data to genlist */
-       if (g_notification_ongoing_list) {
-               get_list =
-                   notification_list_get_tail(g_notification_ongoing_list);
-               noti = notification_list_get_data(get_list);
-
-               while (get_list != NULL) {
-                       notification_get_display_applist(noti, &applist);
-
-                       if (applist &
-                           NOTIFICATION_DISPLAY_APP_NOTIFICATION_TRAY) {
-                               _quickpanel_noti_ongoing_add(list, noti);
-                       }
-
-                       get_list = notification_list_get_prev(get_list);
-                       noti = notification_list_get_data(get_list);
-               }
-       }
-
-       /* append noti data to genlist */
-       if (g_notification_list) {
-               get_list = notification_list_get_tail(g_notification_list);
-               noti = notification_list_get_data(get_list);
-
-               while (get_list != NULL) {
-                       notification_get_display_applist(noti, &applist);
-
-                       if (applist & NOTIFICATION_DISPLAY_APP_NOTIFICATION_TRAY)
-                               _quickpanel_noti_noti_add(list, noti, GRIDBOX_PREPEND);
-
-                       get_list = notification_list_get_prev(get_list);
-                       noti = notification_list_get_data(get_list);
-               }
-       }
-#endif
 }
 
 static void _quickpanel_noti_delete_volatil_data(void)
@@ -1779,11 +1512,7 @@ static int _quickpanel_noti_register_event_handler(struct appdata *ad)
                ERR("Failed to register SIM_SLOT change callback!");
 
        /* Register notification changed cb */
-#ifdef QP_DETAILED_NOTI_CHANGE_CB_ENABLE
        notification_register_detailed_changed_cb(_quickpanel_noti_detailed_changed_cb, ad);
-#else
-       notification_resister_changed_cb(_quickpanel_noti_changed_cb, ad);
-#endif
 
        return ret;
 }
@@ -1793,11 +1522,7 @@ static int _quickpanel_noti_unregister_event_handler(struct appdata *ad)
        int ret = 0;
 
        /* Unregister notification changed cb */
-#ifdef QP_DETAILED_NOTI_CHANGE_CB_ENABLE
        notification_unregister_detailed_changed_cb(_quickpanel_noti_detailed_changed_cb, (void *)ad);
-#else
-       notification_unresister_changed_cb(_quickpanel_noti_changed_cb);
-#endif
 
        /* Ignore vconf key */
        ret = vconf_ignore_key_changed(VCONFKEY_TELEPHONY_SIM_SLOT,
@@ -1877,9 +1602,7 @@ static int quickpanel_noti_init(void *data)
 
        g_window = ad->win;
 
-#ifdef QP_DETAILED_NOTI_CHANGE_CB_ENABLE
        noti_node_create(&g_noti_node);
-#endif
 
        is_first = _quickpanel_noti_check_first_start();
        if (is_first) {
@@ -1899,24 +1622,10 @@ static int quickpanel_noti_fini(void *data)
 {
        struct appdata *ad = data;
        retif(ad == NULL, QP_FAIL, "Invalid parameter!");
-#ifdef QP_DETAILED_NOTI_CHANGE_CB_ENABLE
        if (g_noti_node != NULL) {
                noti_node_destroy(&g_noti_node);
        }
-#else
-       /* Remove notification list */
-       if (g_notification_ongoing_list != NULL) {
-               notification_free_list(g_notification_ongoing_list);
 
-               g_notification_ongoing_list = NULL;
-       }
-
-       if (g_notification_list != NULL) {
-               notification_free_list(g_notification_list);
-
-               g_notification_list = NULL;
-       }
-#endif
        /* Unregister event handler */
        _quickpanel_noti_unregister_event_handler(data);
        _quickpanel_noti_clear_list_all(ad->list);
index 9a31a1f..a695f22 100755 (executable)
@@ -16,5 +16,7 @@
 
 #ifndef __NOTI_H__
 #define __NOTI_H__
+
+#include "quickpanel-ui.h"
 char *quickpanel_noti_get_time(time_t t, char *buf, int buf_len);
 #endif
index fae1be9..508bded 100755 (executable)
@@ -126,11 +126,12 @@ static void _set_image(Evas_Object *noti_box, notification_h noti,
                }
 
                elm_object_part_content_set(noti_box, part, content);
+               elm_object_signal_emit(noti_box, "object.show", part);
        }
 }
 
 static int _set_text(Evas_Object *noti_box, notification_h noti,
-               notification_text_type_e text_type, const char *part) {
+               notification_text_type_e text_type, const char *part, int is_need_effect) {
        char buf[128] = { 0, };
 
        char *text = NULL;
@@ -146,7 +147,13 @@ static int _set_text(Evas_Object *noti_box, notification_h noti,
        }
 
        if (text != NULL) {
-               elm_object_part_text_set(noti_box, part, text);
+               if (strlen(text) > 0) {
+                       elm_object_part_text_set(noti_box, part, text);
+                       if (is_need_effect == 1)
+                               elm_object_signal_emit(noti_box, "object.show.effect", part);
+                       else
+                               elm_object_signal_emit(noti_box, "object.show", part);
+               }
 
                return strlen(text);
        }
@@ -181,6 +188,10 @@ static int _check_image_null(notification_h noti,
                return 1;
        }
 
+       if (strncasecmp(image, "(null)", strlen(image)) == 0) {
+               return 1;
+       }
+
        return 0;
 }
 
@@ -190,29 +201,63 @@ static void _noti_box_set_layout_single(Evas_Object *noti_box,
 
        char *dir = NULL;
        char *domain = NULL;
+       int is_need_effect = 0;
+       int is_contents_only = 0;
+       int is_sub_info_1_only = 0;
+
+       if (_check_image_null(noti, NOTIFICATION_IMAGE_TYPE_BACKGROUND) == 0) {
+               is_need_effect = 1;
+       }
+
+       if (_check_text_null(noti, NOTIFICATION_TEXT_TYPE_INFO_1) == 1
+               && _check_text_null(noti, NOTIFICATION_TEXT_TYPE_INFO_SUB_1) == 1
+               && _check_text_null(noti, NOTIFICATION_TEXT_TYPE_INFO_2) == 1
+               && _check_text_null(noti, NOTIFICATION_TEXT_TYPE_INFO_SUB_2) == 1) {
+               is_contents_only = 1;
+       }
+
+       if (_check_text_null(noti, NOTIFICATION_TEXT_TYPE_INFO_1) != 1
+               && _check_text_null(noti, NOTIFICATION_TEXT_TYPE_INFO_SUB_1) == 1
+               && _check_text_null(noti, NOTIFICATION_TEXT_TYPE_INFO_2) == 1
+               && _check_text_null(noti, NOTIFICATION_TEXT_TYPE_INFO_SUB_2) == 1) {
+               is_sub_info_1_only = 1;
+       }
+
+       DBG("is_contents_only:%d is_sub_info_1_only:%d", is_contents_only, is_sub_info_1_only);
 
        notification_get_text_domain(noti, &domain, &dir);
        if (domain != NULL && dir != NULL)
                bindtextdomain(domain, dir);
 
        _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_TITLE,
-                       "object.text.title");
-       _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_CONTENT,
-                       "object.text.contents");
+                       "object.text.title", is_need_effect);
+
+       if (is_contents_only == 1) {
+               _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_CONTENT,
+                               "object.text.contents.multiline", is_need_effect);
+       } else {
+               _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_CONTENT,
+                               "object.text.contents", is_need_effect);
 
-       if (_check_text_null(noti, NOTIFICATION_TEXT_TYPE_INFO_1) == 0) {
-               if (_check_text_null(noti, NOTIFICATION_TEXT_TYPE_INFO_SUB_1) == 1) {
+               if (is_sub_info_1_only == 1) {
                        _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_INFO_1,
-                                       "object.text.info.1");
+                                                                               "object.text.info.1.multiline", is_need_effect);
                } else {
-                       _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_INFO_1,
-                                       "object.text.info.1.short");
-                       _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_INFO_SUB_1,
-                                       "object.text.info.sub.1");
+                       if (_check_text_null(noti, NOTIFICATION_TEXT_TYPE_INFO_1) == 0) {
+                               if (_check_text_null(noti, NOTIFICATION_TEXT_TYPE_INFO_SUB_1) == 1) {
+                                       _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_INFO_1,
+                                                       "object.text.info.1", is_need_effect);
+                               } else {
+                                       _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_INFO_1,
+                                                       "object.text.info.1.short", is_need_effect);
+                                       _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_INFO_SUB_1,
+                                                       "object.text.info.sub.1", is_need_effect);
+                               }
+                       }
+                       _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_INFO_2,
+                                       "object.text.info.2", is_need_effect);
                }
        }
-       _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_INFO_2,
-                       "object.text.info.2");
 
        if (_check_image_null(noti, NOTIFICATION_IMAGE_TYPE_THUMBNAIL) == 0) {
                _set_image(noti_box, noti, NOTIFICATION_IMAGE_TYPE_ICON,
@@ -249,47 +294,66 @@ static void _noti_box_set_layout_multi(Evas_Object *noti_box,
        char *dir = NULL;
        char *domain = NULL;
        char buf[128] = {0,};
+       int is_need_effect = 0;
+       int is_sub_info_1_only = 0;
+
+       if (_check_image_null(noti, NOTIFICATION_IMAGE_TYPE_BACKGROUND) == 0) {
+               is_need_effect = 1;
+       }
+
+       if (_check_text_null(noti, NOTIFICATION_TEXT_TYPE_INFO_1) != 1
+               && _check_text_null(noti, NOTIFICATION_TEXT_TYPE_INFO_SUB_1) == 1
+               && _check_text_null(noti, NOTIFICATION_TEXT_TYPE_INFO_2) == 1
+               && _check_text_null(noti, NOTIFICATION_TEXT_TYPE_INFO_SUB_2) == 1) {
+               is_sub_info_1_only = 1;
+       }
+
+       DBG("is_sub_info_1_only:%d", is_sub_info_1_only);
 
        notification_get_text_domain(noti, &domain, &dir);
        if (domain != NULL && dir != NULL)
                bindtextdomain(domain, dir);
 
        _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_TITLE,
-                       "object.text.title");
+                       "object.text.title", is_need_effect);
        if (_check_text_null(noti, NOTIFICATION_TEXT_TYPE_EVENT_COUNT) == 0) {
                _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_CONTENT,
-                               "object.text.contents.short");
+                               "object.text.contents.short", is_need_effect);
                length = _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_EVENT_COUNT,
-                               "object.text.count");
+                               "object.text.count", is_need_effect);
                length = (length >= 5) ? 5 : length;
                snprintf(buf, sizeof(buf), "box.count.%d", length);
                elm_object_signal_emit(noti_box, buf, "box.prog");
-               DBG("buf:%s", buf);
        } else {
                _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_CONTENT,
-                               "object.text.contents");
+                               "object.text.contents", is_need_effect);
        }
 
-       if (_check_text_null(noti, NOTIFICATION_TEXT_TYPE_INFO_1) == 0) {
-               if (_check_text_null(noti, NOTIFICATION_TEXT_TYPE_INFO_SUB_1) == 1) {
-                       _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_INFO_1,
-                                       "object.text.info.1");
-               } else {
-                       _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_INFO_1,
-                                       "object.text.info.1.short");
-                       _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_INFO_SUB_1,
-                                       "object.text.info.sub.1");
+       if (is_sub_info_1_only == 1) {
+               _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_INFO_1,
+                                                                       "object.text.info.1.multiline", is_need_effect);
+       } else {
+               if (_check_text_null(noti, NOTIFICATION_TEXT_TYPE_INFO_1) == 0) {
+                       if (_check_text_null(noti, NOTIFICATION_TEXT_TYPE_INFO_SUB_1) == 1) {
+                               _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_INFO_1,
+                                               "object.text.info.1", is_need_effect);
+                       } else {
+                               _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_INFO_1,
+                                               "object.text.info.1.short", is_need_effect);
+                               _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_INFO_SUB_1,
+                                               "object.text.info.sub.1", is_need_effect);
+                       }
                }
-       }
-       if (_check_text_null(noti, NOTIFICATION_TEXT_TYPE_INFO_2) == 0) {
-               if (_check_text_null(noti, NOTIFICATION_TEXT_TYPE_INFO_SUB_2) == 1) {
-                       _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_INFO_2,
-                                       "object.text.info.2");
-               } else {
-                       _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_INFO_2,
-                                       "object.text.info.2.short");
-                       _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_INFO_SUB_2,
-                                       "object.text.info.sub.2");
+               if (_check_text_null(noti, NOTIFICATION_TEXT_TYPE_INFO_2) == 0) {
+                       if (_check_text_null(noti, NOTIFICATION_TEXT_TYPE_INFO_SUB_2) == 1) {
+                               _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_INFO_2,
+                                               "object.text.info.2", is_need_effect);
+                       } else {
+                               _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_INFO_2,
+                                               "object.text.info.2.short", is_need_effect);
+                               _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_INFO_SUB_2,
+                                               "object.text.info.sub.2", is_need_effect);
+                       }
                }
        }
 
@@ -325,15 +389,21 @@ static void _noti_box_set_layout_thumbnail(Evas_Object *noti_box,
 
        char *dir = NULL;
        char *domain = NULL;
+       int is_need_effect = 0;
+
+       if (_check_image_null(noti, NOTIFICATION_IMAGE_TYPE_BACKGROUND) == 0)
+               is_need_effect = 1;
+       else
+               is_need_effect = 0;
 
        notification_get_text_domain(noti, &domain, &dir);
        if (domain != NULL && dir != NULL)
                bindtextdomain(domain, dir);
 
        _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_TITLE,
-                       "object.text.title");
+                       "object.text.title", is_need_effect);
        _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_CONTENT,
-                       "object.text.contents");
+                       "object.text.contents", is_need_effect);
 
        if (_check_image_null(noti, NOTIFICATION_IMAGE_TYPE_THUMBNAIL) == 0) {
                _set_image(noti_box, noti, NOTIFICATION_IMAGE_TYPE_ICON,
diff --git a/daemon/notifications/noti_display_app.c b/daemon/notifications/noti_display_app.c
deleted file mode 100755 (executable)
index 3c3d5bd..0000000
+++ /dev/null
@@ -1,422 +0,0 @@
-/*
- * Copyright 2012  Samsung Electronics Co., Ltd
- *
- * Licensed under the Flora License, Version 1.0 (the License);
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://floralicense.org/license/
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include <E_Notify.h>
-#include <E_Notification_Daemon.h>
-#include <Elementary.h>
-#include "noti_win.h"
-#include "quickpanel-ui.h"
-#include "noti_display_app.h"
-
-#define INFO(str, args...) fprintf(stdout, str"\n", ##args)
-#define ERR(str, args...) fprintf(stderr, str"\n", ##args)
-
-static E_Notification_Daemon *g_notification_daemon;
-static const char *data_key = "_noti_data";
-static Evas_Object *app_win;
-
-struct Daemon_Data {
-       E_Notification_Daemon *daemon;
-       Eina_List *notes;
-       double default_timeout;
-       int next_id;
-};
-
-struct Timer_Data {
-       struct Daemon_Data *daemon_data;
-       E_Notification *n;
-       Ecore_Timer *timer;
-       enum Noti_Orient orient;
-};
-
-struct Noti_Data {
-       E_Notification *n;
-       const char *time;
-};
-
-/* Windows to display different orientations of notification */
-static Evas_Object *noti_win[NOTI_ORIENT_LAST];
-
-Eina_List *notification_daemon_note_list_get()
-{
-       struct Daemon_Data *daemon_data;
-
-       if (!g_notification_daemon)
-               return NULL;
-       daemon_data = e_notification_daemon_data_get(g_notification_daemon);
-       if (!daemon_data)
-               return NULL;
-       return daemon_data->notes;
-}
-
-void notification_daemon_note_list_clear()
-{
-       struct Daemon_Data *daemon_data;
-       Eina_List *l;
-       E_Notification *n;
-       struct Noti_Data *noti_data;
-
-       if (!g_notification_daemon)
-               return;
-       daemon_data = e_notification_daemon_data_get(g_notification_daemon);
-       if (!daemon_data)
-               return;
-       EINA_LIST_FOREACH(daemon_data->notes, l, noti_data) {
-               daemon_data->notes = eina_list_remove(daemon_data->notes,
-                       noti_data);
-               n = noti_data->n;
-               eina_stringshare_replace(&noti_data->time, NULL);
-               e_notification_unref(n);
-               free(noti_data);
-       }
-}
-
-static struct Noti_Data *_notification_daemon_noti_data_find(
-       struct Daemon_Data *daemon_data, E_Notification *n)
-{
-       Eina_List *l;
-       struct Noti_Data *noti_data;
-
-       EINA_LIST_FOREACH(daemon_data->notes, l, noti_data)
-       if (noti_data->n == n)
-               return noti_data;
-
-       return NULL;
-}
-
-static void _notification_daemon_note_close(struct Daemon_Data *daemon_data,
-       E_Notification *n, int reason)
-{
-       struct Noti_Data *noti_data;
-
-       noti_data = _notification_daemon_noti_data_find(daemon_data, n);
-       if (!noti_data)
-               return;
-       daemon_data->notes = eina_list_remove(daemon_data->notes, noti_data);
-       n = noti_data->n;
-       eina_stringshare_replace(&noti_data->time, NULL);
-       e_notification_unref(n);
-       free(noti_data);
-       e_notification_closed_set(n, 1);
-       e_notification_daemon_signal_notification_closed(daemon_data->daemon,
-               e_notification_id_get(n), reason);
-}
-
-static void _note_destroy(struct Timer_Data *timer_data,
-       enum E_Notification_Closed_Reason reason)
-{
-       enum Noti_Orient orient;
-
-       if (!timer_data)
-               return;
-       orient = timer_data->orient;
-       if (!e_notification_closed_get(timer_data->n))
-               _notification_daemon_note_close(timer_data->daemon_data,
-                       timer_data->n,
-                       reason);
-       e_notification_unref(timer_data->n);
-       ecore_timer_del(timer_data->timer);
-       free(timer_data);
-       if (noti_win[orient]) {
-               evas_object_data_set(noti_win[orient], data_key, NULL);
-               evas_object_del(noti_win[orient]);
-               noti_win[orient] = NULL;
-       }
-}
-
-Eina_Bool _note_close_timer_cb(void *data)
-{
-       _note_destroy(data, E_NOTIFICATION_CLOSED_EXPIRED);
-       return ECORE_CALLBACK_CANCEL;
-}
-
-static E_Notification *_notification_daemon_note_open_find(
-               struct Daemon_Data *daemon_data, unsigned int id)
-{
-       Eina_List *l;
-       struct Noti_Data *noti_data;
-
-       EINA_LIST_FOREACH(daemon_data->notes, l, noti_data)
-       if (e_notification_id_get(noti_data->n) == id)
-               return noti_data->n;
-
-       return NULL;
-}
-
-static void _notification_daemon_note_close_cb(E_Notification_Daemon *daemon,
-       unsigned int notification_id)
-{
-       struct Daemon_Data *daemon_data;
-       E_Notification *n;
-
-       daemon_data = e_notification_daemon_data_get(daemon);
-       n = _notification_daemon_note_open_find(daemon_data, notification_id);
-       if (n)
-               _notification_daemon_note_close(daemon_data, n,
-                       E_NOTIFICATION_CLOSED_REQUESTED);
-       /* else send error */
-}
-
-
-static void _noti_hide_cb(void *data, Evas_Object *obj,
-       const char *emission, const char *source)
-{
-       _note_destroy(data, E_NOTIFICATION_CLOSED_DISMISSED);
-}
-
-static void _noti_button_clicked_cb(void *data, Evas_Object *obj,
-       void *event_info)
-{
-       _note_destroy(data, E_NOTIFICATION_CLOSED_REQUESTED);
-}
-
-static void _noti_show(E_Notification *n, enum Noti_Orient orient,
-       struct Timer_Data *timer_data)
-{
-       const char *summary;
-       Evas_Object *layout;
-       const char *path_icon;
-       Evas_Object *icon;
-       const char *data_win_height = NULL;
-       int noti_height = 50;
-       struct Timer_Data *old_timer_data = NULL;
-       Evas_Object *button = NULL;
-
-       if (noti_win[orient]) {
-               old_timer_data = evas_object_data_get(noti_win[orient],
-                       data_key);
-               _note_destroy(old_timer_data, E_NOTIFICATION_CLOSED_REQUESTED);
-       }
-       noti_win[orient] = noti_win_add(NULL);
-       evas_object_data_set(noti_win[orient], data_key, timer_data);
-       layout = elm_layout_add(noti_win[orient]);
-       /* Only for sample code the theme implementation for layout has been
-       used. Apps should implement this layout/edje object which can have
-       at least one TEXT/TEXT BLOCK for showing body of notification and one
-       swallow part for showing icon of the notification.
-       Optionally the summary can be shown as well.
-       Applications need to set the minimum height of the layout or edje object
-       using evas_object_size_hint_min_set which can be used by the
-       notification window to resize itself.
-       */
-       if (orient == NOTI_ORIENT_BOTTOM)
-               elm_layout_theme_set(layout, "tickernoti", "base", "info");
-       else {
-                       elm_layout_theme_set(layout, "tickernoti", "base",
-                               "default");
-                       button = elm_button_add(layout);
-                       elm_object_style_set(button, "tickernoti");
-                       elm_object_text_set(button, _S("IDS_COM_BODY_CLOSE"));
-                       elm_object_part_content_set(layout, "button", button);
-                       evas_object_smart_callback_add(button, "clicked",
-                               _noti_button_clicked_cb, timer_data);
-       }
-       elm_object_signal_callback_add(layout, "request,hide", "",
-               _noti_hide_cb, timer_data);
-       /* Getting the height of the layout from theme just for sample code.
-       App is free to use any other method.
-       */
-       data_win_height = (char *)elm_layout_data_get(layout, "height");
-       if (data_win_height != NULL && elm_config_scale_get() > 0.0)
-               noti_height = (int)(elm_config_scale_get()
-                       * atoi(data_win_height));
-       evas_object_size_hint_min_set(layout, 1, noti_height);
-       noti_win_content_set(noti_win[orient], layout);
-       summary = e_notification_summary_get(n);
-       if (summary)
-               elm_object_part_text_set(layout, "elm.text", summary);
-       else
-               elm_object_part_text_set(layout, "elm.text",
-                       "new notification");
-       path_icon = e_notification_app_icon_get(n);
-       if (path_icon) {
-               INFO("%s", path_icon);
-               icon = elm_image_add(layout);
-               if (elm_image_file_set(icon, path_icon, NULL)) {
-                       elm_image_resizable_set(icon, EINA_TRUE, EINA_TRUE);
-                       elm_object_part_content_set(layout, "icon", icon);
-               }
-       }
-       noti_win_orient_set(noti_win[orient], orient);
-       if (app_win)
-               elm_win_rotation_with_resize_set(noti_win[orient],
-                       elm_win_rotation_get(app_win));
-       evas_object_show(noti_win[orient]);
-}
-
-void _notification_daemon_note_show(struct Daemon_Data *daemon_data,
-       E_Notification *n)
-{
-       int timeout;
-       const char *category;
-       enum Noti_Orient orient = NOTI_ORIENT_TOP;
-       struct Noti_Data *noti_data;
-       time_t current;
-       char buf[256];
-       struct tm time_st;
-       struct Timer_Data *timer_data;
-
-       category = e_notification_hint_category_get(n);
-       if (category) {
-               if (!strcmp("device", category))
-                       orient = NOTI_ORIENT_BOTTOM;
-       }
-
-       noti_data = calloc(1, sizeof(struct Noti_Data));
-       if (!noti_data)
-               return;
-       e_notification_ref(n);
-       noti_data->n = n;
-       current = time(NULL);
-       localtime_r(&current, &time_st);
-       strftime(buf, sizeof(buf), "%I:%M %p", &time_st);
-       eina_stringshare_replace(&noti_data->time, buf);
-       daemon_data->notes = eina_list_append(daemon_data->notes, noti_data);
-       timeout = e_notification_timeout_get(n);
-       timer_data = calloc(1, sizeof(struct Timer_Data));
-       _noti_show(n, orient, timer_data);
-       timer_data->daemon_data = daemon_data;
-       timer_data->orient = orient;
-       e_notification_ref(n);
-       e_notification_closed_set(n, 0);
-       timer_data->n = n;
-       timer_data->timer = ecore_timer_add(timeout == -1 ?
-               daemon_data->default_timeout : (float)timeout / 1000,
-               _note_close_timer_cb, timer_data);
-
-       INFO("Received notification from %s:%s %s",
-       e_notification_app_name_get(n),
-       e_notification_summary_get(n), e_notification_body_get(n));
-}
-
-static int _notification_cb(E_Notification_Daemon *daemon, E_Notification *n)
-{
-       struct Daemon_Data *daemon_data;
-       unsigned int replaces_id;
-       unsigned int new_id;
-
-       daemon_data = e_notification_daemon_data_get(daemon);
-       replaces_id = e_notification_replaces_id_get(n);
-       if (replaces_id)
-               new_id = replaces_id;
-       else
-               new_id = daemon_data->next_id++;
-       e_notification_id_set(n, new_id);
-       _notification_daemon_note_show(daemon_data, n);
-       return new_id;
-}
-
-static Eina_Bool _init()
-{
-       Eina_Bool ret = EINA_FALSE;
-       struct Daemon_Data *daemon_data;
-
-       if (!g_notification_daemon) {
-               e_notification_daemon_init();
-               g_notification_daemon = e_notification_daemon_add("notification"
-                       , "Enlightenment");
-               if (!g_notification_daemon) {
-                       ERR("Unable to add a notification daemon");
-                       return EINA_FALSE;
-               }
-               daemon_data = calloc(1, sizeof(struct Daemon_Data));
-               if (!daemon_data) {
-                       notification_daemon_shutdown();
-                       return EINA_FALSE;
-               }
-               daemon_data->default_timeout = 1.0;
-               daemon_data->daemon = g_notification_daemon;
-               e_notification_daemon_data_set(g_notification_daemon,
-                       daemon_data);
-               e_notification_daemon_callback_notify_set(g_notification_daemon,
-                       _notification_cb);
-               e_notification_daemon_callback_close_notification_set(
-                       g_notification_daemon,
-                       _notification_daemon_note_close_cb);
-               INFO("Initializing Notification Daemon");
-       }
-       ret = !!g_notification_daemon;
-       return ret;
-}
-
-static Eina_Bool _shutdown()
-{
-       struct Daemon_Data *daemon_data;
-       Eina_List *l;
-       E_Notification *n;
-       int i;
-       struct Noti_Data *noti_data;
-       Eina_Bool ret = EINA_FALSE;
-
-       for (i = 0; i < NOTI_ORIENT_LAST; i++)
-               if (noti_win[i]) {
-                       evas_object_del(noti_win[i]);
-                       noti_win[i] = NULL;
-               }
-       if (!g_notification_daemon)
-               return ret;
-       daemon_data = e_notification_daemon_data_get(
-                       g_notification_daemon);
-       if (!daemon_data)
-               return ret;
-       EINA_LIST_FOREACH(daemon_data->notes, l, noti_data) {
-               daemon_data->notes = eina_list_remove(daemon_data->notes,
-                       noti_data);
-               n = noti_data->n;
-               eina_stringshare_replace(&noti_data->time, NULL);
-               e_notification_unref(n);
-               free(noti_data);
-       }
-       free(daemon_data);
-       e_notification_daemon_free(g_notification_daemon);
-       e_notification_daemon_shutdown();
-       g_notification_daemon = NULL;
-       ret = EINA_TRUE;
-       return ret;
-}
-
-void notification_daemon_init()
-{
-       int i;
-
-       if (!_init()) {
-               ERR("Error in intializing the notification daemon");
-               return;
-       }
-       for (i = 0; i < NOTI_ORIENT_LAST; i++)
-               if (noti_win[i]) {
-                       evas_object_del(noti_win[i]);
-                       noti_win[i] = NULL;
-               }
-}
-
-void notification_daemon_win_set(Evas_Object *win)
-{
-       /* This window is used to detect the orientation of the receiver app
-       window to support rotation of the notification window.
-       */
-       app_win = win;
-}
-
-void notification_daemon_shutdown()
-{
-       if (!_shutdown()) {
-               ERR("Error in shutting down the notification daemon");
-               return;
-       }
-       app_win = NULL;
-       INFO("Terminating Notification Daemon");
-}
diff --git a/daemon/notifications/noti_display_app.h b/daemon/notifications/noti_display_app.h
deleted file mode 100755 (executable)
index 652ee43..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Copyright 2012  Samsung Electronics Co., Ltd
- *
- * Licensed under the Flora License, Version 1.0 (the License);
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://floralicense.org/license/
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef __NOTI_DISPLAY_APP_H__
-#define __NOTI_DISPLAY_APP_H__
-#include <Elementary.h>
-
-/* Initializes the notification daemon */
-void notification_daemon_init();
-/* Sets the window which rotation will be used to rotate the notification popup
-while displaying */
-void notification_daemon_win_set(Evas_Object *win);
-/* Terminates the notification daemon */
-void notification_daemon_shutdown();
-#endif
index fa8330f..65210c5 100755 (executable)
@@ -226,7 +226,6 @@ Evas_Object *noti_win_add(Evas_Object *parent)
        evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND,
                EVAS_HINT_EXPAND);
        elm_win_resize_object_add(win, bg);
-       evas_object_show(bg);
 
        _set_win_type_notification_level(win);
 
index 60952df..46b7531 100755 (executable)
@@ -26,6 +26,7 @@
 
 #include "quickpanel-ui.h"
 #include "common.h"
+#include "noti.h"
 #include "noti_win.h"
 
 #define QP_TICKER_DURATION     5
 #define TICKER_MSG_LEN                         1024
 #define DEFAULT_ICON ICONDIR           "/quickpanel_icon_default.png"
 
+#define FORMAT_1LINE "<font_size=29><color=#BABABA>%s</color></font>"
+#define FORMAT_2LINE "<font_size=26><color=#BABABA>%s</color></font><br><font_size=29><color=#F4F4F4>%s</color></font>"
+#define FORMAT_2LINE_SINGLE "<font_size=26><color=#BABABA>%s</color></font><br><font_size=29><color=#F4F4F4>%s %s</color></font>"
+#define FORMAT_2LINE_MULTI "<font_size=26><color=#BABABA>%s</color></font><br><font_size=29><color=#F4F4F4>%s %s</color></font>"
+
 static Evas_Object *g_window;
 static Evas_Object *g_ticker;
 static Ecore_Timer *g_timer;
@@ -62,6 +68,94 @@ static int latest_inserted_time;
  * (Static) Util functions
  *
  *****************************************************************************/
+static void _quickpanel_ticker_clicked_cb(void *data, Evas_Object *obj,
+                       const char *emission, const char *source) {
+       int ret = -1;
+       char *pkgname = NULL;
+       char *caller_pkgname = NULL;
+       bundle *args = NULL;
+       bundle *group_args = NULL;
+       bundle *single_service_handle = NULL;
+       bundle *multi_service_handle = NULL;
+       int flags = 0, group_id = 0, priv_id = 0, count = 0, flag_launch = 0,
+                       flag_delete = 0;
+       notification_type_e type = NOTIFICATION_TYPE_NONE;
+       notification_h noti = NULL;
+       int is_lock_launched = VCONFKEY_IDLE_UNLOCK;
+
+       noti = data;
+       retif(noti == NULL, , "Invalid parameter!");
+
+       quickpanel_play_feedback();
+
+       if (vconf_get_int(VCONFKEY_IDLE_LOCK_STATE, &is_lock_launched) == 0) {
+               if (is_lock_launched == VCONFKEY_IDLE_LOCK) {
+                       return ;
+               }
+       }
+
+       notification_get_pkgname(noti, &caller_pkgname);
+       notification_get_application(noti, &pkgname);
+       if (pkgname == NULL)
+               pkgname = caller_pkgname;
+
+       notification_get_id(noti, &group_id, &priv_id);
+       notification_get_property(noti, &flags);
+       notification_get_type(noti, &type);
+
+       if (flags & NOTIFICATION_PROP_DISABLE_APP_LAUNCH)
+               flag_launch = 0;
+       else
+               flag_launch = 1;
+
+       if (flags & NOTIFICATION_PROP_DISABLE_AUTO_DELETE)
+               flag_delete = 0;
+       else
+               flag_delete = 1;
+
+       notification_get_execute_option(noti,
+                               NOTIFICATION_EXECUTE_TYPE_SINGLE_LAUNCH,
+                               NULL, &single_service_handle);
+       notification_get_execute_option(noti,
+                               NOTIFICATION_EXECUTE_TYPE_MULTI_LAUNCH,
+                               NULL, &multi_service_handle);
+
+       if (flag_launch == 1) {
+               /* Hide quickpanel */
+               quickpanel_close_quickpanel(true);
+
+               if (group_id != NOTIFICATION_GROUP_ID_NONE)
+                       notification_get_count(type,
+                                       caller_pkgname, group_id,
+                                       priv_id, &count);
+               else
+                       count = 1;
+
+               if (count > 1 && multi_service_handle != NULL) {
+                       ret = quickpanel_launch_app(NULL, multi_service_handle);
+                       quickpanel_launch_app_inform_result(pkgname, ret);
+               } else if (single_service_handle != NULL) {
+                       ret = quickpanel_launch_app(NULL, single_service_handle);
+                       quickpanel_launch_app_inform_result(pkgname, ret);
+               } else {
+                       notification_get_args(noti, &args, &group_args);
+
+                       if (count > 1 && group_args != NULL) {
+                               ret = quickpanel_launch_app(pkgname, group_args);
+                               quickpanel_launch_app_inform_result(pkgname, ret);
+                       } else {
+                               ret = quickpanel_launch_app(pkgname, args);
+                               quickpanel_launch_app_inform_result(pkgname, ret);
+                       }
+               }
+       }
+
+       if (flag_delete == 1 && type == NOTIFICATION_TYPE_NOTI) {
+               notification_delete_by_priv_id(caller_pkgname,
+                               NOTIFICATION_TYPE_NOTI,
+                               priv_id);
+       }
+}
 
 static int _quickpanel_ticker_check_ticker_off(notification_h noti)
 {
@@ -205,79 +299,6 @@ static void _quickpanel_ticker_detail_show_cb(void *data, Evas *e,
        DBG("");
 }
 
-static void _quickpanel_ticker_clicked_cb(void *data, Evas_Object *obj,
-                                       void *event_info)
-{
-       notification_h noti = (notification_h) data;
-       char *caller_pkgname = NULL;
-       char *pkgname = NULL;
-       bundle *args = NULL;
-       bundle *single_service_handle = NULL;
-       int priv_id = 0;
-       int flags = 0;
-       int ret = 0;
-       int val = 0;
-       int flag_launch = 0;
-       int flag_delete = 0;
-       int type = NOTIFICATION_TYPE_NONE;
-
-       DBG("");
-
-       retif(noti == NULL, , "Invalid parameter!");
-
-       /* Check idle lock state */
-       ret = vconf_get_int(VCONFKEY_IDLE_LOCK_STATE, &val);
-
-       /* If Lock state, there is not any action when clicked. */
-       if (ret != 0 || val == VCONFKEY_IDLE_LOCK)
-               return;
-
-       notification_get_pkgname(noti, &caller_pkgname);
-       notification_get_application(noti, &pkgname);
-       if (pkgname == NULL)
-               pkgname = caller_pkgname;
-
-       notification_get_id(noti, NULL, &priv_id);
-       notification_get_property(noti, &flags);
-       notification_get_type(noti, &type);
-
-       if (flags & NOTIFICATION_PROP_DISABLE_APP_LAUNCH)
-               flag_launch = 0;
-       else
-               flag_launch = 1;
-
-       if (flags & NOTIFICATION_PROP_DISABLE_AUTO_DELETE)
-               flag_delete = 0;
-       else
-               flag_delete = 1;
-
-       notification_get_execute_option(noti,
-                               NOTIFICATION_EXECUTE_TYPE_SINGLE_LAUNCH,
-                               NULL, &single_service_handle);
-
-       if (flag_launch == 1) {
-               if (single_service_handle != NULL)
-                       appsvc_run_service(single_service_handle, 0, NULL,
-                                          NULL);
-               else {
-                       notification_get_args(noti, &args, NULL);
-                       quickpanel_launch_app(pkgname, args);
-               }
-
-               /* Hide quickpanel */
-               Ecore_X_Window zone;
-               zone = ecore_x_e_illume_zone_get(elm_win_xwindow_get(g_window));
-               ecore_x_e_illume_quickpanel_state_send(zone,
-                               ECORE_X_ILLUME_QUICKPANEL_STATE_OFF);
-       }
-
-       if (flag_delete == 1 && type == NOTIFICATION_TYPE_NOTI) {
-               notification_delete_by_priv_id(caller_pkgname,
-                                               NOTIFICATION_TYPE_NOTI,
-                                               priv_id);
-       }
-}
-
 static void _quickpanel_ticker_button_clicked_cb(void *data, Evas_Object *obj,
                                        void *event_info)
 {
@@ -335,17 +356,35 @@ static Evas_Object *_quickpanel_ticker_create_icon(Evas_Object *parent,
        return icon;
 }
 
-static char *_quickpanel_ticker_get_label(notification_h noti)
+static inline char *_get_text(notification_h noti, notification_text_type_e text_type) {
+       time_t time = 0;
+       char *text = NULL;
+       char buf[TICKER_MSG_LEN] = { 0, };
+
+       if (notification_get_time_from_text(noti, text_type, &time) == NOTIFICATION_ERROR_NONE) {
+               if ((int)time > 0) {
+                       quickpanel_noti_get_time(time, buf, sizeof(buf));
+                       text = buf;
+               }
+       } else {
+               notification_get_text(noti, text_type, &text);
+       }
+
+       if (text != NULL)
+               return elm_entry_utf8_to_markup(text);
+
+       return NULL;
+}
+
+static char *_quickpanel_ticker_get_label_layout_default(notification_h noti)
 {
        char buf[TICKER_MSG_LEN] = { 0, };
        int len = 0;
        char *domain = NULL;
        char *dir = NULL;
-       char *result_title = NULL;
-       char *result_content = NULL;
        char *title_utf8 = NULL;
        char *content_utf8 = NULL;
-       notification_error_e noti_err = NOTIFICATION_ERROR_NONE;
+       char *event_count_utf8 = NULL;
 
        retif(noti == NULL, NULL, "Invalid parameter!");
 
@@ -353,32 +392,32 @@ static char *_quickpanel_ticker_get_label(notification_h noti)
        if (domain != NULL && dir != NULL)
                bindtextdomain(domain, dir);
 
-       noti_err = notification_get_text(noti, NOTIFICATION_TEXT_TYPE_TITLE,
-                       &result_title);
-       if (noti_err == NOTIFICATION_ERROR_NONE && result_title)
-               title_utf8 = elm_entry_utf8_to_markup(result_title);
+       title_utf8 = _get_text(noti, NOTIFICATION_TEXT_TYPE_TITLE);
 
        if (_quickpanel_ticker_check_displaying_contents_off(noti) == 1) {
-               noti_err = notification_get_text(noti, NOTIFICATION_TEXT_TYPE_CONTENT_FOR_DISPLAY_OPTION_IS_OFF,
-                               &result_content);
+               content_utf8 = _get_text(noti, NOTIFICATION_TEXT_TYPE_CONTENT_FOR_DISPLAY_OPTION_IS_OFF);
        }
        else {
-               noti_err = notification_get_text(noti, NOTIFICATION_TEXT_TYPE_CONTENT,
-                               &result_content);
+               content_utf8 = _get_text(noti, NOTIFICATION_TEXT_TYPE_CONTENT);
        }
 
-       if (noti_err == NOTIFICATION_ERROR_NONE && result_content)
-               content_utf8 = elm_entry_utf8_to_markup(result_content);
+       event_count_utf8 = _get_text(noti, NOTIFICATION_TEXT_TYPE_EVENT_COUNT);
 
-       if (title_utf8 && content_utf8) {
-               len = snprintf(buf, sizeof(buf),
-                       "<font_size=26><color=#BABABA>%s</color></font>"
-                       "<br><font_size=29><color=#F4F4F4>%s</color></font>",
-                       title_utf8, content_utf8);
-       } else if (title_utf8) {
-               len = snprintf(buf, sizeof(buf),
-                       "<font_size=29><color=#BABABA>%s</color></font>",
-                       title_utf8);
+       if (event_count_utf8 == NULL) {
+               if (title_utf8 && content_utf8) {
+                       len = snprintf(buf, sizeof(buf),FORMAT_2LINE, title_utf8, content_utf8);
+               } else if (title_utf8) {
+                       len = snprintf(buf, sizeof(buf),FORMAT_1LINE, title_utf8);
+               }
+       } else {
+               if (title_utf8 && content_utf8) {
+                       if (_quickpanel_ticker_check_displaying_contents_off(noti) == 1)
+                               len = snprintf(buf, sizeof(buf),FORMAT_2LINE, title_utf8, content_utf8);
+                       else
+                               len = snprintf(buf, sizeof(buf),FORMAT_2LINE_MULTI, title_utf8, event_count_utf8, content_utf8);
+               } else if (title_utf8) {
+                       len = snprintf(buf, sizeof(buf),FORMAT_1LINE, title_utf8);
+               }
        }
 
        if (title_utf8)
@@ -387,12 +426,102 @@ static char *_quickpanel_ticker_get_label(notification_h noti)
        if (content_utf8)
                free(content_utf8);
 
+       if (event_count_utf8)
+               free(event_count_utf8);
+
        if (len > 0)
                return strdup(buf);
 
        return NULL;
 }
 
+static char *_quickpanel_ticker_get_label_layout_single(notification_h noti)
+{
+       char buf[TICKER_MSG_LEN] = { 0, };
+       int len = 0;
+       char *domain = NULL;
+       char *dir = NULL;
+       char *title_utf8 = NULL;
+       char *content_utf8 = NULL;
+       char *info_1_utf8 = NULL;
+       char *info_sub_1_utf8 = NULL;
+
+       retif(noti == NULL, NULL, "Invalid parameter!");
+
+       notification_get_text_domain(noti, &domain, &dir);
+       if (domain != NULL && dir != NULL)
+               bindtextdomain(domain, dir);
+
+       title_utf8 = _get_text(noti, NOTIFICATION_TEXT_TYPE_TITLE);
+
+       if (_quickpanel_ticker_check_displaying_contents_off(noti) == 1) {
+               content_utf8 = _get_text(noti, NOTIFICATION_TEXT_TYPE_CONTENT_FOR_DISPLAY_OPTION_IS_OFF);
+       }
+       else {
+               content_utf8 = _get_text(noti, NOTIFICATION_TEXT_TYPE_CONTENT);
+       }
+
+       info_1_utf8 = _get_text(noti, NOTIFICATION_TEXT_TYPE_INFO_1);
+       info_sub_1_utf8 = _get_text(noti, NOTIFICATION_TEXT_TYPE_INFO_SUB_1);
+
+       if (info_1_utf8 == NULL) {
+               if (title_utf8 && content_utf8) {
+                       len = snprintf(buf, sizeof(buf),FORMAT_2LINE, title_utf8, content_utf8);
+               } else if (title_utf8) {
+                       len = snprintf(buf, sizeof(buf),FORMAT_1LINE, title_utf8);
+               }
+       } else {
+               if (info_sub_1_utf8) {
+                       if (content_utf8)
+                               len = snprintf(buf, sizeof(buf), FORMAT_2LINE_SINGLE, content_utf8, info_1_utf8, info_sub_1_utf8);
+                       else if (title_utf8)
+                               len = snprintf(buf, sizeof(buf), FORMAT_2LINE_SINGLE, title_utf8, info_1_utf8, info_sub_1_utf8);
+               } else {
+                       if (content_utf8)
+                               len = snprintf(buf, sizeof(buf), FORMAT_2LINE, content_utf8, info_1_utf8);
+                       else if (title_utf8)
+                               len = snprintf(buf, sizeof(buf), FORMAT_2LINE, title_utf8, info_1_utf8);
+               }
+       }
+
+       if (title_utf8)
+               free(title_utf8);
+
+       if (content_utf8)
+               free(content_utf8);
+
+       if (info_1_utf8)
+               free(info_1_utf8);
+
+       if (info_sub_1_utf8)
+               free(info_sub_1_utf8);
+
+       if (len > 0)
+               return strdup(buf);
+
+       return NULL;
+}
+
+static char *_quickpanel_ticker_get_label(notification_h noti)
+{
+       char *result = NULL;
+       notification_ly_type_e layout;
+
+       retif(noti == NULL, NULL, "Invalid parameter!");
+
+       notification_get_layout(noti, &layout);
+
+       if (_quickpanel_ticker_check_displaying_contents_off(noti) == 1) {
+               result = _quickpanel_ticker_get_label_layout_default(noti);
+       } else if (layout == NOTIFICATION_LY_NOTI_EVENT_SINGLE) {
+               result = _quickpanel_ticker_get_label_layout_single(noti);
+       } else {
+               result = _quickpanel_ticker_get_label_layout_default(noti);
+       }
+
+       return result;
+}
+
 static void _noti_hide_cb(void *data, Evas_Object *obj,
                        const char *emission, const char *source)
 {
@@ -431,6 +560,8 @@ static Evas_Object *_quickpanel_ticker_create_tickernoti(void *data)
        elm_layout_theme_set(detail, "tickernoti", "base", "default");
        elm_object_signal_callback_add(detail, "request,hide", "",
                                _noti_hide_cb, noti);
+       elm_object_signal_callback_add(detail, "clicked", "",
+                       _quickpanel_ticker_clicked_cb, noti);
 
        data_win_height = (char *)elm_layout_data_get(detail, "height");
        if (data_win_height != NULL && elm_config_scale_get() > 0.0)
@@ -675,9 +806,6 @@ static void _quickpanel_ticker_noti_detailed_changed_cb(void *data, notification
                evas_object_event_callback_add(g_ticker, EVAS_CALLBACK_HIDE,
                                        _quickpanel_ticker_detail_hide_cb,
                                        noti);
-               evas_object_smart_callback_add(g_ticker, "clicked",
-                                       _quickpanel_ticker_clicked_cb,
-                                       noti);
        }
 }
 
index 4deb6d5..5016e32 100755 (executable)
@@ -20,9 +20,7 @@
 #include <system_info.h>
 #include <sys/utsname.h>
 #include <X11/Xlib.h>
-#include <X11/Xatom.h>
 #include <utilX.h>
-#include <Ecore_X.h>
 #include <Ecore_Input.h>
 #include <heynoti.h>
 #include <vconf.h>
 #include <privilege-control.h>
 #include <bundle.h>
 #include <feedback.h>
+#include <notification.h>
 
 #include "common.h"
 #include "quickpanel-ui.h"
 #include "modules.h"
-#include "notifications/noti_display_app.h"
 #include "quickpanel_def.h"
 
 #define HIBERNATION_ENTER_NOTI "HIBERNATION_ENTER"
@@ -53,6 +51,7 @@ struct appdata *g_app_data = NULL;
 #define QP_EMUL_STR            "Emulator"
 
 static int common_cache_flush(void *evas);
+static void _quickpanel_player_free(player_h *sound_player);
 
 /*****************************************************************************
   *
@@ -90,10 +89,6 @@ static Eina_Bool quickpanel_ui_refresh_cb(void *data)
        INFO(" >>>>>>>>>>>>>>> Refresh QP modules!! <<<<<<<<<<<<<<<< ");
        refresh_modules(data);
 
-       if (ad->list) {
-               elm_genlist_realized_items_update(ad->list);
-       }
-
        quickpanel_init_size_genlist(ad);
        quickpanel_ui_update_height(ad);
 
@@ -134,68 +129,72 @@ static int common_cache_flush(void *evas)
        return QP_OK;
 }
 
-static int _resize_noti_win(void *data, int new_angle)
+static Eina_Bool quickpanel_hardkey_cb(void *data, int type, void *event)
+{
+       struct appdata *ad = NULL;
+       Ecore_Event_Key *key_event = NULL;
+
+       retif(data == NULL || event == NULL,
+               EINA_FALSE, "Invalid parameter!");
+       ad = data;
+       key_event = event;
+
+       if (!strcmp(key_event->keyname, KEY_SELECT)) {
+               quickpanel_close_quickpanel(false);
+       }
+       return EINA_FALSE;
+}
+
+static int _quickpanel_ui_rotation_get_angle(void *data)
 {
        struct appdata *ad = (struct appdata *)data;
-       int w = 0, h = 0;
-       int tot_h = 0;
-       int diff = 0;
+       Ecore_X_Window xwin, root;
+       int ret = 0, angle = 0, count = 0;
+       unsigned char *prop_data = NULL;
+
+       retif(data == NULL, -1, "Invalid parameter!");
 
-       diff = (ad->angle > new_angle) ?
-           (ad->angle - new_angle) : (new_angle - ad->angle);
+       xwin = elm_win_xwindow_get(ad->win);
+       root = ecore_x_window_root_get(xwin);
 
-#if 0
-       int tot_h = QP_HANDLE_H * ad->scale;
+       ret = ecore_x_window_prop_property_get(root,
+                               ECORE_X_ATOM_E_ILLUME_ROTATE_ROOT_ANGLE,
+                               ECORE_X_ATOM_CARDINAL, 32,
+                               &prop_data, &count);
 
-       /* get indicator height */
-       ecore_x_e_illume_indicator_geometry_get(ecore_x_window_root_first_get(),
-                                               NULL, NULL, NULL, &h);
-       if (h <= 0)
-               h = (int)(QP_INDICATOR_H * ad->scale);
+       if (ret && prop_data) {
+               memcpy(&angle, prop_data, sizeof(int));
 
-       tot_h += h;
-       INFO("tot_h[%d], scale[%lf],indi[%d]", tot_h, ad->scale, h);
-#else
-       tot_h = 0;
-       INFO("tot_h[%d], scale[%lf]", tot_h, ad->scale);
-#endif
+               if (prop_data)
+                       free(prop_data);
 
-       ecore_x_window_size_get(ecore_x_window_root_first_get(), &w, &h);
-       if (diff % 180 != 0) {
-               int width = 0;
-               int height = 0;
-               if (ad->angle % 180 == 0) {
-                       width = w - tot_h;
-                       height = h;
-               } else {
-                       width = h - tot_h;
-                       height = w;
-               }
-               INFO("win[%dx%d], Resize[%dx%d] diff[%d], angle[%d]",
-                       w, h, width, height, diff, ad->angle);
-               evas_object_resize(ad->win, (int)width-1, (int)height-1); //workaround
-               evas_object_resize(ad->win, (int)width, (int)height);
+               return angle;
+       } else {
+               ERR("Fail to get angle");
+               if (prop_data)
+                       free(prop_data);
+
+               return -1;
        }
-       return 0;
 }
 
-static Eina_Bool quickpanel_hardkey_cb(void *data, int type, void *event)
+static void _quickpanel_ui_rotation(void *data, int new_angle)
 {
-       struct appdata *ad = NULL;
-       Ecore_Event_Key *key_event = NULL;
-       Ecore_X_Window xwin;
+       struct appdata *ad = data;
+       retif(data == NULL, , "Invalid parameter!");
 
-       retif(data == NULL || event == NULL,
-               EINA_FALSE, "Invalid parameter!");
-       ad = data;
-       key_event = event;
+       INFO("ROTATION: new:%d old:%d", new_angle, ad->angle);
 
-       if (!strcmp(key_event->keyname, KEY_SELECT)) {
-               xwin = elm_win_xwindow_get(ad->win);
-               if (xwin != 0)
-                       ecore_x_e_illume_quickpanel_state_send(ecore_x_e_illume_zone_get(xwin),ECORE_X_ILLUME_QUICKPANEL_STATE_OFF);
+       if (new_angle == 0 || new_angle == 90 || new_angle == 180 || new_angle == 270) {
+               if (new_angle != ad->angle) {
+                       elm_win_rotation_with_resize_set(ad->win,
+                                                        new_angle);
+                       ad->angle = new_angle;
+
+                       quickpanel_ui_set_indicator_cover(ad);
+                       ecore_idler_add(quickpanel_ui_refresh_cb, ad);
+               }
        }
-       return EINA_FALSE;
 }
 
 static Eina_Bool quickpanel_ui_client_message_cb(void *data, int type,
@@ -210,25 +209,18 @@ static Eina_Bool quickpanel_ui_client_message_cb(void *data, int type,
 
        if (ev->message_type == ECORE_X_ATOM_E_ILLUME_ROTATE_WINDOW_ANGLE) {
                new_angle = ev->data.l[0];
-
-               if (new_angle == 0 || new_angle == 90 || new_angle == 180 || new_angle == 270) {
-                       if (new_angle != ad->angle) {
-                               INFO("ROTATION: new:%d old:%d", new_angle, ad->angle);
-                               _resize_noti_win(ad, new_angle);
-
-                               elm_win_rotation_with_resize_set(ad->win,
-                                                                new_angle);
-                               ad->angle = new_angle;
-
-                               quickpanel_ui_set_indicator_cover(ad);
-                       }
-               }
-               ecore_idler_add(quickpanel_ui_refresh_cb, ad);
+               _quickpanel_ui_rotation(ad, new_angle);
        } else if (ev->message_type == ECORE_X_ATOM_E_ILLUME_QUICKPANEL_STATE) {
                if (ev->data.l[0] == ECORE_X_ATOM_E_ILLUME_QUICKPANEL_ON) {
                        qp_opened_modules(data);
+                       if (g_sound_player != NULL) {
+                               _quickpanel_player_free(&g_sound_player);
+                       }
                } else {
                        qp_closed_modules(data);
+                       if (g_sound_player != NULL) {
+                               _quickpanel_player_free(&g_sound_player);
+                       }
                }
        }
        return ECORE_CALLBACK_RENEW;
@@ -287,28 +279,12 @@ Evas_Object *quickpanel_ui_load_edj(Evas_Object * parent, const char *file,
        return eo;
 }
 
-static void _quickpanel_ui_close_quickpanel(void *data, Evas_Object *o,
-               const char *emission, const char *source) {
-
-       Ecore_X_Window xwin = 0;
-       struct appdata *ad = NULL;
-
-       retif(data == NULL, , "data is NULL");
-       ad = data;
-
-       DBG("close quick panel");
-
-       xwin = elm_win_xwindow_get(ad->win);
-
-       if (xwin != 0)
-               ecore_x_e_illume_quickpanel_state_send(ecore_x_e_illume_zone_get(xwin),ECORE_X_ILLUME_QUICKPANEL_STATE_OFF);
-}
-
 static int _quickpanel_ui_create_win(void *data)
 {
        struct appdata *ad = data;
        int w = 0;
        int h = 0;
+       int initial_angle = 0;
 
        retif(data == NULL, QP_FAIL, "Invialid parameter!");
 
@@ -353,9 +329,10 @@ static int _quickpanel_ui_create_win(void *data)
                ad->evas = NULL;
                return -1;
        }
-       elm_genlist_homogeneous_set(ad->list, EINA_FALSE);
+       elm_genlist_homogeneous_set(ad->list, EINA_TRUE);
        elm_scroller_policy_set(ad->list, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_OFF);
        elm_object_part_content_set(ad->ly, "qp.gl_base.gl.swallow", ad->list);
+       evas_object_show(ad->list);
 
        ecore_x_window_size_get(ecore_x_window_root_first_get(), &w, &h);
        evas_object_resize(ad->win, w, h);
@@ -363,10 +340,6 @@ static int _quickpanel_ui_create_win(void *data)
        ad->win_width = w;
        ad->win_height = h;
 
-       edje_object_signal_callback_add(_EDJ(ad->ly),
-                       "close.quickpanel", "*", _quickpanel_ui_close_quickpanel,
-                       ad);
-
        quickpanel_init_size_genlist(ad);
 
        quickpanel_ui_set_indicator_cover(ad);
@@ -374,6 +347,8 @@ static int _quickpanel_ui_create_win(void *data)
        /* key grab */
        utilx_grab_key(ecore_x_display_get(), elm_win_xwindow_get(ad->win), KEY_SELECT, SHARED_GRAB);
 
+       initial_angle = _quickpanel_ui_rotation_get_angle(ad);
+       _quickpanel_ui_rotation(ad, initial_angle);
        return 0;
 }
 
@@ -556,7 +531,7 @@ int quickpanel_launch_app(char *app_id, void *data)
        int ret = SERVICE_ERROR_NONE;
        service_h service = NULL;
 
-       retif(app_id == NULL, SERVICE_ERROR_INVALID_PARAMETER, "Invialid parameter!");
+       retif(app_id == NULL && data == NULL, SERVICE_ERROR_INVALID_PARAMETER, "Invialid parameter!");
 
        ret = service_create(&service);
        if (ret != SERVICE_ERROR_NONE) {
@@ -565,11 +540,15 @@ int quickpanel_launch_app(char *app_id, void *data)
        }
        retif(service == NULL, SERVICE_ERROR_INVALID_PARAMETER, "fail to create service handle!");
 
-       service_set_operation(service, SERVICE_OPERATION_DEFAULT);
-       service_set_app_id(service, app_id);
+       if (app_id != NULL) {
+               service_set_operation(service, SERVICE_OPERATION_DEFAULT);
+               service_set_app_id(service, app_id);
 
-       if (data != NULL) {
-               bundle_iterate((bundle *)data, _quickpanel_move_data_to_service, service);
+               if (data != NULL) {
+                       bundle_iterate((bundle *)data, _quickpanel_move_data_to_service, service);
+               }
+       } else {
+               service_import_from_bundle(service, data);
        }
 
        ret = service_send_launch_request(service, NULL, NULL);
@@ -582,28 +561,64 @@ int quickpanel_launch_app(char *app_id, void *data)
        return ret;
 }
 
-static void _quickpanel_player_free(player_h *sound_player)
+void quickpanel_launch_app_inform_result(const char *pkgname, int retcode)
 {
-       retif(sound_player == NULL, , "invalid parameter");
+       retif(retcode == SERVICE_ERROR_NONE, , "Invialid parameter!");
+       retif(pkgname == NULL && retcode != SERVICE_ERROR_APP_NOT_FOUND, , "Invialid parameter!");
 
-       player_state_e state = PLAYER_STATE_NONE;
+       const char *msg = NULL;
 
-       if (*sound_player != NULL) {
-               if (player_get_state(*sound_player, &state) == PLAYER_ERROR_NONE) {
+       if (retcode == SERVICE_ERROR_APP_NOT_FOUND) {
+               notification_status_message_post(_S("IDS_COM_BODY_NO_APPLICATIONS_CAN_PERFORM_THIS_ACTION"));
+       } else {
+               Eina_Strbuf *strbuf = eina_strbuf_new();
 
-                       DBG("state of player %d", state);
+               if (strbuf != NULL) {
+                       eina_strbuf_append_printf(strbuf, _S("IDS_IDLE_POP_UNABLE_TO_LAUNCH_PS"), pkgname);
+                       eina_strbuf_append_printf(strbuf, "(%d)", retcode);
+                       msg = eina_strbuf_string_get(strbuf);
 
-                       if (state == PLAYER_STATE_PLAYING) {
-                               player_stop(*sound_player);
-                               player_unprepare(*sound_player);
-                       }
-                       if (state == PLAYER_STATE_READY) {
-                               player_unprepare(*sound_player);
+                       if (msg != NULL) {
+                               notification_status_message_post(msg);
                        }
+                       eina_strbuf_free(strbuf);
+               }
+       }
+}
+
+static Eina_Bool _quickpanel_player_free_idler_cb(void *data)
+{
+       player_h *sound_player = data;
+       player_state_e state = PLAYER_STATE_NONE;
+
+       retif(data == NULL, QP_FAIL, "Invalid parameter!");
+
+       retif(sound_player == NULL, EINA_FALSE, "invalid parameter");
+       retif(*sound_player == NULL, EINA_FALSE, "invalid parameter");
+
+       if (player_get_state(*sound_player, &state) == PLAYER_ERROR_NONE) {
+
+               DBG("state of player %d", state);
+
+               if (state == PLAYER_STATE_PLAYING) {
+                       player_stop(*sound_player);
+                       player_unprepare(*sound_player);
+               }
+               if (state == PLAYER_STATE_READY) {
+                       player_unprepare(*sound_player);
                }
-               player_destroy(*sound_player);
-               *sound_player = NULL;
        }
+       player_destroy(*sound_player);
+       *sound_player = NULL;
+
+       return EINA_FALSE;
+}
+
+static void _quickpanel_player_free(player_h *sound_player)
+{
+       retif(sound_player == NULL, , "invalid parameter");
+
+       ecore_idler_add(_quickpanel_player_free_idler_cb, sound_player);
 }
 
 static void
@@ -741,6 +756,31 @@ void quickpanel_player_play(sound_type_e sound_type, const char *sound_file)
                        _quickpanel_player_timeout_cb, sound_player);
 }
 
+void quickpanel_play_feedback(void)
+{
+       int vib_status = 0;
+       int snd_status = 0;
+       int snd_disabled_status = 0;
+
+#ifdef VCONFKEY_SETAPPL_ACCESSIBILITY_TURN_OFF_ALL_SOUNDS
+       vconf_get_bool(VCONFKEY_SETAPPL_ACCESSIBILITY_TURN_OFF_ALL_SOUNDS, &snd_disabled_status);
+
+       if (!snd_disabled_status) {
+               vconf_get_bool(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, &snd_status);
+               if (snd_status)
+                       feedback_play_type(FEEDBACK_TYPE_SOUND, FEEDBACK_PATTERN_TOUCH_TAP);
+       }
+#else
+       vconf_get_bool(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, &snd_status);
+       if (snd_status)
+               feedback_play_type(FEEDBACK_TYPE_SOUND, FEEDBACK_PATTERN_TOUCH_TAP);
+#endif
+
+       vconf_get_bool(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL, &vib_status);
+       if (vib_status)
+               feedback_play_type(FEEDBACK_TYPE_VIBRATION, FEEDBACK_PATTERN_TOUCH_TAP);
+}
+
 static int _quickpanel_ui_delete_win(void *data)
 {
        struct appdata *ad = data;
@@ -758,6 +798,41 @@ static int _quickpanel_ui_delete_win(void *data)
        return QP_OK;
 }
 
+static void _quickpanel_ui_vconf_event_lcdoff_cb(keynode_t *node,
+                                               void *data)
+{
+       int ret = 0;
+       int pm_state = VCONFKEY_PM_STATE_NORMAL;
+
+       ret = vconf_get_int(VCONFKEY_PM_STATE, &pm_state);
+
+       if (ret == 0 && pm_state == VCONFKEY_PM_STATE_LCDOFF) {
+               quickpanel_close_quickpanel(false);
+       }
+}
+
+static void _quickpanel_ui_vconf_event_init(struct appdata *ad)
+{
+       int ret = 0;
+
+       ret = vconf_notify_key_changed(VCONFKEY_PM_STATE,
+                       _quickpanel_ui_vconf_event_lcdoff_cb, ad);
+       if (ret != 0) {
+               ERR("VCONFKEY_PM_STATE: %d", ret);
+       }
+}
+
+static void _quickpanel_ui_vconf_event_fini(struct appdata *ad)
+{
+       int ret = 0;
+
+       ret = vconf_ignore_key_changed(VCONFKEY_PM_STATE,
+                       _quickpanel_ui_vconf_event_lcdoff_cb);
+       if (ret != 0) {
+               ERR("VCONFKEY_PM_STATE: %d", ret);
+       }
+}
+
 static void _quickpanel_ui_init_heynoti(struct appdata *ad)
 {
        int ret = 0;
@@ -1008,9 +1083,9 @@ static void quickpanel_app_terminate(void *data)
        feedback_deinitialize();
 
        /* unregister system event callback */
-       _quickpanel_ui_fini_heynoti();
+       _quickpanel_ui_vconf_event_fini(ad);
 
-       notification_daemon_shutdown();
+       _quickpanel_ui_fini_heynoti();
 
        _quickpanel_ui_fini_ecore_event(ad);
 
@@ -1074,13 +1149,12 @@ static void quickpanel_app_service(service_h service, void *data)
        ret = _quickpanel_ui_create_win(ad);
        retif(ret != QP_OK, , "Failed to create window!");
 
-       /* init internationalization */
-       notification_daemon_win_set(ad->win);
-
        _quickpanel_ui_init_ecore_event(ad);
 
        _quickpanel_ui_init_heynoti(ad);
 
+       _quickpanel_ui_vconf_event_init(ad);
+
        feedback_initialize();
 
 #ifdef QP_SETTING_ENABLE
@@ -1108,6 +1182,31 @@ static void quickpanel_app_region_format_changed_cb(void *data)
        INFO(" >>>>>>>>>>>>>>> region_format CHANGED!! <<<<<<<<<<<<<<<< ");
 }
 
+void quickpanel_close_quickpanel(bool is_check_lock) {
+       Ecore_X_Window xwin;
+       int is_lock_launched = VCONFKEY_IDLE_UNLOCK;
+       struct appdata *ad = g_app_data;
+
+       DBG("");
+
+       retif(ad == NULL, , "Invalid parameter!");
+       retif(ad->win == NULL, , "Invalid parameter!");
+
+       xwin = elm_win_xwindow_get(ad->win);
+
+       if (is_check_lock == true) {
+               if (vconf_get_int(VCONFKEY_IDLE_LOCK_STATE, &is_lock_launched) == 0) {
+                       if (is_lock_launched == VCONFKEY_IDLE_LOCK) {
+                               vconf_set_int(VCONFKEY_IDLE_LOCK_STATE, VCONFKEY_IDLE_UNLOCK);
+                               ERR("do unlock");
+                       }
+               }
+       }
+
+       if (xwin != 0)
+               ecore_x_e_illume_quickpanel_state_send(ecore_x_e_illume_zone_get(xwin),ECORE_X_ILLUME_QUICKPANEL_STATE_OFF);
+}
+
 int main(int argc, char *argv[])
 {
        int r = 0;
@@ -1147,8 +1246,6 @@ int main(int argc, char *argv[])
 
        memset(&ad, 0x0, sizeof(struct appdata));
 
-       notification_daemon_init();
-
        g_app_data = &ad;
 
        DBG("start main");
index e3ec9cf..9388ef3 100755 (executable)
@@ -18,6 +18,8 @@
 #define __QUICKPANEL_UI_H__
 
 #include <Elementary.h>
+#include <Ecore_X.h>
+#include <X11/Xatom.h>
 #include <player.h>
 
 #if !defined(VENDOR)
@@ -112,6 +114,7 @@ typedef struct _QP_Module {
 
 void quickpanel_player_play(sound_type_e sound_type, const char *sound_file);
 int quickpanel_launch_app(char *app_id, void *data);
+void quickpanel_launch_app_inform_result(const char *pkgname, int retcode);
 int quickpanel_ui_check_emul(void);
 void quickpanel_init_size_genlist(void *data);
 void quickpanel_ui_update_height(void *data);
@@ -119,5 +122,7 @@ void *quickpanel_get_app_data(void);
 Evas_Object *quickpanel_ui_load_edj(Evas_Object * parent, const char *file,
                                            const char *group, int is_just_load);
 void quickpanel_ui_set_indicator_cover(void *data);
+void quickpanel_close_quickpanel(bool is_check_lock);
+void quickpanel_play_feedback(void);
 
 #endif                         /* __QUICKPANEL_UI_H__ */
index 341733c..c93ef89 100755 (executable)
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns="http://tizen.org/ns/packages" package="@PKGNAME@" version="0.3.8-1" install-location="internal-only">
+<manifest xmlns="http://tizen.org/ns/packages" package="@PKGNAME@" version="0.3.22-1" install-location="internal-only">
        <label>@PROJECT_NAME@</label>
        <author email="yjoo93.park@samsung.com" href="www.samsung.com">Youngjoo Park</author>
        <author email="seungtaek.chung@samsung.com" href="www.samsung.com">seungtaek chung</author>
index aa31f93..81a97f9 100755 (executable)
@@ -23,6 +23,7 @@
 #define QP_HANDLE_H    64
 #define QP_HANDLE_TOTAL_H      120
 #define QP_SPN_H 80
+#define QP_SPN_TEXT_W 500
 
 #define QP_BG_VISIBILITY       0
 #define QP_BG_COLOR    255 255 255 255
index 4f5ce68..7044893 100755 (executable)
 //#define DEBUG
 //#define DEBUG_TEXT
 
+#define MAKE_PART_SHOW_PROGRAM(PARTNAME)\
+               program{\
+                       name: PARTNAME".object.show";\
+                       signal: "object.show";\
+                       source: PARTNAME;\
+                       action: STATE_SET "show" 0.0;\
+                       target: PARTNAME;\
+               }\
+
+#define MAKE_PART_SHOW_TEXT_PROGRAM(PARTNAME)\
+               program{\
+                       name: PARTNAME".text.show";\
+                       signal: "object.show";\
+                       source: PARTNAME;\
+                       action: STATE_SET "show" 0.0;\
+                       target: PARTNAME;\
+               }\
+               program{\
+                       name: PARTNAME".text.show.efect";\
+                       signal: "object.show.effect";\
+                       source: PARTNAME;\
+                       action: STATE_SET "show.effect" 0.0;\
+                       target: PARTNAME;\
+               }\
+
 images {
        image: "quick_icon_bg_01.png" COMP;
        image: "quick_btn_close_press.png" COMP;
@@ -23,31 +48,59 @@ images {
        image: "quick_icon_bg_small.png" COMP;
 }
 
-#define BOX_CONTENTS_FONT "Tizen:style=Regular"
-#define BOX_CONTENTS_FONT_SIZE 28
-#define BOX_CONTENTS_FONT_COLOR 248 246 239 255
-
 #define BOX_FONT_SHADOW_COLOR 0 0 0 191
 #define BOX_FONT_OUTLINE_COLOR 0 0 0 191
+#define BOX_FONT_NO_SHADOW_COLOR 0 0 0 0
+#define BOX_FONT_NO_OUTLINE_COLOR 0 0 0 0
+
+#define BOX_CONTENTS_FONT "Tizen:style=Medium"
+#define BOX_CONTENTS_FONT_SIZE 32
+#define BOX_CONTENTS_FONT_COLOR 248 246 239 255
+
 #define BOX_INFO_FONT "Tizen:style=Regular"
 #define BOX_INFO_FONT_SIZE 28
-#define BOX_INFO_FONT_COLOR 248 246 239 255
+#define BOX_INFO_FONT_COLOR 248 246 239 127
 
 #define BOX_INFO_SUB_FONT "Tizen:style=Regular"
 #define BOX_INFO_SUB_FONT_SIZE 28
-#define BOX_INFO_SUB_FONT_COLOR 248 246 239 255
+#define BOX_INFO_SUB_FONT_COLOR 248 246 239 127
 
-#define BOX_INFO_COUNT_FONT "Tizen:style=Regular"
+#define BOX_INFO_COUNT_FONT "Tizen:style=Medium"
 #define BOX_INFO_COUNT_FONT_SIZE 58
 #define BOX_INFO_COUNT_FONT_COLOR 248 246 239 255
 
 #define TEXT_CLASS_TIZEN "tizen"
+#define TEXT_EFFECT "OUTLINE_SHADOW"
 
 styles {
        style {
                name: "notibox_title";
-               base: "font=Tizen:style=Regular text_class=tizen font_size=36 color=#F8F6EF wrap=mixed style=soft_shadow shadow_color=#000000BF";
-               tag: "br" "\n";
+               base: "font=Tizen:style=Regular text_class=tizen font_size=40 color=#F8F6EF ellipsis=1.0 wrap=mixed";
+       }
+
+       style {
+               name: "notibox_title_effect";
+               base: "font=Tizen:style=Regular text_class=tizen font_size=40 color=#F8F6EF ellipsis=1.0 wrap=mixed style=outline_shadow outline_color=#000000BF shadow_color=#000000BF";
+       }
+
+       style {
+               name: "notibox_contents";
+               base: "font=Tizen:style=Medium text_class=tizen font_size=32 color=#F8F6EF ellipsis=1.0 linegap=-6 wrap=mixed";
+       }
+
+       style {
+               name: "notibox_contents_effect";
+               base: "font=Tizen:style=Medium text_class=tizen font_size=32 color=#F8F6EF ellipsis=1.0 linegap=-6 wrap=mixed style=outline_shadow outline_color=#000000BF shadow_color=#000000BF";
+       }
+
+       style {
+               name: "notibox_info";
+               base: "font=Tizen:style=Regular text_class=tizen font_size=28 color=#F8F6EF7F ellipsis=1.0 linegap=-6 wrap=mixed";
+       }
+
+       style {
+               name: "notibox_info_effect";
+               base: "font=Tizen:style=Regular text_class=tizen font_size=28 color=#F8F6EF7F ellipsis=1.0 linegap=-6 wrap=mixed style=outline_shadow outline_color=#000000BF shadow_color=#000000BF";
        }
 }
 
@@ -72,6 +125,7 @@ group {
                        description {
                                state: "default" 0.0;
                                min: BOX_WIDTH_P BOX_HEIGHT_P;
+                               max: BOX_WIDTH_P BOX_HEIGHT_P;
                                color: BOX_COLOR_BG;
                                align: 0.0 0.0;
                        }
@@ -83,6 +137,7 @@ group {
                                state: "landscape" 0.0;
                                inherit: "default" 0.0;
                                min: BOX_WIDTH_L BOX_HEIGHT_L;
+                               max: BOX_WIDTH_L BOX_HEIGHT_L;
                        }
                }
 
@@ -95,6 +150,7 @@ group {
                        description {
                                state: "default" 0.0;
                                min: BOX_MARGIN_TEXT_H 0;
+                               fixed: 1 0;
                                rel1 {
                                        relative: 0.0 0.0;
                                }
@@ -116,6 +172,7 @@ group {
                        description {
                                state: "default" 0.0;
                                min: BOX_MARGIN_TEXT_H 0;
+                               fixed: 1 0;
                                rel1 {
                                        relative: 1.0 0.0;
                                }
@@ -137,6 +194,7 @@ group {
                        description {
                                state: "default" 0.0;
                                min: 6 0;
+                               fixed: 1 0;
                                rel1 {
                                        relative: 1.0 0.0;
                                }
@@ -158,6 +216,7 @@ group {
                        description {
                                state: "default" 0.0;
                                min: 0 44;
+                               fixed: 0 1;
                                rel1 {
                                        relative: 0.0 0.0;
                                }
@@ -179,6 +238,7 @@ group {
                        description {
                                state: "default" 0.0;
                                min: 0 20;
+                               fixed: 0 1;
                                rel1 {
                                        relative: 0.0 0.0;
                                }
@@ -200,6 +260,29 @@ group {
                        description {
                                state: "default" 0.0;
                                min: 0 22;
+                               fixed: 0 1;
+                               rel1 {
+                                       relative: 0.0 1.0;
+                               }
+                               rel2 {
+                                       relative: 1.0 1.0;
+                               }
+                               align: 0.0 1.0;
+#ifdef DEBUG
+                               color: 0 0 255 255;
+#else
+                               visible:0;
+#endif
+                       }
+               }
+               part {
+                       name: "margin.bottom.thin";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 2;
+                               fixed: 0 1;
                                rel1 {
                                        relative: 0.0 1.0;
                                }
@@ -224,6 +307,8 @@ group {
                        description {
                                state: "default" 0.0;
                                min: 124 124;
+                               max: 124 124;
+                               fixed: 1 1;
                                rel1 {
                                        to_x:"margin.right.icon";
                                        to_y:"margin.top.icon";
@@ -249,6 +334,8 @@ group {
                        description {
                                state: "default" 0.0;
                                min: 124 124;
+                               max: 124 124;
+                               fixed: 1 1;
                                rel1 {
                                        to:"rect.icon.bg";
                                        relative: 0.5 0.5;
@@ -272,6 +359,7 @@ group {
                        description {
                                state: "default" 0.0;
                                min: 0 12;
+                               fixed: 0 1;
                                rel1 {
                                        to:"rect.icon.bg";
                                        relative: 0.0 1.0;
@@ -295,6 +383,8 @@ group {
                        description {
                                state: "default" 0.0;
                                min: 56 56;
+                               max: 56 56;
+                               fixed: 1 1;
                                rel1 {
                                        to:"rect.icon.sub.padding";
                                        relative: 1.0 1.0;
@@ -320,6 +410,8 @@ group {
                        description {
                                state: "default" 0.0;
                                min: 38 38;
+                               max: 38 38;
+                               fixed: 1 1;
                                rel1 {
                                        relative: 1.0 0.0;
                                }
@@ -342,7 +434,9 @@ group {
                        scale: 1;
                        description {
                                state: "default" 0.0;
-                               min: 0 124;
+                               min: 190 189;
+                               max: 190 189;
+                               fixed: 1 1;
                                rel1 {
                                        to_x:"margin.left";
                                        to_y:"margin.top.text";
@@ -360,6 +454,16 @@ group {
                                visible:0;
 #endif
                        }
+                       description {
+                               state: "portrait" 0.0;
+                               inherit: "default" 0.0;
+                       }
+                       description {
+                               state: "landscape" 0.0;
+                               inherit: "default" 0.0;
+                               min: 260 189;
+                               max: 260 189;
+                       }
                }
 
                part {
@@ -369,6 +473,7 @@ group {
                        description {
                                state: "default" 0.0;
                                min: 0 BOX_TEXT_INFO_HEIGHT;
+                               fixed: 0 1;
                                rel1 {
                                        to_x:"margin.left";
                                        to_y:"margin.bottom";
@@ -394,6 +499,8 @@ group {
                        description {
                                state: "default" 0.0;
                                min: BOX_TEXT_SUB_WIDTH BOX_TEXT_INFO_HEIGHT;
+                               max: BOX_TEXT_SUB_WIDTH BOX_TEXT_INFO_HEIGHT;
+                               fixed: 1 1;
                                rel1 {
                                        to_x:"margin.right";
                                        to_y:"margin.bottom";
@@ -419,6 +526,7 @@ group {
                        description {
                                state: "default" 0.0;
                                min: BOX_TEXT_SUB_PADDING_WIDTH 0;
+                               fixed: 1 0;
                                rel1 {
                                        to:"rect.text.info.sub.2";
                                        relative: 0.0 0.0;
@@ -466,6 +574,7 @@ group {
                        description {
                                state: "default" 0.0;
                                min: 0 BOX_TEXT_INFO_HEIGHT;
+                               fixed: 0 1;
                                rel1 {
                                        to_x:"margin.left";
                                        to_y:"rect.text.info.2";
@@ -485,12 +594,39 @@ group {
                        }
                }
                part {
+                       name: "rect.text.info.1.multiline";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               fixed: 1 1;
+                               rel1 {
+                                       to_x:"margin.left";
+                                       to_y:"rect.text.info.1";
+                                       relative: 1.0 0.0;
+                               }
+                               rel2 {
+                                       to_x:"margin.right";
+                                       to_y:"margin.bottom.thin";
+                                       relative: 0.0 0.0;
+                               }
+                               align: 0.0 0.0;
+#ifdef DEBUG
+                               color: 255 150 100 255;
+#else
+                               visible:0;
+#endif
+                       }
+               }
+               part {
                        name: "rect.text.info.sub.1";
                        type: RECT;
                        scale: 1;
                        description {
                                state: "default" 0.0;
                                min: BOX_TEXT_SUB_WIDTH BOX_TEXT_INFO_HEIGHT;
+                               max: BOX_TEXT_SUB_WIDTH BOX_TEXT_INFO_HEIGHT;
+                               fixed: 1 1;
                                rel1 {
                                        to_x:"margin.right";
                                        to_y:"rect.text.info.2";
@@ -516,6 +652,7 @@ group {
                        description {
                                state: "default" 0.0;
                                min: BOX_TEXT_SUB_PADDING_WIDTH 0;
+                               fixed: 1 0;
                                rel1 {
                                        to:"rect.text.info.sub.1";
                                        relative: 0.0 0.0;
@@ -563,6 +700,7 @@ group {
                        description {
                                state: "default" 0.0;
                                min: 0 20;
+                               fixed: 0 1;
                                rel1 {
                                        to_x:"margin.left";
                                        to_y:"rect.text.info.1";
@@ -588,6 +726,7 @@ group {
                        description {
                                state: "default" 0.0;
                                min: 0 BOX_TEXT_CONTENTS_HEIGHT;
+                               fixed: 0 1;
                                rel1 {
                                        to_x:"margin.left";
                                        to_y:"rect.text.margin.contents";
@@ -607,12 +746,39 @@ group {
                        }
                }
                part {
+                       name: "rect.text.contents.multiline";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               fixed: 1 1;
+                               rel1 {
+                                       to_x:"margin.left";
+                                       to_y:"rect.text.contents";
+                                       relative: 1.0 0.0;
+                               }
+                               rel2 {
+                                       to_x:"margin.right";
+                                       to_y:"margin.bottom.thin";
+                                       relative: 0.0 0.0;
+                               }
+                               align: 0.0 1.0;
+#ifdef DEBUG
+                               color: 100 150 100 255;
+#else
+                               visible:0;
+#endif
+                       }
+               }
+               part {
                        name: "rect.text.count";
                        type: RECT;
                        scale: 1;
                        description {
                                state: "default" 0.0;
                                min: 40 58;
+                               max: 40 58;
+                               fixed: 1 1;
                                rel1 {
                                        to_x:"margin.left";
                                        to_y:"rect.text.margin.contents";
@@ -685,6 +851,7 @@ group {
                        description {
                                state: "default" 0.0;
                                min: 0 BOX_TEXT_CONTENTS_HEIGHT;
+                               fixed: 0 1;
                                rel1 {
                                        to_x:"rect.text.count.padding";
                                        to_y:"rect.text.margin.contents";
@@ -714,6 +881,12 @@ group {
                                fixed: 0 0;
                                rel1 {to: "background";}
                                rel2 {to: "background";}
+                               visible:0;
+                       }
+                       description {
+                               state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               visible:1;
                        }
                }
                part{
@@ -788,6 +961,12 @@ group {
                                fixed: 0 0;
                                rel1 {to: "rect.icon";}
                                rel2 {to: "rect.icon";}
+                               visible:0;
+                       }
+                       description {
+                               state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               visible:1;
                        }
                }
                part{
@@ -826,6 +1005,12 @@ group {
                                fixed: 0 0;
                                rel1 {to: "rect.icon.sub";}
                                rel2 {to: "rect.icon.sub";}
+                               visible:0;
+                       }
+                       description {
+                               state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               visible:1;
                        }
                }
 
@@ -833,7 +1018,6 @@ group {
                        name: "object.text.title";
                        scale: 1;
                        type: TEXTBLOCK;
-                       effect: SOFT_SHADOW;
                        multiline: 1;
                        description {
                                state: "default" 0.0;
@@ -846,8 +1030,20 @@ group {
                                        text: "some string of text to display";
 #endif
                                }
-                               color2: BOX_FONT_SHADOW_COLOR;
-                               color3: BOX_FONT_OUTLINE_COLOR;
+                               visible:0;
+                       }
+                       description {
+                               state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               visible:1;
+                       }
+                       description {
+                               state: "show.effect" 0.0;
+                               inherit: "default" 0.0;
+                               text {
+                                       style: "notibox_title_effect";
+                               }
+                               visible:1;
                        }
                }
 
@@ -855,14 +1051,12 @@ group {
                        name: "object.text.contents";
                        scale: 1;
                        type: TEXT;
-                       effect: SOFT_SHADOW;
+                       effect: TEXT_EFFECT;
                        description {
                                state: "default" 0.0;
                                rel1 {to: "rect.text.contents";}
                                rel2 {to: "rect.text.contents";}
                                color: BOX_CONTENTS_FONT_COLOR;
-                               color2: BOX_FONT_SHADOW_COLOR;
-                               color3: BOX_FONT_OUTLINE_COLOR;
                                text {
                                        font: BOX_CONTENTS_FONT;
                                        text_class: TEXT_CLASS_TIZEN;
@@ -872,41 +1066,98 @@ group {
                                        text: "some string of text to display";
 #endif
                                }
+                               visible:0;
+                       }
+                       description {
+                               state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               visible:1;
+                       }
+                       description {
+                               state: "show.effect" 0.0;
+                               inherit: "default" 0.0;
+                               color2: BOX_FONT_SHADOW_COLOR;
+                               color3: BOX_FONT_OUTLINE_COLOR;
+                               visible:1;
                        }
                }
                part {
                        name: "object.text.contents.short";
                        scale: 1;
                        type: TEXT;
-                       effect: SOFT_SHADOW;
+                       effect: TEXT_EFFECT;
                        description {
                                state: "default" 0.0;
                                rel1 {to: "rect.text.contents.short";}
                                rel2 {to: "rect.text.contents.short";}
                                color: BOX_CONTENTS_FONT_COLOR;
-                               color2: BOX_FONT_SHADOW_COLOR;
-                               color3: BOX_FONT_OUTLINE_COLOR;
                                text {
                                        font: BOX_CONTENTS_FONT;
                                        text_class: TEXT_CLASS_TIZEN;
                                        size: BOX_CONTENTS_FONT_SIZE;
                                        align: 0.0 0.5;
                                }
+                               visible:0;
+                       }
+                       description {
+                               state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               visible:1;
+                       }
+                       description {
+                               state: "show.effect" 0.0;
+                               inherit: "default" 0.0;
+                               color2: BOX_FONT_SHADOW_COLOR;
+                               color3: BOX_FONT_OUTLINE_COLOR;
+                               visible:1;
+                       }
+               }
+               part {
+                       name: "object.text.contents.multiline";
+                       scale: 1;
+                       type: TEXTBLOCK;
+                       multiline: 1;
+                       description {
+                               state: "default" 0.0;
+                               align: 0.0 0.0;
+                               fixed: 1 1;
+                               rel1 {
+                                       to: "rect.text.contents.multiline";
+                               }
+                               rel2 {
+                                       to: "rect.text.contents.multiline";
+                               }
+                               text {
+                                               style: "notibox_contents";
+                                               align: 0.0 0.0;
+                                               fit: 0 0;
+                               }
+                               visible:0;
+                       }
+                       description {
+                               state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               visible:1;
+                       }
+                       description {
+                               state: "show.effect" 0.0;
+                               inherit: "default" 0.0;
+                               text {
+                                       style: "notibox_contents_effect";
+                               }
+                               visible:1;
                        }
                }
-
                part {
                        name: "object.text.count";
                        scale: 1;
                        type: TEXT;
-                       effect: SOFT_SHADOW;
+                       effect: TEXT_EFFECT;
                        description {
                                state: "default" 0.0;
                                rel1 {to: "rect.text.count";}
                                rel2 {to: "rect.text.count";}
                                color: BOX_INFO_COUNT_FONT_COLOR;
-                               color2: BOX_FONT_SHADOW_COLOR;
-                               color3: BOX_FONT_OUTLINE_COLOR;
                                text {
                                        font: BOX_INFO_COUNT_FONT;
                                        text_class: TEXT_CLASS_TIZEN;
@@ -916,6 +1167,19 @@ group {
                                        text: "3";
 #endif
                                }
+                               visible:0;
+                       }
+                       description {
+                               state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               visible:1;
+                       }
+                       description {
+                               state: "show.effect" 0.0;
+                               inherit: "default" 0.0;
+                               color2: BOX_FONT_SHADOW_COLOR;
+                               color3: BOX_FONT_OUTLINE_COLOR;
+                               visible:1;
                        }
                }
 
@@ -923,14 +1187,12 @@ group {
                        name: "object.text.info.1";
                        scale: 1;
                        type: TEXT;
-                       effect: SOFT_SHADOW;
+                       effect: TEXT_EFFECT;
                        description {
                                state: "default" 0.0;
                                rel1 {to: "rect.text.info.1";}
                                rel2 {to: "rect.text.info.1";}
                                color: BOX_INFO_FONT_COLOR;
-                               color2: BOX_FONT_SHADOW_COLOR;
-                               color3: BOX_FONT_OUTLINE_COLOR;
                                text {
                                        font: BOX_INFO_FONT;
                                        text_class: TEXT_CLASS_TIZEN;
@@ -940,40 +1202,98 @@ group {
                                        text: "some string of text to display";
 #endif
                                }
+                               visible:0;
+                       }
+                       description {
+                               state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               visible:1;
+                       }
+                       description {
+                               state: "show.effect" 0.0;
+                               inherit: "default" 0.0;
+                               color2: BOX_FONT_SHADOW_COLOR;
+                               color3: BOX_FONT_OUTLINE_COLOR;
+                               visible:1;
                        }
                }
                part {
                        name: "object.text.info.1.short";
                        scale: 1;
                        type: TEXT;
-                       effect: SOFT_SHADOW;
+                       effect: TEXT_EFFECT;
                        description {
                                state: "default" 0.0;
                                rel1 {to: "rect.text.info.1.short";}
                                rel2 {to: "rect.text.info.1.short";}
                                color: BOX_INFO_FONT_COLOR;
-                               color2: BOX_FONT_SHADOW_COLOR;
-                               color3: BOX_FONT_OUTLINE_COLOR;
                                text {
                                        font: BOX_INFO_FONT;
                                        text_class: TEXT_CLASS_TIZEN;
                                        size: BOX_INFO_FONT_SIZE;
                                        align: 0.0 0.5;
                                }
+                               visible:0;
+                       }
+                       description {
+                               state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               visible:1;
+                       }
+                       description {
+                               state: "show.effect" 0.0;
+                               inherit: "default" 0.0;
+                               color2: BOX_FONT_SHADOW_COLOR;
+                               color3: BOX_FONT_OUTLINE_COLOR;
+                               visible:1;
+                       }
+               }
+               part {
+                       name: "object.text.info.1.multiline";
+                       scale: 1;
+                       type: TEXTBLOCK;
+                       multiline: 1;
+                       description {
+                               state: "default" 0.0;
+                               align: 0.0 0.0;
+                               fixed: 1 1;
+                               rel1 {
+                                       to: "rect.text.info.1.multiline";
+                               }
+                               rel2 {
+                                       to: "rect.text.info.1.multiline";
+                               }
+                               text {
+                                               style: "notibox_info";
+                                               align: 0.0 0.0;
+                                               fit: 0 0;
+                               }
+                               visible:0;
+                       }
+                       description {
+                               state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               visible:1;
+                       }
+                       description {
+                               state: "show.effect" 0.0;
+                               inherit: "default" 0.0;
+                               text {
+                                       style: "notibox_info_effect";
+                               }
+                               visible:1;
                        }
                }
                part {
                        name: "object.text.info.sub.1";
                        scale: 1;
                        type: TEXT;
-                       effect: SOFT_SHADOW;
+                       effect: TEXT_EFFECT;
                        description {
                                state: "default" 0.0;
                                rel1 {to: "rect.text.info.sub.1";}
                                rel2 {to: "rect.text.info.sub.1";}
                                color: BOX_INFO_SUB_FONT_COLOR;
-                               color2: BOX_FONT_SHADOW_COLOR;
-                               color3: BOX_FONT_OUTLINE_COLOR;
                                text {
                                        font: BOX_INFO_SUB_FONT;
                                        text_class: TEXT_CLASS_TIZEN;
@@ -983,6 +1303,19 @@ group {
                                        text: "some string of text to display";
 #endif
                                }
+                               visible:0;
+                       }
+                       description {
+                               state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               visible:1;
+                       }
+                       description {
+                               state: "show.effect" 0.0;
+                               inherit: "default" 0.0;
+                               color2: BOX_FONT_SHADOW_COLOR;
+                               color3: BOX_FONT_OUTLINE_COLOR;
+                               visible:1;
                        }
                }
 
@@ -990,14 +1323,12 @@ group {
                        name: "object.text.info.2";
                        scale: 1;
                        type: TEXT;
-                       effect: SOFT_SHADOW;
+                       effect: TEXT_EFFECT;
                        description {
                                state: "default" 0.0;
                                rel1 {to: "rect.text.info.2";}
                                rel2 {to: "rect.text.info.2";}
                                color: BOX_INFO_FONT_COLOR;
-                               color2: BOX_FONT_SHADOW_COLOR;
-                               color3: BOX_FONT_OUTLINE_COLOR;
                                text {
                                        font: BOX_INFO_FONT;
                                        text_class: TEXT_CLASS_TIZEN;
@@ -1007,40 +1338,62 @@ group {
                                        text: "some string of text to display";
 #endif
                                }
+                               visible:0;
+                       }
+                       description {
+                               state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               visible:1;
+                       }
+                       description {
+                               state: "show.effect" 0.0;
+                               inherit: "default" 0.0;
+                               color2: BOX_FONT_SHADOW_COLOR;
+                               color3: BOX_FONT_OUTLINE_COLOR;
+                               visible:1;
                        }
                }
                part {
                        name: "object.text.info.2.short";
                        scale: 1;
                        type: TEXT;
-                       effect: SOFT_SHADOW;
+                       effect: TEXT_EFFECT;
                        description {
                                state: "default" 0.0;
                                rel1 {to: "rect.text.info.2.short";}
                                rel2 {to: "rect.text.info.2.short";}
                                color: BOX_INFO_FONT_COLOR;
-                               color2: BOX_FONT_SHADOW_COLOR;
-                               color3: BOX_FONT_OUTLINE_COLOR;
                                text {
                                        font: BOX_INFO_FONT;
                                        text_class: TEXT_CLASS_TIZEN;
                                        size: BOX_INFO_FONT_SIZE;
                                        align: 0.0 0.5;
                                }
+                               visible:0;
+                       }
+                       description {
+                               state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               visible:1;
+                       }
+                       description {
+                               state: "show.effect" 0.0;
+                               inherit: "default" 0.0;
+                               color2: BOX_FONT_SHADOW_COLOR;
+                               color3: BOX_FONT_OUTLINE_COLOR;
+                               visible:1;
                        }
                }
                part {
                        name: "object.text.info.sub.2";
                        scale: 1;
                        type: TEXT;
-                       effect: SOFT_SHADOW;
+                       effect: TEXT_EFFECT;
                        description {
                                state: "default" 0.0;
                                rel1 {to: "rect.text.info.sub.2";}
                                rel2 {to: "rect.text.info.sub.2";}
                                color: BOX_INFO_SUB_FONT_COLOR;
-                               color2: BOX_FONT_SHADOW_COLOR;
-                               color3: BOX_FONT_OUTLINE_COLOR;
                                text {
                                        font: BOX_INFO_SUB_FONT;
                                        text_class: TEXT_CLASS_TIZEN;
@@ -1050,6 +1403,19 @@ group {
                                        text: "some string of text to display";
 #endif
                                }
+                               visible:0;
+                       }
+                       description {
+                               state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               visible:1;
+                       }
+                       description {
+                               state: "show.effect" 0.0;
+                               inherit: "default" 0.0;
+                               color2: BOX_FONT_SHADOW_COLOR;
+                               color3: BOX_FONT_OUTLINE_COLOR;
+                               visible:1;
                        }
                }
                part {
@@ -1159,6 +1525,7 @@ group {
                        source: "box.prog";
                        action: STATE_SET "portrait" 0.0;
                        target: "background";
+                       target: "rect.text.title";
                        after: "box.portrait.custom";
                }
                program{
@@ -1167,6 +1534,7 @@ group {
                        source: "box.prog";
                        action: STATE_SET "landscape" 0.0;
                        target: "background";
+                       target: "rect.text.title";
                        after: "box.landscape.custom";
                }
                program{
@@ -1294,6 +1662,21 @@ group {
                        action: STATE_SET "count5" 0.0;
                        target: "rect.text.count";
                }
+               MAKE_PART_SHOW_PROGRAM("object.icon.background")
+               MAKE_PART_SHOW_PROGRAM("object.icon")
+               MAKE_PART_SHOW_PROGRAM("object.icon.sub")
+               MAKE_PART_SHOW_TEXT_PROGRAM("object.text.title")
+               MAKE_PART_SHOW_TEXT_PROGRAM("object.text.contents")
+               MAKE_PART_SHOW_TEXT_PROGRAM("object.text.contents.short")
+               MAKE_PART_SHOW_TEXT_PROGRAM("object.text.contents.multiline")
+               MAKE_PART_SHOW_TEXT_PROGRAM("object.text.count")
+               MAKE_PART_SHOW_TEXT_PROGRAM("object.text.info.1")
+               MAKE_PART_SHOW_TEXT_PROGRAM("object.text.info.1.short")
+               MAKE_PART_SHOW_TEXT_PROGRAM("object.text.info.1.multiline")
+               MAKE_PART_SHOW_TEXT_PROGRAM("object.text.info.sub.1")
+               MAKE_PART_SHOW_TEXT_PROGRAM("object.text.info.2")
+               MAKE_PART_SHOW_TEXT_PROGRAM("object.text.info.2.short")
+               MAKE_PART_SHOW_TEXT_PROGRAM("object.text.info.sub.2")
        }
 }
 
@@ -1649,7 +2032,9 @@ group {
                        scale: 1;
                        description {
                                state: "default" 0.0;
-                               min: 0 124;
+                               min: 190 189;
+                               max: 190 189;
+                               fixed: 1 1;
                                rel1 {
                                        to_x:"margin.left";
                                        to_y:"margin.top.text";
@@ -1667,6 +2052,16 @@ group {
                                visible:0;
 #endif
                        }
+                       description {
+                               state: "portrait" 0.0;
+                               inherit: "default" 0.0;
+                       }
+                       description {
+                               state: "landscape" 0.0;
+                               inherit: "default" 0.0;
+                               min: 260 189;
+                               max: 260 189;
+                       }
                }
 
 
@@ -2068,6 +2463,12 @@ group {
                                fixed: 0 0;
                                rel1 {to: "background";}
                                rel2 {to: "background";}
+                               visible:0;
+                       }
+                       description {
+                               state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               visible:1;
                        }
                }
                part{
@@ -2142,6 +2543,12 @@ group {
                                fixed: 0 0;
                                rel1 {to: "rect.icon";}
                                rel2 {to: "rect.icon";}
+                               visible:0;
+                       }
+                       description {
+                               state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               visible:1;
                        }
                }
                part{
@@ -2180,6 +2587,12 @@ group {
                                fixed: 0 0;
                                rel1 {to: "rect.icon.sub";}
                                rel2 {to: "rect.icon.sub";}
+                               visible:0;
+                       }
+                       description {
+                               state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               visible:1;
                        }
                }
 
@@ -2193,6 +2606,12 @@ group {
                                fixed: 0 0;
                                rel1 {to: "rect.thumbnail.list.1";}
                                rel2 {to: "rect.thumbnail.list.1";}
+                               visible:0;
+                       }
+                       description {
+                               state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               visible:1;
                        }
                }
                part{
@@ -2204,6 +2623,12 @@ group {
                                fixed: 0 0;
                                rel1 {to: "rect.thumbnail.list.2";}
                                rel2 {to: "rect.thumbnail.list.2";}
+                               visible:0;
+                       }
+                       description {
+                               state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               visible:1;
                        }
                }
                part{
@@ -2215,6 +2640,12 @@ group {
                                fixed: 0 0;
                                rel1 {to: "rect.thumbnail.list.3";}
                                rel2 {to: "rect.thumbnail.list.3";}
+                               visible:0;
+                       }
+                       description {
+                               state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               visible:1;
                        }
                }
                part{
@@ -2226,6 +2657,12 @@ group {
                                fixed: 0 0;
                                rel1 {to: "rect.thumbnail.list.4";}
                                rel2 {to: "rect.thumbnail.list.4";}
+                               visible:0;
+                       }
+                       description {
+                               state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               visible:1;
                        }
                }
                part{
@@ -2254,7 +2691,6 @@ group {
                        name: "object.text.title";
                        scale: 1;
                        type: TEXTBLOCK;
-                       effect: SOFT_SHADOW;
                        multiline: 1;
                        description {
                                state: "default" 0.0;
@@ -2267,8 +2703,20 @@ group {
                                        text: "some string of text to display";
 #endif
                                }
-                               color2: BOX_FONT_SHADOW_COLOR;
-                               color3: BOX_FONT_OUTLINE_COLOR;
+                               visible:0;
+                       }
+                       description {
+                               state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               visible:1;
+                       }
+                       description {
+                               state: "show.effect" 0.0;
+                               inherit: "default" 0.0;
+                               text {
+                                       style: "notibox_title_effect";
+                               }
+                               visible:1;
                        }
                }
 
@@ -2276,14 +2724,12 @@ group {
                        name: "object.text.contents";
                        scale: 1;
                        type: TEXT;
-                       effect: SOFT_SHADOW;
+                       effect: TEXT_EFFECT;
                        description {
                                state: "default" 0.0;
                                rel1 {to: "rect.text.contents";}
                                rel2 {to: "rect.text.contents";}
                                color: BOX_CONTENTS_FONT_COLOR;
-                               color2: BOX_FONT_SHADOW_COLOR;
-                               color3: BOX_FONT_OUTLINE_COLOR;
                                text {
                                        font: BOX_CONTENTS_FONT;
                                        text_class: TEXT_CLASS_TIZEN;
@@ -2293,26 +2739,50 @@ group {
                                        text: "some string of text to display";
 #endif
                                }
+                               visible:0;
+                       }
+                       description {
+                               state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               visible:1;
+                       }
+                       description {
+                               state: "show.effect" 0.0;
+                               inherit: "default" 0.0;
+                               color2: BOX_FONT_SHADOW_COLOR;
+                               color3: BOX_FONT_OUTLINE_COLOR;
+                               visible:1;
                        }
                }
                part {
                        name: "object.text.contents.short";
                        scale: 1;
                        type: TEXT;
-                       effect: SOFT_SHADOW;
+                       effect: TEXT_EFFECT;
                        description {
                                state: "default" 0.0;
                                rel1 {to: "rect.text.contents.short";}
                                rel2 {to: "rect.text.contents.short";}
                                color: BOX_CONTENTS_FONT_COLOR;
-                               color2: BOX_FONT_SHADOW_COLOR;
-                               color3: BOX_FONT_OUTLINE_COLOR;
                                text {
                                        font: BOX_CONTENTS_FONT;
                                        text_class: TEXT_CLASS_TIZEN;
                                        size: BOX_CONTENTS_FONT_SIZE;
                                        align: 0.0 0.5;
                                }
+                               visible:0;
+                       }
+                       description {
+                               state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               visible:1;
+                       }
+                       description {
+                               state: "show.effect" 0.0;
+                               inherit: "default" 0.0;
+                               color2: BOX_FONT_SHADOW_COLOR;
+                               color3: BOX_FONT_OUTLINE_COLOR;
+                               visible:1;
                        }
                }
 
@@ -2320,14 +2790,12 @@ group {
                        name: "object.text.count";
                        scale: 1;
                        type: TEXT;
-                       effect: SOFT_SHADOW;
+                       effect: TEXT_EFFECT;
                        description {
                                state: "default" 0.0;
                                rel1 {to: "rect.text.count";}
                                rel2 {to: "rect.text.count";}
                                color: BOX_INFO_COUNT_FONT_COLOR;
-                               color2: BOX_FONT_SHADOW_COLOR;
-                               color3: BOX_FONT_OUTLINE_COLOR;
                                text {
                                        font: BOX_INFO_COUNT_FONT;
                                        text_class: TEXT_CLASS_TIZEN;
@@ -2337,6 +2805,19 @@ group {
                                        text: "3";
 #endif
                                }
+                               visible:0;
+                       }
+                       description {
+                               state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               visible:1;
+                       }
+                       description {
+                               state: "show.effect" 0.0;
+                               inherit: "default" 0.0;
+                               color2: BOX_FONT_SHADOW_COLOR;
+                               color3: BOX_FONT_OUTLINE_COLOR;
+                               visible:1;
                        }
                }
                part {
@@ -2448,6 +2929,7 @@ group {
                        target: "background";
                        target: "margin.left.thumnail";
                        target: "margin.right.thumnail";
+                       target: "rect.text.title";
                        target: "rect.thumbnail.list.1.padding";
                        target: "rect.thumbnail.list.2.padding";
                        target: "rect.thumbnail.list.3.padding";
@@ -2464,6 +2946,7 @@ group {
                        target: "background";
                        target: "margin.left.thumnail";
                        target: "margin.right.thumnail";
+                       target: "rect.text.title";
                        target: "rect.thumbnail.list.1.padding";
                        target: "rect.thumbnail.list.2.padding";
                        target: "rect.thumbnail.list.3.padding";
@@ -2562,5 +3045,16 @@ group {
                        action: STATE_SET "hide" 0.0;
                        target: "object.icon.sub.bg";
                }
+               MAKE_PART_SHOW_PROGRAM("object.icon.background")
+               MAKE_PART_SHOW_PROGRAM("object.icon")
+               MAKE_PART_SHOW_PROGRAM("object.icon.sub")
+               MAKE_PART_SHOW_TEXT_PROGRAM("object.text.title")
+               MAKE_PART_SHOW_TEXT_PROGRAM("object.text.contents")
+               MAKE_PART_SHOW_TEXT_PROGRAM("object.text.contents.short")
+               MAKE_PART_SHOW_TEXT_PROGRAM("object.text.count")
+               MAKE_PART_SHOW_PROGRAM("object.thumbnail.list.1")
+               MAKE_PART_SHOW_PROGRAM("object.thumbnail.list.2")
+               MAKE_PART_SHOW_PROGRAM("object.thumbnail.list.3")
+               MAKE_PART_SHOW_PROGRAM("object.thumbnail.list.4")
        }
 }
\ No newline at end of file
index ac2b3b2..a1347c2 100755 (executable)
@@ -39,6 +39,7 @@ group {
                                rel1.relative: 0.0 0.0;
                                rel2.relative: 0.0 1.0;
                                align: 0.0 0.0;
+                               visible: 0;
                        }
                }
                part { name: "elm.padding.right";
@@ -52,6 +53,7 @@ group {
                                rel1.relative: 1.0 0.0;
                                rel2.relative: 1.0 0.0;
                                align: 1.0 0.0;
+                               visible: 0;
                        }
                }
                part { name: "elm.padding.top";
@@ -65,6 +67,7 @@ group {
                                rel1.relative: 0.0 0.0;
                                rel2.relative: 1.0 0.0;
                                align: 0.0 0.0;
+                               visible: 0;
                        }
                }
                part { name: "elm.padding.bottom";
@@ -78,6 +81,7 @@ group {
                                rel1.relative: 0.0 1.0;
                                rel2.relative: 1.0 1.0;
                                align: 0.0 1.0;
+                               visible: 0;
                        }
                }
 
@@ -86,7 +90,7 @@ group {
                        scale: 1;
                        description {
                                state: "default" 0.0;
-                               min: 400 0;
+                               min: QP_SPN_TEXT_W 0;
                                fixed: 1 0;
                                rel1 {
                                        to_x: "elm.padding.left";
index 94749fa..7667c4f 100755 (executable)
 collections {
        #include "quickpanel_theme_element.edc"
 
-       styles {
-               style {
-                       name: "checkbox_text";
-                       base: "font=Tizen:style=Regular text_class=tizen font_size=26 color=#FFFFFFFF ellipsis=0.0 wrap=mixed";
-               }
-               style {
-                       name: "button_text";
-                       base: "font=Tizen:style=Regular text_class=tizen align=center font_size=28 color=#FFFFFFFF ellipsis=0.0 wrap=mixed";
+       group { name: "elm/genlist/item/minicontrol/default/default";
+
+               styles {
+                       style {
+                               name: "checkbox_text";
+                               base: "font=Tizen:style=Regular text_class=tizen font_size=26 color=#FFFFFFFF ellipsis=0.0 wrap=mixed";
+                       }
+                       style {
+                               name: "button_text";
+                               base: "font=Tizen:style=Regular text_class=tizen align=center font_size=28 color=#FFFFFFFF ellipsis=0.0 wrap=mixed";
+                       }
+                       style {
+                               name: "ongoing_content_text";
+                               base: "font=Tizen:style=Medium text_class=tizen align=left valign=top font_size=30 linegap=-6 ellipsis=1.0 color=#828384FF wrap=mixed";
+                       }
                }
-       }
 
-       group { name: "elm/genlist/item/qp_item/default/default";
+               alias: "elm/genlist/item_odd/minicontrol/default/default";
 
                data.item: "stacking" "above";
                data.item: "selectraise" "on";
@@ -45,11 +51,11 @@ collections {
                                scale: 1;
                                description {
                                        state: "default" 0.0;
-                                       min: 0 0;
-                                       color: QP_THEME_NOTI_BG_COLOR;
+                                       min: 0 QP_THEME_LIST_ITEM_MINICONTRL_HEIGHT + QP_THEME_LIST_ITEM_MINICONTR_SEPERATOR_HEIGHT;
+                                       color: QP_THEME_BG_COLOR;
+                                       visible: QP_THEME_BG_VISIBILITY;
                                }
                        }
-
                        part { name: "bg_image";
                                clip_to: "disclip";
                                mouse_events: 0;
@@ -63,38 +69,15 @@ collections {
                                        color: QP_THEME_NOTI_BG_COLOR;
                                }
                        }
-                       part { name: "elm.padding.left";
-                               type: RECT;
-                               scale: 1;
-                               description {
-                                       state: "default" 0.0;
-                                       min: 0 0;
-                                       fixed: 1 0;
-                                       visible: 0;
-                                       rel2.relative: 0.0 1.0;
-                                       align: 0.0 0.0;
-                               }
-                       }
-
-                       part { name: "elm.padding.right";
-                               type: RECT;
-                               scale: 1;
-                               description { state: "default" 0.0;
-                                       min: 0 0;
-                                       fixed: 1 0;
-                                       visible: 0;
-                                       rel1.relative: 1.0  0.0;
-                                       align: 1.0 0.0;
-                               }
-                       }
                        part { name: "elm.padding.top";
                                type: RECT;
                                scale: 1;
                                description {
-                               state: "default" 0.0;
-                                       min: 0 0;
+                                       state: "default" 0.0;
+                                       min: 0 20 + QP_THEME_LIST_ITEM_ONGOING_SEPERATOR_HEIGHT;
                                        fixed: 0 1;
                                        visible: 0;
+                                       rel1.relative: 0.0 0.0;
                                        rel2.relative: 1.0 0.0;
                                        align: 0.0 0.0;
                                }
@@ -102,147 +85,46 @@ collections {
                        part { name: "elm.padding.bottom";
                                type: RECT;
                                scale: 1;
-                               description {
-                                       state: "default" 0.0;
-                                       min: 0 0;
+                               description { state: "default" 0.0;
+                                       min: 0 25;
                                        fixed: 0 1;
                                        visible: 0;
                                        rel1.relative: 0.0 1.0;
                                        align: 0.0 1.0;
                                }
                        }
-
-                       part { name: "elm.icon";
-                               clip_to: "disclip";
-                               type: SWALLOW;
-                               mouse_events: 1;
-                               scale: 1;
-                               description {
-                                       state: "default" 0.0;
-                                       align: 0.5 0.5;
-                                       rel1 {
-                                               relative: 1 1;
-                                               to_x: "elm.padding.left";
-                                               to_y: "elm.padding.top";
-                                       }
-                                       rel2 {
-                                               relative: 0 0;
-                                               to_x: "elm.padding.right";
-                                               to_y: "elm.padding.bottom";
-                                       }
-                               }
-                       }
-                       part {
-                               name: "disclip";
-                               type: RECT;
-                               description { state: "default" 0.0;
-                                       rel1.to: "base";
-                                       rel2.to: "base";
-                               }
-                               description { state: "disabled" 0.0;
-                                       inherit: "default" 0.0;
-                                       color: 255 255 255 64;
-                               }
-                       }
-
-               }
-               programs {
-                       program { name: "go_active";
-                               signal: "elm,state,selected";
-                               source: "elm";
-                               action: STATE_SET "selected" 0.0;
-                               target: "bg_image";
-                       }
-                       program { name: "go_passive";
-                               signal: "elm,state,unselected";
-                               source: "elm";
-                               action: STATE_SET "default" 0.0;
-                               target: "bg_image";
-                               transition: LINEAR 0.1;
-                       }
-                       program { name: "go_disabled";
-                               signal: "elm,state,disabled";
-                               source: "elm";
-                               action: STATE_SET "disabled" 0.0;
-                               target: "disclip";
-                       }
-                       program { name: "go_enabled";
-                               signal: "elm,state,enabled";
-                               source: "elm";
-                               action: STATE_SET "default" 0.0;
-                               target: "disclip";
-                       }
-               }
-       }
-
-       group { name: "elm/genlist/item/minicontrol/default/default";
-               alias: "elm/genlist/item_odd/minicontrol/default/default";
-
-               data.item: "stacking" "above";
-               data.item: "selectraise" "on";
-               data.item: "texts" "elm.text";
-               data.item: "contents" "elm.icon";
-               data.item: "treesize" "20";
-
-               parts {
-                       part { name: "base";
-                               type: RECT;
-                               repeat_events: 1;
-                               scale: 1;
-                               description {
-                                       state: "default" 0.0;
-                                       min: 0 QP_THEME_LIST_ITEM_MINICONTRL_HEIGHT + QP_THEME_LIST_ITEM_MINICONTR_SEPERATOR_HEIGHT;
-                                       color: QP_THEME_BG_COLOR;
-                                       visible: QP_THEME_BG_VISIBILITY;
-                               }
-                       }
-
-                       part { name: "bg_image";
-                               clip_to: "disclip";
-                               mouse_events: 0;
-                               description {
-                                       state: "default" 0.0;
-                                       color: QP_THEME_NOTI_BG_COLOR;
-                               }
-                               description {
-                                       state: "selected" 0.0;
-                                       inherit: "default" 0.0;
-                                       color: QP_THEME_NOTI_BG_COLOR;
-                               }
-                       }
-                       part { name: "elm.padding.left";
+                       part { name: "elm.padding.left.bg";
                                type: RECT;
                                scale: 1;
                                description {
                                        state: "default" 0.0;
                                        min: 14 0;
                                        fixed: 1 0;
-                                       rel1.relative: 0.0 1.0;
+                                       rel1.relative: 0.0 0.0;
                                        rel2.relative: 0.0 1.0;
                                        align: 0.0 0.0;
                                        color: QP_THEME_BG_COLOR;
                                        visible: QP_THEME_BG_VISIBILITY;
                                }
                        }
-                       part { name: "elm.padding.right";
+                       part { name: "elm.padding.right.bg";
                                type: RECT;
                                scale: 1;
                                description {
                                        state: "default" 0.0;
                                        min: 14 0;
                                        fixed: 1 0;
-                                       rel1.relative: 1.0 1.0;
+                                       rel1.relative: 1.0 0.0;
                                        rel2.relative: 1.0 1.0;
                                        align: 1.0 0.0;
                                        color: QP_THEME_BG_COLOR;
                                        visible: QP_THEME_BG_VISIBILITY;
                                }
                        }
-                       part { name: "elm.padding.top";
+                       part { name: "elm.padding.top.bg";
                                type: RECT;
                                scale: 1;
-                               description {
-                               state: "default" 0.0;
+                               description { state: "default" 0.0;
                                        min: 0 QP_THEME_LIST_ITEM_MINICONTR_SEPERATOR_HEIGHT;
                                        fixed: 0 1;
                                        rel1.relative: 0.0 0.0;
@@ -252,21 +134,52 @@ collections {
                                        visible: QP_THEME_BG_VISIBILITY;
                                }
                        }
-                       part { name: "elm.padding.bottom";
+                       part { name: "elm.content.bg";
                                type: RECT;
                                scale: 1;
                                description {
                                        state: "default" 0.0;
-                                       min: 0 0;
-                                       fixed: 0 1;
-                                       rel1.relative: 0.0 1.0;
+                                       rel1 {
+                                               to_x:"elm.padding.left.bg";
+                                               to_y:"elm.padding.top.bg";
+                                               relative: 1.0 1.0;
+                                       }
+                                       rel2 {
+                                               to_x:"elm.padding.right.bg";
+                                               to_y:"base";
+                                               relative: 0.0 1.0;
+                                       }
+                                       align: 0.0 0.0;
+                                       visible: 1;
+                                       color: QP_THEME_NOTI_BG_COLOR;
+                               }
+                       }
+                       part { name: "elm.padding.left";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 28 0;
+                                       fixed: 1 0;
+                                       rel1.relative: 0.0 0.0;
                                        rel2.relative: 0.0 1.0;
-                                       align: 0.0 1.0;
-                                       color: QP_THEME_BG_COLOR;
-                                       visible: QP_THEME_BG_VISIBILITY;
+                                       align: 0.0 0.0;
+                                       visible: 0;
+                               }
+                       }
+                       part { name: "elm.padding.right";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 18 0;
+                                       fixed: 1 0;
+                                       rel1.relative: 1.0 0.0;
+                                       rel2.relative: 1.0 1.0;
+                                       align: 1.0 0.0;
+                                       visible: 0;
                                }
                        }
-
                        part { name: "elm.icon";
                                clip_to: "disclip";
                                type: SWALLOW;
@@ -276,14 +189,10 @@ collections {
                                        state: "default" 0.0;
                                        align: 0.0 0.0;
                                        rel1 {
-                                               relative: 1.0 1.0;
-                                               to_x: "elm.padding.left";
-                                               to_y: "elm.padding.top";
+                                               to: "elm.content.bg";
                                        }
                                        rel2 {
-                                               relative: 0.0 0.0;
-                                               to_x: "elm.padding.right";
-                                               to_y: "elm.padding.bottom";
+                                               to: "elm.content.bg";
                                        }
                                }
                        }
@@ -882,7 +791,7 @@ collections {
                                scale: 1;
                                description {
                                        state: "default" 0.0;
-                                       min: 400 0;
+                                       min: 500 0;
                                        fixed: 1 0;
                                        rel1 {
                                                to_x: "elm.padding.left";
@@ -913,6 +822,7 @@ collections {
                                                text_class: "tizen";
                                                size: QP_THEME_LIST_TITLE_FONT_SIZE;
                                                align: 0.0 0.5;
+                                               ellipsis: 0.0;
                                        }
                                }
                        }
@@ -959,9 +869,9 @@ collections {
 
                data.item: "stacking" "above";
                data.item: "selectraise" "on";
-               data.item: "texts" "elm.text.title elm.text.content elm.text.badge elm.text.time";
+               data.item: "texts" "elm.text.title elm.text.content elm.text.content.multiline elm.text.time";
                data.item: "contents" "elm.swallow.icon elm.swallow.thumbnail elm.swallow.progress";
-               data.item: "states" "elm.text.content elm.text.time";
+               data.item: "states" "elm.text.content elm.text.content.multiline elm.text.time";
 
                images {
                        image: "quick_icon_bg_02.png" COMP;
@@ -969,6 +879,7 @@ collections {
 
                script {
                        public ctnt_shown;
+                       public ctnt_multiline_shown;
                        public time_shown;
                }
 
@@ -1020,6 +931,17 @@ collections {
                                        align: 0.0 1.0;
                                }
                        }
+                       part { name: "elm.padding.bottom.text";
+                               type: RECT;
+                               scale: 1;
+                               description { state: "default" 0.0;
+                                       min: 0 0;
+                                       fixed: 0 1;
+                                       visible: 0;
+                                       rel1.relative: 0.0 1.0;
+                                       align: 0.0 1.0;
+                               }
+                       }
                        part { name: "elm.padding.bottom.progress";
                                type: RECT;
                                scale: 1;
@@ -1131,7 +1053,6 @@ collections {
                                        visible: 0;
                                }
                        }
-
                        part { name: "elm.rect.thumbnail";
                                clip_to: "disclip";
                                type: RECT;
@@ -1334,19 +1255,76 @@ collections {
                                                font: "Tizen:style=Medium";
                                                text_class: "tizen";
                                                size: 30;
-                                               min: 1 0;
-                                               align: 0.0 0.0;
+                                               fit: 0 1;
+                                               ellipsis: 0.0;
+                                               size_range: 26 30;
+                                               align: 0.0 0.5;
                                        }
+                                       visible: 0;
                                }
                                description { state: "show" 0.0;
                                        inherit: "default" 0.0;
+                                       visible: 1;
                                }
                                description { state: "selected" 0.0;
                                        inherit: "default" 0.0;
                                        color: 130 131 132 255;
+                                       visible: 1;
+                               }
+                       }
+                       part { name: "elm.rect.content.multiline";
+                               clip_to: "disclip";
+                               type: RECT;
+                               mouse_events: 0;
+                               scale: 1;
+                               description { state: "default" 0.0;
+                                       align: 0.0 0.0;
+                                       min: 0 0;
+                                       fixed: 1 1;
+                                       rel1 {
+                                               relative: 1.0 1.0;
+                                               to_x: "elm.padding.left";
+                                               to_y: "elm.text.title";
+                                       }
+                                       rel2 {
+                                               relative: 0.0 0.0;
+                                               to_x: "elm.padding.after.icon.right";
+                                               to_y: "elm.padding.bottom.text";
+                                       }
+                                       visible: 0;
+                               }
+                       }
+                       part { name: "elm.text.content.multiline";
+                               clip_to: "disclip";
+                               type: TEXTBLOCK;
+                               mouse_events: 0;
+                               scale: 1;
+                               description { state: "default" 0.0;
+                                       align: 0.0 0.0;
+                                       fixed: 1 1;
+                                       rel1 {
+                                               to: "elm.rect.content.multiline";
+                                       }
+                                       rel2 {
+                                               to: "elm.rect.content.multiline";
+                                       }
+                                       text {
+                                                       style: "ongoing_content_text";
+                                                       align: 0.0 0.0;
+                                                       fit: 0 0;
+                                       }
+                                       visible:0;
+                               }
+                               description { state: "show" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible:1;
+                               }
+                               description { state: "selected" 0.0;
+                                       inherit: "default" 0.0;
+                                       color: 130 131 132 255;
+                                       visible: 1;
                                }
                        }
-
                        part { name: "elm.swallow.progress";
                                clip_to: "disclip";
                                type: SWALLOW;
@@ -1391,6 +1369,14 @@ collections {
                                        set_int(ctnt_shown, 1);
                                }
                        }
+                       program { name: "show_content_multiline";
+                               signal: "elm,state,elm.text.content.multiline,active";
+                               source: "elm";
+                               script {
+                                       set_state(PART:"elm.text.content.multiline", "show", 0.0);
+                                       set_int(ctnt_multiline_shown, 1);
+                               }
+                       }
                        program { name: "go_active";
                                signal: "elm,state,selected";
                                source: "elm";
@@ -1399,7 +1385,9 @@ collections {
                                        set_state(PART:"elm.text.title", "selected", 0.0);
                                        set_state(PART:"elm.text.time", "selected", 0.0);
                                        if (get_int(ctnt_shown) == 1)
-                                       set_state(PART:"elm.text.content", "selected", 0.0);
+                                               set_state(PART:"elm.text.content", "selected", 0.0);
+                                       if (get_int(ctnt_multiline_shown) == 1)
+                                               set_state(PART:"elm.text.content.multiline", "selected", 0.0);
                                }
                        }
                        program { name: "go_passive";
@@ -1410,7 +1398,9 @@ collections {
                                        set_state(PART:"elm.text.title", "default", 0.0);
                                        set_state(PART:"elm.text.time", "show", 0.0);
                                        if (get_int(ctnt_shown) == 1)
-                                       set_state(PART:"elm.text.content", "show", 0.0);
+                                               set_state(PART:"elm.text.content", "show", 0.0);
+                                       if (get_int(ctnt_multiline_shown) == 1)
+                                               set_state(PART:"elm.text.content.multiline", "show", 0.0);
                                }
                        }
                        program { name: "go_disabled";
@@ -1657,8 +1647,9 @@ collections {
                                        }
                                text {
                                                style: "button_text";
+                                               size: 28;
                                                align: 0.5 0.5;
-                                               fit: 0 1;
+                                               fit: 1 1;
                                                size_range: 22 28;
                                }
                        }
index f4619a8..8f85a9b 100755 (executable)
@@ -1452,3 +1452,477 @@ CHECK_STYLE_DEFAULT("quickpanel", 48, 48)
          }
       }
    }
+
+#define BUTTON_STATE_ENABLED 0
+#define BUTTON_STATE_DISABLED 1
+
+#define BUTTON_TEXT_STYLE1_NORMAL_COLOR_INC 58 58 58 255
+#define BUTTON_TEXT_STYLE1_PRESSED_COLOR_INC 248 246 239 255
+#define BUTTON_TEXT_STYLE1_FOCUSED_COLOR_INC 248 246 239 255
+#define BUTTON_TEXT_STYLE1_DISABLED_COLOR_INC 58 58 58 76
+#define BUTTON_TEXT_STYLE1_BG_MIN_INC 100 74
+#define BUTTON_TEXT_STYLE1_VISIBLE_BG_MIN_INC 148 74
+#define BUTTON_TEXT_STYLE1_ICONONLY_BG_MIN_INC 74 74
+#define BUTTON_TEXT_STYLE1_BG_BORDER_INC 13 13 13 13
+#define BUTTON_TEXT_STYLE1_PADDING_MIN_INC 0 0
+#define BUTTON_TEXT_STYLE1_VISIBLE_ICON_RECT_MIN_MAX_INC 45 45
+#define BUTTON_TEXT_STYLE1_VISIBLE_PADDING_ICON_TEXT_MIN_INC 4 0
+#define BUTTON_TEXT_STYLE1_VISIBLE_ICON_MIN_MAX_INC 87 87
+#define BUTTON_TEXT_STYLE1_ICONONLY_ICON_MIN_MAX_INC 87 87
+#define BUTTON_TEXT_STYLE1_FONT_SIZE_INC 36
+#define BUTTON_TEXT_SHADOW_NORMAL_COLOR_INC 255 255 255 255
+#define BUTTON_TEXT_SHADOW_DIM_COLOR_INC 255 255 255 255
+#define BUTTON_TEXT_SHADOW_PRESSED_COLOR_INC 0 0 0 255
+#define BUTTON_DISCLIP_NORMAL_COLOR_INC           255 255 255 255
+#define BUTTON_DISCLIP_DISABLED_COLOR_INC         255 255 255 76
+
+///////////////////////////////////////////////////////////////////////////////////////
+   group { name: "elm/button/base/quickpanel/icon_only";
+
+      images {
+         image: "00_button_01.png" COMP;
+         image: "00_button_01_press.png" COMP;
+         image: "00_button_01_dim.png" COMP;
+      }
+      script {
+         public button_state = BUTTON_STATE_ENABLED;
+      }
+      parts {
+         part { name: "button_image";
+            scale: 1;
+            description { state: "default" 0.0;
+               image {
+                  border: BUTTON_TEXT_STYLE1_BG_BORDER_INC;
+               }
+            }
+            description { state: "clicked" 0.0;
+               inherit: "default" 0.0;
+               //image.normal: "00_button_01_press.png";
+            }
+            description { state: "disabled" 0.0;
+               inherit: "default" 0.0;
+               //image.normal: "00_button_01_dim.png";
+            }
+            description { state: "focused" 0.0;
+               inherit: "default" 0.0;
+               //image.normal: "00_button_01_press.png";
+            }
+         }
+         part { name: "padding_left_top";
+            type: RECT;
+            scale: 1;
+            mouse_events: 0;
+            description { state: "default" 0.0;
+               align: 0.0 0.0;
+               rel2.relative: 0.0 0.0;
+               min: BUTTON_TEXT_STYLE1_PADDING_MIN_INC;
+               fixed: 1 1;
+               visible: 0;
+            }
+         }
+         part { name: "bg";
+            type: RECT;
+            scale: 1;
+            mouse_events: 0;
+            description { state: "default" 0.0;
+               min: BUTTON_TEXT_STYLE1_BG_MIN_INC;
+               visible: 0;
+            }
+            description { state: "visible" 0.0;
+               inherit: "default" 0.0;
+               min: BUTTON_TEXT_STYLE1_VISIBLE_BG_MIN_INC;
+            }
+            description { state: "icononly" 0.0;
+               inherit: "default" 0.0;
+               min: BUTTON_TEXT_STYLE1_ICONONLY_BG_MIN_INC;
+            }
+         }
+         part { name: "padding_right_bottom";
+            type: RECT;
+            scale: 1;
+            mouse_events: 0;
+            description { state: "default" 0.0;
+               align: 1.0 1.0;
+               rel1.relative: 1.0 1.0;
+               min: BUTTON_TEXT_STYLE1_PADDING_MIN_INC;
+               fixed: 1 1;
+               visible: 0;
+            }
+         }
+         part { name: "icon_rect";
+            type: RECT;
+            scale: 1;
+            mouse_events: 0;
+            description { state: "default" 0.0;
+               visible: 0;
+               min: 0 0;
+               fixed: 1 0;
+               rel1 {
+                  relative: 1.0 1.0;
+                  to: "padding_left_top";
+               }
+               rel2 {
+                  relative: 1.0 0.0;
+                  to_x: "padding_left_top";
+                  to_y: "padding_right_bottom";
+               }
+               align: 0.0 0.5;
+            }
+            description { state: "visible" 0.0;
+               inherit: "default" 0.0;
+               min: BUTTON_TEXT_STYLE1_VISIBLE_ICON_RECT_MIN_MAX_INC;
+               max: BUTTON_TEXT_STYLE1_VISIBLE_ICON_RECT_MIN_MAX_INC;
+            }
+            description { state: "icononly" 0.0;
+               inherit: "default" 0.0;
+            }
+         }
+         part { name: "padding_after_icon";
+            type: RECT;
+            scale: 1;
+            mouse_events: 0;
+            description { state: "default" 0.0; //when only icon or no icon is there
+               align: 0.0 0.0;
+               rel1 {
+                  relative: 1.0 0.0;
+                  to: "icon_rect";
+               }
+               rel2.to: "icon_rect";
+               fixed: 1 0;
+               min: 0 0;
+               visible: 0;
+            }
+            description { state: "visible" 0.0;
+               inherit: "default" 0.0;
+               min: BUTTON_TEXT_STYLE1_VISIBLE_PADDING_ICON_TEXT_MIN_INC;
+            }
+            description { state: "icononly" 0.0;
+               inherit: "default" 0.0;
+            }
+         }
+         part { name: "padding_before_text";
+            type: RECT;
+            scale: 1;
+            mouse_events: 0;
+            description { state: "default" 0.0; //when only icon or no icon is there
+               align: 1.0 0.5;
+               rel1 {
+                  relative: 0.0 1.0;
+                  to_x: "elm.text";
+                  to_y: "padding_left_top";
+               }
+               rel2 {
+                  relative: 0.0 0.0;
+                  to_x: "elm.text";
+                  to_y: "padding_right_bottom";
+               }
+               fixed: 1 0;
+               min: BUTTON_TEXT_STYLE1_VISIBLE_PADDING_ICON_TEXT_MIN_INC;
+               visible: 0;
+            }
+         }
+         part { name: "elm.swallow.content";
+            type: SWALLOW;
+            scale: 1;
+            clip_to: "clipper";
+            description { state: "default" 0.0;
+               visible: 0;
+               align: 0.0 0.5;
+               rel1 {
+                  relative: 1.0 1.0;
+                  to: "padding_left_top";
+               }
+               rel2 {
+                  relative: 1.0 0.0;
+                  to_x: "padding_left_top";
+                  to_y: "padding_right_bottom";
+               }
+               fixed: 1 0;
+            }
+            description { state: "visible" 0.0;
+               fixed: 1 0;
+               min: BUTTON_TEXT_STYLE1_VISIBLE_ICON_MIN_MAX_INC;
+               max: BUTTON_TEXT_STYLE1_VISIBLE_ICON_MIN_MAX_INC;
+               align: 1.0 0.5;
+               rel1 {
+                  relative: 0.0 1.0;
+                  to_x: "padding_before_text";
+                  to_y: "padding_left_top";
+               }
+               rel2 {
+                  relative: 0.0 0.0;
+                  to_x: "padding_before_text";
+                  to_y: "padding_right_bottom";
+               }
+            }
+            description { state: "icononly" 0.0;
+               min: BUTTON_TEXT_STYLE1_ICONONLY_ICON_MIN_MAX_INC;
+               max: BUTTON_TEXT_STYLE1_ICONONLY_ICON_MIN_MAX_INC;
+            }
+         }
+         part { name: "elm.text";
+            type: TEXT;
+            mouse_events: 0;
+            effect: SHADOW BOTTOM;
+            scale: 1;
+            clip_to: "clipper";
+            description { state: "default" 0.0;
+               visible: 0;
+               rel1 {
+                  relative: 1.0 1.0;
+                  to_x: "padding_after_icon";
+                  to_y: "padding_left_top";
+               }
+               rel2 {
+                  relative: 0.0 0.0;
+                  to: "padding_right_bottom";
+               }
+               color: BUTTON_TEXT_STYLE1_NORMAL_COLOR_INC;
+               color2: BUTTON_TEXT_SHADOW_NORMAL_COLOR_INC;
+               text {
+                  font: "Tizen:style=Regular";
+                  size: BUTTON_TEXT_STYLE1_FONT_SIZE_INC;
+                  min: 0 0;
+                  max: 1 0;
+                  text_class: "tizen";
+               }
+            }
+            description { state: "visible" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+            }
+            description { state: "clicked" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+               color: BUTTON_TEXT_STYLE1_PRESSED_COLOR_INC;
+               color2: BUTTON_TEXT_SHADOW_PRESSED_COLOR_INC;
+            }
+            description { state: "disabled" 0.0;
+               inherit: "default" 0.0;
+            }
+            description { state: "disabled_visible" 0.0;
+               inherit: "default" 0.0;
+               color: BUTTON_TEXT_STYLE1_DISABLED_COLOR_INC;
+               color2: BUTTON_TEXT_SHADOW_DIM_COLOR_INC;
+               visible: 1;
+            }
+            description { state: "focused" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+               color: BUTTON_TEXT_STYLE1_FOCUSED_COLOR_INC;
+            }
+         }
+         part { name: "over2";
+            type: RECT;
+            repeat_events: 1;
+            ignore_flags: ON_HOLD;
+            description { state: "default" 0.0;
+               color: 0 0 0 0;
+            }
+         }
+         part { name: "over3";
+            type: RECT;
+            repeat_events: 1;
+            description { state: "default" 0.0;
+               color: 0 0 0 0;
+            }
+         }
+         part { name: "clipper";
+            type: RECT;
+            description { state: "default" 0.0;
+               color: BUTTON_DISCLIP_NORMAL_COLOR_INC;
+            }
+            description { state: "disabled" 0.0;
+               inherit: "default" 0.0;
+               color: BUTTON_DISCLIP_DISABLED_COLOR_INC;
+            }
+         }
+         part { name: "disabler";
+            type: RECT;
+            description { state: "default" 0.0;
+               color: 0 0 0 0;
+               visible: 0;
+            }
+            description { state: "disabled" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+            }
+         }
+      }
+      programs {
+         program { name: "button_click";
+            signal: "mouse,down,1";
+            source: "over2";
+            action: SIGNAL_EMIT "elm,action,press" "";
+            after: "button_click_anim";
+         }
+         program { name: "button_click_anim";
+            action: STATE_SET "clicked" 0.0;
+            target: "button_image";
+            after: "text_clicked";
+         }
+         program { name: "text_clicked";
+            script {
+               new st[31];
+               new Float:vl;
+               get_state(PART:"elm.text", st, 30, vl);
+               if (!strcmp(st, "visible"))
+                 set_state(PART:"elm.text", "clicked", 0.0);
+            }
+         }
+         program { name: "button_unpress";
+            action: SIGNAL_EMIT "elm,action,unpress" "";
+         }
+         program { name: "button_mouseout_clicked";
+            signal: "mouse,up,1";
+            source: "over3";
+            script {
+               new st[31];
+               new Float:vl;
+               get_state(PART:"elm.swallow.content", st, 30, vl);
+               if (strcmp(st, "icononly"))
+                 {
+                    emit("elm,action,default,text,set", "");
+                    set_state(PART:"elm.text", "visible", 0.0);
+                 }
+               if (get_int(button_state) != BUTTON_STATE_DISABLED)
+                 set_state(PART:"button_image", "default", 0.0);
+            }
+            after: button_unpress;
+         }
+         program { name: "button_unclick3";
+            signal: "mouse,clicked,1";
+            source: "over2";
+            action: SIGNAL_EMIT "elm,action,click" "";
+         }
+         program { name: "text_show";
+            signal: "elm,state,text,visible";
+            source: "elm";
+            script {
+               new st[31];
+               new Float:vl;
+               get_state(PART:"elm.swallow.content", st, 30, vl);
+               if (!strcmp(st, "icononly"))
+                 {
+                    set_state(PART:"elm.swallow.content", "visible", 0.0);
+                    set_state(PART:"icon_rect", "visible", 0.0);
+                    set_state(PART:"padding_after_icon", "visible", 0.0);
+                    set_state(PART:"bg", "visible", 0.0);
+                 }
+               if (get_int(button_state) != BUTTON_STATE_DISABLED)
+                 set_state(PART:"elm.text", "visible", 0.0);
+               else
+                 set_state(PART:"elm.text", "disabled_visible", 0.0);
+            }
+         }
+         program { name: "text_hide";
+            signal: "elm,state,text,hidden";
+            source: "elm";
+            script {
+               new st[31];
+               new Float:vl;
+               get_state(PART:"elm.swallow.content", st, 30, vl);
+               if (!strcmp(st, "visible"))
+                 {
+                    set_state(PART:"elm.swallow.content", "icononly", 0.0);
+                    set_state(PART:"icon_rect", "icononly", 0.0);
+                    set_state(PART:"padding_after_icon", "icononly", 0.0);
+                    set_state(PART:"bg", "icononly", 0.0);
+                 }
+               set_state(PART:"elm.text", "default", 0.0);
+            }
+         }
+         program { name: "icon_show";
+            signal: "elm,state,icon,visible";
+            source: "elm";
+            script {
+               new st[31];
+               new Float:vl;
+               get_state(PART:"elm.text", st, 30, vl);
+               if (!strcmp(st, "visible"))
+                 {
+                    set_state(PART:"elm.swallow.content", "visible", 0.0);
+                    set_state(PART:"icon_rect", "visible", 0.0);
+                    set_state(PART:"padding_after_icon", "visible", 0.0);
+                    set_state(PART:"bg", "visible", 0.0);
+                 }
+               else
+                 {
+                    set_state(PART:"elm.swallow.content", "icononly", 0.0);
+                    set_state(PART:"icon_rect", "icononly", 0.0);
+                    set_state(PART:"padding_after_icon", "icononly", 0.0);
+                    set_state(PART:"bg", "icononly", 0.0);
+                 }
+            }
+         }
+         program { name: "icon_hide";
+            signal: "elm,state,icon,hidden";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "elm.swallow.content";
+            target: "padding_after_icon";
+            target: "icon_rect";
+            target: "bg";
+         }
+         program { name: "disable";
+            signal: "elm,state,disabled";
+            source: "elm";
+            action: STATE_SET "disabled" 0.0;
+            target: "button_image";
+            target: "disabler";
+            target: "clipper";
+            after: "disable_text";
+         }
+         program { name: "disable_text";
+            script {
+               new st[31];
+               new Float:vl;
+               get_state(PART:"elm.text", st, 30, vl);
+               if (!strcmp(st, "visible"))
+                 set_state(PART:"elm.text", "disabled_visible", 0.0);
+               else
+                 set_state(PART:"elm.text", "disabled", 0.0);
+               set_int(button_state, BUTTON_STATE_DISABLED);
+            }
+         }
+         program { name: "enable";
+            signal: "elm,state,enabled";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "button_image";
+            target: "clipper";
+            target: "disabler";
+            after: "enable_text";
+         }
+         program { name: "enable_text";
+            script {
+               new st[31];
+               new Float:vl;
+               get_state(PART:"elm.text", st, 30, vl);
+               if (!strcmp(st, "disabled_visible"))
+                 set_state(PART:"elm.text", "visible", 0.0);
+               else
+                 set_state(PART:"elm.text", "default", 0.0);
+               set_int(button_state, BUTTON_STATE_ENABLED);
+            }
+         }
+         program { name: "focused";
+            //signal: "elm,action,focus";
+            //source: "elm";
+            action: STATE_SET "focused" 0.0;
+            target: "button_image";
+            target: "elm.text";
+         }
+         program { name: "unfocused";
+            //signal: "elm,action,unfocus";
+            //source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "button_image";
+            after: "unfocus_text";
+         }
+         program { name: "unfocus_text";
+            action: STATE_SET "visible" 0.0;
+            target: "elm.text";
+         }
+      }
+   }
\ No newline at end of file
index 3abe39e..b715cba 100755 (executable)
@@ -16,6 +16,8 @@
         <filesystem path="/etc/init.d/quickpanel" label="_" exec_label="none"/>
         <filesystem path="/etc/rc.d/rc3.d/S51quickpanel" label="_" exec_label="none"/>
         <filesystem path="/etc/rc.d/rc5.d/S51quickpanel" label="_" exec_label="none"/>
+       <filesystem path="/usr/lib/systemd/user/quickpanel.service" label="_" exec_label="none" />
+       <filesystem path="/usr/lib/systemd/user/core-efl.target.wants/quickpanel.service" label="_" exec_label="none" />
     </assign>
     <request>
         <domain name="org.tizen.quickpanel"/>
index 007f705..445f01b 100755 (executable)
@@ -4,8 +4,8 @@
 
 Name:       org.tizen.quickpanel
 Summary:    Quick Panel
-Version:    0.3.8
-Release:    1
+Version:    0.3.22
+Release:    2
 Group:      util
 License:    Flora Software License
 Source0:    %{name}-%{version}.tar.gz
@@ -80,7 +80,7 @@ vconftool set -t bool memory/private/%{name}/disable_ask 1 -i -u 5000
 vconftool set -t bool memory/private/%{name}/hotspot/enable_ask 1 -i -u 5000
 
 %files
-%manifest org.tizen.quickpanel.manifest
+%manifest %{name}.manifest
 %defattr(-,root,root,-)
 %attr(755,-,-) %{_sysconfdir}/init.d/quickpanel
 %attr(775,app,app) %{DATADIR}
index 5dc7424..ef2776e 100644 (file)
@@ -3,7 +3,6 @@
 Description=Start the Quickpanel
 Before=core-efl.target
 After=xorg.target starter.service e17.service
-Requires=starter.service
 
 [Service]
 ExecStart=/usr/apps/org.tizen.quickpanel/bin/quickpanel