diff options
author | Jinkun Jang <jinkun.jang@samsung.com> | 2013-03-16 01:04:46 +0900 |
---|---|---|
committer | Jinkun Jang <jinkun.jang@samsung.com> | 2013-03-16 01:04:46 +0900 |
commit | 6a9e36faaabdcf45e2d76c01e5423819d6734f29 (patch) | |
tree | 7aa43299d66f38410b53a36b1a475ffd87743495 | |
parent | 7c83e9661e76a4297913256f65d84709c9c3e26e (diff) | |
download | quickpanel-6a9e36faaabdcf45e2d76c01e5423819d6734f29.tar.gz quickpanel-6a9e36faaabdcf45e2d76c01e5423819d6734f29.tar.bz2 quickpanel-6a9e36faaabdcf45e2d76c01e5423819d6734f29.zip |
merge with master
-rwxr-xr-x | daemon/idletxt/idletxt.c | 94 | ||||
-rwxr-xr-x | daemon/minictrl/minictrl.c | 88 | ||||
-rwxr-xr-x | daemon/notifications/brightness.c | 4 | ||||
-rwxr-xr-x | daemon/notifications/noti.c | 379 | ||||
-rwxr-xr-x | daemon/notifications/noti.h | 2 | ||||
-rwxr-xr-x | daemon/notifications/noti_box.c | 150 | ||||
-rwxr-xr-x | daemon/notifications/noti_display_app.c | 422 | ||||
-rwxr-xr-x | daemon/notifications/noti_display_app.h | 28 | ||||
-rwxr-xr-x | daemon/notifications/noti_win.c | 1 | ||||
-rwxr-xr-x | daemon/notifications/ticker.c | 326 | ||||
-rwxr-xr-x | daemon/quickpanel-ui.c | 331 | ||||
-rwxr-xr-x | daemon/quickpanel-ui.h | 5 | ||||
-rwxr-xr-x | data/quickpanel.xml.in | 2 | ||||
-rwxr-xr-x | data/quickpanel_def.h | 1 | ||||
-rwxr-xr-x | data/quickpanel_notibox.edc | 602 | ||||
-rwxr-xr-x | data/quickpanel_spn.edc | 6 | ||||
-rwxr-xr-x | data/quickpanel_theme.edc | 335 | ||||
-rwxr-xr-x | data/quickpanel_theme_element.edc | 474 | ||||
-rwxr-xr-x | org.tizen.quickpanel.manifest | 2 | ||||
-rwxr-xr-x | packaging/org.tizen.quickpanel.spec | 6 | ||||
-rw-r--r-- | packaging/quickpanel.service | 1 |
21 files changed, 1956 insertions, 1303 deletions
diff --git a/daemon/idletxt/idletxt.c b/daemon/idletxt/idletxt.c index 0b4c72e..4026fd3 100755 --- a/daemon/idletxt/idletxt.c +++ b/daemon/idletxt/idletxt.c @@ -18,7 +18,10 @@ #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; } diff --git a/daemon/minictrl/minictrl.c b/daemon/minictrl/minictrl.c index e7c7e74..3a009de 100755 --- a/daemon/minictrl/minictrl.c +++ b/daemon/minictrl/minictrl.c @@ -33,13 +33,15 @@ 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; +} diff --git a/daemon/notifications/brightness.c b/daemon/notifications/brightness.c index 1a98da7..852152d 100755 --- a/daemon/notifications/brightness.c +++ b/daemon/notifications/brightness.c @@ -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); diff --git a/daemon/notifications/noti.c b/daemon/notifications/noti.c index ecec5c3..3f93794 100755 --- a/daemon/notifications/noti.c +++ b/daemon/notifications/noti.c @@ -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" @@ -52,12 +50,7 @@ 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, ¬i_pkgname); - notification_get_id(noti, NULL, ¬i_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, ¬i_pkgname); - notification_get_id(noti, NULL, ¬i_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, ¬i_pkgname); - notification_get_id(noti, NULL, ¬i_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, ¬i_pkgname); - notification_get_id(noti, NULL, ¬i_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, ¬i_pkgname); - notification_get_id(noti, NULL, ¬i_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, ¬i_pkgname); - notification_get_id(noti, NULL, ¬i_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); diff --git a/daemon/notifications/noti.h b/daemon/notifications/noti.h index 9a31a1f..a695f22 100755 --- a/daemon/notifications/noti.h +++ b/daemon/notifications/noti.h @@ -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 diff --git a/daemon/notifications/noti_box.c b/daemon/notifications/noti_box.c index fae1be9..508bded 100755 --- a/daemon/notifications/noti_box.c +++ b/daemon/notifications/noti_box.c @@ -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 index 3c3d5bd..0000000 --- a/daemon/notifications/noti_display_app.c +++ /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(¬i_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(¬i_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(¤t, &time_st); - strftime(buf, sizeof(buf), "%I:%M %p", &time_st); - eina_stringshare_replace(¬i_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(¬i_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 index 652ee43..0000000 --- a/daemon/notifications/noti_display_app.h +++ /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 diff --git a/daemon/notifications/noti_win.c b/daemon/notifications/noti_win.c index fa8330f..65210c5 100755 --- a/daemon/notifications/noti_win.c +++ b/daemon/notifications/noti_win.c @@ -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); diff --git a/daemon/notifications/ticker.c b/daemon/notifications/ticker.c index 60952df..46b7531 100755 --- a/daemon/notifications/ticker.c +++ b/daemon/notifications/ticker.c @@ -26,6 +26,7 @@ #include "quickpanel-ui.h" #include "common.h" +#include "noti.h" #include "noti_win.h" #define QP_TICKER_DURATION 5 @@ -34,6 +35,11 @@ #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); } } diff --git a/daemon/quickpanel-ui.c b/daemon/quickpanel-ui.c index 4deb6d5..5016e32 100755 --- a/daemon/quickpanel-ui.c +++ b/daemon/quickpanel-ui.c @@ -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> @@ -30,11 +28,11 @@ #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"); diff --git a/daemon/quickpanel-ui.h b/daemon/quickpanel-ui.h index e3ec9cf..9388ef3 100755 --- a/daemon/quickpanel-ui.h +++ b/daemon/quickpanel-ui.h @@ -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__ */ diff --git a/data/quickpanel.xml.in b/data/quickpanel.xml.in index 341733c..c93ef89 100755 --- a/data/quickpanel.xml.in +++ b/data/quickpanel.xml.in @@ -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> diff --git a/data/quickpanel_def.h b/data/quickpanel_def.h index aa31f93..81a97f9 100755 --- a/data/quickpanel_def.h +++ b/data/quickpanel_def.h @@ -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 diff --git a/data/quickpanel_notibox.edc b/data/quickpanel_notibox.edc index 4f5ce68..7044893 100755 --- a/data/quickpanel_notibox.edc +++ b/data/quickpanel_notibox.edc @@ -13,6 +13,31 @@ //#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 diff --git a/data/quickpanel_spn.edc b/data/quickpanel_spn.edc index ac2b3b2..a1347c2 100755 --- a/data/quickpanel_spn.edc +++ b/data/quickpanel_spn.edc @@ -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"; diff --git a/data/quickpanel_theme.edc b/data/quickpanel_theme.edc index 94749fa..7667c4f 100755 --- a/data/quickpanel_theme.edc +++ b/data/quickpanel_theme.edc @@ -19,18 +19,24 @@ 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; } } diff --git a/data/quickpanel_theme_element.edc b/data/quickpanel_theme_element.edc index f4619a8..8f85a9b 100755 --- a/data/quickpanel_theme_element.edc +++ b/data/quickpanel_theme_element.edc @@ -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 diff --git a/org.tizen.quickpanel.manifest b/org.tizen.quickpanel.manifest index 3abe39e..b715cba 100755 --- a/org.tizen.quickpanel.manifest +++ b/org.tizen.quickpanel.manifest @@ -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"/> diff --git a/packaging/org.tizen.quickpanel.spec b/packaging/org.tizen.quickpanel.spec index 007f705..445f01b 100755 --- a/packaging/org.tizen.quickpanel.spec +++ b/packaging/org.tizen.quickpanel.spec @@ -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} diff --git a/packaging/quickpanel.service b/packaging/quickpanel.service index 5dc7424..ef2776e 100644 --- a/packaging/quickpanel.service +++ b/packaging/quickpanel.service @@ -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 |