summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJinkun Jang <jinkun.jang@samsung.com>2013-03-16 01:04:46 +0900
committerJinkun Jang <jinkun.jang@samsung.com>2013-03-16 01:04:46 +0900
commit6a9e36faaabdcf45e2d76c01e5423819d6734f29 (patch)
tree7aa43299d66f38410b53a36b1a475ffd87743495
parent7c83e9661e76a4297913256f65d84709c9c3e26e (diff)
downloadquickpanel-6a9e36faaabdcf45e2d76c01e5423819d6734f29.tar.gz
quickpanel-6a9e36faaabdcf45e2d76c01e5423819d6734f29.tar.bz2
quickpanel-6a9e36faaabdcf45e2d76c01e5423819d6734f29.zip
merge with master
-rwxr-xr-xdaemon/idletxt/idletxt.c94
-rwxr-xr-xdaemon/minictrl/minictrl.c88
-rwxr-xr-xdaemon/notifications/brightness.c4
-rwxr-xr-xdaemon/notifications/noti.c379
-rwxr-xr-xdaemon/notifications/noti.h2
-rwxr-xr-xdaemon/notifications/noti_box.c150
-rwxr-xr-xdaemon/notifications/noti_display_app.c422
-rwxr-xr-xdaemon/notifications/noti_display_app.h28
-rwxr-xr-xdaemon/notifications/noti_win.c1
-rwxr-xr-xdaemon/notifications/ticker.c326
-rwxr-xr-xdaemon/quickpanel-ui.c331
-rwxr-xr-xdaemon/quickpanel-ui.h5
-rwxr-xr-xdata/quickpanel.xml.in2
-rwxr-xr-xdata/quickpanel_def.h1
-rwxr-xr-xdata/quickpanel_notibox.edc602
-rwxr-xr-xdata/quickpanel_spn.edc6
-rwxr-xr-xdata/quickpanel_theme.edc335
-rwxr-xr-xdata/quickpanel_theme_element.edc474
-rwxr-xr-xorg.tizen.quickpanel.manifest2
-rwxr-xr-xpackaging/org.tizen.quickpanel.spec6
-rw-r--r--packaging/quickpanel.service1
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, &noti_pkgname);
- notification_get_id(noti, NULL, &noti_priv_id);
- if (!strcmp(noti_pkgname, pkgname)
- && priv_id == noti_priv_id) {
- notification_set_progress(noti, progress);
- return noti;
- }
- head = notification_list_get_next(head);
- }
- }
-
- if (g_notification_list) {
- head = notification_list_get_head(g_notification_list);
-
- while (head != NULL) {
- noti = notification_list_get_data(head);
- notification_get_pkgname(noti, &noti_pkgname);
- notification_get_id(noti, NULL, &noti_priv_id);
- if (!strcmp(noti_pkgname, pkgname)
- && priv_id == noti_priv_id) {
- notification_set_progress(noti, progress);
- return noti;
- }
- head = notification_list_get_next(head);
- }
- }
-#endif
return NULL;
}
@@ -234,7 +190,6 @@ static notification_h _quickpanel_noti_update_item_size(const char *pkgname,
int priv_id,
double size)
{
-#ifdef QP_DETAILED_NOTI_CHANGE_CB_ENABLE
char *noti_pkgname = NULL;
int noti_priv_id = 0;
@@ -249,44 +204,6 @@ static notification_h _quickpanel_noti_update_item_size(const char *pkgname,
return node->noti;
}
}
-#else
- notification_h noti = NULL;
- notification_list_h head = NULL;
- char *noti_pkgname = NULL;
- int noti_priv_id = 0;
-
- if (g_notification_ongoing_list) {
- head = notification_list_get_head(g_notification_ongoing_list);
-
- while (head != NULL) {
- noti = notification_list_get_data(head);
- notification_get_pkgname(noti, &noti_pkgname);
- notification_get_id(noti, NULL, &noti_priv_id);
- if (!strcmp(noti_pkgname, pkgname)
- && priv_id == noti_priv_id) {
- notification_set_size(noti, size);
- return noti;
- }
- head = notification_list_get_next(head);
- }
- }
-
- if (g_notification_list) {
- head = notification_list_get_head(g_notification_list);
-
- while (head != NULL) {
- noti = notification_list_get_data(head);
- notification_get_pkgname(noti, &noti_pkgname);
- notification_get_id(noti, NULL, &noti_priv_id);
- if (!strcmp(noti_pkgname, pkgname)
- && priv_id == noti_priv_id) {
- notification_set_size(noti, size);
- return noti;
- }
- head = notification_list_get_next(head);
- }
- }
-#endif
return NULL;
}
@@ -295,7 +212,6 @@ static notification_h _quickpanel_noti_update_item_content(const char *pkgname,
int priv_id,
char *content)
{
-#ifdef QP_DETAILED_NOTI_CHANGE_CB_ENABLE
char *noti_pkgname = NULL;
int noti_priv_id = 0;
@@ -313,50 +229,6 @@ static notification_h _quickpanel_noti_update_item_content(const char *pkgname,
return node->noti;
}
}
-#else
- notification_h noti = NULL;
- notification_list_h head = NULL;
- char *noti_pkgname = NULL;
- int noti_priv_id = 0;
-
- if (g_notification_ongoing_list) {
- head = notification_list_get_head(g_notification_ongoing_list);
-
- while (head != NULL) {
- noti = notification_list_get_data(head);
- notification_get_pkgname(noti, &noti_pkgname);
- notification_get_id(noti, NULL, &noti_priv_id);
- if (!strcmp(noti_pkgname, pkgname)
- && priv_id == noti_priv_id) {
- notification_set_text(noti,
- NOTIFICATION_TEXT_TYPE_CONTENT,
- content, NULL,
- NOTIFICATION_VARIABLE_TYPE_NONE);
- return noti;
- }
- head = notification_list_get_next(head);
- }
- }
-
- if (g_notification_list) {
- head = notification_list_get_head(g_notification_list);
-
- while (head != NULL) {
- noti = notification_list_get_data(head);
- notification_get_pkgname(noti, &noti_pkgname);
- notification_get_id(noti, NULL, &noti_priv_id);
- if (!strcmp(noti_pkgname, pkgname)
- && priv_id == noti_priv_id) {
- notification_set_text(noti,
- NOTIFICATION_TEXT_TYPE_CONTENT,
- content, NULL,
- NOTIFICATION_VARIABLE_TYPE_NONE);
- return noti;
- }
- head = notification_list_get_next(head);
- }
- }
-#endif
return NULL;
}
@@ -372,7 +244,6 @@ static void _quickpanel_noti_update_progressbar(void *data,
retif(!ad->list, , "ad->list is NULL");
-#ifdef QP_DETAILED_NOTI_CHANGE_CB_ENABLE
int priv_id = 0;
if (notification_get_id(update_noti, NULL, &priv_id) == NOTIFICATION_ERROR_NONE) {
@@ -382,16 +253,6 @@ static void _quickpanel_noti_update_progressbar(void *data,
found = node->view;
}
}
-#else
- if (ad->show_setting)
- found = quickpanel_list_util_find_item_by_type(ad->list,
- update_noti, ongoing_first,
- QP_ITEM_TYPE_ONGOING_NOTI);
- else
- found = quickpanel_list_util_find_item_by_type(ad->list,
- update_noti, noti_first,
- QP_ITEM_TYPE_NOTI);
-#endif
retif(!found, , "fail to find %p related gl item", update_noti);
@@ -819,6 +680,20 @@ static char *_quickpanel_ongoing_noti_gl_get_text(void *data, Evas_Object * obj,
if (noti_err != NOTIFICATION_ERROR_NONE)
text = NULL;
} else if (!strcmp(part, "elm.text.content")) {
+ if (layout == NOTIFICATION_LY_ONGOING_EVENT) {
+ return NULL;
+ }
+
+ noti_err = notification_get_text(noti,
+ NOTIFICATION_TEXT_TYPE_CONTENT,
+ &text);
+ if (noti_err != NOTIFICATION_ERROR_NONE)
+ text = NULL;
+ } else if (!strcmp(part, "elm.text.content.multiline")) {
+ if (layout != NOTIFICATION_LY_ONGOING_EVENT) {
+ return NULL;
+ }
+
noti_err = notification_get_text(noti,
NOTIFICATION_TEXT_TYPE_CONTENT,
&text);
@@ -851,6 +726,7 @@ static Eina_Bool _quickpanel_noti_gl_get_state(void *data, Evas_Object * obj,
int group_id = 0, priv_id = 0;
char *content = NULL;
time_t time;
+ notification_ly_type_e layout = NOTIFICATION_LY_NONE;
retif(!data, EINA_FALSE, "data is NULL");
qid = data;
@@ -860,11 +736,17 @@ static Eina_Bool _quickpanel_noti_gl_get_state(void *data, Evas_Object * obj,
notification_get_pkgname(noti, &pkgname);
notification_get_id(noti, &group_id, &priv_id);
+ notification_get_layout(noti, &layout);
if (!strcmp(part, "elm.text.content")) {
notification_get_text(noti,
NOTIFICATION_TEXT_TYPE_CONTENT, &content);
- if (content != NULL)
+ if (content != NULL && layout != NOTIFICATION_LY_ONGOING_EVENT)
+ return EINA_TRUE;
+ } else if (!strcmp(part, "elm.text.content.multiline")) {
+ notification_get_text(noti,
+ NOTIFICATION_TEXT_TYPE_CONTENT, &content);
+ if (content != NULL && layout == NOTIFICATION_LY_ONGOING_EVENT)
return EINA_TRUE;
} else if (!strcmp(part, "elm.text.time")) {
notification_get_time(noti, &time);
@@ -882,6 +764,8 @@ static void _quickpanel_do_noti_delete(notification_h noti) {
int flags = 0, priv_id = 0, flag_delete = 0;
notification_type_e type = NOTIFICATION_TYPE_NONE;
+ quickpanel_play_feedback();
+
retif(noti == NULL, , "Invalid parameter!");
notification_get_pkgname(noti, &caller_pkgname);
@@ -905,6 +789,7 @@ static void _quickpanel_do_noti_delete(notification_h noti) {
}
static void _quickpanel_do_noti_press(notification_h noti) {
+ int ret = -1;
char *pkgname = NULL;
char *caller_pkgname = NULL;
bundle *args = NULL;
@@ -915,6 +800,8 @@ static void _quickpanel_do_noti_press(notification_h noti) {
flag_delete = 0;
notification_type_e type = NOTIFICATION_TYPE_NONE;
+ quickpanel_play_feedback();
+
retif(noti == NULL, , "Invalid parameter!");
notification_get_pkgname(noti, &caller_pkgname);
@@ -945,10 +832,7 @@ static void _quickpanel_do_noti_press(notification_h noti) {
if (flag_launch == 1) {
/* Hide quickpanel */
- Ecore_X_Window zone;
- zone = ecore_x_e_illume_zone_get(elm_win_xwindow_get(g_window));
- ecore_x_e_illume_quickpanel_state_send(zone,
- ECORE_X_ILLUME_QUICKPANEL_STATE_OFF);
+ quickpanel_close_quickpanel(true);
if (group_id != NOTIFICATION_GROUP_ID_NONE)
notification_get_count(type,
@@ -957,33 +841,33 @@ static void _quickpanel_do_noti_press(notification_h noti) {
else
count = 1;
- if (count > 1 && multi_service_handle != NULL)
- appsvc_run_service(multi_service_handle, 0, NULL, NULL);
- else if (single_service_handle != NULL)
- appsvc_run_service(single_service_handle, 0, NULL,
- NULL);
+ if (count > 1 && multi_service_handle != NULL) {
+ ret = quickpanel_launch_app(NULL, multi_service_handle);
+ quickpanel_launch_app_inform_result(pkgname, ret);
+ }
+ else if (single_service_handle != NULL) {
+ ret = quickpanel_launch_app(NULL, single_service_handle);
+ quickpanel_launch_app_inform_result(pkgname, ret);
+ }
else {
notification_get_args(noti, &args, &group_args);
if (count > 1 && group_args != NULL) {
- quickpanel_launch_app(pkgname, group_args);
+ ret = quickpanel_launch_app(pkgname, group_args);
+ quickpanel_launch_app_inform_result(pkgname, ret);
} else {
- quickpanel_launch_app(pkgname, args);
+ ret = quickpanel_launch_app(pkgname, args);
+ quickpanel_launch_app_inform_result(pkgname, ret);
}
}
}
-#ifdef QP_DETAILED_NOTI_CHANGE_CB_ENABLE
+
if (flag_delete == 1 && type == NOTIFICATION_TYPE_NOTI) {
notification_delete_by_priv_id(caller_pkgname,
NOTIFICATION_TYPE_NOTI,
priv_id);
}
-#else
- if (flag_delete == 1 && type == NOTIFICATION_TYPE_NOTI)
- notification_delete_group_by_priv_id(caller_pkgname,
- NOTIFICATION_TYPE_NOTI, priv_id);
-#endif
}
static void quickpanel_notibox_delete_cb(void *data, Evas_Object * obj) {
@@ -1011,12 +895,8 @@ static void quickpanel_notibox_select_cb(void *data, Evas_Object * obj) {
static void quickpanel_noti_select_cb(void *data, Evas_Object * obj,
void *event_info) {
-#ifdef QP_DETAILED_NOTI_CHANGE_CB_ENABLE
+ retif(data == NULL, , "Invalid parameter!");
notification_h noti = (notification_h) quickpanel_list_util_item_get_data(data);
-#else
- notification_h noti = (notification_h) data;
-#endif
-
retif(noti == NULL, , "Invalid parameter!");
elm_genlist_item_selected_set((Elm_Object_Item *) event_info, EINA_FALSE);
@@ -1212,93 +1092,6 @@ static inline void __ongoing_comp_n_copy(notification_h old, notification_h new)
}
}
-#ifndef QP_DETAILED_NOTI_CHANGE_CB_ENABLE
-static void _quickpanel_noti_get_new_divided_list(void)
-{
- notification_list_h new_noti_list = NULL;
- notification_list_h head = NULL;
- notification_list_h new_head = NULL;
- notification_h noti = NULL;
- notification_h new_noti = NULL;
-
- /* Get ongoing list */
- notification_get_grouping_list(NOTIFICATION_TYPE_ONGOING, -1,
- &new_noti_list);
- if (g_notification_ongoing_list != NULL) {
- head = notification_list_get_head(g_notification_ongoing_list);
- while (head != NULL) {
- new_head = notification_list_get_head(new_noti_list);
- while (new_head != NULL) {
- noti = notification_list_get_data(head);
- new_noti = notification_list_get_data(new_head);
-
- __ongoing_comp_n_copy(noti, new_noti);
-
- new_head = notification_list_get_next(new_head);
- }
- head = notification_list_get_next(head);
- }
-
- notification_free_list(g_notification_ongoing_list);
- g_notification_ongoing_list = new_noti_list;
- } else {
- g_notification_ongoing_list = new_noti_list;
- }
-
- /* Get noti list */
- notification_get_grouping_list(NOTIFICATION_TYPE_NOTI, -1,
- &new_noti_list);
- if (g_notification_list != NULL) {
- notification_free_list(g_notification_list);
- g_notification_list = new_noti_list;
- }
-
- g_notification_list = new_noti_list;
-}
-
-static void _quickpanel_noti_get_new_list(void)
-{
- notification_list_h new_noti_list = NULL;
- notification_list_h head = NULL;
- notification_list_h new_head = NULL;
- notification_h noti = NULL;
- notification_h new_noti = NULL;
- notification_type_e new_type = NOTIFICATION_TYPE_NONE;
-
- if (g_notification_ongoing_list != NULL) {
- notification_free_list(g_notification_ongoing_list);
- g_notification_ongoing_list = new_noti_list;
- }
-
- /* Get all list */
- notification_get_grouping_list(NOTIFICATION_TYPE_NONE, -1,
- &new_noti_list);
- if (g_notification_list != NULL) {
- head = notification_list_get_head(g_notification_list);
- while (head != NULL) {
- new_head = notification_list_get_head(new_noti_list);
- while (new_head != NULL) {
- noti = notification_list_get_data(head);
- new_noti = notification_list_get_data(new_head);
-
- notification_get_type(new_noti, &new_type);
-
- if (new_type == NOTIFICATION_TYPE_ONGOING)
- __ongoing_comp_n_copy(noti, new_noti);
-
- new_head = notification_list_get_next(new_head);
- }
- head = notification_list_get_next(head);
- }
-
- notification_free_list(g_notification_list);
- g_notification_list = new_noti_list;
- } else {
- g_notification_list = new_noti_list;
- }
-}
-#endif
-
static void _quickpanel_noti_clear_ongoinglist(Evas_Object *list)
{
if (!list)
@@ -1353,19 +1146,12 @@ static void _quickpanel_noti_ongoing_add(Evas_Object *list, void *data)
if (!qid)
return;
-#ifdef QP_DETAILED_NOTI_CHANGE_CB_ENABLE
it = quickpanel_list_util_sort_insert(list, itc_ongoing, qid, NULL,
ELM_GENLIST_ITEM_NONE, quickpanel_noti_select_cb, qid);
-#else
- it = quickpanel_list_util_sort_insert(list, itc_ongoing, qid, NULL,
- ELM_GENLIST_ITEM_NONE, quickpanel_noti_select_cb, data);
-#endif
if (it) {
ongoing_first = it;
-#ifdef QP_DETAILED_NOTI_CHANGE_CB_ENABLE
noti_node_add(g_noti_node, (void *)data, (void *)it);
-#endif
}
else
ERR("fail to insert item to list : %p", data);
@@ -1427,7 +1213,6 @@ static void _quickpanel_noti_noti_add(Evas_Object *list, void *data, int is_prep
if (!noti_group)
_quickpanel_noti_group_add(list, NULL);
-#ifdef QP_DETAILED_NOTI_CHANGE_CB_ENABLE
if (noti_first == NULL) {
if (g_noti_gridbox == NULL) {
g_noti_gridbox = gridbox_create(list, quickpanel_get_app_data());
@@ -1438,10 +1223,6 @@ static void _quickpanel_noti_noti_add(Evas_Object *list, void *data, int is_prep
ELM_GENLIST_ITEM_NONE, NULL, qid);
noti_first = it;
}
-#else
- it = quickpanel_list_util_sort_insert(list, itc_noti, qid, noti_group,
- ELM_GENLIST_ITEM_NONE, quickpanel_noti_select_cb, data);
-#endif
if (noti != NULL) {
notification_get_layout(noti, &layout);
@@ -1449,7 +1230,6 @@ static void _quickpanel_noti_noti_add(Evas_Object *list, void *data, int is_prep
Evas_Object *noti_box = noti_box_create(list, layout);
if (noti_box != NULL) {
-#ifdef QP_DETAILED_NOTI_CHANGE_CB_ENABLE
noti_node_item *item = noti_node_add(g_noti_node, (void*)data, (void*)noti_box);
if (item != NULL) {
noti_box_node_set(noti_box, item);
@@ -1457,7 +1237,6 @@ static void _quickpanel_noti_noti_add(Evas_Object *list, void *data, int is_prep
noti_box_set_item_deleted_cb(noti_box, quickpanel_notibox_delete_cb);
gridbox_add_item(g_noti_gridbox, noti_box, is_prepend);
}
-#endif
} else
ERR("fail to insert item to list : %p", data);
@@ -1481,7 +1260,6 @@ void _quickpanel_noti_update_notilist(struct appdata *ad)
list = ad->list;
retif(list == NULL, , "Failed to get noti genlist.");
-#ifdef QP_DETAILED_NOTI_CHANGE_CB_ENABLE
_quickpanel_noti_clear_list_all(list);
notification_get_list(NOTIFICATION_TYPE_ONGOING, -1, &get_list);
@@ -1515,51 +1293,6 @@ void _quickpanel_noti_update_notilist(struct appdata *ad)
if (g_noti_gridbox != NULL) {
elm_box_recalculate(g_noti_gridbox);
}
-#else
- /* Clear genlist */
- _quickpanel_noti_clear_list_all(list);
-
- /* Update notification list */
- if (ad->show_setting)
- _quickpanel_noti_get_new_divided_list();
- else
- _quickpanel_noti_get_new_list();
-
- /* append ongoing data to genlist */
- if (g_notification_ongoing_list) {
- get_list =
- notification_list_get_tail(g_notification_ongoing_list);
- noti = notification_list_get_data(get_list);
-
- while (get_list != NULL) {
- notification_get_display_applist(noti, &applist);
-
- if (applist &
- NOTIFICATION_DISPLAY_APP_NOTIFICATION_TRAY) {
- _quickpanel_noti_ongoing_add(list, noti);
- }
-
- get_list = notification_list_get_prev(get_list);
- noti = notification_list_get_data(get_list);
- }
- }
-
- /* append noti data to genlist */
- if (g_notification_list) {
- get_list = notification_list_get_tail(g_notification_list);
- noti = notification_list_get_data(get_list);
-
- while (get_list != NULL) {
- notification_get_display_applist(noti, &applist);
-
- if (applist & NOTIFICATION_DISPLAY_APP_NOTIFICATION_TRAY)
- _quickpanel_noti_noti_add(list, noti, GRIDBOX_PREPEND);
-
- get_list = notification_list_get_prev(get_list);
- noti = notification_list_get_data(get_list);
- }
- }
-#endif
}
static void _quickpanel_noti_delete_volatil_data(void)
@@ -1779,11 +1512,7 @@ static int _quickpanel_noti_register_event_handler(struct appdata *ad)
ERR("Failed to register SIM_SLOT change callback!");
/* Register notification changed cb */
-#ifdef QP_DETAILED_NOTI_CHANGE_CB_ENABLE
notification_register_detailed_changed_cb(_quickpanel_noti_detailed_changed_cb, ad);
-#else
- notification_resister_changed_cb(_quickpanel_noti_changed_cb, ad);
-#endif
return ret;
}
@@ -1793,11 +1522,7 @@ static int _quickpanel_noti_unregister_event_handler(struct appdata *ad)
int ret = 0;
/* Unregister notification changed cb */
-#ifdef QP_DETAILED_NOTI_CHANGE_CB_ENABLE
notification_unregister_detailed_changed_cb(_quickpanel_noti_detailed_changed_cb, (void *)ad);
-#else
- notification_unresister_changed_cb(_quickpanel_noti_changed_cb);
-#endif
/* Ignore vconf key */
ret = vconf_ignore_key_changed(VCONFKEY_TELEPHONY_SIM_SLOT,
@@ -1877,9 +1602,7 @@ static int quickpanel_noti_init(void *data)
g_window = ad->win;
-#ifdef QP_DETAILED_NOTI_CHANGE_CB_ENABLE
noti_node_create(&g_noti_node);
-#endif
is_first = _quickpanel_noti_check_first_start();
if (is_first) {
@@ -1899,24 +1622,10 @@ static int quickpanel_noti_fini(void *data)
{
struct appdata *ad = data;
retif(ad == NULL, QP_FAIL, "Invalid parameter!");
-#ifdef QP_DETAILED_NOTI_CHANGE_CB_ENABLE
if (g_noti_node != NULL) {
noti_node_destroy(&g_noti_node);
}
-#else
- /* Remove notification list */
- if (g_notification_ongoing_list != NULL) {
- notification_free_list(g_notification_ongoing_list);
- g_notification_ongoing_list = NULL;
- }
-
- if (g_notification_list != NULL) {
- notification_free_list(g_notification_list);
-
- g_notification_list = NULL;
- }
-#endif
/* Unregister event handler */
_quickpanel_noti_unregister_event_handler(data);
_quickpanel_noti_clear_list_all(ad->list);
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(&noti_data->time, NULL);
- e_notification_unref(n);
- free(noti_data);
- }
-}
-
-static struct Noti_Data *_notification_daemon_noti_data_find(
- struct Daemon_Data *daemon_data, E_Notification *n)
-{
- Eina_List *l;
- struct Noti_Data *noti_data;
-
- EINA_LIST_FOREACH(daemon_data->notes, l, noti_data)
- if (noti_data->n == n)
- return noti_data;
-
- return NULL;
-}
-
-static void _notification_daemon_note_close(struct Daemon_Data *daemon_data,
- E_Notification *n, int reason)
-{
- struct Noti_Data *noti_data;
-
- noti_data = _notification_daemon_noti_data_find(daemon_data, n);
- if (!noti_data)
- return;
- daemon_data->notes = eina_list_remove(daemon_data->notes, noti_data);
- n = noti_data->n;
- eina_stringshare_replace(&noti_data->time, NULL);
- e_notification_unref(n);
- free(noti_data);
- e_notification_closed_set(n, 1);
- e_notification_daemon_signal_notification_closed(daemon_data->daemon,
- e_notification_id_get(n), reason);
-}
-
-static void _note_destroy(struct Timer_Data *timer_data,
- enum E_Notification_Closed_Reason reason)
-{
- enum Noti_Orient orient;
-
- if (!timer_data)
- return;
- orient = timer_data->orient;
- if (!e_notification_closed_get(timer_data->n))
- _notification_daemon_note_close(timer_data->daemon_data,
- timer_data->n,
- reason);
- e_notification_unref(timer_data->n);
- ecore_timer_del(timer_data->timer);
- free(timer_data);
- if (noti_win[orient]) {
- evas_object_data_set(noti_win[orient], data_key, NULL);
- evas_object_del(noti_win[orient]);
- noti_win[orient] = NULL;
- }
-}
-
-Eina_Bool _note_close_timer_cb(void *data)
-{
- _note_destroy(data, E_NOTIFICATION_CLOSED_EXPIRED);
- return ECORE_CALLBACK_CANCEL;
-}
-
-static E_Notification *_notification_daemon_note_open_find(
- struct Daemon_Data *daemon_data, unsigned int id)
-{
- Eina_List *l;
- struct Noti_Data *noti_data;
-
- EINA_LIST_FOREACH(daemon_data->notes, l, noti_data)
- if (e_notification_id_get(noti_data->n) == id)
- return noti_data->n;
-
- return NULL;
-}
-
-static void _notification_daemon_note_close_cb(E_Notification_Daemon *daemon,
- unsigned int notification_id)
-{
- struct Daemon_Data *daemon_data;
- E_Notification *n;
-
- daemon_data = e_notification_daemon_data_get(daemon);
- n = _notification_daemon_note_open_find(daemon_data, notification_id);
- if (n)
- _notification_daemon_note_close(daemon_data, n,
- E_NOTIFICATION_CLOSED_REQUESTED);
- /* else send error */
-}
-
-
-static void _noti_hide_cb(void *data, Evas_Object *obj,
- const char *emission, const char *source)
-{
- _note_destroy(data, E_NOTIFICATION_CLOSED_DISMISSED);
-}
-
-static void _noti_button_clicked_cb(void *data, Evas_Object *obj,
- void *event_info)
-{
- _note_destroy(data, E_NOTIFICATION_CLOSED_REQUESTED);
-}
-
-static void _noti_show(E_Notification *n, enum Noti_Orient orient,
- struct Timer_Data *timer_data)
-{
- const char *summary;
- Evas_Object *layout;
- const char *path_icon;
- Evas_Object *icon;
- const char *data_win_height = NULL;
- int noti_height = 50;
- struct Timer_Data *old_timer_data = NULL;
- Evas_Object *button = NULL;
-
- if (noti_win[orient]) {
- old_timer_data = evas_object_data_get(noti_win[orient],
- data_key);
- _note_destroy(old_timer_data, E_NOTIFICATION_CLOSED_REQUESTED);
- }
- noti_win[orient] = noti_win_add(NULL);
- evas_object_data_set(noti_win[orient], data_key, timer_data);
- layout = elm_layout_add(noti_win[orient]);
- /* Only for sample code the theme implementation for layout has been
- used. Apps should implement this layout/edje object which can have
- at least one TEXT/TEXT BLOCK for showing body of notification and one
- swallow part for showing icon of the notification.
- Optionally the summary can be shown as well.
- Applications need to set the minimum height of the layout or edje object
- using evas_object_size_hint_min_set which can be used by the
- notification window to resize itself.
- */
- if (orient == NOTI_ORIENT_BOTTOM)
- elm_layout_theme_set(layout, "tickernoti", "base", "info");
- else {
- elm_layout_theme_set(layout, "tickernoti", "base",
- "default");
- button = elm_button_add(layout);
- elm_object_style_set(button, "tickernoti");
- elm_object_text_set(button, _S("IDS_COM_BODY_CLOSE"));
- elm_object_part_content_set(layout, "button", button);
- evas_object_smart_callback_add(button, "clicked",
- _noti_button_clicked_cb, timer_data);
- }
- elm_object_signal_callback_add(layout, "request,hide", "",
- _noti_hide_cb, timer_data);
- /* Getting the height of the layout from theme just for sample code.
- App is free to use any other method.
- */
- data_win_height = (char *)elm_layout_data_get(layout, "height");
- if (data_win_height != NULL && elm_config_scale_get() > 0.0)
- noti_height = (int)(elm_config_scale_get()
- * atoi(data_win_height));
- evas_object_size_hint_min_set(layout, 1, noti_height);
- noti_win_content_set(noti_win[orient], layout);
- summary = e_notification_summary_get(n);
- if (summary)
- elm_object_part_text_set(layout, "elm.text", summary);
- else
- elm_object_part_text_set(layout, "elm.text",
- "new notification");
- path_icon = e_notification_app_icon_get(n);
- if (path_icon) {
- INFO("%s", path_icon);
- icon = elm_image_add(layout);
- if (elm_image_file_set(icon, path_icon, NULL)) {
- elm_image_resizable_set(icon, EINA_TRUE, EINA_TRUE);
- elm_object_part_content_set(layout, "icon", icon);
- }
- }
- noti_win_orient_set(noti_win[orient], orient);
- if (app_win)
- elm_win_rotation_with_resize_set(noti_win[orient],
- elm_win_rotation_get(app_win));
- evas_object_show(noti_win[orient]);
-}
-
-void _notification_daemon_note_show(struct Daemon_Data *daemon_data,
- E_Notification *n)
-{
- int timeout;
- const char *category;
- enum Noti_Orient orient = NOTI_ORIENT_TOP;
- struct Noti_Data *noti_data;
- time_t current;
- char buf[256];
- struct tm time_st;
- struct Timer_Data *timer_data;
-
- category = e_notification_hint_category_get(n);
- if (category) {
- if (!strcmp("device", category))
- orient = NOTI_ORIENT_BOTTOM;
- }
-
- noti_data = calloc(1, sizeof(struct Noti_Data));
- if (!noti_data)
- return;
- e_notification_ref(n);
- noti_data->n = n;
- current = time(NULL);
- localtime_r(&current, &time_st);
- strftime(buf, sizeof(buf), "%I:%M %p", &time_st);
- eina_stringshare_replace(&noti_data->time, buf);
- daemon_data->notes = eina_list_append(daemon_data->notes, noti_data);
- timeout = e_notification_timeout_get(n);
- timer_data = calloc(1, sizeof(struct Timer_Data));
- _noti_show(n, orient, timer_data);
- timer_data->daemon_data = daemon_data;
- timer_data->orient = orient;
- e_notification_ref(n);
- e_notification_closed_set(n, 0);
- timer_data->n = n;
- timer_data->timer = ecore_timer_add(timeout == -1 ?
- daemon_data->default_timeout : (float)timeout / 1000,
- _note_close_timer_cb, timer_data);
-
- INFO("Received notification from %s:%s %s",
- e_notification_app_name_get(n),
- e_notification_summary_get(n), e_notification_body_get(n));
-}
-
-static int _notification_cb(E_Notification_Daemon *daemon, E_Notification *n)
-{
- struct Daemon_Data *daemon_data;
- unsigned int replaces_id;
- unsigned int new_id;
-
- daemon_data = e_notification_daemon_data_get(daemon);
- replaces_id = e_notification_replaces_id_get(n);
- if (replaces_id)
- new_id = replaces_id;
- else
- new_id = daemon_data->next_id++;
- e_notification_id_set(n, new_id);
- _notification_daemon_note_show(daemon_data, n);
- return new_id;
-}
-
-static Eina_Bool _init()
-{
- Eina_Bool ret = EINA_FALSE;
- struct Daemon_Data *daemon_data;
-
- if (!g_notification_daemon) {
- e_notification_daemon_init();
- g_notification_daemon = e_notification_daemon_add("notification"
- , "Enlightenment");
- if (!g_notification_daemon) {
- ERR("Unable to add a notification daemon");
- return EINA_FALSE;
- }
- daemon_data = calloc(1, sizeof(struct Daemon_Data));
- if (!daemon_data) {
- notification_daemon_shutdown();
- return EINA_FALSE;
- }
- daemon_data->default_timeout = 1.0;
- daemon_data->daemon = g_notification_daemon;
- e_notification_daemon_data_set(g_notification_daemon,
- daemon_data);
- e_notification_daemon_callback_notify_set(g_notification_daemon,
- _notification_cb);
- e_notification_daemon_callback_close_notification_set(
- g_notification_daemon,
- _notification_daemon_note_close_cb);
- INFO("Initializing Notification Daemon");
- }
- ret = !!g_notification_daemon;
- return ret;
-}
-
-static Eina_Bool _shutdown()
-{
- struct Daemon_Data *daemon_data;
- Eina_List *l;
- E_Notification *n;
- int i;
- struct Noti_Data *noti_data;
- Eina_Bool ret = EINA_FALSE;
-
- for (i = 0; i < NOTI_ORIENT_LAST; i++)
- if (noti_win[i]) {
- evas_object_del(noti_win[i]);
- noti_win[i] = NULL;
- }
- if (!g_notification_daemon)
- return ret;
- daemon_data = e_notification_daemon_data_get(
- g_notification_daemon);
- if (!daemon_data)
- return ret;
- EINA_LIST_FOREACH(daemon_data->notes, l, noti_data) {
- daemon_data->notes = eina_list_remove(daemon_data->notes,
- noti_data);
- n = noti_data->n;
- eina_stringshare_replace(&noti_data->time, NULL);
- e_notification_unref(n);
- free(noti_data);
- }
- free(daemon_data);
- e_notification_daemon_free(g_notification_daemon);
- e_notification_daemon_shutdown();
- g_notification_daemon = NULL;
- ret = EINA_TRUE;
- return ret;
-}
-
-void notification_daemon_init()
-{
- int i;
-
- if (!_init()) {
- ERR("Error in intializing the notification daemon");
- return;
- }
- for (i = 0; i < NOTI_ORIENT_LAST; i++)
- if (noti_win[i]) {
- evas_object_del(noti_win[i]);
- noti_win[i] = NULL;
- }
-}
-
-void notification_daemon_win_set(Evas_Object *win)
-{
- /* This window is used to detect the orientation of the receiver app
- window to support rotation of the notification window.
- */
- app_win = win;
-}
-
-void notification_daemon_shutdown()
-{
- if (!_shutdown()) {
- ERR("Error in shutting down the notification daemon");
- return;
- }
- app_win = NULL;
- INFO("Terminating Notification Daemon");
-}
diff --git a/daemon/notifications/noti_display_app.h b/daemon/notifications/noti_display_app.h
deleted file mode 100755
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