Releasing quickpanel for tizen2.0b
authoryoungsub ko <ys4610.ko@samsung.com>
Tue, 21 Aug 2012 12:29:22 +0000 (21:29 +0900)
committeryoungsub ko <ys4610.ko@samsung.com>
Tue, 21 Aug 2012 12:29:22 +0000 (21:29 +0900)
67 files changed:
CMakeLists.txt [changed mode: 0644->0755]
LICENSE [changed mode: 0644->0755]
daemon/common.h
daemon/idletxt/idletxt.c
daemon/list_util.c [new file with mode: 0755]
daemon/list_util.h [new file with mode: 0755]
daemon/minictrl/minictrl.c [new file with mode: 0755]
daemon/modules.c
daemon/notifications/noti.c [changed mode: 0644->0755]
daemon/notifications/noti_display_app.c [changed mode: 0644->0755]
daemon/notifications/noti_display_app.h [changed mode: 0644->0755]
daemon/notifications/noti_win.c [changed mode: 0644->0755]
daemon/notifications/noti_win.h [changed mode: 0644->0755]
daemon/notifications/ticker.c [changed mode: 0644->0755]
daemon/quickpanel-ui.c [changed mode: 0644->0755]
daemon/quickpanel-ui.h [changed mode: 0644->0755]
data/CMakeLists.txt
data/base/CMakeLists.txt [deleted file]
data/base/image/RQ02_button_normal_center.png [deleted file]
data/base/image/RQ02_button_normal_left.png [deleted file]
data/base/image/RQ02_button_normal_right.png [deleted file]
data/base/image/RQ02_button_press_center.png [deleted file]
data/base/image/RQ02_button_press_left.png [deleted file]
data/base/image/RQ02_button_press_right.png [deleted file]
data/base/quickpanel_noti.edc [deleted file]
data/base/quickpanel_noti_def.h [deleted file]
data/base/quickpanel_theme.edc [deleted file]
data/base/quickpanel_theme_def.h [deleted file]
data/icons/Q02_Notifications_bg.png [new file with mode: 0644]
data/icons/Q02_quickpanel_button_nomal_01_center.png [new file with mode: 0755]
data/icons/Q02_quickpanel_button_nomal_01_left.png [new file with mode: 0755]
data/icons/Q02_quickpanel_button_nomal_01_right.png [new file with mode: 0755]
data/icons/Q02_quickpanel_button_press_01_center.png [new file with mode: 0755]
data/icons/Q02_quickpanel_button_press_01_left.png [new file with mode: 0755]
data/icons/Q02_quickpanel_button_press_01_right.png [new file with mode: 0755]
data/images/Q02_IMG_Handler_Closed.png [new file with mode: 0755]
data/images/Q02_IMG_Handler_opened.png [new file with mode: 0755]
data/images/Q02_quickpanel_handler_bg.png [new file with mode: 0755]
data/quickpanel.desktop.in
data/quickpanel.edc [new file with mode: 0755]
data/quickpanel.png [new file with mode: 0644]
data/quickpanel.sh.in [changed mode: 0755->0644]
data/quickpanel.xml.in [new file with mode: 0755]
data/quickpanel_def.h [new file with mode: 0755]
data/quickpanel_noti.edc [new file with mode: 0755]
data/quickpanel_spn.edc [new file with mode: 0755]
data/quickpanel_theme.edc [new file with mode: 0755]
data/quickpanel_theme_def.h [new file with mode: 0755]
data/sip.wav [new file with mode: 0644]
debian/control [changed mode: 0644->0755]
packaging/org.tizen.quickpanel.spec [changed mode: 0644->0755]
po/CMakeLists.txt [changed mode: 0755->0644]
po/de_DE.po [changed mode: 0644->0755]
po/el_GR.po [changed mode: 0644->0755]
po/en.po [changed mode: 0644->0755]
po/es_ES.po [changed mode: 0644->0755]
po/fr_FR.po [changed mode: 0644->0755]
po/it_IT.po [changed mode: 0644->0755]
po/ja_JP.po [changed mode: 0644->0755]
po/ko_KR.po [changed mode: 0644->0755]
po/nl_NL.po [changed mode: 0644->0755]
po/pt_PT.po [changed mode: 0644->0755]
po/ru_RU.po [changed mode: 0644->0755]
po/tr_TR.po [changed mode: 0644->0755]
po/zh_CN.po [changed mode: 0644->0755]
po/zh_HK.po [changed mode: 0644->0755]
po/zh_TW.po [changed mode: 0644->0755]

old mode 100644 (file)
new mode 100755 (executable)
index b76a535..37747bf
@@ -5,9 +5,9 @@ FILE(GLOB_RECURSE DAEMON_SRCS daemon/*.c)
 AUX_SOURCE_DIRECTORY(${CMAKE_CURRENT_SOURCE_DIR}/test TEST_SRCS)
 SET(SRCS ${DAEMON_SRCS} ${TEST_SRCS})
 
-SET(VENDOR "tizen")
+SET(VENDOR "org.tizen")
 SET(PACKAGE ${PROJECT_NAME})
-SET(PKGNAME "org.${VENDOR}.${PACKAGE}")
+SET(PKGNAME "${VENDOR}.${PACKAGE}")
 SET(PREFIX ${CMAKE_INSTALL_PREFIX})
 SET(BINDIR "${PREFIX}/bin")
 SET(RESDIR "${PREFIX}/res")
@@ -15,7 +15,8 @@ SET(LOCALEDIR "${RESDIR}/locale")
 SET(ICONDIR "${RESDIR}/icons")
 SET(EDJDIR "${RESDIR}/edje")
 SET(DATADIR "${PREFIX}/data")
-SET(DESKTOPDIR "/opt/share/applications")
+SET(DESKTOPDIR "/usr/share/applications")
+SET(MANIFESTXMLDIR "/usr/share/packages")
 
 IF("${CMAKE_BUILD_TYPE}" STREQUAL "")
        SET(CMAKE_BUILD_TYPE "Release")
@@ -24,39 +25,45 @@ MESSAGE("Build type: ${CMAKE_BUILD_TYPE}")
 
 INCLUDE_DIRECTORIES(
                ${CMAKE_CURRENT_SOURCE_DIR}/daemon
+               ${CMAKE_CURRENT_SOURCE_DIR}/data
                ${CMAKE_CURRENT_SOURCE_DIR}/test
                )
 
 INCLUDE(FindPkgConfig)
 pkg_check_modules(pkgs REQUIRED 
-       appcore-efl 
-       appcore-common 
+       capi-appfw-application
+       capi-appfw-app-manager
+       capi-system-runtime-info
+       appcore-common
        heynoti
-       notification 
-       vconf 
-       aul 
-       appsvc 
-       svi 
-       libprivilege-control 
-       ecore-x 
-       edbus 
-       evas 
-       ecore 
-       edje 
-       mm-sound 
-       icu-i18n 
-       iniparser 
+       notification
+       vconf
+       aul
+       appsvc
+       svi
+       libprivilege-control
+       ecore-x
+       edbus
+       evas
+       ecore
+       edje
+       ecore-input
+       mm-sound
+       icu-i18n
        enotify
        elementary
        dlog
        syspopup-caller
+       minicontrol-viewer
+       minicontrol-monitor
+       utilX
 )
 
 FOREACH(flag ${pkgs_CFLAGS})
        SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
 ENDFOREACH(flag)
 
-SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS}")
+SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS} -Wall -g -O2 -fpie")
 SET(CMAKE_C_FLAGS_DEBUG "-O0 -g")
 SET(CMAKE_C_FLAGS_RELEASE "-O2")
 
@@ -68,6 +75,7 @@ IF("${ARCH}" STREQUAL "arm")
 ENDIF("${ARCH}" STREQUAL "arm")
 
 ADD_DEFINITIONS("-fpie")
+ADD_DEFINITIONS("-DQP_MINICTRL_ENABLE")
 
 ADD_DEFINITIONS("-DVENDOR=\"${VENDOR}\"")
 ADD_DEFINITIONS("-DPACKAGE=\"${PACKAGE}\"")
diff --git a/LICENSE b/LICENSE
old mode 100644 (file)
new mode 100755 (executable)
index cfa50c23b9f35d9e2b93ba053e2eb552c59e241b..e95075443f133104926b7ec58119cd3d71454c97 100755 (executable)
 #define LOG_TAG "quickpanel"
 #include <dlog.h>
 
-#define ERR(str,args...)               LOGE("%s[%d]\t " #str "\n", __func__, __LINE__, ##args)
-#define DBG(str,args...)               LOGD("%s[%d]\t " #str "\n", __func__, __LINE__, ##args)
-#define INFO(str,args...)              LOGI(#str"\n", ##args)
+#define DBG(fmt , args...) \
+       do { \
+               LOGD("[%s : %d] "fmt"\n", __func__, __LINE__, ##args); \
+       } while (0)
+
+#define INFO(fmt , args...) \
+       do { \
+               LOGI("[%s : %d] "fmt"\n", __func__, __LINE__, ##args); \
+       } while (0)
+
+#define WARN(fmt , args...) \
+       do { \
+               LOGI("[%s : %d] "fmt"\n", __func__, __LINE__, ##args); \
+       } while (0)
+
+#define ERR(fmt , args...) \
+       do { \
+               LOGI("[%s : %d] "fmt"\n", __func__, __LINE__, ##args); \
+       } while (0)
+
 #elif FILE_DEBUG /*_DLOG_USED*/
-#define ERR(str,args...)               debug_printf("%s[%d]\t " #str "\n", __func__, __LINE__, ##args)
-#define DBG(str,args...)               debug_printf("%s[%d]\t " #str "\n", __func__, __LINE__, ##args)
-#define INFO(str,args...)              debug_printf(#str"\n", ##args)
+#define DBG(fmt , args...) \
+       do { \
+               debug_printf("[D]%s : %d] "fmt"\n", \
+                       __func__, __LINE__, ##args); \
+       } while (0)
+
+#define INFO(fmt , args...) \
+       do { \
+               debug_printf("[I][%s : %d] "fmt"\n",\
+                       __func__, __LINE__, ##args); \
+       } while (0)
+
+#define WARN(fmt , args...) \
+       do { \
+               debug_printf("[W][%s : %d] "fmt"\n", \
+                       __func__, __LINE__, ##args); \
+       } while (0)
+
+#define ERR(fmt , args...) \
+       do { \
+               debug_printf("[E][%s : %d] "fmt"\n", \
+                       __func__, __LINE__, ##args); \
+       } while (0)
+
 #else /*_DLOG_USED*/
-#define ERR(str,args...)               fprintf( stderr, "%s[%d]\t " #str "\n", __func__, __LINE__, ##args)
-#define DBG(str,args...)               fprintf( stderr, "%s[%d]\t " #str "\n", __func__, __LINE__, ##args)
-#define INFO(str,args...)              fprintf( stderr, #str"\n", ##args)
+#define DBG(fmt , args...) \
+       do { \
+               fprintf("[D][%s : %d] "fmt"\n", __func__, __LINE__, ##args); \
+       } while (0)
+
+#define INFO(fmt , args...) \
+       do { \
+               fprintf("[I][%s : %d] "fmt"\n", __func__, __LINE__, ##args); \
+       } while (0)
+
+#define WARN(fmt , args...) \
+       do { \
+               fprintf("[W][%s : %d] "fmt"\n", __func__, __LINE__, ##args); \
+       } while (0)
+
+#define ERR(fmt , args...) \
+       do { \
+               fprintf("[E][%s : %d] "fmt"\n", __func__, __LINE__, ##args); \
+       } while (0)
 #endif /*_DLOG_USED*/
 
-#define retif(cond, ret, str, args...) do{\
-       if(cond) {\
-               DBG(str, ##args);\
+#define retif(cond, ret, str, args...) do { \
+       if (cond) { \
+               WARN(str, ##args);\
                return ret;\
-       }\
-}while(0);
-
-#define gotoif(cond, target, str, args...) do{\
-       if(cond) {\
-               DBG(str, ##args);\
-               goto target;\
-       }\
-}while(0);
+       } \
+} while (0);
+
+#define gotoif(cond, target, str, args...) do { \
+       if (cond) { \
+               WARN(str, ##args); \
+               goto target; \
+       } \
+} while (0);
 
 #endif                         /* __QP_COMMON_H_ */
index 820c9fe66eb0efa557107b115f459457841002c4..d7fbbd1f851e969a1ec68eb4c31947525b267054 100755 (executable)
 #include "common.h"
 #include "quickpanel-ui.h"
 
-#define QP_IDLETXT_PART                        "qp.noti.swallow.spn"
+#define QP_IDLETXT_PART                "qp.noti.swallow.spn"
 
-#define QP_IDLETXT_MAX_KEY             4
-#define QP_IDLETXT_MAX_LEN             1024
+#define QP_SPN_BASE_PART       "qp.base.spn.swallow"
+#define QP_SPN_BOX_PART                "qp.spn.swallow"
+
+#define QP_IDLETXT_MAX_KEY     4
+#define QP_IDLETXT_MAX_LEN     1024
 #define QP_IDLETXT_SLIDE_LEN   130
 
-#define QP_IDLETXT_LABEL_STRING        "<font_size=30><color=#8C8C8CFF><align=left>%s</align></color></font_size>"
+#define QP_IDLETXT_LABEL_STRING        \
+       "<font_size=30><color=#8C8C8CFF><align=left>%s</align>" \
+       "</color></font_size>"
 
 static int quickpanel_idletxt_init(void *data);
 static int quickpanel_idletxt_fini(void *data);
@@ -92,23 +97,20 @@ static int _quickpanel_idletxt_get_txt(const char *key, char *txt, int size)
        int i = 0;
 
        str = vconf_get_str(key);
-       if (str == NULL || str[0] == '\0') {
+       if (str == NULL || str[0] == '\0')
                return 0;
-       }
 
        /* check ASCII code */
        for (i = strlen(str) - 1; i >= 0; i--) {
-               if (str[i] < 31 || str[i] > 127) {
+               if (str[i] <= 31 || str[i] >= 127)
                        goto failed;
-               }
        }
 
        len = snprintf(txt, size, "%s", str);
 
  failed:
-       if (str) {
+       if (str)
                free(str);
-       }
 
        return len;
 }
@@ -146,9 +148,48 @@ 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) {
+                       if (len > QP_IDLETXT_SLIDE_LEN)
                                elm_label_slide_set(obj, EINA_TRUE);
+
+                       return obj;
+               }
+       }
+
+       return NULL;
+}
+
+static Evas_Object *_quickpanel_idletxt_exception_add_label(Evas_Object * box)
+{
+       int service_type = VCONFKEY_TELEPHONY_SVCTYPE_SEARCH;
+       char *text = NULL;
+       Evas_Object *obj = NULL;
+
+       if (vconf_get_int(VCONFKEY_TELEPHONY_SVCTYPE, &service_type) != 0) {
+               DBG("fail to get VCONFKEY_TELEPHONY_SVCTYPE");
+       }
+
+       switch(service_type) {
+               case VCONFKEY_TELEPHONY_SVCTYPE_NOSVC:
+                       text = _S("IDS_COM_BODY_NO_SERVICE");
+                       break;
+               case VCONFKEY_TELEPHONY_SVCTYPE_EMERGENCY:
+                       text = _NOT_LOCALIZED("Emergency calls only");
+                       break;
+               default:
+                       if (service_type > VCONFKEY_TELEPHONY_SVCTYPE_SEARCH) {
+                               text = vconf_get_str(VCONFKEY_TELEPHONY_NWNAME);
+                       } else {
+                               text = _S("IDS_COM_BODY_SEARCHING");
                        }
+                       break;
+       }
+
+       if (text != NULL) {
+               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;
                }
@@ -170,31 +211,34 @@ static Evas_Object *_quickpanel_idletxt_get_spn(Evas_Object * box)
        if (ret == 0) {
                INFO("VCONFKEY(%s) = %d",
                     VCONFKEY_TELEPHONY_SPN_DISP_CONDITION, state);
-               if (i < QP_IDLETXT_MAX_KEY) {
-                       if (state & VCONFKEY_TELEPHONY_DISP_SPN) {
-                               keylist[i++] =
-                                   strdup(VCONFKEY_TELEPHONY_SPN_NAME);
-                       }
 
-                       if (state & VCONFKEY_TELEPHONY_DISP_PLMN) {
-                               keylist[i++] =
-                                   strdup(VCONFKEY_TELEPHONY_NWNAME);
+               if (state != VCONFKEY_TELEPHONY_DISP_INVALID) {
+                       if (i < QP_IDLETXT_MAX_KEY) {
+                               if (state & VCONFKEY_TELEPHONY_DISP_SPN) {
+                                       keylist[i++] =
+                                           strdup(VCONFKEY_TELEPHONY_SPN_NAME);
+                               }
+
+                               if (state & VCONFKEY_TELEPHONY_DISP_PLMN) {
+                                       keylist[i++] =
+                                           strdup(VCONFKEY_TELEPHONY_NWNAME);
+                               }
                        }
-               }
 
-       }
+                       if (i > 0) {
+                               /* get string with keylist */
+                               label = _quickpanel_idletxt_add_label(box, keylist);
 
-       if (i > 0) {
-               /* get string with keylist */
-               label = _quickpanel_idletxt_add_label(box, keylist);
+                               /* free keylist */
+                               while (i > 0) {
+                                       if (keylist[i])
+                                               free(keylist[i]);
 
-               /* free keylist */
-               while (i > 0) {
-                       if (keylist[i]) {
-                               free(keylist[i]);
+                                       i--;
+                               }
                        }
-
-                       i--;
+               } else {
+                       label = _quickpanel_idletxt_exception_add_label(box);
                }
        }
 
@@ -212,69 +256,78 @@ static Evas_Object *_quickpanel_idletxt_get_sat_text(Evas_Object * box)
        return label;
 }
 
-static void quickpanel_idletxt_changed_cb(keynode_t * node, void *data)
+static void quickpanel_idletxt_update(void *data)
 {
+       struct appdata *ad = NULL;
        Evas_Object *label = NULL;
-       struct appdata *ad = (struct appdata *)data;
+       Evas_Object *idletxtbox = NULL;
+       Evas_Object *spn = NULL;
+
+       retif(!data, , "Invalid parameter!");
+       ad = data;
+
+       retif(!ad->ly, , "layout is NULL!");
 
-       retif(ad == NULL,, "Invalid parameter!");
+       spn = elm_object_part_content_get(ad->ly, QP_SPN_BASE_PART);
+       retif(!spn, , "spn layout is NULL!");
 
-       if (ad->idletxtbox == NULL) {
-               ad->idletxtbox = _quickpanel_idletxt_create_box(ad->noti.ly);
-               retif(ad->idletxtbox == NULL,, "Failed to create box!");
+       idletxtbox = elm_object_part_content_get(spn, QP_SPN_BOX_PART);
+       retif(!spn, , "spn layout is NULL!");
 
-               edje_object_part_swallow(_EDJ(ad->noti.ly), QP_IDLETXT_PART,
-                                        ad->idletxtbox);
+       if (idletxtbox == NULL) {
+               idletxtbox = _quickpanel_idletxt_create_box(spn);
+               retif(idletxtbox == NULL, , "Failed to create box!");
+               elm_object_part_content_set(spn,
+                               QP_SPN_BOX_PART, idletxtbox);
        }
 
-       elm_box_clear(ad->idletxtbox);
+       elm_box_clear(idletxtbox);
 
        /* get spn */
-       label = _quickpanel_idletxt_get_spn(ad->idletxtbox);
-       if (label != NULL) {
-               elm_box_pack_end(ad->idletxtbox, label);
-       }
+       label = _quickpanel_idletxt_get_spn(idletxtbox);
+       if (label != NULL)
+               elm_box_pack_end(idletxtbox, label);
 
        /* get sat idle text */
-       label = _quickpanel_idletxt_get_sat_text(ad->idletxtbox);
-       if (label != NULL) {
-               elm_box_pack_end(ad->idletxtbox, label);
-       }
+       label = _quickpanel_idletxt_get_sat_text(idletxtbox);
+       if (label != NULL)
+               elm_box_pack_end(idletxtbox, label);
+}
+
+static void quickpanel_idletxt_changed_cb(keynode_t *node, void *data)
+{
+       quickpanel_idletxt_update(data);
 }
 
 static int _quickpanel_idletxt_register_event_handler(void *data)
 {
        int ret = 0;
 
-       ret =
-           vconf_notify_key_changed(VCONFKEY_TELEPHONY_SPN_DISP_CONDITION,
-                                    quickpanel_idletxt_changed_cb, data);
-       if (ret != 0) {
-               ERR("Failed to register VCONFKEY_TELEPHONY_SPN_DISP_CONDITION change callback!");
-       }
+       ret = vconf_notify_key_changed(VCONFKEY_TELEPHONY_SPN_DISP_CONDITION,
+                               quickpanel_idletxt_changed_cb, data);
+       if (ret != 0)
+               ERR("Failed to register [%s]",
+                       VCONFKEY_TELEPHONY_SPN_DISP_CONDITION);
 
-       ret =
-           vconf_notify_key_changed(VCONFKEY_TELEPHONY_SPN_NAME,
-                                    quickpanel_idletxt_changed_cb, data);
-       if (ret != 0) {
-               ERR("Failed to register VCONFKEY_TELEPHONY_SPN_NAME change callback!");
-       }
+       ret = vconf_notify_key_changed(VCONFKEY_TELEPHONY_SPN_NAME,
+                               quickpanel_idletxt_changed_cb, data);
+       if (ret != 0)
+               ERR("Failed to register [%s]",
+                       VCONFKEY_TELEPHONY_SPN_NAME);
 
-       ret =
-           vconf_notify_key_changed(VCONFKEY_TELEPHONY_NWNAME,
-                                    quickpanel_idletxt_changed_cb, data);
-       if (ret != 0) {
-               ERR("Failed to register VCONFKEY_TELEPHONY_NWNAME change callback!");
-       }
 
-       ret =
-           vconf_notify_key_changed(VCONFKEY_SAT_IDLE_TEXT,
-                                    quickpanel_idletxt_changed_cb, data);
-       if (ret != 0) {
-               ERR("Failed to register VCONFKEY_SAT_IDLE_TEXT change callback!");
-       }
+       ret = vconf_notify_key_changed(VCONFKEY_TELEPHONY_NWNAME,
+                               quickpanel_idletxt_changed_cb, data);
+       if (ret != 0)
+               ERR("Failed to register [%s]",
+                       VCONFKEY_TELEPHONY_NWNAME);
+
+       ret = vconf_notify_key_changed(VCONFKEY_SAT_IDLE_TEXT,
+                               quickpanel_idletxt_changed_cb, data);
+       if (ret != 0)
+               ERR("Failed to register [%s]",
+                       VCONFKEY_SAT_IDLE_TEXT);
 
-       quickpanel_idletxt_changed_cb(NULL, data);
 
        return QP_OK;
 }
@@ -283,50 +336,71 @@ static int _quickpanel_idletxt_unregister_event_handler(void)
 {
        int ret = 0;
 
-       ret =
-           vconf_ignore_key_changed(VCONFKEY_TELEPHONY_SPN_DISP_CONDITION,
+       ret = vconf_ignore_key_changed(VCONFKEY_TELEPHONY_SPN_DISP_CONDITION,
                                     quickpanel_idletxt_changed_cb);
-       if (ret != 0) {
-               ERR("Failed to unregister VCONFKEY_TELEPHONY_SPN_DISP_CONDITION change callback!");
-       }
+       if (ret != 0)
+               ERR("Failed to unregister [%s]",
+                       VCONFKEY_TELEPHONY_SPN_DISP_CONDITION);
 
-       ret =
-           vconf_ignore_key_changed(VCONFKEY_TELEPHONY_SPN_NAME,
+       ret = vconf_ignore_key_changed(VCONFKEY_TELEPHONY_SPN_NAME,
                                     quickpanel_idletxt_changed_cb);
-       if (ret != 0) {
-               ERR("Failed to unregister VCONFKEY_TELEPHONY_SPN_NAME change callback!");
-       }
+       if (ret != 0)
+               ERR("Failed to unregister [%s]",
+                       VCONFKEY_TELEPHONY_SPN_NAME);
 
-       ret =
-           vconf_ignore_key_changed(VCONFKEY_TELEPHONY_NWNAME,
+
+       ret = vconf_ignore_key_changed(VCONFKEY_TELEPHONY_NWNAME,
                                     quickpanel_idletxt_changed_cb);
-       if (ret != 0) {
-               ERR("Failed to unregister VCONFKEY_TELEPHONY_NWNAME change callback!");
-       }
+       if (ret != 0)
+               ERR("Failed to unregister [%s]",
+                       VCONFKEY_TELEPHONY_NWNAME);
 
-       ret =
-           vconf_ignore_key_changed(VCONFKEY_SAT_IDLE_TEXT,
+       ret = vconf_ignore_key_changed(VCONFKEY_SAT_IDLE_TEXT,
                                     quickpanel_idletxt_changed_cb);
-       if (ret != 0) {
-               ERR("Failed to unregister VCONFKEY_SAT_IDLE_TEXT change callback!");
-       }
+       if (ret != 0)
+               ERR("Failed to unregister [%s]",
+                       VCONFKEY_SAT_IDLE_TEXT);
 
        return QP_OK;
 }
 
+static Evas_Object *_idletxt_load_edj(Evas_Object * parent, const char *file,
+                               const char *group)
+{
+       Eina_Bool r;
+       Evas_Object *eo = NULL;
+
+       retif(parent == NULL, NULL, "Invalid parameter!");
+
+       eo = elm_layout_add(parent);
+       retif(eo == NULL, NULL, "Failed to add layout object!");
+
+       r = elm_layout_file_set(eo, file, group);
+       retif(r != EINA_TRUE, NULL, "Failed to set edje object file!");
+
+       evas_object_size_hint_weight_set(eo,
+               EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_show(eo);
+
+       return eo;
+}
+
 static int quickpanel_idletxt_init(void *data)
 {
-       struct appdata *ad = (struct appdata *)data;
+       struct appdata *ad = NULL;
+       Evas_Object *spn = NULL;
 
-       retif(ad == NULL, QP_FAIL, "Invalid parameter!");
+       retif(!data, QP_FAIL, "Invalid parameter!");
+       ad = data;
 
-       ad->idletxtbox = _quickpanel_idletxt_create_box(ad->noti.ly);
-       retif(ad->idletxtbox == NULL, QP_FAIL, "Failed to create box!");
+       spn = _idletxt_load_edj(ad->ly, DEFAULT_EDJ, "quickpanel/spn");
+       retif(!spn, QP_FAIL, "fail to load spn layout");
 
-       edje_object_part_swallow(_EDJ(ad->noti.ly), QP_IDLETXT_PART,
-                                ad->idletxtbox);
+       elm_object_part_content_set(ad->ly, QP_SPN_BASE_PART, spn);
 
-       _quickpanel_idletxt_register_event_handler(ad);
+       quickpanel_idletxt_update(data);
+
+       _quickpanel_idletxt_register_event_handler(data);
 
        return QP_OK;
 }
@@ -334,21 +408,26 @@ static int quickpanel_idletxt_init(void *data)
 static int quickpanel_idletxt_fini(void *data)
 {
        struct appdata *ad = (struct appdata *)data;
+       Evas_Object *spn = NULL;
+       Evas_Object *idletxtbox = NULL;
 
        retif(ad == NULL, QP_FAIL, "Invalid parameter!");
 
        _quickpanel_idletxt_unregister_event_handler();
 
-       edje_object_part_unswallow(_EDJ(ad->noti.ly), ad->idletxtbox);
-
-       if (ad->idletxtbox != NULL) {
-               evas_object_hide(ad->idletxtbox);
+       retif(!ad->ly, QP_FAIL, "Invalid parameter!");
 
-               evas_object_del(ad->idletxtbox);
+       spn = elm_object_part_content_unset(ad->ly, QP_SPN_BASE_PART);
+       retif(!spn, QP_OK, "spn is NULL");
 
-               ad->idletxtbox = NULL;
+       idletxtbox = elm_object_part_content_get(spn, QP_SPN_BOX_PART);
+       if (idletxtbox) {
+               elm_object_part_content_unset(spn, QP_SPN_BOX_PART);
+               evas_object_del(idletxtbox);
        }
 
+       evas_object_del(spn);
+
        return QP_OK;
 }
 
diff --git a/daemon/list_util.c b/daemon/list_util.c
new file mode 100755 (executable)
index 0000000..4827cf1
--- /dev/null
@@ -0,0 +1,354 @@
+/*
+ * 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://www.tizenopensource.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 <Elementary.h>
+#include <stdlib.h>
+
+#include "common.h"
+#include "list_util.h"
+
+struct _qp_item_data {
+       qp_item_type_e type;
+       void *data;
+};
+
+static qp_item_count g_qp_item_count = {
+       .group = 0,
+       .ongoing = 0,
+       .noti = 0,
+       .minicontrol = 0,
+};
+
+qp_item_data *quickpanel_list_util_item_new(qp_item_type_e type, void *data)
+{
+       qp_item_data *qid = NULL;
+
+       qid = malloc(sizeof(struct _qp_item_data));
+       if (!qid) {
+               ERR("fail to alloc qid");
+               return NULL;
+       }
+
+       qid->type = type;
+       qid->data = data;
+
+       return qid;
+}
+
+void *quickpanel_list_util_item_get_data(qp_item_data *qid)
+{
+       void *user_data = NULL;
+
+       if (!qid)
+               return NULL;
+
+       user_data = qid->data;
+
+       return user_data;
+}
+
+int quickpanel_list_util_item_compare(const void *data1, const void *data2)
+{
+       int diff = 0;
+       qp_item_data *qid1 = NULL;
+       qp_item_data *qid2 = NULL;
+       const Elm_Object_Item *it1 = data1;
+       const Elm_Object_Item *it2 = data2;
+
+       if (!it1) {
+               INFO("it1 is NULL");
+               return -1;
+       }
+
+       if (!it2) {
+               INFO("it2 is NULL");
+               return 1;
+       }
+
+       qid1 = elm_object_item_data_get(it1);
+       qid2 = elm_object_item_data_get(it2);
+
+       if (!qid1) {
+               INFO("qid1 is NULL");
+               return -1;
+       }
+
+       if (!qid2) {
+               INFO("qid2 is NULL");
+               return 1;
+       }
+
+       /* elm_genlist sort is not working as i expected */
+       if (qid1->type == qid2->type)
+               return 1;
+
+       diff = qid1->type - qid2->type;
+       return diff;
+}
+
+void quickpanel_list_util_item_del_by_type(Evas_Object *list,
+                               const Elm_Object_Item *refer_item,
+                               qp_item_type_e type)
+{
+       const Elm_Object_Item *start_item = NULL;
+
+       if (!list)
+               return;
+
+       if (refer_item)
+               start_item = refer_item;
+       else
+               start_item = elm_genlist_first_item_get(list);
+
+       while (start_item) {
+               qp_item_data *qid = NULL;
+               const Elm_Object_Item *next = NULL;
+
+               next = elm_genlist_item_next_get(start_item);
+               qid = elm_object_item_data_get(start_item);
+               if (!qid) {
+                       ERR("fail to get qid, continue loop");
+                       continue;
+               }
+
+               if (qid->type > type)
+                       break;
+               else if (qid->type == type)
+                       elm_object_item_del((Elm_Object_Item *)start_item);
+
+               start_item = next;
+       }
+
+       return;
+}
+
+void quickpanel_list_util_item_update_by_type(Evas_Object *list,
+                               Elm_Object_Item *refer_item,
+                               qp_item_type_e type)
+{
+       Elm_Object_Item *start_item = NULL;
+
+       if (!list)
+               return;
+
+       if (refer_item)
+               start_item = refer_item;
+       else
+               start_item = elm_genlist_first_item_get(list);
+
+       while (start_item) {
+               qp_item_data *qid = NULL;
+               Elm_Object_Item *next = NULL;
+
+               next = elm_genlist_item_next_get(start_item);
+               qid = elm_object_item_data_get(start_item);
+               if (!qid) {
+                       ERR("fail to get qid, continue loop");
+                       continue;
+               }
+
+               if (qid->type > type)
+                       break;
+               else if (qid->type == type) {
+                       elm_genlist_item_fields_update(start_item, "*", ELM_GENLIST_ITEM_FIELD_ALL);
+               }
+
+               start_item = next;
+       }
+
+       return;
+}
+
+Elm_Object_Item *quickpanel_list_util_find_item_by_type(Evas_Object *list,
+                               void *data,
+                               Elm_Object_Item *refer_item,
+                               qp_item_type_e type)
+{
+       Elm_Object_Item *start_item = NULL;
+       Elm_Object_Item *found = NULL;
+
+       if (!list)
+               return NULL;
+
+       if (refer_item)
+               start_item = refer_item;
+       else
+               start_item = elm_genlist_first_item_get(list);
+
+       while (start_item) {
+               qp_item_data *qid = NULL;
+               Elm_Object_Item *next = NULL;
+               void *user_data = NULL;
+
+               next = elm_genlist_item_next_get(start_item);
+               qid = elm_object_item_data_get(start_item);
+               if (!qid) {
+                       ERR("fail to get qid, continue loop");
+                       continue;
+               }
+
+               if (qid->type > type)
+                       break;
+               else if (qid->type == type) {
+                       user_data = quickpanel_list_util_item_get_data(qid);
+                       if (user_data == data) {
+                               found = start_item;
+                               break;
+                       }
+               }
+
+               start_item = next;
+       }
+
+       return found;
+}
+
+static int __item_compare(const void *data1, const void *data2)
+{
+       int diff = 0;
+       const Elm_Object_Item *it1 = data1;
+       const qp_item_data *qid1 = NULL;
+       const qp_item_data *qid2 = data2;
+
+       if (!data1) {
+               INFO("data1 is NULL");
+               return -1;
+       }
+
+       if (!data2) {
+               INFO("data2 is NULL");
+               return 1;
+       }
+
+       qid1 = elm_object_item_data_get(it1);
+
+       if (!qid1) {
+               INFO("qid1 is NULL");
+               return -1;
+       }
+
+       diff = qid1->type - qid2->type;
+
+       return diff;
+}
+
+
+Elm_Object_Item *quickpanel_list_util_sort_insert(Evas_Object *list,
+                                       const Elm_Genlist_Item_Class *itc,
+                                       const void *item_data,
+                                       Elm_Object_Item *parent,
+                                       Elm_Genlist_Item_Type type,
+                                       Evas_Smart_Cb func,
+                                       const void *func_data)
+{
+       Elm_Object_Item *it = NULL;
+       Elm_Object_Item *first = NULL;
+
+       retif(!list, NULL, "list is NULL");
+       retif(!itc, NULL, "itc is NULL");
+       retif(!item_data, NULL, "item_data is NULL");
+
+       first = elm_genlist_first_item_get(list);
+       while (first) {
+               if (__item_compare(first, item_data) >= 0)
+                       break;
+
+               first = elm_genlist_item_next_get(first);
+       }
+
+       if (!first)
+               it = elm_genlist_item_append(list, itc, item_data, parent,
+                               type, func, func_data);
+       else
+               it = elm_genlist_item_insert_before(list, itc, item_data,
+                               parent, first, type, func, func_data);
+
+       if (it != NULL) {
+               quickpanel_list_util_add_count((qp_item_data *)item_data);
+       }
+
+       return it;
+}
+
+qp_item_count *quickpanel_list_util_get_item_count(void)
+{
+       return &g_qp_item_count;
+}
+
+void quickpanel_list_util_add_count(qp_item_data *qid)
+{
+       retif(qid == NULL, , "qid is NULL");
+
+       switch(qid->type)
+       {
+               case  QP_ITEM_TYPE_ONGOING_NOTI:
+                       g_qp_item_count.ongoing++;
+                       break;
+               case  QP_ITEM_TYPE_NOTI_GROUP:
+                       g_qp_item_count.group++;
+                       break;
+               case  QP_ITEM_TYPE_NOTI:
+                       g_qp_item_count.noti++;
+                       break;
+               case  QP_ITEM_TYPE_MINICTRL_TOP:
+               case  QP_ITEM_TYPE_MINICTRL_MIDDLE:
+               case  QP_ITEM_TYPE_MINICTRL_LOW:
+                       g_qp_item_count.minicontrol++;
+                       break;
+       }
+
+       DBG("(type:%d)\nnum_ongoing:%d, num_group:%d, num_noti:%d, num_minicontrol:%d"
+                       , qid->type
+                       , g_qp_item_count.ongoing
+                       , g_qp_item_count.group
+                       , g_qp_item_count.noti
+                       , g_qp_item_count.minicontrol);
+}
+
+void quickpanel_list_util_del_count(qp_item_data *qid)
+{
+       retif(qid == NULL, , "qid is NULL");
+
+       quickpanel_list_util_del_count_by_itemtype(qid->type);
+}
+
+void quickpanel_list_util_del_count_by_itemtype(qp_item_type_e type)
+{
+       switch(type)
+       {
+               case  QP_ITEM_TYPE_ONGOING_NOTI:
+                       g_qp_item_count.ongoing = (g_qp_item_count.ongoing <= 0) ? 0 : g_qp_item_count.ongoing - 1;
+                       break;
+               case  QP_ITEM_TYPE_NOTI_GROUP:
+                       g_qp_item_count.group = (g_qp_item_count.group <= 0) ? 0 : g_qp_item_count.group - 1;
+                       break;
+               case  QP_ITEM_TYPE_NOTI:
+                       g_qp_item_count.noti = (g_qp_item_count.noti <= 0) ? 0 : g_qp_item_count.noti - 1;
+                       break;
+               case  QP_ITEM_TYPE_MINICTRL_TOP:
+               case  QP_ITEM_TYPE_MINICTRL_MIDDLE:
+               case  QP_ITEM_TYPE_MINICTRL_LOW:
+                       g_qp_item_count.minicontrol = (g_qp_item_count.minicontrol <= 0) ? 0 : g_qp_item_count.minicontrol - 1;
+                       break;
+       }
+
+       DBG("(type:%d)\nnum_ongoing:%d, num_group:%d, num_noti:%d, num_minicontrol:%d"
+                       , type
+                       , g_qp_item_count.ongoing
+                       , g_qp_item_count.group
+                       , g_qp_item_count.noti
+                       , g_qp_item_count.minicontrol);
+}
diff --git a/daemon/list_util.h b/daemon/list_util.h
new file mode 100755 (executable)
index 0000000..4d6667d
--- /dev/null
@@ -0,0 +1,75 @@
+/*
+ * 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://www.tizenopensource.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 _QP_LIST_UTIL_DEF_
+#define _QP_LIST_UTIL_DEF_
+
+#include <Elementary.h>
+
+typedef enum {
+       QP_ITEM_TYPE_SETTING = 0,
+       QP_ITEM_TYPE_TOGGLE,
+       QP_ITEM_TYPE_ONGOING_NOTI,
+       QP_ITEM_TYPE_MINICTRL_TOP,
+       QP_ITEM_TYPE_MINICTRL_MIDDLE,
+       QP_ITEM_TYPE_MINICTRL_LOW,
+       QP_ITEM_TYPE_NOTI_GROUP,
+       QP_ITEM_TYPE_NOTI,
+} qp_item_type_e;
+
+typedef struct _qp_item_data qp_item_data;
+typedef struct _qp_item_count {
+       int group;
+       int ongoing;
+       int noti;
+       int minicontrol;
+} qp_item_count;
+
+
+qp_item_data *quickpanel_list_util_item_new(qp_item_type_e type, void *data);
+
+void *quickpanel_list_util_item_get_data(qp_item_data *qid);
+
+int quickpanel_list_util_item_compare(const void *data1, const void *data2);
+
+void quickpanel_list_util_item_del_by_type(Evas_Object *list,
+                               const Elm_Object_Item *refer_item,
+                               qp_item_type_e type);
+
+void quickpanel_list_util_item_update_by_type(Evas_Object *list,
+                               Elm_Object_Item *refer_item,
+                               qp_item_type_e type);
+
+Elm_Object_Item *quickpanel_list_util_find_item_by_type(Evas_Object *list,
+                                       void *data,
+                                       Elm_Object_Item *refer_item,
+                                       qp_item_type_e type);
+
+Elm_Object_Item *quickpanel_list_util_sort_insert(Evas_Object *list,
+                                       const Elm_Genlist_Item_Class *itc,
+                                       const void *item_data,
+                                       Elm_Object_Item *parent,
+                                       Elm_Genlist_Item_Type type,
+                                       Evas_Smart_Cb func,
+                                       const void *func_data);
+
+qp_item_count *quickpanel_list_util_get_item_count(void);
+void quickpanel_list_util_add_count(qp_item_data *qid);
+void quickpanel_list_util_del_count(qp_item_data *qid);
+void quickpanel_list_util_del_count_by_itemtype(qp_item_type_e type);
+
+#endif /* _QP_LIST_UTIL_DEF_ */
+
diff --git a/daemon/minictrl/minictrl.c b/daemon/minictrl/minictrl.c
new file mode 100755 (executable)
index 0000000..5a4476e
--- /dev/null
@@ -0,0 +1,389 @@
+/*
+ * 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://www.tizenopensource.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 <glib.h>
+#include <minicontrol-viewer.h>
+#include <minicontrol-monitor.h>
+#include "common.h"
+#include "quickpanel-ui.h"
+#include "list_util.h"
+
+static int quickpanel_minictrl_init(void *data);
+static int quickpanel_minictrl_fini(void *data);
+static int quickpanel_minictrl_get_height(void *data);
+
+QP_Module minictrl = {
+       .name = "minictrl",
+       .init = quickpanel_minictrl_init,
+       .fini = quickpanel_minictrl_fini,
+       .suspend = NULL,
+       .resume = NULL,
+       .hib_enter = NULL,
+       .hib_leave = NULL,
+       .lang_changed = NULL,
+       .refresh = NULL,
+       .get_height = quickpanel_minictrl_get_height,
+};
+
+struct _viewer_item {
+       char *name;
+       unsigned int width;
+       unsigned int height;
+       minicontrol_priority_e priority;
+       Evas_Object *viewer;
+       Elm_Object_Item *it;
+       void *data;
+};
+
+GHashTable *g_prov_table;
+
+static void _viewer_item_free(struct _viewer_item *item)
+{
+       if (!item)
+               return;
+
+       if (item->name)
+               free(item->name);
+
+       if (item->it)
+               elm_object_item_del(item->it);
+
+       if (item->viewer) {
+               evas_object_unref(item->viewer);
+               evas_object_del(item->viewer);
+       }
+
+       free(item);
+}
+
+#if 0
+static Evas_Object *_minictrl_load_viewer(Evas_Object *parent,
+                                       struct _viewer_item *item)
+{
+       Evas_Object *viewer = NULL;
+
+       if (!parent) {
+               ERR("parent is NULL");
+               return NULL;
+       }
+
+       if (!item) {
+               ERR("item is NULL");
+               return NULL;
+       }
+
+       if (!item->name) {
+               ERR("item name is NULL");
+               return NULL;
+       }
+
+       viewer = minicontrol_viewer_add(parent, item->name);
+       if (!viewer) {
+               ERR("fail to create viewer for [%s]", item->name);
+               return NULL;
+       }
+
+       evas_object_size_hint_min_set(viewer, item->width , item->height);
+
+       return viewer;
+}
+#endif
+
+static Evas_Object *_minictrl_gl_get_content(void *data, Evas_Object * obj,
+                                       const char *part)
+{
+       Evas_Object *content = NULL;
+       qp_item_data *qid = NULL;
+       struct _viewer_item *item = NULL;
+
+       retif(data == NULL, NULL, "Invalid parameter!");
+       qid = data;
+
+       item = quickpanel_list_util_item_get_data(qid);
+       retif(!item, NULL, "item is NULL");
+
+       if (strcmp(part, "elm.icon") == 0)
+               content = item->viewer;
+
+       return content;
+}
+
+
+static Eina_Bool _minictrl_gl_get_state(void *data, Evas_Object *obj,
+                                       const char *part)
+{
+       return EINA_FALSE;
+}
+
+static void _minictrl_gl_del(void *data, Evas_Object *obj)
+{
+       if (data) {
+               quickpanel_list_util_del_count(data);
+               free(data);
+       }
+
+       return;
+}
+
+static Elm_Genlist_Item_Class *_minictrl_gl_style_get(void)
+{
+       Elm_Genlist_Item_Class *itc = NULL;
+
+       itc = elm_genlist_item_class_new();
+       if (!itc) {
+               ERR("fail to elm_genlist_item_class_new()");
+               return NULL;
+       }
+
+       itc->item_style = "qp_item/default";
+       itc->func.text_get = NULL;
+       itc->func.content_get = _minictrl_gl_get_content;
+       itc->func.state_get = _minictrl_gl_get_state;
+       itc->func.del = _minictrl_gl_del;
+
+       return itc;
+}
+
+qp_item_type_e _minictrl_priority_to_type(minicontrol_priority_e priority)
+{
+       qp_item_type_e type;
+
+       switch (priority) {
+       case MINICONTROL_PRIORITY_TOP:
+               type = QP_ITEM_TYPE_MINICTRL_TOP;
+               break;
+       case MINICONTROL_PRIORITY_MIDDLE:
+               type = QP_ITEM_TYPE_MINICTRL_MIDDLE;
+               break;
+       case MINICONTROL_PRIORITY_LOW:
+       default:
+               type = QP_ITEM_TYPE_MINICTRL_LOW;
+               break;
+       }
+
+       return type;
+}
+
+static void _minictrl_add(const char *name, unsigned int width,
+                               unsigned int height,
+                               minicontrol_priority_e priority,
+                               void *data)
+{
+       qp_item_data *qid = NULL;
+       Elm_Genlist_Item_Class *itc = NULL;
+       struct _viewer_item *vit = NULL;
+       qp_item_type_e type;
+       struct appdata *ad;
+       Evas_Object *viewer = NULL;
+
+       retif(!name, , "name is NULL");
+       retif(!data, , "data is NULL");
+
+       ad = data;
+       retif(!ad->list, , "list is NULL");
+
+       if (g_prov_table) {
+               struct _viewer_item *found = NULL;
+               found = g_hash_table_lookup(g_prov_table, name);
+
+               if (found) {
+                       ERR("already have it : %s", name);
+                       return;
+               }
+       } else {
+               ERR("g_prov_table is NULL");
+               return;
+       }
+
+       /* elm_plug receives 'server_del' event,
+        * if it repeats connect and disconnect frequently.
+        *
+        */
+       viewer = minicontrol_viewer_add(ad->list, name);
+       if (!viewer) {
+               ERR("fail to add viewer - %s", name);
+               return;
+       }
+       evas_object_ref(viewer);
+       evas_object_size_hint_min_set(viewer, width, height);
+
+       itc = _minictrl_gl_style_get();
+       if (!itc) {
+               ERR("fail to _minictrl_gl_style_get()");
+               evas_object_del(viewer);
+               return;
+       }
+
+       vit = malloc(sizeof(struct _viewer_item));
+       if (!vit) {
+               ERR("fail to alloc vit");
+               evas_object_del(viewer);
+               elm_genlist_item_class_free(itc);
+               return;
+       }
+
+       type = _minictrl_priority_to_type(priority);
+       qid = quickpanel_list_util_item_new(type, vit);
+       if (!qid) {
+               ERR("fail to alloc vit");
+               evas_object_del(viewer);
+               elm_genlist_item_class_free(itc);
+               free(vit);
+               return;
+       }
+       vit->name = strdup(name);
+       vit->width = width;
+       vit->height = height;
+       vit->priority = priority;
+       vit->viewer = viewer;
+       vit->data = data;
+       vit->it = quickpanel_list_util_sort_insert(ad->list, itc, qid, NULL,
+                       ELM_GENLIST_ITEM_NONE, NULL, NULL);
+
+       g_hash_table_insert(g_prov_table, g_strdup(name), vit);
+
+       INFO("success to add %s", name);
+
+       elm_genlist_item_class_free(itc);
+
+       quickpanel_ui_update_height(ad);
+}
+
+static void _minictrl_remove(const char *name, void *data)
+{
+       if (g_prov_table) {
+               if (g_hash_table_remove(g_prov_table, name))
+               {
+                       INFO("success to remove %s", name);
+
+                       retif(data == NULL, , "data is NULL");
+                       quickpanel_ui_update_height(data);
+               }
+               else
+                       WARN("unknown provider name : %s", name);
+       }
+}
+
+static void _minictrl_update(const char *name, unsigned int width,
+                               unsigned int height, void *data)
+{
+       struct _viewer_item *found = NULL;
+       struct appdata *ad = NULL;
+
+       if (!g_prov_table)
+               return;
+
+       retif(!data, , "data is NULL");
+       ad = data;
+
+       found = g_hash_table_lookup(g_prov_table, name);
+
+       if (!found) {
+               WARN("unknown provider name : %s", name);
+               return;
+       }
+
+       found->width = width;
+       found->height = height;
+
+       if (found->viewer)
+               evas_object_size_hint_min_set(found->viewer, width , height);
+
+       if (found->it) {
+               elm_genlist_item_update(found->it);
+               quickpanel_ui_update_height(ad);
+       }
+}
+
+static void _mctrl_monitor_cb(minicontrol_action_e action,
+                               const char *name, unsigned int width,
+                               unsigned int height,
+                               minicontrol_priority_e priority,
+                               void *data)
+{
+       retif(!data, , "data is NULL");
+       retif(!name, , "name is NULL");
+
+       switch (action) {
+       case MINICONTROL_ACTION_START:
+               _minictrl_add(name, width, height, priority, data);
+               break;
+       case MINICONTROL_ACTION_RESIZE:
+               _minictrl_update(name, width, height, data);
+               break;
+       case MINICONTROL_ACTION_STOP:
+               _minictrl_remove(name, data);
+               break;
+       default:
+               break;
+       }
+}
+
+static int quickpanel_minictrl_init(void *data)
+{
+       minicontrol_error_e ret;
+
+       retif(!data, QP_FAIL, "Invalid parameter!");
+
+       g_prov_table = g_hash_table_new_full(g_str_hash, g_str_equal,
+                                       (GDestroyNotify)g_free,
+                                       (GDestroyNotify)_viewer_item_free);
+
+       ret = minicontrol_monitor_start(_mctrl_monitor_cb, data);
+       if (ret != MINICONTROL_ERROR_NONE) {
+               ERR("fail to minicontrol_monitor_start()- %d", ret);
+               return QP_FAIL;
+       }
+
+       return QP_OK;
+}
+
+static int quickpanel_minictrl_fini(void *data)
+{
+       minicontrol_error_e ret;
+       ret = minicontrol_monitor_stop();
+       if (ret != MINICONTROL_ERROR_NONE)
+               ERR("fail to minicontrol_monitor_stop()- %d", ret);
+
+       if (g_prov_table) {
+               g_hash_table_remove_all(g_prov_table);
+               g_prov_table = NULL;
+       }
+
+       return QP_OK;
+}
+
+
+static void _quickpanel_minictrl_hf_sum_height(gpointer key, gpointer value, gpointer data)
+{
+       struct _viewer_item *item = value;
+
+       if (item != NULL && data != NULL) {
+               *((unsigned int *)data) += item->height;
+       }
+}
+
+static int quickpanel_minictrl_get_height(void *data)
+{
+       unsigned int height_minictrl = 0;
+
+       if (g_prov_table != NULL) {
+               g_hash_table_foreach(g_prov_table, _quickpanel_minictrl_hf_sum_height, &height_minictrl);
+       }
+
+       return height_minictrl;
+}
index 7ed45dac6e99d48a13081bc297f46d5fae23af57..c250957b99a5cf1d0dabe51f4efd08a444250691 100755 (executable)
@@ -14,7 +14,6 @@
  * limitations under the License.
  */
 
-#include <appcore-efl.h>
 #include "common.h"
 #include "modules.h"
 
@@ -25,6 +24,9 @@
   *****************************************************************/
 /* searchbar */
 /* extern QP_Module searchbar; */
+#ifdef QP_MINICTRL_ENABLE
+extern QP_Module minictrl;
+#endif /* QP_MINICTRL_ENABLE */
 /* notification */
 extern QP_Module noti;
 extern QP_Module ticker;
@@ -32,6 +34,9 @@ extern QP_Module ticker;
 extern QP_Module idletxt;
 
 static QP_Module *modules[] = {
+#ifdef QP_MINICTRL_ENABLE
+       &minictrl,
+#endif /* QP_MINICTRL_ENABLE */
        &noti,
        &ticker,
        &idletxt
@@ -44,9 +49,8 @@ int init_modules(void *data)
        retif(data == NULL, QP_FAIL, "Invalid parameter!");
 
        for (i = 0; i < sizeof(modules) / sizeof(modules[0]); i++) {
-               if (modules[i]->init) {
+               if (modules[i]->init)
                        modules[i]->init(data);
-               }
        }
 
        return QP_OK;
@@ -59,9 +63,8 @@ int fini_modules(void *data)
        retif(data == NULL, QP_FAIL, "Invalid parameter!");
 
        for (i = 0; i < sizeof(modules) / sizeof(modules[0]); i++) {
-               if (modules[i]->fini) {
+               if (modules[i]->fini)
                        modules[i]->fini(data);
-               }
        }
 
        return QP_OK;
@@ -74,9 +77,8 @@ int suspend_modules(void *data)
        retif(data == NULL, QP_FAIL, "Invalid parameter!");
 
        for (i = 0; i < sizeof(modules) / sizeof(modules[0]); i++) {
-               if (modules[i]->suspend) {
+               if (modules[i]->suspend)
                        modules[i]->suspend(data);
-               }
        }
 
        return QP_OK;
@@ -89,9 +91,8 @@ int resume_modules(void *data)
        retif(data == NULL, QP_FAIL, "Invalid parameter!");
 
        for (i = 0; i < sizeof(modules) / sizeof(modules[0]); i++) {
-               if (modules[i]->resume) {
+               if (modules[i]->resume)
                        modules[i]->resume(data);
-               }
        }
 
        return QP_OK;
@@ -104,9 +105,8 @@ int hib_enter_modules(void *data)
        retif(data == NULL, QP_FAIL, "Invalid parameter!");
 
        for (i = 0; i < sizeof(modules) / sizeof(modules[0]); i++) {
-               if (modules[i]->hib_enter) {
+               if (modules[i]->hib_enter)
                        modules[i]->hib_enter(data);
-               }
        }
 
        return QP_OK;
@@ -119,9 +119,8 @@ int hib_leave_modules(void *data)
        retif(data == NULL, QP_FAIL, "Invalid parameter!");
 
        for (i = 0; i < sizeof(modules) / sizeof(modules[0]); i++) {
-               if (modules[i]->hib_leave) {
+               if (modules[i]->hib_leave)
                        modules[i]->hib_leave(data);
-               }
        }
 
        return QP_OK;
@@ -136,23 +135,21 @@ int hib_leave_modules(void *data)
 void lang_change_modules(void *data)
 {
        int i;
-       retif(data == NULL,, "Invalid parameter!");
+       retif(data == NULL, , "Invalid parameter!");
 
        for (i = 0; i < sizeof(modules) / sizeof(modules[0]); i++) {
-               if (modules[i]->lang_changed) {
+               if (modules[i]->lang_changed)
                        modules[i]->lang_changed(data);
-               }
        }
 }
 
 void refresh_modules(void *data)
 {
        int i;
-       retif(data == NULL,, "Invalid parameter!");
+       retif(data == NULL, , "Invalid parameter!");
 
        for (i = 0; i < sizeof(modules) / sizeof(modules[0]); i++) {
-               if (modules[i]->refresh) {
+               if (modules[i]->refresh)
                        modules[i]->refresh(data);
-               }
        }
 }
old mode 100644 (file)
new mode 100755 (executable)
index e98ec8e..432fd6a
@@ -20,6 +20,8 @@
 #include <time.h>
 #include <vconf.h>
 #include <appcore-common.h>
+#include <app_service.h>
+#include <runtime_info.h>
 #include <Ecore_X.h>
 
 #include <unicode/uloc.h>
 
 #include "quickpanel-ui.h"
 #include "common.h"
+#include "list_util.h"
+#include "quickpanel_theme_def.h"
+
+#ifndef VCONFKEY_QUICKPANEL_STARTED
+#define VCONFKEY_QUICKPANEL_STARTED "memory/private/"PACKAGE_NAME"/started"
+#endif /* VCONFKEY_QUICKPANEL_STARTED */
 
 #define QP_DEFAULT_ICON        ICONDIR"/quickpanel_icon_default.png"
 #define QP_NOTI_DAY_DEC        (24 * 60 * 60)
 
-static int suspended = 0;
+#define QP_NOTI_ONGOING_DBUS_PATH      "/dbus/signal"
+#define QP_NOTI_ONGOING_DBUS_INTERFACE "notification.ongoing"
+
+static int suspended;
 
-static notification_list_h g_notification_list = NULL;
-static notification_list_h g_notification_ongoing_list = NULL;
+static notification_list_h g_notification_list;
+static notification_list_h g_notification_ongoing_list;
 
 static Elm_Genlist_Item_Class *itc_noti;
+static Elm_Genlist_Item_Class *itc_ongoing;
 static Elm_Genlist_Item_Class *g_itc;
 
-static Evas_Object *g_window = NULL;
+static Evas_Object *g_window;
+
+static Elm_Object_Item *noti_group;
+static Elm_Object_Item *ongoing_first;
+static Elm_Object_Item *noti_first;
 
 static int quickpanel_noti_init(void *data);
 static int quickpanel_noti_fini(void *data);
 static int quickpanel_noti_suspend(void *data);
 static int quickpanel_noti_resume(void *data);
 static void quickpanel_noti_lang_changed(void *data);
+static int quickpanel_noti_get_height(void *data);
 
 QP_Module noti = {
        .name = "noti",
@@ -58,10 +75,14 @@ QP_Module noti = {
        .suspend = quickpanel_noti_suspend,
        .resume = quickpanel_noti_resume,
        .lang_changed = quickpanel_noti_lang_changed,
+       .hib_enter = NULL,
+       .hib_leave = NULL,
+       .refresh = NULL,
+       .get_height = quickpanel_noti_get_height,
 };
 
 static void _quickpanel_noti_clear_clicked_cb(void *data, Evas_Object * obj,
-                                             void *event_info)
+                                       void *event_info)
 {
        int count = 0;
        notification_error_e noti_err = NOTIFICATION_ERROR_NONE;
@@ -71,9 +92,8 @@ static void _quickpanel_noti_clear_clicked_cb(void *data, Evas_Object * obj,
                                   NOTIFICATION_GROUP_ID_NONE,
                                   NOTIFICATION_PRIV_ID_NONE, &count);
 
-       if (noti_err == NOTIFICATION_ERROR_NONE && count > 0) {
+       if (noti_err == NOTIFICATION_ERROR_NONE && count > 0)
                notifiation_clear(NOTIFICATION_TYPE_NOTI);
-       }
 
        DBG("Clear Clicked : noti_err(%d), count(%d)", noti_err, count);
 }
@@ -90,35 +110,34 @@ static char *_quickpanel_noti_get_progress(notification_h noti, char *buf,
        notification_get_progress(noti, &percentage);
 
        if (percentage < 1 && percentage > 0) {
-               if (snprintf(buf, buf_len, "%d%%", (int)(percentage * 100)) <=
-                   0) {
+               if (snprintf(buf, buf_len, "%d%%", (int)(percentage * 100))
+                       <= 0)
                        return NULL;
-               }
+
                return buf;
        } else if (size > 0) {
                if (size > (1 << 30)) {
-                       if (snprintf
-                           (buf, buf_len, "%.1lfGB",
-                            size / 1000000000.0) <= 0) {
+                       if (snprintf(buf, buf_len, "%.1lfGB",
+                               size / 1000000000.0) <= 0)
                                return NULL;
-                       }
+
                        return buf;
                } else if (size > (1 << 20)) {
-                       if (snprintf(buf, buf_len, "%.1lfMB", size / 1000000.0)
-                           <= 0) {
+                       if (snprintf(buf, buf_len, "%.1lfMB",
+                               size / 1000000.0) <= 0)
                                return NULL;
-                       }
+
                        return buf;
                } else if (size > (1 << 10)) {
-                       if (snprintf(buf, buf_len, "%.1lfKB", size / 1000.0) <=
-                           0) {
+                       if (snprintf(buf, buf_len, "%.1lfKB",
+                               size / 1000.0) <= 0)
                                return NULL;
-                       }
+
                        return buf;
                } else {
-                       if (snprintf(buf, buf_len, "%lfB", size) <= 0) {
+                       if (snprintf(buf, buf_len, "%lfB", size) <= 0)
                                return NULL;
-                       }
+
                        return buf;
                }
        }
@@ -232,8 +251,10 @@ static notification_h _quickpanel_noti_update_item_content(const char *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);
+                               notification_set_text(noti,
+                                       NOTIFICATION_TEXT_TYPE_CONTENT,
+                                       content, NULL,
+                                       NOTIFICATION_VARIABLE_TYPE_NONE);
                                return noti;
                        }
                        head = notification_list_get_next(head);
@@ -249,8 +270,10 @@ static notification_h _quickpanel_noti_update_item_content(const char *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);
+                               notification_set_text(noti,
+                                       NOTIFICATION_TEXT_TYPE_CONTENT,
+                                       content, NULL,
+                                       NOTIFICATION_VARIABLE_TYPE_NONE);
                                return noti;
                        }
                        head = notification_list_get_next(head);
@@ -263,24 +286,30 @@ static notification_h _quickpanel_noti_update_item_content(const char *pkgname,
 static void _quickpanel_noti_update_progressbar(void *data,
                                                notification_h update_noti)
 {
-       Evas_Object *eo = (Evas_Object *) data;
-       Elm_Object_Item *head = NULL;
-       Elm_Object_Item *it = NULL;
-       notification_h noti = NULL;
+       struct appdata *ad = NULL;
+       Elm_Object_Item *found = NULL;
 
-       head = elm_genlist_first_item_get(eo);
-       retif(head == NULL,, "no first item in genlist");
+       retif(!data, , "data is NULL");
+       ad = data;
 
-       for (it = head; it != NULL; it = elm_genlist_item_next_get(it)) {
-               noti = elm_object_item_data_get(it);
-               if (noti == update_noti || update_noti == NULL) {
-                       elm_genlist_item_update(it);
-               }
-       }
+       retif(!ad->list, , "ad->list is NULL");
+
+       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);
+
+       retif(!found, , "fail to find %p related gl item", update_noti);
+
+       elm_genlist_item_fields_update(found, "*", ELM_GENLIST_ITEM_FIELD_ALL);
 }
 
 static void _quickpanel_noti_item_progress_update_cb(void *data,
-                                                    DBusMessage * msg)
+                                               DBusMessage *msg)
 {
        DBusError err;
        char *pkgname = 0;
@@ -288,22 +317,30 @@ static void _quickpanel_noti_item_progress_update_cb(void *data,
        double progress = 0;
        notification_h noti = NULL;
 
-       retif(data == NULL || msg == NULL,, "Invalid parameter!");
+       retif(data == NULL || msg == NULL, , "Invalid parameter!");
 
        dbus_error_init(&err);
        dbus_message_get_args(msg, &err,
-                             DBUS_TYPE_STRING, &pkgname,
-                             DBUS_TYPE_INT32, &priv_id,
-                             DBUS_TYPE_DOUBLE, &progress, DBUS_TYPE_INVALID);
+                       DBUS_TYPE_STRING, &pkgname,
+                       DBUS_TYPE_INT32, &priv_id,
+                       DBUS_TYPE_DOUBLE, &progress,
+                       DBUS_TYPE_INVALID);
+
+       if (dbus_error_is_set(&err)) {
+               ERR("dbus err: %s", err.message);
+               dbus_error_free(&err);
+               return;
+       }
 
        /* check item on the list */
-       noti =
-           _quickpanel_noti_update_item_progress(pkgname, priv_id, progress);
-       retif(noti == NULL,, "Can not found noti data.");
+       noti = _quickpanel_noti_update_item_progress(pkgname,
+                                               priv_id, progress);
+       retif(noti == NULL, , "Can not found noti data.");
 
-       if (!suspended) {
+       DBG("pkgname[%s], priv_id[%d], progress[%lf]",
+                               pkgname, priv_id, progress);
+       if (!suspended)
                _quickpanel_noti_update_progressbar(data, noti);
-       }
 }
 
 static void _quickpanel_noti_item_size_update_cb(void *data, DBusMessage * msg)
@@ -314,24 +351,32 @@ static void _quickpanel_noti_item_size_update_cb(void *data, DBusMessage * msg)
        double size = 0;
        notification_h noti = NULL;
 
-       retif(data == NULL || msg == NULL,, "Invalid parameter!");
+       retif(data == NULL || msg == NULL, , "Invalid parameter!");
 
        dbus_error_init(&err);
        dbus_message_get_args(msg, &err,
-                             DBUS_TYPE_STRING, &pkgname,
-                             DBUS_TYPE_INT32, &priv_id,
-                             DBUS_TYPE_DOUBLE, &size, DBUS_TYPE_INVALID);
+                       DBUS_TYPE_STRING, &pkgname,
+                       DBUS_TYPE_INT32, &priv_id,
+                       DBUS_TYPE_DOUBLE, &size, DBUS_TYPE_INVALID);
+       if (dbus_error_is_set(&err)) {
+               ERR("dbus err: %s", err.message);
+               dbus_error_free(&err);
+               return;
+       }
 
        /* check item on the list */
        noti = _quickpanel_noti_update_item_size(pkgname, priv_id, size);
-       retif(noti == NULL,, "Can not found noti data.");
+       retif(noti == NULL, , "Can not found noti data.");
 
-       if (!suspended) {
+       DBG("pkgname[%s], priv_id[%d], progress[%lf]",
+                               pkgname, priv_id, size);
+
+       if (!suspended)
                _quickpanel_noti_update_progressbar(data, noti);
-       }
 }
 
-static void _quickpanel_noti_item_content_update_cb(void *data, DBusMessage * msg)
+static void _quickpanel_noti_item_content_update_cb(void *data,
+                                               DBusMessage *msg)
 {
        DBusError err;
        char *pkgname = NULL;
@@ -339,23 +384,29 @@ static void _quickpanel_noti_item_content_update_cb(void *data, DBusMessage * ms
        char *content = NULL;
        notification_h noti = NULL;
 
-       retif(data == NULL || msg == NULL,, "Invalid parameter!");
+       retif(data == NULL || msg == NULL, , "Invalid parameter!");
 
        dbus_error_init(&err);
        dbus_message_get_args(msg, &err,
-                             DBUS_TYPE_STRING, &pkgname,
-                             DBUS_TYPE_INT32, &priv_id,
-                             DBUS_TYPE_STRING, &content, DBUS_TYPE_INVALID);
+                       DBUS_TYPE_STRING, &pkgname,
+                       DBUS_TYPE_INT32, &priv_id,
+                       DBUS_TYPE_STRING, &content, DBUS_TYPE_INVALID);
+
+       if (dbus_error_is_set(&err)) {
+               ERR("dbus err: %s", err.message);
+               dbus_error_free(&err);
+               return;
+       }
 
-       INFO("content update : %s(%d) : %s", pkgname, priv_id, content);
+       DBG("pkgname[%s], priv_id[%d], content[%s]",
+                               pkgname, priv_id, content);
 
        /* check item on the list */
        noti = _quickpanel_noti_update_item_content(pkgname, priv_id, content);
-       retif(noti == NULL,, "Can not found noti data.");
+       retif(noti == NULL, , "Can not found noti data.");
 
-       if (!suspended) {
+       if (!suspended)
                _quickpanel_noti_update_progressbar(data, noti);
-       }
 }
 
 static char *_quickpanel_noti_get_time(time_t t, char *buf, int buf_len)
@@ -372,7 +423,7 @@ static char *_quickpanel_noti_get_time(time_t t, char *buf, int buf_len)
        const char *locale;
        const char customSkeleton[] = UDAT_YEAR_NUM_MONTH_DAY;
        char bf1[32] = { 0, };
-       enum appcore_time_format timeformat;
+       bool is_24hour_enabled = FALSE;
 
        struct tm loc_time;
        time_t today, yesterday;
@@ -394,10 +445,11 @@ static char *_quickpanel_noti_get_time(time_t t, char *buf, int buf_len)
                ret = snprintf(buf, buf_len, _S("IDS_COM_BODY_YESTERDAY"));
        } else if (t < yesterday) {
                /* set UDate  from time_t */
-               date = (UDate) t *1000;
+               date = (UDate) t * 1000;
 
                /* get default locale  */
-               uloc_setDefault(__secure_getenv("LC_TIME"), &status);   /* for thread saftey  */
+               /* for thread saftey  */
+               uloc_setDefault(__secure_getenv("LC_TIME"), &status);
                locale = uloc_getDefault();
 
                /* open datetime pattern generator */
@@ -449,17 +501,17 @@ static char *_quickpanel_noti_get_time(time_t t, char *buf, int buf_len)
 
                ret = snprintf(buf, buf_len, "%s", bf1);
        } else {
-               ret = appcore_get_timeformat(&timeformat);
-               if (ret == 0 && timeformat == APPCORE_TIME_FORMAT_24) {
+               ret = runtime_info_get_value_bool(
+                                       RUNTIME_INFO_KEY_24HOUR_CLOCK_FORMAT_ENABLED, &is_24hour_enabled);
+               if (ret == RUNTIME_INFO_ERROR_NONE && is_24hour_enabled == TRUE) {
                        ret = strftime(buf, buf_len, "%H:%M", &loc_time);
                } else {
                        strftime(bf1, sizeof(bf1), "%l:%M", &loc_time);
 
-                       if (loc_time.tm_hour >= 0 && loc_time.tm_hour < 12) {
+                       if (loc_time.tm_hour >= 0 && loc_time.tm_hour < 12)
                                ret = snprintf(buf, buf_len, "%s%s", bf1, "AM");
-                       } else {
+                       else
                                ret = snprintf(buf, buf_len, "%s%s", bf1, "PM");
-                       }
                }
 
        }
@@ -467,10 +519,11 @@ static char *_quickpanel_noti_get_time(time_t t, char *buf, int buf_len)
        return ret <= 0 ? NULL : buf;
 }
 
-static Evas_Object *_quickpanel_noti_gl_get_content(void *data, Evas_Object * obj,
-                                                const char *part)
+static Evas_Object *_quickpanel_noti_gl_get_content(void *data,
+                                       Evas_Object *obj, const char *part)
 {
-       notification_h noti = (notification_h) data;
+       qp_item_data *qid = NULL;
+       notification_h noti = NULL;
        Evas_Object *ic = NULL;
        char *icon_path = NULL;
        char *thumbnail_path = NULL;
@@ -479,7 +532,11 @@ static Evas_Object *_quickpanel_noti_gl_get_content(void *data, Evas_Object * ob
        double percentage = 0.0;
        notification_type_e type = NOTIFICATION_TYPE_NONE;
 
-       retif(noti == NULL, NULL, "Invalid parameter!");
+       retif(!data, NULL, "data is NULL");
+       qid = data;
+
+       noti = quickpanel_list_util_item_get_data(qid);
+       retif(noti == NULL, NULL, "noti is NULL");
 
        if (!strncmp
            (part, "elm.swallow.progress", strlen("elm.swallow.progress"))) {
@@ -490,9 +547,8 @@ static Evas_Object *_quickpanel_noti_gl_get_content(void *data, Evas_Object * ob
 
                        if (percentage > 0 && percentage <= 1) {
                                ic = elm_progressbar_add(obj);
-                               if (ic == NULL) {
+                               if (ic == NULL)
                                        return NULL;
-                               }
 
                                elm_object_style_set(ic, "list_progress");
                                elm_progressbar_value_set(ic, percentage);
@@ -500,9 +556,9 @@ static Evas_Object *_quickpanel_noti_gl_get_content(void *data, Evas_Object * ob
                                elm_progressbar_pulse(ic, EINA_FALSE);
                        } else if (size > 0) {
                                ic = elm_progressbar_add(obj);
-                               if (ic == NULL) {
+                               if (ic == NULL)
                                        return NULL;
-                               }
+
                                elm_object_style_set(ic, "pending_list");
                                elm_progressbar_horizontal_set(ic, EINA_TRUE);
                                elm_progressbar_pulse(ic, EINA_TRUE);
@@ -520,30 +576,25 @@ static Evas_Object *_quickpanel_noti_gl_get_content(void *data, Evas_Object * ob
 
        if (!strncmp
            (part, "elm.swallow.thumbnail", strlen("elm.swallow.thumbnail"))) {
-               if (thumbnail_path == NULL) {
+               if (thumbnail_path == NULL)
                        ret_path = icon_path;
-               } else {
+               else
                        ret_path = thumbnail_path;
-               }
 
                elm_icon_resizable_set(ic, EINA_FALSE, EINA_TRUE);
 
                if (ret_path == NULL
-                   || (elm_icon_file_set(ic, ret_path, NULL) == EINA_FALSE)) {
+                   || (elm_icon_file_set(ic, ret_path, NULL) == EINA_FALSE))
                        elm_icon_file_set(ic, QP_DEFAULT_ICON, NULL);
-               }
-       } else
-           if (!strncmp(part, "elm.swallow.icon", strlen("elm.swallow.icon")))
-       {
-               if (thumbnail_path == NULL) {
+       } else if (!strncmp(part, "elm.swallow.icon",
+                       strlen("elm.swallow.icon"))) {
+               if (thumbnail_path == NULL)
                        ret_path = NULL;
-               } else {
+               else
                        ret_path = icon_path;
-               }
 
-               if (ret_path != NULL) {
+               if (ret_path != NULL)
                        elm_icon_file_set(ic, ret_path, NULL);
-               }
        }
 
        return ic;
@@ -552,32 +603,31 @@ static Evas_Object *_quickpanel_noti_gl_get_content(void *data, Evas_Object * ob
 static char *_quickpanel_noti_gl_get_text(void *data, Evas_Object * obj,
                                           const char *part)
 {
-       notification_h noti = (notification_h) data;
+       qp_item_data *qid = NULL;
+       notification_h noti = NULL;
        notification_error_e noti_err = NOTIFICATION_ERROR_NONE;
        char *text = NULL;
-       char *str = NULL;
-       char *loc_str = NULL;
-       char *get_loc_str = NULL;
        char *domain = NULL;
        char *dir = NULL;
-       char *temp = NULL;
        char *pkgname = NULL;
        char *caller_pkgname = NULL;
-       int group_id = 0, priv_id = 0, count = 0, unread_count = 0, temp_count;
+       int group_id = 0, priv_id = 0, count = 0;
        char buf[128] = { 0, };
        time_t time;
        notification_type_e type = NOTIFICATION_TYPE_NONE;
-       notification_count_display_type_e count_display =
-           NOTIFICATION_COUNT_DISPLAY_TYPE_NONE;
 
-       retif(noti == NULL, NULL, "Invalid parameter!");
+       retif(!data, NULL, "data is NULL");
+       qid = data;
+
+       noti = quickpanel_list_util_item_get_data(qid);
+       retif(noti == NULL, NULL, "noti is NULL");
 
-       // Set text domain
+       /* Set text domain */
        notification_get_text_domain(noti, &domain, &dir);
-       if (domain != NULL && dir != NULL) {
+       if (domain != NULL && dir != NULL)
                bindtextdomain(domain, dir);
-       }
-       // Get pkgname & id
+
+       /* Get pkgname & id */
        notification_get_pkgname(noti, &pkgname);
        notification_get_application(noti, &caller_pkgname);
        notification_get_id(noti, &group_id, &priv_id);
@@ -586,24 +636,69 @@ static char *_quickpanel_noti_gl_get_text(void *data, Evas_Object * obj,
        if (!strcmp(part, "elm.text.title")) {
                notification_get_count(type, pkgname,
                                       group_id, priv_id, &count);
+               if (count > 1) {
+                       /* Multi event */
+                       noti_err = notification_get_text(noti,
+                                       NOTIFICATION_TEXT_TYPE_GROUP_CONTENT,
+                                       &text);
 
+                       if (noti_err == NOTIFICATION_ERROR_NONE && text == NULL) {
+                               text = NULL;
+                       } else {
+                               noti_err = notification_get_text(noti,
+                                               NOTIFICATION_TEXT_TYPE_GROUP_TITLE,
+                                               &text);
+                               if (noti_err != NOTIFICATION_ERROR_NONE)
+                                       text = NULL;
+                       }
+               } else {
+                       /* Single event */
+                       noti_err = notification_get_text(noti,
+                                       NOTIFICATION_TEXT_TYPE_CONTENT,
+                                       &text);
+
+                       if (noti_err == NOTIFICATION_ERROR_NONE && text == NULL) {
+                               text = NULL;
+                       } else {
+                               noti_err = notification_get_text(noti,
+                                               NOTIFICATION_TEXT_TYPE_TITLE,
+                                               &text);
+                               if (noti_err != NOTIFICATION_ERROR_NONE)
+                                       text = NULL;
+                       }
+               }
+       } else if (!strcmp(part, "elm.text.title.only")) {
+               notification_get_count(type, pkgname,
+                                      group_id, priv_id, &count);
                if (count > 1) {
                        /* Multi event */
-                       noti_err =
-                           notification_get_text(noti,
-                                                 NOTIFICATION_TEXT_TYPE_GROUP_TITLE,
-                                                 &text);
-                       if (noti_err != NOTIFICATION_ERROR_NONE) {
+                       noti_err = notification_get_text(noti,
+                                       NOTIFICATION_TEXT_TYPE_GROUP_CONTENT,
+                                       &text);
+
+                       if (noti_err != NOTIFICATION_ERROR_NONE || text != NULL) {
                                text = NULL;
+                       } else {
+                               noti_err = notification_get_text(noti,
+                                               NOTIFICATION_TEXT_TYPE_GROUP_TITLE,
+                                               &text);
+                               if (noti_err != NOTIFICATION_ERROR_NONE)
+                                       text = NULL;
                        }
                } else {
                        /* Single event */
-                       noti_err =
-                           notification_get_text(noti,
-                                                 NOTIFICATION_TEXT_TYPE_TITLE,
-                                                 &text);
-                       if (noti_err != NOTIFICATION_ERROR_NONE) {
+                       noti_err = notification_get_text(noti,
+                                       NOTIFICATION_TEXT_TYPE_CONTENT,
+                                       &text);
+                       DBG("result:%d, %x", noti_err, text);
+                       if (noti_err != NOTIFICATION_ERROR_NONE || text != NULL) {
                                text = NULL;
+                       } else {
+                               noti_err = notification_get_text(noti,
+                                               NOTIFICATION_TEXT_TYPE_TITLE,
+                                               &text);
+                               if (noti_err != NOTIFICATION_ERROR_NONE)
+                                       text = NULL;
                        }
                }
        } else if (!strcmp(part, "elm.text.content")) {
@@ -612,80 +707,200 @@ static char *_quickpanel_noti_gl_get_text(void *data, Evas_Object * obj,
 
                if (count > 1) {
                        /* Multi event */
-                       noti_err =
-                           notification_get_text(noti,
-                                                 NOTIFICATION_TEXT_TYPE_GROUP_CONTENT,
-                                                 &text);
-                       if (noti_err != NOTIFICATION_ERROR_NONE) {
+                       noti_err = notification_get_text(noti,
+                                       NOTIFICATION_TEXT_TYPE_GROUP_CONTENT,
+                                       &text);
+                       if (noti_err != NOTIFICATION_ERROR_NONE)
                                text = NULL;
-                       }
 
                        if (text == NULL) {
                                /* Default string */
-                               if (!strcmp
-                                   (caller_pkgname, "org.tizen.phone")) {
-                                       snprintf(buf, sizeof(buf), "%d %s",
-                                                count,
-                                                _S("IDS_COM_POP_MISSED_CALLS"));
-                               } else
-                                   if (!strcmp
-                                       (caller_pkgname,
-                                        "org.tizen.message")) {
-                                       snprintf(buf, sizeof(buf), "%d %s",
-                                                count,
-                                                _S("IDS_COM_POP_NEW_MESSAGES"));
-                               }/* else {
+                               if (!strcmp(caller_pkgname,
+                                        VENDOR".message")) {
                                        snprintf(buf, sizeof(buf), "%d %s",
-                                                count,
-                                                _S("IDS_COM_POP_MISSED_EVENT"));
-                               }*/
-                               text = buf;
+                                               count,
+                                               _S("IDS_COM_POP_NEW_MESSAGES"));
+                                       text = buf;
+                               }
                        }
                } else {
                        /* Single event */
-                       noti_err =
-                           notification_get_text(noti,
-                                                 NOTIFICATION_TEXT_TYPE_CONTENT,
-                                                 &text);
-                       if (noti_err != NOTIFICATION_ERROR_NONE) {
+                       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.time")) {
+               if (type == NOTIFICATION_TYPE_ONGOING)
+                       text = _quickpanel_noti_get_progress(noti, buf,
+                                                         sizeof(buf));
+               else {
+                       notification_get_count(type, pkgname,
+                                              group_id, priv_id, &count);
+
+                       if (count <= 1) {
+                               notification_get_time(noti, &time);
+
+                               if ((int)time > 0)
+                                       text = _quickpanel_noti_get_time(time, buf,
+                                                                         sizeof(buf));
+                               else {
+                                       notification_get_insert_time(noti, &time);
+                                       text = _quickpanel_noti_get_time(time, buf,
+                                                                         sizeof(buf));
+                               }
                        }
+               }
+       }
+
+       if (text != NULL)
+               return strdup(text);
+
+       return NULL;
+}
+
+static char *_quickpanel_ongoing_noti_gl_get_text(void *data, Evas_Object * obj,
+                                          const char *part)
+{
+       qp_item_data *qid = NULL;
+       notification_h noti = NULL;
+       notification_error_e noti_err = NOTIFICATION_ERROR_NONE;
+       char *text = NULL;
+       char *domain = NULL;
+       char *dir = NULL;
+       char *pkgname = NULL;
+       char *caller_pkgname = NULL;
+       int group_id = 0, priv_id = 0, count = 0;
+       char buf[128] = { 0, };
+       time_t time;
+       notification_type_e type = NOTIFICATION_TYPE_NONE;
+       double size = 0.0;
+       double percentage = 0.0;
+       int isProgressBarEnabled = 1;
+
+       retif(!data, NULL, "data is NULL");
+       qid = data;
+
+       noti = quickpanel_list_util_item_get_data(qid);
+       retif(noti == NULL, NULL, "noti is NULL");
+
+       /* Set text domain */
+       notification_get_text_domain(noti, &domain, &dir);
+       if (domain != NULL && dir != NULL)
+               bindtextdomain(domain, dir);
+
+       /* Get pkgname & id */
+       notification_get_pkgname(noti, &pkgname);
+       notification_get_application(noti, &caller_pkgname);
+       notification_get_id(noti, &group_id, &priv_id);
+       notification_get_type(noti, &type);
+       notification_get_size(noti, &size);
+       notification_get_progress(noti, &percentage);
+
+       DBG("percentage:%f size:%f", percentage, size);
+
+       if (percentage <= 0.0 && size <= 0.0) {
+               isProgressBarEnabled = 0;
+       }
+
+       if (!strcmp(part, "elm.text.title")) {
+               notification_get_count(type, pkgname,
+                                      group_id, priv_id, &count);
+               if (count > 1) {
+                       /* Multi event */
+                       noti_err = notification_get_text(noti,
+                                       NOTIFICATION_TEXT_TYPE_GROUP_TITLE,
+                                       &text);
+                       if (noti_err != NOTIFICATION_ERROR_NONE)
+                               text = NULL;
+               } else {
+                       /* Single event */
+                       noti_err = notification_get_text(noti,
+                                                                       NOTIFICATION_TEXT_TYPE_TITLE,
+                                                                       &text);
+                       if (noti_err != NOTIFICATION_ERROR_NONE)
+                               text = NULL;
+               }
+       } else if (!strcmp(part, "elm.text.content")) {
+
+               if (isProgressBarEnabled == 0)
+                       return NULL;
+
+               notification_get_count(type, pkgname,
+                                      group_id, priv_id, &count);
+
+               if (count > 1) {
+                       /* Multi event */
+                       noti_err = notification_get_text(noti,
+                                       NOTIFICATION_TEXT_TYPE_GROUP_CONTENT,
+                                       &text);
+                       if (noti_err != NOTIFICATION_ERROR_NONE)
+                               text = NULL;
 
-                       /* Default string */
                        if (text == NULL) {
-                               if (!strcmp
-                                   (caller_pkgname, "org.tizen.phone")) {
-                                       snprintf(buf, sizeof(buf), "%s",
-                                                _S("IDS_COM_POP_MISSED_CALL"));
+                               /* Default string */
+                               if (!strcmp(caller_pkgname,
+                                        VENDOR".message")) {
+                                       snprintf(buf, sizeof(buf), "%d %s",
+                                               count,
+                                               _S("IDS_COM_POP_NEW_MESSAGES"));
+                                       text = buf;
                                }
-                               text = buf;
                        }
-               }
-       } else if (!strcmp(part, "elm.text.time")) {
-               if (type == NOTIFICATION_TYPE_ONGOING) {
-                       text =
-                           _quickpanel_noti_get_progress(noti, buf,
-                                                         sizeof(buf));
                } else {
-                       notification_get_time(noti, &time);
+                       /* Single event */
+                       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.no.progress")) {
 
-                       if ((int)time > 0) {
-                               text =
-                                   _quickpanel_noti_get_time(time, buf,
-                                                             sizeof(buf));
-                       } else {
-                               notification_get_insert_time(noti, &time);
-                               text =
+               if (isProgressBarEnabled == 1)
+                       return NULL;
 
-                                   _quickpanel_noti_get_time(time, buf,
-                                                             sizeof(buf));
+               notification_get_count(type, pkgname,
+                                      group_id, priv_id, &count);
+
+               if (count > 1) {
+                       /* Multi event */
+                       noti_err = notification_get_text(noti,
+                                       NOTIFICATION_TEXT_TYPE_GROUP_CONTENT,
+                                       &text);
+                       if (noti_err != NOTIFICATION_ERROR_NONE)
+                               text = NULL;
+
+                       if (text == NULL) {
+                               /* Default string */
+                               if (!strcmp(caller_pkgname,
+                                        VENDOR".message")) {
+                                       snprintf(buf, sizeof(buf), "%d %s",
+                                               count,
+                                               _S("IDS_COM_POP_NEW_MESSAGES"));
+                                       text = buf;
+                               }
                        }
+               } else {
+                       /* Single event */
+                       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.time")) {
+
+               if (isProgressBarEnabled == 0)
+                       return NULL;
+
+               text = _quickpanel_noti_get_progress(noti, buf,
+                                                                         sizeof(buf));
        }
 
-       if (text != NULL) {
+       if (text != NULL)
                return strdup(text);
-       }
 
        return NULL;
 }
@@ -693,28 +908,32 @@ static char *_quickpanel_noti_gl_get_text(void *data, Evas_Object * obj,
 static Eina_Bool _quickpanel_noti_gl_get_state(void *data, Evas_Object * obj,
                                               const char *part)
 {
-       notification_h noti = (notification_h) data;
+       qp_item_data *qid = NULL;
+       notification_h noti = NULL;
        char *pkgname = NULL;
-       int group_id = 0, priv_id = 0, count = 0;
+       int group_id = 0, priv_id = 0;
        char *content = NULL;
        time_t time;
 
-       retif(noti == NULL, EINA_FALSE, "Invalid parameter!");
+       retif(!data, EINA_FALSE, "data is NULL");
+       qid = data;
+
+       noti = quickpanel_list_util_item_get_data(qid);
+       retif(noti == NULL, EINA_FALSE, "noti is NULL");
 
        notification_get_pkgname(noti, &pkgname);
        notification_get_id(noti, &group_id, &priv_id);
 
        if (!strcmp(part, "elm.text.content")) {
-                notification_get_text(noti, NOTIFICATION_TEXT_TYPE_CONTENT, &content);
-               if (content != NULL) {
+               notification_get_text(noti,
+                       NOTIFICATION_TEXT_TYPE_CONTENT, &content);
+               if (content != NULL)
                        return EINA_TRUE;
-               }
        } else if (!strcmp(part, "elm.text.time")) {
                notification_get_time(noti, &time);
 
-               if ((int)time > 0) {
+               if ((int)time > 0)
                        return EINA_TRUE;
-               }
        }
 
        return EINA_FALSE;
@@ -734,82 +953,78 @@ static void quickpanel_noti_select_cb(void *data, Evas_Object * obj,
            0, flag_delete = 0;
        notification_type_e type = NOTIFICATION_TYPE_NONE;
 
+       DBG("quickpanel_noti_select_cb called");
+
        elm_genlist_item_selected_set((Elm_Object_Item *) event_info,
                                      EINA_FALSE);
 
-       retif(noti == NULL,, "Invalid parameter!");
+       retif(noti == NULL, , "Invalid parameter!");
 
        notification_get_pkgname(noti, &caller_pkgname);
        notification_get_application(noti, &pkgname);
-       if (pkgname == NULL) {
+       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) {
+       if (flags & NOTIFICATION_PROP_DISABLE_APP_LAUNCH)
                flag_launch = 0;
-       } else {
+       else
                flag_launch = 1;
-       }
 
-       if (flags & NOTIFICATION_PROP_DISABLE_AUTO_DELETE) {
+       if (flags & NOTIFICATION_PROP_DISABLE_AUTO_DELETE)
                flag_delete = 0;
-       } else {
+       else
                flag_delete = 1;
-       }
 
        notification_get_execute_option(noti,
-                                       NOTIFICATION_EXECUTE_TYPE_SINGLE_LAUNCH,
-                                       NULL, &single_service_handle);
+                               NOTIFICATION_EXECUTE_TYPE_SINGLE_LAUNCH,
+                               NULL, &single_service_handle);
        notification_get_execute_option(noti,
-                                       NOTIFICATION_EXECUTE_TYPE_MULTI_LAUNCH,
-                                       NULL, &multi_service_handle);
+                               NOTIFICATION_EXECUTE_TYPE_MULTI_LAUNCH,
+                               NULL, &multi_service_handle);
 
        if (flag_launch == 1) {
-               if (group_id != NOTIFICATION_GROUP_ID_NONE) {
+               if (group_id != NOTIFICATION_GROUP_ID_NONE)
                        notification_get_count(type,
-                                              caller_pkgname, group_id,
-                                              priv_id, &count);
-               } else {
+                                       caller_pkgname, group_id,
+                                       priv_id, &count);
+               else
                        count = 1;
-               }
 
-               if (count > 1 && multi_service_handle != NULL) {
+               if (count > 1 && multi_service_handle != NULL)
                        appsvc_run_service(multi_service_handle, 0, NULL, NULL);
-               } else if (single_service_handle != NULL) {
+               else if (single_service_handle != NULL)
                        appsvc_run_service(single_service_handle, 0, NULL,
-                                          NULL);
-               else {
+                                       NULL);
+               else {
                        notification_get_args(noti, &args, &group_args);
 
                        /* AUL launch, this will be removed */
-                       if (count > 1 && group_args != NULL) {
+                       if (count > 1 && group_args != NULL)
                                aul_launch_app(pkgname, group_args);
-                       } else {
+                       else
                                aul_launch_app(pkgname, args);
-                       }
                }
 
-               // Hide quickpanel
+               /* 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);
+                               ECORE_X_ILLUME_QUICKPANEL_STATE_OFF);
        }
 
-       if (flag_delete == 1 && type == NOTIFICATION_TYPE_NOTI) {
+       if (flag_delete == 1 && type == NOTIFICATION_TYPE_NOTI)
                notification_delete_group_by_priv_id(caller_pkgname,
-                                                    NOTIFICATION_TYPE_NOTI,
-                                                    priv_id);
-       }
+                                       NOTIFICATION_TYPE_NOTI,
+                                       priv_id);
 }
 
 static Evas_Object *_quickpanel_noti_gl_get_group_content(void *data,
-                                                      Evas_Object * obj,
-                                                      const char *part)
+                                               Evas_Object *obj,
+                                               const char *part)
 {
        Evas_Object *eo = NULL;
 
@@ -830,20 +1045,33 @@ static char *_quickpanel_noti_gl_get_group_text(void *data, Evas_Object * obj,
 {
        char buf[128] = { 0, };
        int noti_count = 0;
-       struct appdata *ad = (struct appdata *)data;
+       struct appdata *ad = NULL;
+       qp_item_data *qid = NULL;
+
+       retif(!data, NULL, "data is NULL");
+       qid = data;
 
-       retif(ad == NULL, NULL, "Invalid parameter!");
+       ad = quickpanel_list_util_item_get_data(qid);
+       retif(ad == NULL, NULL, "appdata is NULL");
 
        if (!strncmp(part, "elm.text", 8)) {
+               const char *format = NULL;
                memset(buf, 0x00, sizeof(buf));
 
-               notification_get_count(NOTIFICATION_TYPE_NONE, NULL,
-                                      NOTIFICATION_GROUP_ID_NONE,
-                                      NOTIFICATION_PRIV_ID_NONE,
-                                      &noti_count);
+               if (ad->show_setting) {
+                       notification_get_count(NOTIFICATION_TYPE_NOTI, NULL,
+                                              NOTIFICATION_GROUP_ID_NONE,
+                                              NOTIFICATION_PRIV_ID_NONE,
+                                              &noti_count);
+               } else {
+                       notification_get_count(NOTIFICATION_TYPE_NONE, NULL,
+                                              NOTIFICATION_GROUP_ID_NONE,
+                                              NOTIFICATION_PRIV_ID_NONE,
+                                              &noti_count);
+               }
 
-               snprintf(buf, sizeof(buf), _("IDS_QP_BODY_NOTIFICATIONS_HPD"),
-                        noti_count);
+               format = _("IDS_QP_BODY_NOTIFICATIONS_HPD");
+               snprintf(buf, sizeof(buf), format, noti_count);
 
                return strdup(buf);
        }
@@ -851,6 +1079,161 @@ static char *_quickpanel_noti_gl_get_group_text(void *data, Evas_Object * obj,
        return NULL;
 }
 
+static void _quickpanel_noti_gl_del(void *data, Evas_Object *obj)
+{
+       if (data) {
+               quickpanel_list_util_del_count(data);
+               free(data);
+       }
+
+       return;
+}
+
+static void _quickpanel_noti_gl_style_init(void)
+{
+       Elm_Genlist_Item_Class *noti = NULL;
+       Elm_Genlist_Item_Class *noti_ongoing = NULL;
+       Elm_Genlist_Item_Class *group = NULL;
+
+       /* item style for noti items*/
+       noti = elm_genlist_item_class_new();
+       if (noti) {
+               noti->item_style = "notification_item";
+               noti->func.text_get = _quickpanel_noti_gl_get_text;
+               noti->func.content_get = _quickpanel_noti_gl_get_content;
+               noti->func.state_get = _quickpanel_noti_gl_get_state;
+               noti->func.del = _quickpanel_noti_gl_del;
+               itc_noti = noti;
+       }
+
+       noti_ongoing = elm_genlist_item_class_new();
+       if (noti_ongoing) {
+               noti_ongoing->item_style = "notification_ongoing_item";
+               noti_ongoing->func.text_get = _quickpanel_ongoing_noti_gl_get_text;
+               noti_ongoing->func.content_get = _quickpanel_noti_gl_get_content;
+               noti_ongoing->func.state_get = _quickpanel_noti_gl_get_state;
+               noti_ongoing->func.del = _quickpanel_noti_gl_del;
+               itc_ongoing = noti_ongoing;
+       }
+
+       /* item style for noti group title */
+       group = elm_genlist_item_class_new();
+       if (group) {
+               group->item_style = "qp_group_title";
+               group->func.text_get = _quickpanel_noti_gl_get_group_text;
+               group->func.content_get = _quickpanel_noti_gl_get_group_content;
+               noti->func.del = _quickpanel_noti_gl_del;
+               g_itc = group;
+       }
+}
+
+static void _quickpanel_noti_gl_style_fini(void)
+{
+       if (itc_noti) {
+               elm_genlist_item_class_free(itc_noti);
+               itc_noti = NULL;
+       }
+
+       if (itc_ongoing) {
+               elm_genlist_item_class_free(itc_ongoing);
+               itc_ongoing = NULL;
+       }
+
+       if (g_itc) {
+               elm_genlist_item_class_free(g_itc);
+               g_itc = NULL;
+       }
+}
+
+static inline void __ongoing_comp_n_copy(notification_h old, notification_h new)
+{
+       int priv_id = 0;
+       int new_priv_id = 0;
+       char *pkgname = NULL;
+       char *new_pkgname = NULL;
+
+       if (!old)
+               return;
+
+       if (!new)
+               return;
+
+       notification_get_id(old, NULL, &priv_id);
+       notification_get_id(new, NULL, &new_priv_id);
+
+       notification_get_pkgname(old, &pkgname);
+       notification_get_pkgname(new, &new_pkgname);
+
+       if (!pkgname || !new_pkgname)
+               return;
+
+       if (!strcmp(pkgname, new_pkgname) && priv_id == new_priv_id) {
+               double percentage = 0.0;
+               double size = 0.0;
+               time_t insert_time = 0;
+               time_t new_insert_time = 0;
+
+               notification_get_progress(old, &percentage);
+               notification_get_size(old, &size);
+               notification_set_progress(new, percentage);
+               notification_set_size(new, size);
+               notification_get_insert_time(old, &insert_time);
+               notification_get_insert_time(new, &new_insert_time);
+
+               if (insert_time == new_insert_time) {
+                       char *content = NULL;
+                       notification_get_text(old,
+                               NOTIFICATION_TEXT_TYPE_CONTENT, &content);
+                       notification_set_text(new,
+                               NOTIFICATION_TEXT_TYPE_CONTENT, content,
+                               NULL, NOTIFICATION_VARIABLE_TYPE_NONE);
+               }
+       }
+}
+
+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;
@@ -859,12 +1242,6 @@ static void _quickpanel_noti_get_new_list(void)
        notification_h noti = NULL;
        notification_h new_noti = NULL;
        notification_type_e new_type = NOTIFICATION_TYPE_NONE;
-       char *pkgname = NULL;
-       char *new_pkgname = NULL;
-       int priv_id = 0;
-       int new_priv_id = 0;
-       double percentage = 0.0;
-       double size = 0.0;
 
        if (g_notification_ongoing_list != NULL) {
                notification_free_list(g_notification_ongoing_list);
@@ -883,29 +1260,9 @@ static void _quickpanel_noti_get_new_list(void)
                                new_noti = notification_list_get_data(new_head);
 
                                notification_get_type(new_noti, &new_type);
-                               if (new_type == NOTIFICATION_TYPE_ONGOING) {
-                                       notification_get_id(noti, NULL,
-                                                           &priv_id);
-                                       notification_get_id(new_noti, NULL,
-                                                           &new_priv_id);
-
-                                       notification_get_pkgname(noti,
-                                                                &pkgname);
-                                       notification_get_pkgname(new_noti,
-                                                                &new_pkgname);
-
-                                       if (!strcmp(pkgname, new_pkgname)
-                                           && priv_id == new_priv_id) {
-                                               notification_get_progress(noti,
-                                                                         &percentage);
-                                               notification_get_size(noti,
-                                                                     &size);
-                                               notification_set_progress
-                                                   (new_noti, percentage);
-                                               notification_set_size(new_noti,
-                                                                     size);
-                                       }
-                               }
+
+                               if (new_type == NOTIFICATION_TYPE_ONGOING)
+                                       __ongoing_comp_n_copy(noti, new_noti);
 
                                new_head = notification_list_get_next(new_head);
                        }
@@ -919,76 +1276,177 @@ static void _quickpanel_noti_get_new_list(void)
        }
 }
 
+static void _quickpanel_noti_clear_ongoinglist(Evas_Object *list)
+{
+       if (!list)
+               return;
+
+       if (!ongoing_first)
+               return;
+
+       quickpanel_list_util_item_del_by_type(list, ongoing_first,
+                       QP_ITEM_TYPE_ONGOING_NOTI);
+}
+
+static void _quickpanel_noti_clear_notilist(Evas_Object *list)
+{
+       if (!list)
+               return;
+
+       if (!noti_first)
+               return;
+
+       quickpanel_list_util_item_del_by_type(list, noti_first,
+                       QP_ITEM_TYPE_NOTI);
+}
+
+static void _quickpanel_noti_clear_list_all(Evas_Object *list)
+{
+       _quickpanel_noti_clear_ongoinglist(list);
+       ongoing_first = NULL;
+
+       if (noti_group) {
+               _quickpanel_noti_clear_notilist(list);
+               noti_first = NULL;
+
+               elm_object_item_del(noti_group);
+               noti_group = NULL;
+               quickpanel_list_util_del_count_by_itemtype(QP_ITEM_TYPE_NOTI_GROUP);
+       }
+}
+
+static void _quickpanel_noti_ongoing_add(Evas_Object *list, void *data)
+{
+       qp_item_data *qid = NULL;
+       Elm_Object_Item *it = NULL;
+
+       if (!list)
+               return;
+
+       qid = quickpanel_list_util_item_new(QP_ITEM_TYPE_ONGOING_NOTI, data);
+       if (!qid)
+               return;
+
+       it = quickpanel_list_util_sort_insert(list, itc_ongoing, qid, NULL,
+                       ELM_GENLIST_ITEM_NONE, quickpanel_noti_select_cb, data);
+
+       if (it)
+               ongoing_first = it;
+       else
+               ERR("fail to insert item to list : %p", data);
+
+       DBG("noti ongoing[%p] data[%p] added, it[%p]", qid, data, it);
+}
+
+static void _quickpanel_noti_group_add(Evas_Object *list, void *data)
+{
+       qp_item_data *qid = NULL;
+       Elm_Object_Item *it = NULL;
+
+       if (!list)
+               return;
+
+       qid = quickpanel_list_util_item_new(QP_ITEM_TYPE_NOTI_GROUP, data);
+       if (!qid)
+               return;
+
+       it = quickpanel_list_util_sort_insert(list, g_itc, qid, NULL,
+               ELM_GENLIST_ITEM_GROUP, NULL, NULL);
+
+       if (it)
+               noti_group = it;
+       else
+               ERR("fail to insert item to list : %p", data);
+
+       DBG("noti group[%p] data[%p] added, it[%p]", qid, data, it);
+}
+
+static void _quickpanel_noti_noti_add(Evas_Object *list, void *data)
+{
+       qp_item_data *qid = NULL;
+       Elm_Object_Item *it = NULL;
+
+       if (!list)
+               return;
+
+       qid = quickpanel_list_util_item_new(QP_ITEM_TYPE_NOTI, data);
+       if (!qid)
+               return;
+
+       if (!noti_group)
+               _quickpanel_noti_group_add(list, data);
+
+       it = quickpanel_list_util_sort_insert(list, itc_noti, qid, noti_group,
+               ELM_GENLIST_ITEM_NONE, quickpanel_noti_select_cb, data);
+
+       if (it)
+               noti_first = it;
+       else
+               ERR("fail to insert item to list : %p", data);
+
+       DBG("noti[%p] data[%p] added, it[%p]", qid, data, it);
+}
+
+
 void _quickpanel_noti_update_notilist(struct appdata *ad)
 {
-       Evas_Object *eo = ad->notilist;
-       Elm_Object_Item *grp = NULL;
+       Evas_Object *list = NULL;
        notification_h noti = NULL;
        notification_list_h get_list = NULL;
-       int r;
        int applist = NOTIFICATION_DISPLAY_APP_ALL;
 
-       DBG("%s(%d)", __FUNCTION__, __LINE__);
+       DBG("");
 
-       retif(ad == NULL,, "Invalid parameter!");
+       retif(ad == NULL, , "Invalid parameter!");
 
-       eo = ad->notilist;
-       retif(eo == NULL,, "Failed to get noti genlist.");
+       list = ad->list;
+       retif(list == NULL, , "Failed to get noti genlist.");
 
        /* Clear genlist */
-       elm_genlist_clear(eo);
+       _quickpanel_noti_clear_list_all(list);
 
        /* Update notification list */
-       _quickpanel_noti_get_new_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_head(g_notification_ongoing_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) {
-                               elm_genlist_item_append(eo, itc_noti, noti,
-                                                       NULL,
-                                                       ELM_GENLIST_ITEM_NONE,
-                                                       quickpanel_noti_select_cb,
-                                                       noti);
-                       }
+                           NOTIFICATION_DISPLAY_APP_NOTIFICATION_TRAY)
+                               _quickpanel_noti_ongoing_add(list, noti);
 
-                       get_list = notification_list_get_next(get_list);
+                       get_list = notification_list_get_prev(get_list);
                        noti = notification_list_get_data(get_list);
                }
        }
 
-       /* append noti title to genlist */
-       grp = elm_genlist_item_append(eo, g_itc, ad,
-                                     NULL, ELM_GENLIST_ITEM_GROUP, NULL, NULL);
-
        /* append noti data to genlist */
        if (g_notification_list) {
-               get_list = notification_list_get_head(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) {
-                               elm_genlist_item_append(eo, itc_noti, noti,
-                                                       grp,
-                                                       ELM_GENLIST_ITEM_NONE,
-                                                       quickpanel_noti_select_cb,
-                                                       noti);
-                       }
+                           NOTIFICATION_DISPLAY_APP_NOTIFICATION_TRAY)
+                               _quickpanel_noti_noti_add(list, noti);
 
-                       get_list = notification_list_get_next(get_list);
+                       get_list = notification_list_get_prev(get_list);
                        noti = notification_list_get_data(get_list);
                }
        }
+
+       quickpanel_ui_update_height(ad);
 }
 
 static void _quickpanel_noti_delete_volatil_data(void)
@@ -1008,8 +1466,8 @@ static void _quickpanel_noti_delete_volatil_data(void)
 
                if (property & NOTIFICATION_PROP_VOLATILE_DISPLAY) {
                        notification_set_property(noti,
-                                                 property |
-                                                 NOTIFICATION_PROP_DISABLE_UPDATE_ON_DELETE);
+                               property |
+                               NOTIFICATION_PROP_DISABLE_UPDATE_ON_DELETE);
                        notification_delete(noti);
                }
 
@@ -1026,13 +1484,12 @@ static void _quickpanel_noti_changed_cb(void *data, notification_type_e type)
        _quickpanel_noti_update_notilist(data);
 }
 
-static void _quickpanel_noti_update_sim_status_cb(keynode_t * node, void *data)
+static void _quickpanel_noti_update_sim_status_cb(keynode_t *node, void *data)
 {
        struct appdata *ad = data;
 
-       if (ad != NULL && ad->notilist != NULL) {
+       if (ad != NULL && ad->list != NULL)
                _quickpanel_noti_update_notilist(ad);
-       }
 }
 
 static int _quickpanel_noti_register_event_handler(struct appdata *ad)
@@ -1040,8 +1497,6 @@ static int _quickpanel_noti_register_event_handler(struct appdata *ad)
        int ret = 0;
        retif(ad == NULL, QP_FAIL, "Invalid parameter!");
 
-       g_window = ad->noti.win;
-
        /* Add dbus signal */
        e_dbus_init();
        ad->dbus_connection = e_dbus_bus_get(DBUS_BUS_SYSTEM);
@@ -1050,49 +1505,43 @@ static int _quickpanel_noti_register_event_handler(struct appdata *ad)
                return -1;
        }
 
-       ad->dbus_handler_size = e_dbus_signal_handler_add(ad->dbus_connection,
-                                                         NULL,
-                                                         "/dbus/signal",
-                                                         "notification.ongoing",
-                                                         "update_progress",
-                                                         _quickpanel_noti_item_progress_update_cb,
-                                                         ad->notilist);
-       if (ad->dbus_handler_size == NULL) {
-               ERR("noti register : failed to add size signal");
-       }
+       ad->dbus_handler_size =
+               e_dbus_signal_handler_add(ad->dbus_connection, NULL,
+                       QP_NOTI_ONGOING_DBUS_PATH,
+                       QP_NOTI_ONGOING_DBUS_INTERFACE, "update_progress",
+                       _quickpanel_noti_item_progress_update_cb,
+                       ad);
+       if (ad->dbus_handler_size == NULL)
+               ERR("fail to add size signal");
 
        ad->dbus_handler_progress =
-           e_dbus_signal_handler_add(ad->dbus_connection, NULL, "/dbus/signal",
-                                     "notification.ongoing", "update_size",
-                                     _quickpanel_noti_item_size_update_cb,
-                                     ad->notilist);
-       if (ad->dbus_handler_progress == NULL) {
-               ERR("noti register : failed to add progress signal");
-       }
+               e_dbus_signal_handler_add(ad->dbus_connection, NULL,
+                       QP_NOTI_ONGOING_DBUS_PATH,
+                       QP_NOTI_ONGOING_DBUS_INTERFACE, "update_size",
+                       _quickpanel_noti_item_size_update_cb,
+                       ad);
+       if (ad->dbus_handler_progress == NULL)
+               ERR("fail to add progress signal");
 
        ad->dbus_handler_content =
-           e_dbus_signal_handler_add(ad->dbus_connection, NULL, "/dbus/signal",
-                                     "notification.ongoing", "update_content",
-                                     _quickpanel_noti_item_content_update_cb,
-                                     ad->notilist);
-       if (ad->dbus_handler_content == NULL) {
-               ERR("noti register : failed to add content signal");
-       }
+               e_dbus_signal_handler_add(ad->dbus_connection, NULL,
+                       QP_NOTI_ONGOING_DBUS_PATH,
+                       QP_NOTI_ONGOING_DBUS_INTERFACE, "update_content",
+                       _quickpanel_noti_item_content_update_cb,
+                       ad);
+       if (ad->dbus_handler_content == NULL)
+               ERR("fail to add content signal");
 
        /* Notify vconf key */
        ret = vconf_notify_key_changed(VCONFKEY_TELEPHONY_SIM_SLOT,
                                       _quickpanel_noti_update_sim_status_cb,
                                       (void *)ad);
-       if (ret != 0) {
+       if (ret != 0)
                ERR("Failed to register SIM_SLOT change callback!");
-       }
 
        /* Register notification changed cb */
        notification_resister_changed_cb(_quickpanel_noti_changed_cb, ad);
 
-       /* Update notification list */
-       _quickpanel_noti_update_notilist(ad);
-
        return ret;
 }
 
@@ -1104,27 +1553,25 @@ static int _quickpanel_noti_unregister_event_handler(struct appdata *ad)
        notification_unresister_changed_cb(_quickpanel_noti_changed_cb);
 
        /* Ignore vconf key */
-       ret =
-           vconf_ignore_key_changed(VCONFKEY_TELEPHONY_SIM_SLOT,
-                                    _quickpanel_noti_update_sim_status_cb);
-       if (ret != 0) {
+       ret = vconf_ignore_key_changed(VCONFKEY_TELEPHONY_SIM_SLOT,
+                               _quickpanel_noti_update_sim_status_cb);
+       if (ret != 0)
                ERR("Failed to ignore SIM_SLOT change callback!");
-       }
 
        /* Delete dbus signal */
        if (ad->dbus_handler_size != NULL) {
                e_dbus_signal_handler_del(ad->dbus_connection,
-                                         ad->dbus_handler_size);
+                               ad->dbus_handler_size);
                ad->dbus_handler_size = NULL;
        }
        if (ad->dbus_handler_progress != NULL) {
                e_dbus_signal_handler_del(ad->dbus_connection,
-                                         ad->dbus_handler_progress);
+                               ad->dbus_handler_progress);
                ad->dbus_handler_progress = NULL;
        }
        if (ad->dbus_handler_content != NULL) {
                e_dbus_signal_handler_del(ad->dbus_connection,
-                                         ad->dbus_handler_content);
+                               ad->dbus_handler_content);
                ad->dbus_handler_content = NULL;
        }
 
@@ -1136,112 +1583,57 @@ static int _quickpanel_noti_unregister_event_handler(struct appdata *ad)
        return QP_OK;
 }
 
-static void _quickpanel_noti_gl_style_init(void)
+static int _quickpanel_noti_check_first_start(void)
 {
-       Elm_Genlist_Item_Class *noti = NULL;
-       Elm_Genlist_Item_Class *group = NULL;
-
-       /* item style for noti items*/
-       noti = elm_genlist_item_class_new();
-       if (noti) {
-               noti->item_style = "notification_item";
-               noti->func.text_get = _quickpanel_noti_gl_get_text;
-               noti->func.content_get = _quickpanel_noti_gl_get_content;
-               noti->func.state_get = _quickpanel_noti_gl_get_state;
-               itc_noti = noti;
-       }
-
-       /* item style for noti group title */
-       group = elm_genlist_item_class_new();
-       if (group) {
-               group->item_style = "qp_group_title";
-               group->func.text_get = _quickpanel_noti_gl_get_group_text;
-               group->func.content_get = _quickpanel_noti_gl_get_group_content;
-               g_itc = group;
-       }
-}
-
-static void _quickpanel_noti_gl_style_fini(void)
-{
-       if (itc_noti) {
-               elm_genlist_item_class_free(itc_noti);
-               itc_noti = NULL;
-       }
+       int status = 0;
+       int ret = 0;
 
-       if (g_itc) {
-               elm_genlist_item_class_free(g_itc);
-               g_itc = NULL;
+       ret = vconf_get_bool(VCONFKEY_QUICKPANEL_STARTED, &status);
+       if (ret) {
+               INFO("fail to get %s", VCONFKEY_QUICKPANEL_STARTED);
+               /* reboot */
+               ret = vconf_set_bool(VCONFKEY_QUICKPANEL_STARTED, 1);
+               INFO("set : %s, result : %d", VCONFKEY_QUICKPANEL_STARTED, ret);
        }
-}
-
-static Evas_Object *_quickpanel_noti_create_notilist(Evas_Object * parent)
-{
-       Evas_Object *gl = NULL;
-
-       gl = elm_genlist_add(parent);
-       retif(gl == NULL, NULL, "Failed to add elm genlist.");
-
-       return gl;
-}
-
-static int _quickpanel_noti_add_layout(struct appdata *ad)
-{
-       Evas_Object *eo = NULL;
-       char buf[1024] = { 0, };
-
-       retif(ad == NULL, QP_FAIL, "Invalid parameter!");
-
-       eo = _quickpanel_noti_create_notilist(ad->noti.ly);
-       retif(eo == NULL, QP_FAIL, "Failed to create notification list!");
-
-       _quickpanel_noti_gl_style_init();
-
-       edje_object_part_swallow(_EDJ(ad->noti.ly), "qp.noti.swallow.notilist",
-                                eo);
-       ad->notilist = eo;
-
-       elm_theme_extension_add(NULL, DEFAULT_CUSTOM_EDJ);
-
-       return QP_OK;
-}
 
-static void _quickpanel_noti_del_layout(struct appdata *ad)
-{
-       retif(ad == NULL,, "Invalid parameter!");
+       if (status)
+               return 0;
 
-       if (ad->notilist) {
-               evas_object_hide(ad->notilist);
-               evas_object_del(ad->notilist);
-               ad->notilist = NULL;
-       }
-
-       _quickpanel_noti_gl_style_fini();
+       return 1;
 }
 
 static int quickpanel_noti_init(void *data)
 {
        struct appdata *ad = data;
-       int ret = 0;
+       int is_first = 0;
 
        retif(ad == NULL, QP_FAIL, "Invalid parameter!");
 
-       /* Add noti layout */
-       ret = _quickpanel_noti_add_layout(ad);
-       retif(ret != QP_OK, QP_FAIL, "Failed to add noti layout!");
+       g_window = ad->win;
 
-       /* Remove ongoing and volatile noti data */
-       notifiation_clear(NOTIFICATION_TYPE_ONGOING);
+       is_first = _quickpanel_noti_check_first_start();
+       if (is_first) {
+               /* Remove ongoing and volatile noti data */
+               notifiation_clear(NOTIFICATION_TYPE_ONGOING);
+               _quickpanel_noti_delete_volatil_data();
+       }
 
-       _quickpanel_noti_delete_volatil_data();
+       _quickpanel_noti_gl_style_init();
 
        /* Register event handler */
        _quickpanel_noti_register_event_handler(ad);
 
+       /* Update notification list */
+       _quickpanel_noti_update_notilist(ad);
+
        return QP_OK;
 }
 
 static int quickpanel_noti_fini(void *data)
 {
+       struct appdata *ad = data;
+       retif(ad == NULL, QP_FAIL, "Invalid parameter!");
+
        /* Remove notification list */
        if (g_notification_ongoing_list != NULL) {
                notification_free_list(g_notification_ongoing_list);
@@ -1258,8 +1650,9 @@ static int quickpanel_noti_fini(void *data)
        /* Unregister event handler */
        _quickpanel_noti_unregister_event_handler(data);
 
-       /* Delete noti layout */
-       _quickpanel_noti_del_layout((struct appdata *)data);
+       _quickpanel_noti_clear_list_all(ad->list);
+
+       _quickpanel_noti_gl_style_fini();
 
        return QP_OK;
 }
@@ -1277,7 +1670,10 @@ static int quickpanel_noti_resume(void *data)
        retif(ad == NULL, QP_FAIL, "Invalid parameter!");
 
        suspended = 0;
-       _quickpanel_noti_update_progressbar(ad->notilist, NULL);
+
+       if (ad->list)
+               quickpanel_list_util_item_update_by_type(ad->list,
+                               ongoing_first, QP_ITEM_TYPE_ONGOING_NOTI);
 
        return QP_OK;
 }
@@ -1286,7 +1682,24 @@ void quickpanel_noti_lang_changed(void *data)
 {
        struct appdata *ad = data;
 
-       retif(ad == NULL,, "Invalid parameter!");
+       retif(ad == NULL, , "Invalid parameter!");
 
        _quickpanel_noti_update_notilist(ad);
 }
+
+static int quickpanel_noti_get_height(void *data)
+{
+       int height = 0;
+       struct appdata *ad = data;
+
+       retif(ad == NULL, 0, "Invalid parameter!");
+
+       qp_item_count *noti_item_count = quickpanel_list_util_get_item_count();
+
+       if (noti_item_count != NULL) {
+               height = noti_item_count->group*QP_THEME_LIST_ITEM_GROUP_HEIGHT
+                               + noti_item_count->noti*QP_THEME_LIST_ITEM_NOTI_HEIGHT
+                               + noti_item_count->ongoing*QP_THEME_LIST_ITEM_ONGOING_HEIGHT;
+       }
+       return height * ad->scale;
+}
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
index 255fd04..cde080f
@@ -21,6 +21,8 @@
 #include <svi.h>
 #include <mm_sound.h>
 #include <aul.h>
+#include <appsvc.h>
+#include <app_service.h>
 #include <notification.h>
 #include <time.h>
 
 #define TICKER_MSG_LEN                         1024
 #define DEFAULT_ICON ICONDIR           "/quickpanel_icon_default.png"
 
-static Evas_Object *g_window = NULL;
-static Evas_Object *g_ticker = NULL;
-static Ecore_Timer *g_timer = NULL;
-static notification_list_h g_latest_noti_list = NULL;
-static int g_svi = 0;
+static Evas_Object *g_window;
+static Evas_Object *g_ticker;
+static Ecore_Timer *g_timer;
+static notification_list_h g_latest_noti_list;
+static int g_svi;
 
 static int quickpanel_ticker_init(void *data);
 static int quickpanel_ticker_fini(void *data);
@@ -56,148 +58,116 @@ QP_Module ticker = {
 
 static int latest_inserted_time;
 
-/**************************************************************************************
+/*****************************************************************************
  *
  * (Static) Util functions
  *
- *************************************************************************************/
+ *****************************************************************************/
 
 static int _quickpanel_ticker_check_setting_event_value(notification_h noti)
 {
        char *pkgname = NULL;
-       char key[512] = { 0, };
        int ret = 0;
        int boolval = 0;
 
        notification_get_application(noti, &pkgname);
 
-       if (pkgname == NULL) {
+       if (pkgname == NULL)
                notification_get_pkgname(noti, &pkgname);
-       }
 
-       if (pkgname == NULL) {
-               return -1;      // Ticker is not displaying.
-       }
+       if (pkgname == NULL)
+               return -1;      /* Ticker is not displaying. */
+
+       if (!strcmp(pkgname, VENDOR".message")) {
+               ret = vconf_get_bool(
+                       VCONFKEY_SETAPPL_STATE_TICKER_NOTI_MESSAGES_BOOL,
+                       &boolval);
+               if (ret == 0 && boolval == 0)
+                       return -1;
+       } else if (!strcmp(pkgname, VENDOR".email")) {
+               ret = vconf_get_bool(
+                       VCONFKEY_SETAPPL_STATE_TICKER_NOTI_EMAIL_BOOL,
+                       &boolval);
+               if (ret == 0 && boolval == 0)
+                       return -1;
+       }
+
+       /* Displaying ticker! */
+       return 0;
+}
 
-       if (!strcmp(pkgname, "org.tizen.message")) {
-               ret =
-                   vconf_get_bool
-                   (VCONFKEY_SETAPPL_STATE_TICKER_NOTI_MESSAGES_BOOL,
-                    &boolval);
-               if (ret == 0 && boolval == 0) {
-                       return -1;      // Ticker is not displaying.
-               }
+static inline void __ticker_only_noti_del(notification_h noti)
+{
+       int applist = NOTIFICATION_DISPLAY_APP_ALL;
 
-       } else if (!strcmp(pkgname, "org.tizen.email")) {
-               ret =
-                   vconf_get_bool
-                   (VCONFKEY_SETAPPL_STATE_TICKER_NOTI_EMAIL_BOOL, &boolval);
-               if (ret == 0 && boolval == 0) {
-                       return -1;      // Ticker is not displaying.
-               }
-       } else if (!strcmp(pkgname, "org.tizen.download-provider")) {
-               ret =
-                   vconf_get_bool
-                   (VCONFKEY_SETAPPL_STATE_TICKER_NOTI_FILE_TRAN_BOOL,
-                    &boolval);
-               if (ret == 0 && boolval == 0) {
-                       return -1;      // Ticker is not displaying.
+       if (!noti)
+               return;
+
+       notification_get_display_applist(noti, &applist);
+       if (applist & NOTIFICATION_DISPLAY_APP_TICKER) {
+               if (!(applist & NOTIFICATION_DISPLAY_APP_NOTIFICATION_TRAY)) {
+                       char *pkgname = NULL;
+                       int priv_id = 0;
+
+                       notification_get_pkgname(noti, &pkgname);
+                       notification_get_id(noti, NULL, &priv_id);
+                       notification_delete_by_priv_id(pkgname,
+                                               NOTIFICATION_TYPE_NONE,
+                                               priv_id);
                }
        }
-       // TODO: VCONFKEY_SETAPPL_STATE_TICKER_NOTI_VMAIL_BOOL, VCONFKEY_SETAPPL_STATE_TICKER_NOTI_SNS_BOOL
-
-       // Check 3rd App
-       snprintf(key, sizeof(key), "db/app-settings/noti-enabled/%s", pkgname);
-       ret = vconf_get_int(key, &boolval);
-       INFO("Key : %s == %d, ret : %d", key, boolval, ret);
-       if (ret == 0 && boolval == 0) {
-               return -1;      // Ticker is not displaying.
-       }
-
-       return 0;               // Displaying ticker!
 }
 
-static Eina_Bool _quickpanel_ticker_hide(void *data)
+static void _quickpanel_ticker_hide(void)
 {
-       INFO("_quickpanel_ticker_hide");
-       char *pkgname = NULL;
-       int applist = 0;
-       int priv_id = 0;
-
        if (g_ticker) {
                evas_object_hide(g_ticker);
                evas_object_del(g_ticker);
                g_ticker = NULL;
        }
 
-       if (g_timer) {
-               g_timer = NULL;
-       }
-
        if (g_latest_noti_list) {
-               // delete here only ticker noti display item
+               /* delete here only ticker noti display item */
                notification_h noti =
-                   notification_list_get_data(g_latest_noti_list);
-               notification_get_display_applist(noti, &applist);
-               if (applist & NOTIFICATION_DISPLAY_APP_TICKER) {
-                       if (applist &
-                           NOTIFICATION_DISPLAY_APP_NOTIFICATION_TRAY) {
-
-                       } else {
-                               //delete
-                               notification_get_pkgname(noti, &pkgname);
-                               notification_get_id(noti, NULL, &priv_id);
-                               INFO("hide : pkgname : %s, priv_id : %d",
-                                    pkgname, priv_id);
-                               notification_delete_by_priv_id(pkgname,
-                                                              NOTIFICATION_TYPE_NONE,
-                                                              priv_id);
-                       }
-               }
+                       notification_list_get_data(g_latest_noti_list);
+
+               __ticker_only_noti_del(noti);
 
                notification_free_list(g_latest_noti_list);
                g_latest_noti_list = NULL;
        }
 }
 
-static void _quickpanel_ticker_detail_hide_cb(void *data, Evas * e,
-                                             Evas_Object * obj,
-                                             void *event_info)
+static Eina_Bool _quickpanel_ticker_timeout_cb(void *data)
 {
-       INFO("_quickpanel_ticker_detail_hide_cb");
-       Evas_Object *tickernoti = (Evas_Object *) data;
+       g_timer = NULL;
+       _quickpanel_ticker_hide();
 
+       return ECORE_CALLBACK_CANCEL;
+}
+
+static void _quickpanel_ticker_detail_hide_cb(void *data, Evas *e,
+                                       Evas_Object *obj,
+                                       void *event_info)
+{
        if (g_timer) {
                ecore_timer_del(g_timer);
                g_timer = NULL;
        }
 
-       evas_object_hide(tickernoti);
-       _quickpanel_ticker_hide(NULL);
+       INFO("_quickpanel_ticker_detail_hide_cb");
 }
 
-static void _quickpanel_ticker_detail_show_cb(void *data, Evas * e,
-                                             Evas_Object * obj,
-                                             void *event_info)
+static void _quickpanel_ticker_detail_show_cb(void *data, Evas *e,
+                                       Evas_Object *obj,
+                                       void *event_info)
 {
        INFO("_quickpanel_ticker_detail_show_cb");
-       Evas_Object *tickernoti = (Evas_Object *) data;
-
-       if (g_timer) {
-               ecore_timer_delay(g_timer, QP_TICKER_DETAIL_DURATION);
-       }
-
-       evas_object_hide(tickernoti);
-
-       /* Use style "default" for detailview mode and "info" for text only mode */
-       elm_object_style_set(tickernoti,"default");
-       evas_object_show(tickernoti);
 }
 
-static void _quickpanel_ticker_clicked_cb(void *data, Evas_Object * obj,
-                                         void *event_info)
+static void _quickpanel_ticker_clicked_cb(void *data, Evas_Object *obj,
+                                       void *event_info)
 {
-       INFO("_quickpanel_ticker_clicked_cb");
        notification_h noti = (notification_h) data;
        char *caller_pkgname = NULL;
        char *pkgname = NULL;
@@ -212,78 +182,74 @@ static void _quickpanel_ticker_clicked_cb(void *data, Evas_Object * obj,
        int flag_delete = 0;
        int type = NOTIFICATION_TYPE_NONE;
 
-       retif(noti == NULL,, "Invalid parameter!");
+       INFO("_quickpanel_ticker_clicked_cb");
+       retif(noti == NULL, , "Invalid parameter!");
 
        /* Check idle lock state */
        ret = vconf_get_int(VCONFKEY_IDLE_LOCK_STATE, &val);
-       if(ret != 0 || val == VCONFKEY_IDLE_LOCK) {
-               /* If Lock state, there is not any action when clicked. */
+
+       /* 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) {
+       if (pkgname == NULL)
                pkgname = caller_pkgname;
-       }
 
        notification_get_id(noti, &group_id, &priv_id);
        notification_get_property(noti, &flags);
 
-       if (flags & NOTIFICATION_PROP_DISABLE_APP_LAUNCH) {
+       if (flags & NOTIFICATION_PROP_DISABLE_APP_LAUNCH)
                flag_launch = 0;
-       } else {
+       else
                flag_launch = 1;
-       }
 
-       if (flags & NOTIFICATION_PROP_DISABLE_AUTO_DELETE) {
+       if (flags & NOTIFICATION_PROP_DISABLE_AUTO_DELETE)
                flag_delete = 0;
-       } else {
+       else
                flag_delete = 1;
-       }
-
 
        notification_get_execute_option(noti,
-                                       NOTIFICATION_EXECUTE_TYPE_SINGLE_LAUNCH,
-                                       NULL, &single_service_handle);
+                               NOTIFICATION_EXECUTE_TYPE_SINGLE_LAUNCH,
+                               NULL, &single_service_handle);
 
        if (flag_launch == 1) {
-               if (single_service_handle != NULL) {
+               if (single_service_handle != NULL)
                        appsvc_run_service(single_service_handle, 0, NULL,
                                           NULL);
-               else {
+               else {
                        notification_get_args(noti, &args, NULL);
                        aul_launch_app(pkgname, args);
                }
 
-               // Hide quickpanel
+               /* 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);
+                               ECORE_X_ILLUME_QUICKPANEL_STATE_OFF);
        }
 
        notification_get_type(noti, &type);
-       if (flag_delete == 1 && type == NOTIFICATION_TYPE_NOTI) {
+       if (flag_delete == 1 && type == NOTIFICATION_TYPE_NOTI)
                notification_delete_group_by_priv_id(caller_pkgname,
-                                                        NOTIFICATION_TYPE_NOTI,
-                                                        priv_id);
-       }
+                                               NOTIFICATION_TYPE_NOTI,
+                                               priv_id);
 }
 
-static void _quickpanel_ticker_button_clicked_cb(void *data, Evas_Object * obj,
-                                                void *event_info)
+static void _quickpanel_ticker_button_clicked_cb(void *data, Evas_Object *obj,
+                                       void *event_info)
 {
        if (g_timer) {
                ecore_timer_del(g_timer);
                g_timer = NULL;
        }
 
-       _quickpanel_ticker_hide(NULL);
+       _quickpanel_ticker_hide();
 }
 
-static Evas_Object *_quickpanel_ticker_create_button(Evas_Object * parent,
-                                                    notification_h noti)
+static Evas_Object *_quickpanel_ticker_create_button(Evas_Object *parent,
+                                               notification_h noti)
 {
        Evas_Object *button = NULL;
        int ret = 0;
@@ -293,23 +259,21 @@ static Evas_Object *_quickpanel_ticker_create_button(Evas_Object * parent,
 
        /* Check idle lock state */
        ret = vconf_get_int(VCONFKEY_IDLE_LOCK_STATE, &val);
-       if(ret != 0 || val == VCONFKEY_IDLE_LOCK) {
-               /* If Lock state, button is diabled */
+       /* If Lock state, button is diabled */
+       if (ret != 0 || val == VCONFKEY_IDLE_LOCK)
                return NULL;
-       }
 
        button = elm_button_add(parent);
        elm_object_style_set(button, "tickernoti");
        elm_object_text_set(button, _S("IDS_COM_BODY_CLOSE"));
        evas_object_smart_callback_add(button, "clicked",
-                                      _quickpanel_ticker_button_clicked_cb,
-                                      noti);
+                               _quickpanel_ticker_button_clicked_cb, noti);
 
        return button;
 }
 
-static Evas_Object *_quickpanel_ticker_create_icon(Evas_Object * parent,
-                                                  notification_h noti)
+static Evas_Object *_quickpanel_ticker_create_icon(Evas_Object *parent,
+                                               notification_h noti)
 {
        char *icon_path = NULL;
        Evas_Object *icon = NULL;
@@ -334,15 +298,10 @@ static char *_quickpanel_ticker_get_label(notification_h noti)
        int len = 0;
        char *domain = NULL;
        char *dir = NULL;
-       char *get_title = NULL;
-       char *get_content = NULL;
        char *result_title = NULL;
        char *result_content = NULL;
        char *title_utf8 = NULL;
        char *content_utf8 = NULL;
-       int ret = 0;
-       int boolval = 0;
-       char *pkgname = NULL;
 
        retif(noti == NULL, NULL, "Invalid parameter!");
 
@@ -353,10 +312,6 @@ static char *_quickpanel_ticker_get_label(notification_h noti)
        notification_get_text(noti, NOTIFICATION_TEXT_TYPE_TITLE,
                        &result_title);
 
-       ret = vconf_get_bool(
-               VCONFKEY_SETAPPL_STATE_TICKER_NOTI_DISPLAY_CONTENT_BOOL,
-               &boolval);
-
        notification_get_text(noti, NOTIFICATION_TEXT_TYPE_CONTENT,
                        &result_content);
        if (result_title)
@@ -389,14 +344,14 @@ static char *_quickpanel_ticker_get_label(notification_h noti)
 }
 
 static void _noti_hide_cb(void *data, Evas_Object *obj,
-       const char *emission, const char *source)
+                       const char *emission, const char *source)
 {
        if (g_timer) {
                ecore_timer_del(g_timer);
                g_timer = NULL;
        }
 
-       _quickpanel_ticker_hide(NULL);
+       _quickpanel_ticker_hide();
 }
 
 static Evas_Object *_quickpanel_ticker_create_tickernoti(void *data)
@@ -412,11 +367,9 @@ static Evas_Object *_quickpanel_ticker_create_tickernoti(void *data)
 
        retif(noti == NULL, NULL, "Invalid parameter!");
 
-       // tickernoti
        tickernoti = noti_win_add(NULL);
        retif(tickernoti == NULL, NULL, "Failed to add elm tickernoti.");
 
-       // detail view
        detail = elm_layout_add(tickernoti);
        if (!detail) {
                ERR("Failed to get detailview.");
@@ -424,31 +377,35 @@ static Evas_Object *_quickpanel_ticker_create_tickernoti(void *data)
                return NULL;
        }
        elm_layout_theme_set(detail, "tickernoti", "base", "default");
-       elm_object_signal_callback_add(detail, "request,hide", "", _noti_hide_cb, NULL);
+       elm_object_signal_callback_add(detail, "request,hide", "",
+                               _noti_hide_cb, NULL);
+
        data_win_height = (char *)elm_layout_data_get(detail, "height");
        if (data_win_height != NULL && elm_config_scale_get() > 0.0)
-               noti_height = (int)(elm_config_scale_get() * atoi(data_win_height));
+               noti_height = (int)(elm_config_scale_get()
+                                       * atoi(data_win_height));
        evas_object_size_hint_min_set(detail, 1, noti_height);
+
        noti_win_content_set(tickernoti, detail);
-       // icon for detail view
+
        icon = _quickpanel_ticker_create_icon(detail, noti);
        if (icon != NULL)
                elm_object_part_content_set(detail, "icon", icon);
 
-       // button for detail view
        button = _quickpanel_ticker_create_button(detail, noti);
        if (button != NULL)
                elm_object_part_content_set(detail, "button", button);
 
-       // label
        buf = _quickpanel_ticker_get_label(noti);
        if (buf != NULL) {
                elm_object_part_text_set(detail, "elm.text", buf);
                free(buf);
        }
 
-       /* Use style "default" for detailview mode and "info" for text only mode */
-       elm_object_style_set(tickernoti,"default");
+       /* Use style "default" for detailview mode and
+        * "info" for text only mode
+        */
+       elm_object_style_set(tickernoti, "default");
 
        return tickernoti;
 }
@@ -460,38 +417,34 @@ static int _quickpanel_ticker_get_angle(void *data)
        int ret = 0, angle = 0, count = 0;
        unsigned char *prop_data = NULL;
 
-       xwin = elm_win_xwindow_get(ad->noti.win);
+       xwin = elm_win_xwindow_get(ad->win);
        root = ecore_x_window_root_get(xwin);
 
-       ret =
-           ecore_x_window_prop_property_get(root,
-                                            ECORE_X_ATOM_E_ILLUME_ROTATE_ROOT_ANGLE,
-                                            ECORE_X_ATOM_CARDINAL, 32,
-                                            &prop_data, &count);
+       ret = ecore_x_window_prop_property_get(root,
+                               ECORE_X_ATOM_E_ILLUME_ROTATE_ROOT_ANGLE,
+                               ECORE_X_ATOM_CARDINAL, 32,
+                               &prop_data, &count);
 
        if (ret && prop_data) {
                memcpy(&angle, prop_data, sizeof(int));
 
-               if (prop_data) {
+               if (prop_data)
                        free(prop_data);
-               }
 
                return angle;
        } else {
                ERR("Fail to get angle");
-               if (prop_data) {
+               if (prop_data)
                        free(prop_data);
-               }
 
                return -1;
        }
 }
 
-void _quickpanel_ticker_noti_changed_cb(void *data, notification_type_e type)
+static void _quickpanel_ticker_noti_changed_cb(void *data, notification_type_e type)
 {
        notification_list_h noti_list = NULL;
        notification_h noti = NULL;
-       notification_h noti_prev = NULL;
        notification_error_e noti_err = NOTIFICATION_ERROR_NONE;
        int angle = 0;
        int current_inserted_time = 0;
@@ -502,7 +455,7 @@ void _quickpanel_ticker_noti_changed_cb(void *data, notification_type_e type)
 
        INFO("_quickpanel_ticker_noti_changed_cb");
 
-       // Get latest item
+       /* Get latest item */
        noti_err = notification_get_grouping_list(type, 1, &noti_list);
        if (noti_err != NOTIFICATION_ERROR_NONE) {
                ERR("Fail to notification_get_grouping_list : %d", noti_err);
@@ -523,33 +476,29 @@ void _quickpanel_ticker_noti_changed_cb(void *data, notification_type_e type)
                return;
        }
 
-       char *pkgname = NULL;
-       int priv_id = 0;
-       // Save latest item's inserted time
+       /* Save latest item's inserted time */
        current_inserted_time = (int)insert_time;
        if (latest_inserted_time >= current_inserted_time) {
-               // delete temporary here only ticker noti display item
-               notification_get_display_applist(noti, &applist);
-               if (applist & NOTIFICATION_DISPLAY_APP_TICKER) {
-                       if (applist &
-                           NOTIFICATION_DISPLAY_APP_NOTIFICATION_TRAY) {
-
-                       } else {
-                               //delete
-                               notification_get_pkgname(noti, &pkgname);
-                               notification_get_id(noti, NULL, &priv_id);
-                               notification_delete_by_priv_id(pkgname,
-                                                              NOTIFICATION_TYPE_NONE,
-                                                              priv_id);
-                       }
-               }
+               /* delete temporary here only ticker noti display item */
+               __ticker_only_noti_del(noti);
 
                notification_free_list(noti_list);
                return;
        }
        latest_inserted_time = current_inserted_time;
 
-       // Play sound
+       /* Check setting's event  notificcation */
+       ret = _quickpanel_ticker_check_setting_event_value(noti);
+       if (ret < 0) {
+               INFO("Disable tickernoti ret : %d", ret);
+               /* delete temporary here only ticker noti display item */
+               __ticker_only_noti_del(noti);
+
+               notification_free_list(noti_list);
+               return;
+       }
+
+       /* Play sound */
        notification_sound_type_e nsound_type = NOTIFICATION_SOUND_TYPE_NONE;
        const char *nsound_path = NULL;
 
@@ -557,9 +506,8 @@ void _quickpanel_ticker_noti_changed_cb(void *data, notification_type_e type)
        DBG("Sound : %d, %s", nsound_type, nsound_path);
        if (nsound_type > NOTIFICATION_SOUND_TYPE_NONE
            || nsound_type < NOTIFICATION_SOUND_TYPE_MAX) {
-               if (g_svi == 0) {
+               if (g_svi == 0)
                        svi_init(&g_svi);
-               }
 
                switch (nsound_type) {
                case NOTIFICATION_SOUND_TYPE_DEFAULT:
@@ -567,14 +515,14 @@ void _quickpanel_ticker_noti_changed_cb(void *data, notification_type_e type)
                        break;
                case NOTIFICATION_SOUND_TYPE_USER_DATA:
                        mm_sound_play_sound(nsound_path,
-                                           VOLUME_TYPE_NOTIFICATION, NULL,
-                                           NULL, NULL);
+                                       VOLUME_TYPE_NOTIFICATION, NULL,
+                                       NULL, NULL);
                        break;
                default:
                        break;
                }
        }
-       // Play Vibration
+       /* Play Vibration */
        notification_vibration_type_e nvibration_type =
            NOTIFICATION_VIBRATION_TYPE_NONE;
        const char *nvibration_path = NULL;
@@ -583,9 +531,8 @@ void _quickpanel_ticker_noti_changed_cb(void *data, notification_type_e type)
        DBG("Vibration : %d, %s", nvibration_type, nvibration_path);
        if (nvibration_type > NOTIFICATION_VIBRATION_TYPE_NONE
            || nvibration_type < NOTIFICATION_VIBRATION_TYPE_MAX) {
-               if (g_svi == 0) {
+               if (g_svi == 0)
                        svi_init(&g_svi);
-               }
 
                switch (nvibration_type) {
                case NOTIFICATION_SOUND_TYPE_DEFAULT:
@@ -597,99 +544,78 @@ void _quickpanel_ticker_noti_changed_cb(void *data, notification_type_e type)
                        break;
                }
        }
-       // Skip if previous ticker is still shown
-       if (g_ticker) {
-               // delete temporary here only ticker noti display item
-               notification_get_display_applist(noti, &applist);
-               if (applist & NOTIFICATION_DISPLAY_APP_TICKER) {
-                       if (applist &
-                           NOTIFICATION_DISPLAY_APP_NOTIFICATION_TRAY) {
-
-                       } else {
-                               //delete
-                               notification_get_pkgname(noti, &pkgname);
-                               notification_get_id(noti, NULL, &priv_id);
-                               notification_delete_by_priv_id(pkgname,
-                                                              NOTIFICATION_TYPE_NONE,
-                                                              priv_id);
-                       }
-               }
 
-               notification_free_list(noti_list);
-               return;
+       /* Skip if previous ticker is still shown */
+       if (g_ticker) {
+               _quickpanel_ticker_hide();
        }
-       // Check setting's event  notificcation
-       ret = _quickpanel_ticker_check_setting_event_value(noti);
 
-       // Check tickernoti flag
+       /* Check tickernoti flag */
        notification_get_property(noti, &flags);
        notification_get_display_applist(noti, &applist);
 
-       if (flags & NOTIFICATION_PROP_DISABLE_TICKERNOTI || ret < 0) {
-               INFO("Disable tickernoti ret : %d", ret);
-       } else if (applist & NOTIFICATION_DISPLAY_APP_TICKER) {
-               // Display ticker
-               // Add timer
-               if (g_timer) {
+       if (flags & NOTIFICATION_PROP_DISABLE_TICKERNOTI)
+               INFO("NOTIFICATION_PROP_DISABLE_TICKERNOTI");
+       else if (applist & NOTIFICATION_DISPLAY_APP_TICKER) {
+               /* Display ticker */
+               if (g_timer)
                        ecore_timer_del(g_timer);
-               }
-               g_timer =
-                   ecore_timer_add(QP_TICKER_DURATION, _quickpanel_ticker_hide,
-                                   NULL);
 
-               // Show ticker
                g_ticker = _quickpanel_ticker_create_tickernoti(noti);
                if (g_ticker == NULL) {
                        ERR("Fail to create tickernoti");
                        return;
                }
-               // Set rotate
+
+               g_timer = ecore_timer_add(QP_TICKER_DURATION,
+                               _quickpanel_ticker_timeout_cb, NULL);
+
+
                angle = _quickpanel_ticker_get_angle(data);
-               if (angle > 0) {
+               if (angle > 0)
                        elm_win_rotation_with_resize_set(g_ticker, angle);
-               }
 
                evas_object_show(g_ticker);
 
                evas_object_event_callback_add(g_ticker, EVAS_CALLBACK_SHOW,
-                                              _quickpanel_ticker_detail_show_cb,
-                                              g_ticker);
+                                       _quickpanel_ticker_detail_show_cb,
+                                       g_ticker);
                evas_object_event_callback_add(g_ticker, EVAS_CALLBACK_HIDE,
-                                              _quickpanel_ticker_detail_hide_cb,
-                                              g_ticker);
+                                       _quickpanel_ticker_detail_hide_cb,
+                                       g_ticker);
 
                evas_object_smart_callback_add(g_ticker, "clicked",
-                                              _quickpanel_ticker_clicked_cb,
-                                              noti);
+                                       _quickpanel_ticker_clicked_cb,
+                                       noti);
        }
 
-       if (g_latest_noti_list) {
+       if (g_latest_noti_list)
                notification_free_list(g_latest_noti_list);
-       }
+
        g_latest_noti_list = noti_list;
 }
 
-/**************************************************************************************
+/*****************************************************************************
  *
  * Util functions
  *
- *************************************************************************************/
+ *****************************************************************************/
 static int quickpanel_ticker_init(void *data)
 {
        struct appdata *ad = (struct appdata *)data;
 
        latest_inserted_time = time(NULL);
-       g_window = ad->noti.win;
+       g_window = ad->win;
 
        notification_resister_changed_cb(_quickpanel_ticker_noti_changed_cb,
-                                        data);
+                                       data);
 
        return QP_OK;
 }
 
 static int quickpanel_ticker_fini(void *data)
 {
-       _quickpanel_ticker_hide(NULL);
+       _quickpanel_ticker_hide();
 
        if (g_svi != 0) {
                svi_fini(g_svi);
old mode 100644 (file)
new mode 100755 (executable)
index f614946..38a13ec
  */
 
 #include <stdio.h>
+#include <signal.h>
+#include <app.h>
+#include <sys/utsname.h>
 #include <X11/Xlib.h>
 #include <X11/Xatom.h>
-
-#include <appcore-efl.h>
+#include <utilX.h>
 #include <Ecore_X.h>
+#include <Ecore_Input.h>
 #include <heynoti.h>
 #include <vconf.h>
 #include <aul.h>
 #include <unistd.h>
 #include <privilege-control.h>
-#include <iniparser.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"
 #define HIBERNATION_LEAVE_NOTI "HIBERNATION_LEAVE"
 
-/* HD base size */
-#define QP_NOTI_WINDOW_H       144
-#define QP_INDICATOR_H         50
-#define QP_HANDLE_H                    50
+#define QP_WINDOW_PRIO 300
 
 /* heynoti handle */
-static int g_hdl_heynoti = 0;
+static int g_hdl_heynoti;
 
 /* binary information */
-#define QP_EMUL_STR    "emul"
-#define QP_EMUL_STR_LEN        4
-#define QP_BIN_INFO_PATH       "/etc/info.ini"
+#define QP_EMUL_STR            "i686_emulated"
 
 static int common_cache_flush(void *evas);
 
-/**********************************************************************************
+/*****************************************************************************
   *
   * HIBERNATION
   *
-  ********************************************************************************/
+  ****************************************************************************/
 static void _hibernation_enter_cb(void *data)
 {
        struct appdata *ad = data;
 
        INFO(" >>>>>>>>>>>>>>> ENTER HIBERNATION!! <<<<<<<<<<<<<<<< ");
        hib_enter_modules(data);
-       if (ad) {
-               common_cache_flush(ad->noti.evas);
-       }
+       if (ad)
+               common_cache_flush(ad->evas);
 }
 
 static void _hibernation_leave_cb(void *data)
@@ -72,29 +69,30 @@ static void _hibernation_leave_cb(void *data)
        INFO(" >>>>>>>>>>>>>>> LEAVE HIBERNATION!! <<<<<<<<<<<<<<<< ");
 }
 
-/**********************************************************************************
+/******************************************************************************
   *
   * UI
   *
-  ********************************************************************************/
+  ****************************************************************************/
 
 static Eina_Bool quickpanel_ui_refresh_cb(void *data)
 {
-       INFO(" >>>>>>>>>>>>>>> Refresh QP Setting modules!! <<<<<<<<<<<<<<<< ");
+       struct appdata *ad = NULL;
 
-       refresh_modules(data);
+       retif(data == NULL, QP_FAIL, "Invalid parameter!");
+       ad = data;
 
-       return EINA_FALSE;
-}
+       INFO(" >>>>>>>>>>>>>>> Refresh QP modules!! <<<<<<<<<<<<<<<< ");
+       refresh_modules(data);
 
-static int quickpanel_ui_lang_changed_cb(void *data)
-{
-       retif(data == NULL, QP_FAIL, "Invalid parameter!");
+       if (ad->list) {
+               elm_genlist_realized_items_update(ad->list);
+       }
 
-       INFO(" >>>>>>>>>>>>>>> LANGUAGE CHANGED!! <<<<<<<<<<<<<<<< ");
-       lang_change_modules(data);
+       quickpanel_init_size_genlist(ad);
+       quickpanel_ui_update_height(ad);
 
-       return QP_OK;
+       return EINA_FALSE;
 }
 
 static int common_cache_flush(void *evas)
@@ -131,171 +129,96 @@ static int common_cache_flush(void *evas)
        return QP_OK;
 }
 
-static int quickpanel_ui_low_battery_cb(void *data)
-{
-       return QP_OK;
-}
-
-static int _quickpanel_get_mini_win_height(void *data, int angle)
-{
-       struct appdata *ad = data;
-       Ecore_X_Atom qp_list_atom;
-       Ecore_X_Window root;
-       Ecore_X_Window *qp_lists;
-       int num_qp_lists, i;
-       unsigned int width = 0;
-       unsigned int height = 0;
-       unsigned int border = 0;
-       unsigned int depth = 0;
-       int rel_x, rel_y;
-       Ecore_X_Display *dpy = NULL;
-       int ret_height = 0;
-       int ret_width = 0;
-       int ret_mini_height = 0;
-
-       root = ecore_x_window_root_first_get();
-
-       Ecore_X_Window noti_xwin = elm_win_xwindow_get(ad->noti.win);
-
-       qp_list_atom = ecore_x_atom_get("_E_ILLUME_QUICKPANEL_WINDOW_LIST");
-       if (!qp_list_atom) {
-               return 0;
-       }
-
-       num_qp_lists =
-           ecore_x_window_prop_window_list_get(root, qp_list_atom, &qp_lists);
-
-       if (num_qp_lists > 0) {
-               for (i = 0; i < num_qp_lists; i++) {
-                       dpy = ecore_x_display_get();
-
-                       ecore_x_window_size_get(qp_lists[i], &width, &height);
-                       if (noti_xwin == qp_lists[i]) {
-                               INFO("[%d] Notification window : (%d X %d)", i,
-                                    width, height);
-                       } else {
-                               INFO("[%d] Other window : (%d X %d)", i, width,
-                                    height);
-                               ret_height = ret_height + height;
-                               ret_width = ret_width + width;
-
-                               if (height > width) {
-                                       ret_mini_height += width;
-                               } else {
-                                       ret_mini_height += height;
-                               }
-                       }
-               }
-       }
-
-       if (qp_lists) {
-               free(qp_lists);
-       }
-
-       INFO("ret width : %d, ret height : %d, ret_mini_height : %d", ret_width,
-            ret_height, ret_mini_height);
-
-       return ret_mini_height;
-}
-
 static int _resize_noti_win(void *data, int new_angle)
 {
        struct appdata *ad = (struct appdata *)data;
        int w = 0, h = 0;
-       int diff = (ad->angle > new_angle) ?
-           (ad->angle - new_angle) : (new_angle - ad->angle);
-       int mini_height = 0;
+       int tot_h = 0;
+       int diff = 0;
 
-       mini_height = _quickpanel_get_mini_win_height(data, new_angle);
+       diff = (ad->angle > new_angle) ?
+           (ad->angle - new_angle) : (new_angle - ad->angle);
 
-       int tot_h = QP_HANDLE_H * ad->scale + mini_height;
+#if 0
+       int tot_h = QP_HANDLE_H * ad->scale;
 
        /* get indicator height */
        ecore_x_e_illume_indicator_geometry_get(ecore_x_window_root_first_get(),
                                                NULL, NULL, NULL, &h);
        if (h <= 0)
-               h = QP_INDICATOR_H;
+               h = (int)(QP_INDICATOR_H * ad->scale);
 
        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
 
        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) {
-                       INFO("(2-1)Resize noti window to %d x %d diff : %d, angle : %d,  xwin(%dx%d), mini_h : %d", w - tot_h, h, diff, ad->angle, w, h, mini_height);
-                       evas_object_resize(ad->noti.win, w - tot_h, h);
+                       width = w - tot_h;
+                       height = h;
                } else {
-                       INFO("(2-2)Resize noti window to %d x %d diff : %d, angle : %d, xwin(%dx%d), mini_h : %d", h - tot_h, w, diff, ad->angle, w, h, mini_height);
-                       evas_object_resize(ad->noti.win, h - tot_h, w);
+                       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 0;
 }
 
-static Eina_Bool quickpanel_ui_client_message_cb(void *data, int type,
-                                                void *event)
+static Eina_Bool quickpanel_hardkey_up_cb(void *data, int type, void *event)
 {
-       struct appdata *ad = data;
-       Ecore_X_Event_Client_Message *ev =
-           (Ecore_X_Event_Client_Message *) event;
-       int new_angle;
+       struct appdata *ad = NULL;
+       Ecore_Event_Key *key_event = NULL;
+       Ecore_X_Window xwin;
 
-       retif(data == NULL
-             || event == NULL, ECORE_CALLBACK_RENEW, "Invalid parameter!");
+       retif(data == NULL || event == NULL,
+               EINA_FALSE, "Invalid parameter!");
+       ad = data;
+       key_event = event;
 
-       if (ev->message_type == ECORE_X_ATOM_E_ILLUME_ROTATE_WINDOW_ANGLE) {
-               new_angle = ev->data.l[0];
-               if (new_angle != ad->angle) {
-                       INFO("ROTATION: %d", new_angle);
-                       _resize_noti_win(ad, new_angle);
-                       elm_win_rotation_with_resize_set(ad->noti.win,
-                                                        new_angle);
-                       ad->angle = new_angle;
-               }
+       Ecore_Event_Key *pKeyEvent = (Ecore_Event_Key *) event;
 
-               ecore_idler_add(quickpanel_ui_refresh_cb, ad);
+       if (!strcmp(key_event->keyname, KEY_SELECT)) {
+               xwin = elm_win_xwindow_get(ad->win);
+               if (xwin != NULL)
+                       ecore_x_e_illume_quickpanel_state_send(ecore_x_e_illume_zone_get(xwin),ECORE_X_ILLUME_QUICKPANEL_STATE_OFF);
        }
-       return ECORE_CALLBACK_RENEW;
+       return EINA_FALSE;
 }
 
-static Eina_Bool quickpanel_ui_window_property_cb(void *data, int type,
-                                                 void *event)
+static Eina_Bool quickpanel_ui_client_message_cb(void *data, int type,
+                                                void *event)
 {
-       Ecore_X_Event_Window_Property *e = event;
        struct appdata *ad = data;
-       Ecore_X_Window root, mini_win;
-       Ecore_X_Atom qp_list_atom;
-       Ecore_X_Atom mini_atom;
-       int mini_height = 0, tot_h = 0, w = 0, h = 0;
-
-       if (e == NULL || ad == NULL)
-               return ECORE_CALLBACK_RENEW;
-
-       qp_list_atom = ecore_x_atom_get("_E_ILLUME_QUICKPANEL_WINDOW_LIST");
-
-       if (e->atom == qp_list_atom) {
-               INFO("QuickPanel Window ADDED!");
-
-               mini_height = _quickpanel_get_mini_win_height(data, ad->angle);
-               tot_h = QP_HANDLE_H * ad->scale + mini_height;
+       Ecore_X_Event_Client_Message *ev = event;
+       int new_angle;
 
-               ecore_x_e_illume_indicator_geometry_get
-                   (ecore_x_window_root_first_get(), NULL, NULL, NULL, &h);
-               if (h <= 0) {
-                       h = QP_INDICATOR_H;
-               }
+       retif(data == NULL || event == NULL,
+               ECORE_CALLBACK_RENEW, "Invalid parameter!");
 
-               tot_h += h;
+       if (ev->message_type == ECORE_X_ATOM_E_ILLUME_ROTATE_WINDOW_ANGLE) {
+               new_angle = ev->data.l[0];
 
-               ecore_x_window_size_get(ecore_x_window_root_first_get(), &w,
-                                       &h);
+               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);
 
-               if (ad->angle % 180 == 0) {
-                       INFO("(1)Resize noti window to %d x %d angle : %d,  xwin(%dx%d), mini_h : %d", w, h - tot_h, ad->angle, w, h, mini_height);
-                       evas_object_resize(ad->noti.win, w, h - tot_h);
-               } else {
-                       INFO("(2)Resize noti window to %d x %d angle : %d,  xwin(%dx%d), mini_h : %d", h, w - tot_h, ad->angle, w, h, mini_height);
-                       evas_object_resize(ad->noti.win, h, w - tot_h);
+                               elm_win_rotation_with_resize_set(ad->win,
+                                                                new_angle);
+                               ad->angle = new_angle;
+                       }
                }
+               ecore_idler_add(quickpanel_ui_refresh_cb, ad);
        }
        return ECORE_CALLBACK_RENEW;
 }
@@ -307,10 +230,11 @@ static Evas_Object *_quickpanel_ui_window_add(const char *name, int prio)
 
        eo = elm_win_add(NULL, name, ELM_WIN_BASIC);
        if (eo != NULL) {
+               elm_win_alpha_set(eo, EINA_TRUE);
+               elm_win_indicator_mode_set(eo, ELM_WIN_INDICATOR_SHOW);
                elm_win_title_set(eo, name);
                elm_win_borderless_set(eo, EINA_TRUE);
                elm_win_autodel_set(eo, EINA_TRUE);
-               elm_win_alpha_set(eo, EINA_TRUE);
 
                /* set this window as a quickpanel */
                elm_win_quickpanel_set(eo, 1);
@@ -337,7 +261,8 @@ static Evas_Object *_quickpanel_ui_load_edj(Evas_Object * win, const char *file,
        retif(eo == NULL, NULL, "Failed to add layout object!");
 
        r = elm_layout_file_set(eo, file, group);
-       retif(r != EINA_TRUE, NULL, "Failed to set edje object file!");
+       retif(r != EINA_TRUE, NULL,
+               "Failed to set edje object file[%s-%s]!", file, group);
 
        evas_object_size_hint_weight_set(eo,
                                         EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
@@ -347,36 +272,21 @@ static Evas_Object *_quickpanel_ui_load_edj(Evas_Object * win, const char *file,
        return eo;
 }
 
-static int _quickpanel_ui_create_noti(struct appdata *ad)
-{
-       char buf[1024] = { 0, };
+static void _quickpanel_ui_close_quickpanel(void *data, Evas_Object *o,
+               const char *emission, const char *source) {
 
-       /* create noti window */
-       ad->noti.win =
-           _quickpanel_ui_window_add("Quickpanel Noti Wiondow", QP_PRIO_NOTI);
-       if (ad->noti.win == NULL) {
-               ERR("ui create : failed to create noti window.");
-       }
+       Ecore_X_Window xwin = NULL;
+       struct appdata *ad = NULL;
 
-       /* load noti edje */
-       snprintf(buf, sizeof(buf), "%s/%s_noti.edj", EDJDIR, PACKAGE);
-
-       ad->noti.ly = _quickpanel_ui_load_edj(ad->noti.win, buf, GROUP_NOTI);
-       if (ad->noti.ly == NULL) {
-               INFO("ui create : failed to load %s", buf);
-               /* load default theme */
-               ad->noti.ly =
-                   _quickpanel_ui_load_edj(ad->noti.win, DEFAULT_NOTI_EDJ,
-                                           GROUP_NOTI);
-               if (ad->noti.ly == NULL) {
-                       ERR("ui create : failed to create noti theme.");
-               }
-       }
+       retif(data == NULL, , "data is NULL");
+       ad = data;
 
-       /* get noti evas */
-       ad->noti.evas = evas_object_evas_get(ad->noti.win);
+       DBG("close quick panel");
 
-       return 0;
+       xwin = elm_win_xwindow_get(ad->win);
+
+       if (xwin != NULL)
+               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)
@@ -384,42 +294,172 @@ static int _quickpanel_ui_create_win(void *data)
        struct appdata *ad = data;
        int w = 0;
        int h = 0;
+
        retif(data == NULL, QP_FAIL, "Invialid parameter!");
 
-       /* Get resolution and scale */
-       ecore_x_window_size_get(ecore_x_window_root_first_get(), &w, &h);
-       ad->scale = elm_config_scale_get();
-       if (ad->scale < 0) {
-               ad->scale = 1.0;
+       ad->win = _quickpanel_ui_window_add("Quickpanel Wiondow",
+                                       QP_WINDOW_PRIO);
+       if (ad->win == NULL) {
+               ERR("ui create : failed to create window.");
+               return -1;
        }
 
-       /* Create window */
-       _quickpanel_ui_create_noti(ad);
+       ad->ly = _quickpanel_ui_load_edj(ad->win,
+                               DEFAULT_EDJ, "quickpanel/gl_base");
+       if (ad->ly == NULL)
+               return -1;
 
-       /* Resize window */
-       if (ad->noti.win != NULL) {
-               ad->noti.h =
-                   h - ad->scale * (QP_INDICATOR_H + QP_HANDLE_H);
-               evas_object_resize(ad->noti.win, w, ad->noti.h);
+       /* get noti evas */
+       ad->evas = evas_object_evas_get(ad->win);
+
+       ad->list = elm_genlist_add(ad->ly);
+       if (!ad->list) {
+               ERR("failed to elm_genlist_add");
+               evas_object_del(ad->ly);
+               evas_object_del(ad->win);
+               ad->ly = NULL;
+               ad->win = NULL;
+               ad->evas = NULL;
+               return -1;
        }
+       elm_genlist_homogeneous_set(ad->list, EINA_FALSE);
+       elm_object_part_content_set(ad->ly, "qp.gl_base.gl.swallow", ad->list);
+
+       ecore_x_window_size_get(ecore_x_window_root_first_get(), &w, &h);
+       evas_object_resize(ad->win, w, h);
+
+       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);
+
+       /* key grab */
+       utilx_grab_key(ecore_x_display_get(), elm_win_xwindow_get(ad->win), KEY_SELECT, TOP_POSITION_GRAB);
 
        return 0;
 }
 
+void quickpanel_ui_window_set_input_region(void *data, int contents_height)
+{
+       struct appdata *ad = NULL;
+       Ecore_X_Window xwin;
+       Ecore_X_Atom atom_window_input_region = 0;
+       unsigned int window_input_region[4] = {0,};
+
+       retif(data == NULL,  , "Invialid parameter!");
+       ad = data;
+
+       xwin = elm_win_xwindow_get(ad->win);
+
+       DBG("angle:%d", ad->angle);
+       switch (ad->angle) {
+               case 0:
+                       window_input_region[0] = 0; //X
+                       window_input_region[1] = contents_height; // Y
+                       window_input_region[2] = ad->win_width; // Width
+                       window_input_region[3] = ad->scale * QP_HANDLE_H; // height
+                       break;
+               case 90:
+                       window_input_region[0] = contents_height; //X
+                       window_input_region[1] = 0; // Y
+                       window_input_region[2] = ad->scale * QP_HANDLE_H; // Width
+                       window_input_region[3] = ad->win_height; // height
+                       break;
+               case 180:
+                       window_input_region[0] = 0; //X
+                       window_input_region[1] = ad->win_height - contents_height - ad->scale * QP_HANDLE_H; // Y
+                       window_input_region[2] = ad->win_width; // Width
+                       window_input_region[3] = ad->scale * QP_HANDLE_H; // height
+                       break;
+               case 270:
+                       window_input_region[0] = ad->win_width - contents_height - ad->scale * QP_HANDLE_H ; //X
+                       window_input_region[1] = 0; // Y
+                       window_input_region[2] = ad->scale * QP_HANDLE_H; // Width
+                       window_input_region[3] = ad->win_height; // height
+                       break;
+       }
+
+       DBG("win_input_0:%d\nwin_input_1:%d\nwin_input_2:%d\nwin_input_3:%d\n"
+                       ,window_input_region[0]
+                       ,window_input_region[1]
+                       ,window_input_region[2]
+                   ,window_input_region[3]
+                       );
+
+       atom_window_input_region = ecore_x_atom_get(STR_ATOM_WINDOW_INPUT_REGION);
+       ecore_x_window_prop_card32_set(xwin, atom_window_input_region, window_input_region, 4);
+}
+
+void quickpanel_ui_window_set_content_region(void *data, int contents_height)
+{
+       struct appdata *ad = NULL;
+       Ecore_X_Window xwin;
+       Ecore_X_Atom atom_window_contents_region = 0;
+       unsigned int window_contents_region[4] = {0,};
+
+       retif(data == NULL,  , "Invialid parameter!");
+       ad = data;
+
+       xwin = elm_win_xwindow_get(ad->win);
+
+       DBG("angle:%d", ad->angle);
+       switch (ad->angle) {
+               case 0:
+                       window_contents_region[0] = 0; //X
+                       window_contents_region[1] = 0; // Y
+                       window_contents_region[2] = ad->win_width; // Width
+                       window_contents_region[3] = contents_height; // height
+                       break;
+               case 90:
+                       window_contents_region[0] = 0; //X
+                       window_contents_region[1] = 0; // Y
+                       window_contents_region[2] = contents_height; // Width
+                       window_contents_region[3] = ad->win_height; // height
+                       break;
+               case 180:
+                       window_contents_region[0] = 0; //X
+                       window_contents_region[1] = ad->win_height - contents_height; // Y
+                       window_contents_region[2] = ad->win_width; // Width
+                       window_contents_region[3] = contents_height; // height
+                       break;
+               case 270:
+                       window_contents_region[0] = ad->win_width - contents_height ; //X
+                       window_contents_region[1] = 0; // Y
+                       window_contents_region[2] = contents_height; // Width
+                       window_contents_region[3] = ad->win_height; // height
+                       break;
+       }
+
+       DBG("win_contents_0:%d\nwin_contents_1:%d\nwin_contents_2:%d\nwin_contents_3:%d\n"
+                       ,window_contents_region[0]
+                       ,window_contents_region[1]
+                       ,window_contents_region[2]
+                   ,window_contents_region[3]
+                       );
+
+    atom_window_contents_region = ecore_x_atom_get(STR_ATOM_WINDOW_CONTENTS_REGION);
+    ecore_x_window_prop_card32_set(xwin, atom_window_contents_region, window_contents_region, 4);
+}
+
 static int _quickpanel_ui_delete_win(void *data)
 {
        struct appdata *ad = data;
        retif(data == NULL, QP_FAIL, "Invialid parameter!");
 
-       /* delete noti window */
-       if (ad->noti.ly != NULL) {
-               evas_object_del(ad->noti.ly);
-               ad->noti.ly = NULL;
+       if (ad->ly != NULL) {
+               evas_object_del(ad->ly);
+               ad->ly = NULL;
        }
-       if (ad->noti.win != NULL) {
-               evas_object_del(ad->noti.win);
-               ad->noti.win = NULL;
+       if (ad->win != NULL) {
+               evas_object_del(ad->win);
+               ad->win = NULL;
        }
+
+       return QP_OK;
 }
 
 static void _quickpanel_ui_init_heynoti(struct appdata *ad)
@@ -465,26 +505,19 @@ static void _quickpanel_ui_fini_heynoti(void)
 static void _quickpanel_ui_init_ecore_event(struct appdata *ad)
 {
        Ecore_Event_Handler *hdl = NULL;
+       Ecore_Event_Handler *hdl_key = NULL;
 
        /* Register window rotate event */
-       hdl =
-           ecore_event_handler_add(ECORE_X_EVENT_CLIENT_MESSAGE,
-                                   quickpanel_ui_client_message_cb, ad);
-       if (hdl == NULL) {
-               ERR("ui init ecore : failed to add handler(ECORE_X_EVENT_CLIENT_MESSAGE)");
-       }
+       hdl = ecore_event_handler_add(ECORE_X_EVENT_CLIENT_MESSAGE,
+                               quickpanel_ui_client_message_cb, ad);
+       if (hdl == NULL)
+               ERR("failed to add handler(ECORE_X_EVENT_CLIENT_MESSAGE)");
 
        ad->hdl_client_message = hdl;
 
-       /* Register quickpanel window list changed event */
-       hdl =
-           ecore_event_handler_add(ECORE_X_EVENT_WINDOW_PROPERTY,
-                                   quickpanel_ui_window_property_cb, ad);
-       if (hdl == NULL) {
-               ERR("ui init ecore : failed to add handler(ECORE_X_EVENT_WINDOW_PROPERTY)");
-       }
-
-       ad->hdl_win_property = hdl;
+       hdl_key = ecore_event_handler_add(ECORE_EVENT_KEY_UP, quickpanel_hardkey_up_cb, ad);
+       if (hdl_key == NULL)
+               ERR("failed to add handler(ECORE_EVENT_KEY_UP)");
 }
 
 static void _quickpanel_ui_fini_ecore_event(struct appdata *ad)
@@ -493,103 +526,190 @@ static void _quickpanel_ui_fini_ecore_event(struct appdata *ad)
                ecore_event_handler_del(ad->hdl_client_message);
                ad->hdl_client_message = NULL;
        }
+}
+static int _quickpanel_ui_check_emul(void)
+{
+       struct utsname buf;
 
-       if (ad->hdl_win_property != NULL) {
-               ecore_event_handler_del(ad->hdl_win_property);
-               ad->hdl_win_property = NULL;
-       }
+       uname(&buf);
+       INFO("machine : %s", buf.machine);
+
+       if (!strncmp(buf.machine, QP_EMUL_STR, strlen(QP_EMUL_STR)))
+               return 1;
+
+       return 0;
 }
 
-static void _quickpanel_ui_init_appcore_event(struct appdata *ad)
+static void _quickpanel_ui_setting_show(struct appdata *ad, int show)
 {
-       /* Register language chagned event */
-       appcore_set_event_callback(APPCORE_EVENT_LANG_CHANGE,
-                                  quickpanel_ui_lang_changed_cb, ad);
+       if (!ad)
+               return;
+
+       if (!ad->ly)
+               return;
+
+       ad->show_setting = 1;
 
-       /* Register low battery event */
-       appcore_set_event_callback(APPCORE_EVENT_LOW_BATTERY,
-                                  quickpanel_ui_low_battery_cb, ad);
 }
 
-static int _quickpanel_ui_check_emul(void)
+#ifdef QP_MINICTRL_ENABLE
+extern QP_Module minictrl;
+#endif /* QP_MINICTRL_ENABLE */
+extern QP_Module noti;
+
+static void _quickpanel_ui_update_height(void *data)
 {
-       dictionary *dic = NULL;
-       const char *bin_ver = NULL;
-       char *str = NULL;
-       char *pos = NULL;
-       const char emul[QP_EMUL_STR_LEN + 1] = {0,};
+       int contents_height = 0;
+       int height_genlist = 0;
 
-       dic = iniparser_load(QP_BIN_INFO_PATH);
-       if (dic == NULL) {
-               /* When failed to get the info, let's regard the binary as an emulator one */
-               return 1;
-       }
+       struct appdata *ad = NULL;
 
-       bin_ver = (const char*)iniparser_getstr(dic, "Version:Build");
-       if (bin_ver != NULL) {
-               str = strdup(bin_ver);
-               if (str != NULL) {
-                       pos = str;
-                       while (*pos++) {
-                               if ('_' == *pos) {
-                                       *pos = ' ';
-                               }
-                       }
-                       sscanf(str, "%*s %4s", emul);
-               }
-               free(str);
-       }
+       retif(data == NULL, , "data is NULL");
+       ad = data;
 
-       if (dic != NULL) {
-               iniparser_freedict(dic);
-               dic = NULL;
-       }
+       DBG("current item count:%d", elm_genlist_items_count(ad->list));
 
-       if (!strncmp(emul, QP_EMUL_STR, QP_EMUL_STR_LEN)) {
-               return 1;
-       }
+       height_genlist += noti.get_height(data);
+#ifdef QP_MINICTRL_ENABLE
+       height_genlist += minictrl.get_height(data);
+#endif
 
-       return 0;
+       height_genlist = (height_genlist > ad->gl_limit_height) ? ad->gl_limit_height : height_genlist;
+       evas_object_size_hint_min_set(ad->list, -1, height_genlist);
+
+       contents_height = ad->gl_distance_from_top + height_genlist + ad->gl_distance_to_bottom - ad->scale * QP_HANDLE_H;
+
+       DBG("height_genlist:%d\n gl_distance_from_top:%d\n gl_distance_to_bottom:%d\n gl_limit_height:%d\nnew_height:%d"
+                       ,height_genlist
+                       ,ad->gl_distance_from_top
+                       ,ad->gl_distance_to_bottom
+                       ,ad->gl_limit_height
+                       ,contents_height
+                       );
+
+       quickpanel_ui_window_set_input_region(ad, contents_height);
+       quickpanel_ui_window_set_content_region(ad, contents_height);
 }
 
-/**********************************************************************************
+static Eina_Bool quickpanel_ui_update_height_handler(void *data)
+{
+       _quickpanel_ui_update_height(data);
+       DBG("ui height updated in idler");
+
+       return EINA_FALSE;
+}
+
+void quickpanel_ui_update_height(void *data)
+{
+       _quickpanel_ui_update_height(data);
+       ecore_idler_add(quickpanel_ui_update_height_handler, data); // workaround(minicontrol)
+}
+
+void quickpanel_init_size_genlist(void *data)
+{
+       struct appdata *ad = NULL;
+       int max_height_window = 0;
+       Evas_Coord genlist_y = 0;
+       Evas_Coord spn_height = 0;
+
+       retif(data == NULL, , "data is NULL");
+       ad = data;
+
+       if (ad->angle == 90 || ad->angle == 270 )
+               max_height_window = ad->win_width;
+       else
+               max_height_window = ad->win_height;
+
+       edje_object_part_geometry_get(_EDJ(ad->ly), "qp.gl_base.gl.swallow", NULL, &genlist_y, NULL, NULL);
+       DBG("quickpanel, qp.gl_base.gl.swallow y: %d",genlist_y);
+
+       edje_object_part_geometry_get(_EDJ(ad->ly), "qp.base.spn.swallow", NULL, NULL, NULL, &spn_height);
+       DBG("quickpanel, to spn_height: %d",spn_height);
+
+       ad->gl_distance_from_top = genlist_y;
+       ad->gl_distance_to_bottom = spn_height + (1 * ad->scale) + (ad->scale*QP_HANDLE_H) ;
+       ad->gl_limit_height = max_height_window - ad->gl_distance_from_top - ad->gl_distance_to_bottom;
+
+       DBG("\nwin_angle:%d\nwin height:%d\n gl_distance_from_top:%d\n gl_distance_to_bottom:%d\n gl_limit_height:%d\n"
+                       ,ad->angle
+                       ,max_height_window
+                       ,ad->gl_distance_from_top
+                       ,ad->gl_distance_to_bottom
+                       ,ad->gl_limit_height
+                       );
+}
+
+/*****************************************************************************
   *
-  * Appcore interface
+  * App efl main interface
   *
-  ********************************************************************************/
+  ****************************************************************************/
+
+static void _signal_handler(int signum, siginfo_t *info, void *unused)
+{
+       DBG("Terminated...");
+       app_efl_exit();
+}
+
+static void _heynoti_event_power_off(void *data)
+{
+       DBG("Terminated...");
+       app_efl_exit();
+}
 
-static int app_create(void *data)
+static bool quickpanel_app_create(void *data)
 {
+       DBG("");
+
        pid_t pid;
        int r;
 
-       pid = setsid();
-       if (pid < 0) {
-               fprintf(stderr, "[QUICKPANEL] Failed to set session id!\n");
+       // signal handler
+       struct sigaction act;
+       act.sa_sigaction = _signal_handler;
+       act.sa_flags = SA_SIGINFO;
+
+       int ret = sigemptyset(&act.sa_mask);
+       if (ret < 0) {
+               ERR("Failed to sigemptyset[%s]", strerror(errno));
+       }
+       ret = sigaddset(&act.sa_mask, SIGTERM);
+       if (ret < 0) {
+               ERR("Failed to sigaddset[%s]", strerror(errno));
        }
+       ret = sigaction(SIGTERM, &act, NULL);
+       if (ret < 0) {
+               ERR("Failed to sigaction[%s]", strerror(errno));
+       }
+
+       pid = setsid();
+       if (pid < 0)
+               WARN("Failed to set session id!");
 
        r = control_privilege();
        if (r != 0) {
-               fprintf(stderr, "[QUICKPANEL] Failed to control privilege!\n");
-               return -1;
+               WARN("Failed to control privilege!");
+               return FALSE;
        }
 
        r = nice(2);
        if (r == -1)
-               fprintf(stderr, "[QUICKPANEL] Failed to set nice value!\n");
+               WARN("Failed to set nice value!");
 
-       return 0;
+       return TRUE;
 }
 
-static int app_terminate(void *data)
+static void quickpanel_app_terminate(void *data)
 {
+       DBG("");
+
        struct appdata *ad = data;
-       retif(ad == NULL, QP_FAIL, "invalid data.");
+       retif(ad == NULL, , "invalid data.");
 
        /* fini quickpanel modules */
        fini_modules(ad);
 
-       common_cache_flush(ad->noti.evas);
+       common_cache_flush(ad->evas);
 
        /* unregister system event callback */
        _quickpanel_ui_fini_heynoti();
@@ -602,80 +722,117 @@ static int app_terminate(void *data)
        _quickpanel_ui_delete_win(ad);
 
        INFO(" >>>>>>>>>>>>>>> QUICKPANEL IS TERMINATED!! <<<<<<<<<<<<<<<< ");
-       return 0;
 }
 
-static int app_pause(void *data)
+static void quickpanel_app_pause(void *data)
 {
+       DBG("");
+
        struct appdata *ad = data;
-       retif(ad == NULL, QP_FAIL, "invalid data.");
+       retif(ad == NULL,, "invalid data.");
 
        suspend_modules(ad);
 
-       common_cache_flush(ad->noti.evas);
-
-       return 0;
+       common_cache_flush(ad->evas);
 }
 
-static int app_resume(void *data)
+static void quickpanel_app_resume(void *data)
 {
-       resume_modules(data);
+       DBG("");
 
-       return 0;
+       resume_modules(data);
 }
 
-static int app_reset(bundle * b, void *data)
+static void quickpanel_app_service(service_h service, void *data)
 {
        struct appdata *ad = data;
        int ret = 0;
 
-       retif(ad == NULL, QP_FAIL, "Invialid parameter!");
+       retif(ad == NULL, , "Invialid parameter!");
 
        INFO(" >>>>>>>>>>>>>>> QUICKPANEL IS STARTED!! <<<<<<<<<<<<<<<< ");
+
        /* Check emulator */
        ad->is_emul = _quickpanel_ui_check_emul();
-       INFO("quickpanel run in %s", ad->is_emul? "Emul":"Device");
+       INFO("quickpanel run in %s", ad->is_emul ? "Emul" : "Device");
+
+       ad->scale = elm_config_scale_get();
+       if (ad->scale < 0)
+               ad->scale = 1.0;
+
+       /* Get theme */
+       elm_theme_extension_add(NULL, DEFAULT_THEME_EDJ);
 
        /* create quickpanel window */
        ret = _quickpanel_ui_create_win(ad);
-       retif(ret != QP_OK, QP_FAIL, "Failed to create window!");
+       retif(ret != QP_OK, , "Failed to create window!");
 
        /* init internationalization */
-       ret = appcore_set_i18n(PACKAGE, LOCALEDIR);
-       if (ret != 0) {
-               ERR("qp reset : fail to set i18n.");
-               return -1;
-       }
-       notification_daemon_win_set(ad->noti.win);
-       /* register system event callback */
-       _quickpanel_ui_init_appcore_event(ad);
+       notification_daemon_win_set(ad->win);
 
        _quickpanel_ui_init_ecore_event(ad);
 
        _quickpanel_ui_init_heynoti(ad);
 
+#ifdef QP_SETTING_ENABLE
+       _quickpanel_ui_setting_show(ad, 1);
+#else /* QP_SETTING_ENABLE */
+       _quickpanel_ui_setting_show(ad, 0);
+#endif /* QP_SETTING_ENABLE */
+
        /* init quickpanel modules */
        init_modules(ad);
 
        ecore_idler_add(quickpanel_ui_refresh_cb, ad);
+}
 
-       return 0;
+static void quickpanel_app_language_changed_cb(void *data)
+{
+       retif(data == NULL, , "Invalid parameter!");
+
+       INFO(" >>>>>>>>>>>>>>> LANGUAGE CHANGED!! <<<<<<<<<<<<<<<< ");
+       lang_change_modules(data);
+}
+
+static void quickpanel_app_region_format_changed_cb(void *data)
+{
+       INFO(" >>>>>>>>>>>>>>> region_format CHANGED!! <<<<<<<<<<<<<<<< ");
 }
 
 int main(int argc, char *argv[])
 {
        struct appdata ad;
-       struct appcore_ops ops = {
-               .create = app_create,
-               .terminate = app_terminate,
-               .pause = app_pause,
-               .resume = app_resume,
-               .reset = app_reset,
-       };
+       app_event_callback_s app_callback = {0,};
+
+       int heyfd = heynoti_init();
+       if (heyfd < 0) {
+               ERR("Failed to heynoti_init[%d]", heyfd);
+       }
+
+       int ret = heynoti_subscribe(heyfd, "power_off_start", _heynoti_event_power_off, NULL);
+       if (ret < 0) {
+               ERR("Failed to heynoti_subscribe[%d]", ret);
+       }
+       ret = heynoti_attach_handler(heyfd);
+       if (ret < 0) {
+               ERR("Failed to heynoti_attach_handler[%d]", ret);
+       }
+
+       app_callback.create = quickpanel_app_create;
+       app_callback.terminate = quickpanel_app_terminate;
+       app_callback.pause = quickpanel_app_pause;
+       app_callback.resume = quickpanel_app_resume;
+       app_callback.service = quickpanel_app_service;
+       app_callback.low_memory = NULL;
+       app_callback.low_battery = NULL;
+       app_callback.device_orientation = NULL;
+       app_callback.language_changed = quickpanel_app_language_changed_cb;
+       app_callback.region_format_changed = quickpanel_app_region_format_changed_cb;
 
        memset(&ad, 0x0, sizeof(struct appdata));
-       ops.data = &ad;
+
        notification_daemon_init();
 
-       return appcore_efl_main(PACKAGE, &argc, &argv, &ops);
+       DBG("start main");
+       return app_efl_main(&argc, &argv, &app_callback, (void *)&ad);
 }
old mode 100644 (file)
new mode 100755 (executable)
index 4f21234..f79b4f8
 
 #include <Elementary.h>
 
+#if !defined(VENDOR)
+#  define VENDOR "org.tizen"
+#endif
 #if !defined(PACKAGE)
 #  define PACKAGE                      "quickpanel"
 #endif
 
 #if !defined(LOCALEDIR)
-#  define LOCALEDIR                    "/opt/apps/org.tizen.quickpanel/res/locale"
+#  define LOCALEDIR                    "/usr/apps/"VENDOR"."PACKAGE"/res/locale"
 #endif
 
 #if !defined(EDJDIR)
-#  define EDJDIR                       "/opt/apps/org.tizen.quickpanel/res/edje"
+#  define EDJDIR                       "/usr/apps/"VENDOR"."PACKAGE"/res/edje"
 #endif
 
 /* EDJ theme */
-#define DEFAULT_NOTI_EDJ               EDJDIR"/"PACKAGE"_noti.edj"
-#define DEFAULT_CUSTOM_EDJ             EDJDIR"/"PACKAGE"_theme.edj"
-
-#define GROUP_NOTI             "quickpanel/noti"
+#define DEFAULT_EDJ            EDJDIR"/"PACKAGE".edj"
+#define DEFAULT_THEME_EDJ      EDJDIR"/"PACKAGE"_theme.edj"
 
 #define _EDJ(o) elm_layout_edje_get(o)
 #define _S(str)        dgettext("sys_string", str)
+#define _(str) gettext(str)
+#define _NOT_LOCALIZED(str) (str)
 
-#define QP_PRIO_NOTI           100
-
-#define QP_DEFAULT_WINDOW_H    1280    // Default is HD(720 X 1280)
+#define STR_ATOM_WINDOW_INPUT_REGION    "_E_COMP_WINDOW_INPUT_REGION"
+#define STR_ATOM_WINDOW_CONTENTS_REGION "_E_COMP_WINDOW_CONTENTS_REGION"
 
 struct appdata {
-       struct {
-               Evas_Object *win;
-               Evas_Object *ly;
-               Evas *evas;
-               double h;
-       } noti;
+       Evas_Object *win;
+       Evas_Object *ly;
+       Evas *evas;
 
+       Evas_Object *list;
        int angle;
        double scale;
+       char *theme;
 
-       int is_emul; // 0 : target, 1 : emul
-       Ecore_Event_Handler *hdl_client_message;
-       Ecore_Event_Handler *hdl_win_property;
+       int win_width;
+       int win_height;
+       int gl_limit_height;
+       int gl_distance_from_top;
+       int gl_distance_to_bottom;
 
-       Evas_Object *notilist;
-       Evas_Object *idletxtbox;
+       int is_emul; /* 0 : target, 1 : emul */
+       int show_setting;
+
+       Ecore_Event_Handler *hdl_client_message;
 
        E_DBus_Connection *dbus_connection;
        E_DBus_Signal_Handler *dbus_handler_size;
@@ -79,10 +84,14 @@ typedef struct _QP_Module {
        int (*hib_leave) (void *);
        void (*lang_changed) (void *);
        void (*refresh) (void *);
+       unsigned int (*get_height) (void *);
 
        /* do not modify this area */
        /* internal data */
        Eina_Bool state;
 } QP_Module;
 
+void quickpanel_init_size_genlist(void *data);
+void quickpanel_ui_update_height(void *data);
+
 #endif                         /* __QUICKPANEL_UI_H__ */
index fb8d972313567f0525b6118688c77f3bbab9b104..6f1706cf059c350008ce5cd7feecfe5afefe4988 100755 (executable)
@@ -1,7 +1,33 @@
-CONFIGURE_FILE(${PROJECT_NAME}.desktop.in ${CMAKE_CURRENT_BINARY_DIR}/org.tizen.${PROJECT_NAME}.desktop)
-INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/org.tizen.${PROJECT_NAME}.desktop DESTINATION ${DESKTOPDIR})
+#CONFIGURE_FILE(${PROJECT_NAME}.desktop.in ${CMAKE_CURRENT_BINARY_DIR}/${VENDOR}.${PROJECT_NAME}.desktop)
+#INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/${VENDOR}.${PROJECT_NAME}.desktop DESTINATION ${DESKTOPDIR})
+CONFIGURE_FILE(${PROJECT_NAME}.xml.in ${CMAKE_CURRENT_BINARY_DIR}/${VENDOR}.${PROJECT_NAME}.xml)
+INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/${VENDOR}.${PROJECT_NAME}.xml DESTINATION ${MANIFESTXMLDIR})
 
 CONFIGURE_FILE(${PROJECT_NAME}.sh.in ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME})
 INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME} DESTINATION /etc/init.d/)
 
-ADD_SUBDIRECTORY(base)
+#CONFIGURE_FILE(${PROJECT_NAME}.png ${CMAKE_CURRENT_BINARY_DIR}/${VENDOR}.${PROJECT_NAME}.png COPYONLY)
+#INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/${VENDOR}.${PROJECT_NAME}.png DESTINATION "/usr/share/icons/default/small")
+
+INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/sip.wav DESTINATION "${DATADIR}")
+
+ADD_CUSTOM_TARGET(quickpanel.edj
+               COMMAND edje_cc -id ${CMAKE_CURRENT_SOURCE_DIR}/icons  -id ${CMAKE_CURRENT_SOURCE_DIR}/images
+               ${CMAKE_CURRENT_SOURCE_DIR}/quickpanel.edc
+               ${CMAKE_CURRENT_BINARY_DIR}/quickpanel.edj
+               DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/quickpanel.edc
+)
+ADD_DEPENDENCIES(${PROJECT_NAME} quickpanel.edj)
+
+ADD_CUSTOM_TARGET(quickpanel_theme.edj
+               COMMAND edje_cc -id ${CMAKE_CURRENT_SOURCE_DIR}/icons
+               ${CMAKE_CURRENT_SOURCE_DIR}/quickpanel_theme.edc
+               ${CMAKE_CURRENT_BINARY_DIR}/quickpanel_theme.edj
+               DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/quickpanel_theme.edc
+)
+ADD_DEPENDENCIES(${PROJECT_NAME} quickpanel_theme.edj)
+
+INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/quickpanel.edj DESTINATION ${EDJDIR})
+INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/quickpanel_theme.edj DESTINATION ${EDJDIR})
+INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/icons DESTINATION ${RESDIR} FILES_MATCHING PATTERN "*.png")
+
diff --git a/data/base/CMakeLists.txt b/data/base/CMakeLists.txt
deleted file mode 100755 (executable)
index 32a5965..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-ADD_CUSTOM_TARGET(quickpanel_noti.edj
-               COMMAND edje_cc -id ${CMAKE_CURRENT_SOURCE_DIR}/image
-               ${CMAKE_CURRENT_SOURCE_DIR}/quickpanel_noti.edc
-               ${CMAKE_CURRENT_BINARY_DIR}/quickpanel_noti.edj
-               DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/quickpanel_noti.edc
-)
-ADD_DEPENDENCIES(${PROJECT_NAME} quickpanel_noti.edj)
-
-ADD_CUSTOM_TARGET(quickpanel_theme.edj
-               COMMAND edje_cc -id ${CMAKE_CURRENT_SOURCE_DIR}/image
-               ${CMAKE_CURRENT_SOURCE_DIR}/quickpanel_theme.edc
-               ${CMAKE_CURRENT_BINARY_DIR}/quickpanel_theme.edj
-               DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/quickpanel_theme.edc
-)
-ADD_DEPENDENCIES(${PROJECT_NAME} quickpanel_theme.edj)
-
-INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/quickpanel_noti.edj DESTINATION ${EDJDIR})
-INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/quickpanel_theme.edj DESTINATION ${EDJDIR})
-
diff --git a/data/base/image/RQ02_button_normal_center.png b/data/base/image/RQ02_button_normal_center.png
deleted file mode 100755 (executable)
index 2160f48..0000000
Binary files a/data/base/image/RQ02_button_normal_center.png and /dev/null differ
diff --git a/data/base/image/RQ02_button_normal_left.png b/data/base/image/RQ02_button_normal_left.png
deleted file mode 100755 (executable)
index 5ca9799..0000000
Binary files a/data/base/image/RQ02_button_normal_left.png and /dev/null differ
diff --git a/data/base/image/RQ02_button_normal_right.png b/data/base/image/RQ02_button_normal_right.png
deleted file mode 100755 (executable)
index 9a95c86..0000000
Binary files a/data/base/image/RQ02_button_normal_right.png and /dev/null differ
diff --git a/data/base/image/RQ02_button_press_center.png b/data/base/image/RQ02_button_press_center.png
deleted file mode 100755 (executable)
index f791a13..0000000
Binary files a/data/base/image/RQ02_button_press_center.png and /dev/null differ
diff --git a/data/base/image/RQ02_button_press_left.png b/data/base/image/RQ02_button_press_left.png
deleted file mode 100755 (executable)
index 1d75e21..0000000
Binary files a/data/base/image/RQ02_button_press_left.png and /dev/null differ
diff --git a/data/base/image/RQ02_button_press_right.png b/data/base/image/RQ02_button_press_right.png
deleted file mode 100755 (executable)
index 21aae89..0000000
Binary files a/data/base/image/RQ02_button_press_right.png and /dev/null differ
diff --git a/data/base/quickpanel_noti.edc b/data/base/quickpanel_noti.edc
deleted file mode 100644 (file)
index 94fcc67..0000000
+++ /dev/null
@@ -1,232 +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://www.tizenopensource.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 "quickpanel_noti_def.h"
-
-collections {
-
-       group {
-               name: "quickpanel/noti";
-               parts {
-                       part {
-                               name: "background";
-                               type: RECT;
-                               scale: 1;
-                               mouse_events: 0;
-                               description {
-                                       state: "default" 0.0;
-                                       color: QP_NOTI_BG_COLOR;
-                               }
-                       }
-
-                       part {
-                               name: "qp.noti.padding.top";
-                               type: RECT;
-                               scale: 1;
-                               description {
-                                       state: "default" 0.0;
-                                       min: 0 0;
-                                       fixed: 0 1;
-                                       rel2.relative: 1.0 0.0;
-                                       align: 0.5 0.0;
-                                       visible: 0;
-                               }
-                       }
-
-                       part {
-                               name: "qp.noti.padding.left";
-                               type: RECT;
-                               scale: 1;
-                               description {
-                                       state: "default" 0.0;
-                                       min: 0 0;
-                                       fixed: 1 0;
-                                       rel2.relative: 0.0 1.0;
-                                       align: 0.0 0.5;
-                                       visible: 0;
-                               }
-                       }
-
-                       part {
-                               name: "qp.noti.padding.right";
-                               type: RECT;
-                               scale: 1;
-                               description {
-                                       state: "default" 0.0;
-                                       min: 0 0;
-                                       fixed: 1 0;
-                                       rel1.relative: 1.0 0.0;
-                                       align: 1.0 0.5;
-                                       visible: 0;
-                               }
-                       }
-
-                       ///////////////////////////////////////////////////////////////////////////////////////
-                       //
-                       // NOTIFICATION LIST AREA
-                       //
-                       ///////////////////////////////////////////////////////////////////////////////////////
-
-                       part {
-                               name: "qp.noti.rect.noti";
-                               type: RECT;
-                               description {
-                                       state: "default" 0.0;
-                                       rel1 {
-                                               relative: 1.0 1.0;
-                                               to_x: "qp.noti.padding.left";
-                                               to_y: "qp.noti.padding.top";
-                                       }
-                                       rel2 {
-                                               relative: 1.0 0.0;
-                                               to_x: "qp.noti.padding.right";
-                                               to_y: "qp.noti.rect.spn";
-                                       }
-                                       visible: 0;
-                               }
-                       }
-
-                       ////////////////////////////////////////////////////////////////////////////////
-                       //
-                       // LIST AREA
-                       //
-                       ///////////////////////////////////////////////////////////////////////////////
-
-                       part {
-                               name: "qp.noti.swallow.notilist";
-                               type: SWALLOW;
-                               description {
-                                       state: "default" 0.0;
-                                       rel1.to: "qp.noti.rect.noti";
-                                       rel2.to: "qp.noti.rect.noti";
-                                       align: 0.5 0.0;
-                               }
-                       }
-
-                       ///////////////////////////////////////////////////////////////////////////////////////
-                       //
-                       // IDLE TEXT
-                       //
-                       ///////////////////////////////////////////////////////////////////////////////////////
-
-                       part {
-                               name: "qp.noti.spn.padding.left";
-                               type: RECT;
-                               scale: 1;
-                               description {
-                                       state: "default" 0.0;
-                                       min: 20 0;
-                                       fixed: 1 0;
-                                       rel2.relative: 0.0 1.0;
-                                       align: 0.0 0.5;
-                                       visible: 0;
-                               }
-                       }
-
-                       part {
-                               name: "qp.noti.spn.padding.right";
-                               type: RECT;
-                               scale: 1;
-                               description {
-                                       state: "default" 0.0;
-                                       min: 20 0;
-                                       fixed: 1 0;
-                                       rel1.relative: 1.0 0.0;
-                                       align: 1.0 0.5;
-                                       visible: 0;
-                               }
-                       }
-
-                       part {
-                               name: "qp.noti.rect.spn";
-                               type: RECT;
-                               scale: 1;
-                               description {
-                                       state: "default" 0.0;
-                                       min: 0 44;
-                                       fixed: 0 1;
-                                       align: 0.5 1.0;
-                                       rel1 {
-                                               relative: 0.0 0.0;
-                                               to: "qp.noti.padding.bottom";
-                                       }
-                                       rel2 {
-                                               relative: 1.0 0.0;
-                                               to: "qp.noti.padding.bottom";
-                                       }
-                                       color: QP_NOTI_SPN_BG_COLOR;
-                               }
-                       }
-
-                       part {
-                               name: "qp.noti.spn.padding.top";
-                               type: RECT;
-                               scale: 1;
-                               description {
-                                       state: "default" 0.0;
-                                       rel1 {
-                                               to_y: "qp.noti.swallow.spn";
-                                       }
-                                       rel2 {
-                                               to_y: "qp.noti.rect.spn";
-                                       }
-                                       color: QP_NOTI_SPN_BG_COLOR;
-                               }
-                       }
-
-                       part {
-                               name: "qp.noti.swallow.spn";
-                               type: SWALLOW;
-                               mouse_events: 0;
-                               description {
-                                       state: "default" 0.0;
-                                       rel1 {
-                                               relative: 1.0 0.0;
-                                               to_x: "qp.noti.spn.padding.left";
-                                               to_y: "qp.noti.rect.spn";
-                                       }
-                                       rel2 {
-                                               relative: 0.0 1.0;
-                                               to_x: "qp.noti.spn.padding.right";
-                                               to_y: "qp.noti.rect.spn";
-                                       }
-                                       align: 0.5 1.0;
-                               }
-                       }
-
-                       ///////////////////////////////////////////////////////////////////////////////////////
-                       //
-                       // BOTTOM PADDING
-                       //
-                       ///////////////////////////////////////////////////////////////////////////////////////
-                       part {
-                               name: "qp.noti.padding.bottom";
-                               type: RECT;
-                               description {
-                                       state: "default" 0.0;
-                                       fixed: 0 1;
-                                       min: 0 1;
-                                       align: 0.5 1.0;
-                                       rel1 { relative: 0.0 1.0; }
-                                       color: QP_NOTI_SPN_SEPERATOR_COLOR;
-                               }
-                       }
-               }
-
-
-       }
-
-}
diff --git a/data/base/quickpanel_noti_def.h b/data/base/quickpanel_noti_def.h
deleted file mode 100755 (executable)
index db17ced..0000000
+++ /dev/null
@@ -1,25 +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://www.tizenopensource.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 __QUICKPANEL_NOTI_DEF_H__
-#define __QUICKPANEL_NOTI_DEF_H__
-
-#define QP_NOTI_BG_COLOR       0 0 0 255
-#define QP_NOTI_SEPERATOR_COLOR        102 102 102 255
-
-#define QP_NOTI_SPN_BG_COLOR   25 25 25 255
-#define QP_NOTI_SPN_SEPERATOR_COLOR                    53 53 53 255
-#endif /*__QUICKPANEL_NOTI_DEF_H__*/
diff --git a/data/base/quickpanel_theme.edc b/data/base/quickpanel_theme.edc
deleted file mode 100755 (executable)
index 9a833f3..0000000
+++ /dev/null
@@ -1,803 +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://www.tizenopensource.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 "quickpanel_theme_def.h"
-
-collections {
-       group { name: "elm/genlist/item/qp_group_title/default";
-               alias: "elm/genlist/item_odd/qp_group_title/default";
-               data.item: "stacking" "above";
-               data.item: "selectraise" "on";
-               data.item: "labels" "elm.text.text";
-               data.item: "icons" "elm.swallow.icon";
-               data.item: "treesize" "20";
-
-               parts {
-                       part { name: "rect";
-                               type: RECT;
-                               repeat_events: 1;
-                               scale: 1;
-                               description {
-                                       state: "default" 0.0;
-                                       min: 0 80;
-                                       color: QP_THEME_LIST_TITLE_BG_COLOR;
-                               }
-                       }
-
-                       part { name: "top_line";
-                               type: RECT;
-                               mouse_events: 0;
-                               description {
-                                       state: "default" 0.0;
-                                       min: 0 1;
-                                       fixed: 0 1;
-                                       color: QP_THEME_LIST_TITLE_SEPERATOR_COLOR;
-                                       rel2 {
-                                               relative: 1.0 0.0;
-                                       }
-                               }
-                       }
-
-                       part { name: "elm.padding.left";
-                               type: RECT;
-                               scale: 1;
-                               description {
-                                       state: "default" 0.0;
-                                       min: 20 0;
-                                       fixed: 1 0;
-                                       visible: 0;
-                                       rel2.relative: 0.0 1.0;
-                                       align: 0.0 0.5;
-                               }
-                       }
-                       part { name: "elm.padding.right";
-                               type: RECT;
-                               scale: 1;
-                               description {
-                                       state: "default" 0.0;
-                                       min: 20 0;
-                                       fixed: 1 0;
-                                       visible: 0;
-                                       rel1.relative: 1.0 0.0;
-                                       align: 1.0 0.5;
-                               }
-                       }
-                       part { name: "elm.padding.top";
-                               type: RECT;
-                               scale: 1;
-                               description {
-                                       state: "default" 0.0;
-                                       min: 0 0;
-                                       fixed: 1 0;
-                                       visible: 0;
-                                       rel2.relative: 1.0 0.0;
-                                       align: 0.5 0.0;
-                               }
-                       }
-                       part { name: "elm.padding.bottom";
-                               type: RECT;
-                               scale: 1;
-                               description {
-                                       state: "default" 0.0;
-                                       min: 0 20;
-                                       fixed: 1 1;
-                                       visible: 0;
-                                       rel1.relative: 0.0 1.0;
-                                       align: 0.5 1.0;
-                               }
-                       }
-
-                       part { name: "elm.text.text";
-                               type: TEXT;
-                               scale: 1;
-                               description {
-                                       state: "default" 0.0;
-                                       min: 0 30;
-                                       fixed: 0 1;
-                                       align: 0.0 1.0;
-                                       rel1 {
-                                               to_x: "elm.padding.left";
-                                               to_y: "elm.padding.bottom";
-                                               relative: 1.0 0.0;
-                                       }
-                                       rel2 {
-                                               to_x: "elm.swallow.icon";
-                                               to_y: "elm.padding.bottom";
-                                               relative: 0.0 0.0;
-                                       }
-                                       color: QP_THEME_LIST_TITLE_FONT_COLOR;
-                                       text {
-                                               font: QP_THEME_LIST_TITLE_FONT_NAME;
-                                               size: QP_THEME_LIST_TITLE_FONT_SIZE;
-                                               align: 0.0 1.0;
-                                       }
-                               }
-                       }
-
-                       part { name: "elm.icon.padding.top";
-                               type: RECT;
-                               scale: 1;
-                               description {
-                                       state: "default" 0.0;
-                                       min: 0 15;
-                                       fixed: 0 1;
-                                       rel2.relative: 1.0 0.0;
-                                       align: 0.5 0.0;
-                                       visible: 0;
-                               }
-                       }
-
-                       part { name: "elm.icon.padding.bottom";
-                               type: RECT;
-                               scale: 1;
-                               description {
-                                       state: "default" 0.0;
-                                       min: 0 15;
-                                       fixed: 0 1;
-                                       rel1.relative: 0.0 1.0;
-                                       align: 0.5 1.0;
-                                       visible: 0;
-                               }
-                       }
-
-                       part { name: "elm.swallow.icon";
-                               type: SWALLOW;
-                               scale: 1;
-                               description { state: "default" 0.0;
-                                       min: 180 50;
-                                       fixed: 1 1;
-                                       align: 1.0 0.5;
-                                       rel1 {
-                                               to_x: "elm.padding.right";
-                                               to_y: "elm.icon.padding.top";
-                                               relative: 0.0 1.0;
-                                       }
-                                       rel2 {
-                                               to_x: "elm.padding.right";
-                                               to_y: "elm.icon.padding.bottom";
-                                               relative: 0.0 0.0;
-                                       }
-                               }
-                       }
-               }
-       }
-
-       group { name: "elm/genlist/item/notification_item/default";
-               alias: "elm/genlist/item_odd/notification_item/default";
-
-               data.item: "stacking" "above";
-               data.item: "selectraise" "on";
-               data.item: "labels" "elm.text.title elm.text.content elm.text.badge elm.text.time";
-               data.item: "icons" "elm.swallow.icon elm.swallow.thumbnail elm.swallow.progress";
-               data.item: "states" "elm.text.content elm.text.time";
-
-               script {
-                       public ctnt_shown;
-                       public time_shown;
-               }
-
-               parts {
-                       part { name: "base";
-                               type: RECT;
-                               repeat_events: 1;
-                               scale: 1;
-                               description {
-                                       state: "default" 0.0;
-                                       min: 0 125;
-                                       color: QP_THEME_LIST_ITEM_BG_COLOR;
-                               }
-                       }
-
-                       part { name: "bg_image";
-                               mouse_events: 0;
-                               description {
-                                       state: "default" 0.0;
-                                       color: QP_THEME_LIST_ITEM_BG_COLOR;
-                               }
-                               description {
-                                       state: "selected" 0.0;
-                                       inherit: "default" 0.0;
-                                       color: QP_THEME_LIST_ITEM_BG_COLOR;
-                               }
-                       }
-
-                       part { name: "top_line";
-                               type: RECT;
-                               clip_to: "disclip";
-                               mouse_events: 0;
-                               description {
-                                       state: "default" 0.0;
-                                       min: 0 1;
-                                       fixed: 0 1;
-                                       visible: 1;
-                                       color: QP_THEME_LIST_ITEM_SEPERATOR_COLOR;
-                                       rel2 {
-                                               relative: 1.0 0.0;
-                                       }
-                               }
-                       }
-
-                       part { name: "elm.padding.top";
-                               type: RECT;
-                               scale: 1;
-                               description {
-                                       state: "default" 0.0;
-                                       min: 0 8;
-                                       fixed: 0 1;
-                                       visible: 0;
-                                       rel2.relative: 1.0 0.0;
-                                       align: 0.0 0.0;
-                               }
-                       }
-
-                       part { name: "elm.padding.bottom";
-                               type: RECT;
-                               scale: 1;
-                               description { state: "default" 0.0;
-                                       min: 0 8;
-                                       fixed: 0 1;
-                                       visible: 0;
-                                       rel1.relative: 0.0 1.0;
-                                       align: 0.0 1.0;
-                               }
-                       }
-
-                       part { name: "elm.padding.left";
-                               type: RECT;
-                               scale: 1;
-                               description { state: "default" 0.0;
-                                       min: 20 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: 20 0;
-                                       fixed: 1 0;
-                                       visible: 0;
-                                       rel1.relative: 1.0 0.0;
-                                       align: 1.0 0.0;
-                               }
-                       }
-
-                       part { name: "elm.rect.thumbnail";
-                               clip_to: "disclip";
-                               type: RECT;
-                               mouse_events: 0;
-                               scale: 1;
-                               description { state: "default" 0.0;
-                                       min: 105 105;
-                                       fixed: 1 1;
-                                       rel1 {
-                                               relative: 1.0 0.5;
-                                               to_x: "elm.padding.left";
-                                       }
-                                       rel2 {
-                                               relative: 1.0 0.5;
-                                               to_x: "elm.padding.left";
-                                       }
-                                       align: 0.0 0.5;
-                                       color: QP_THEME_LIST_ITEM_THUMBNAIL_COLOR;
-                               }
-                       }
-
-                       part { name: "elm.swallow.thumbnail";
-                               clip_to: "disclip";
-                               type: SWALLOW;
-                               mouse_events: 0;
-                               scale: 1;
-                               description { state: "default" 0.0;
-                                       fixed: 1 1;
-                                       rel1 {
-                                               to: "elm.rect.thumbnail";
-                                       }
-                                       rel2 {
-                                               to: "elm.rect.thumbnail";
-                                       }
-                                       align: 0.5 0.5;
-                               }
-                       }
-
-                       part { name: "elm.swallow.icon";
-                               clip_to: "disclip";
-                               type: SWALLOW;
-                               mouse_events: 0;
-                               scale: 1;
-                               description { state: "default" 0.0;
-                                       min: 54 54;
-                                       fixed: 1 1;
-                                       rel1 {
-                                               relative: 1.0 1.0;
-                                               to: "elm.rect.thumbnail";
-                                       }
-                                       rel2 {
-                                               relative: 1.0 1.0;
-                                               to: "elm.rect.thumbnail";
-                                       }
-                                       align: 1.0 1.0;
-                               }
-                       }
-
-                       part { name: "elm.padding.icon.right";
-                               type: RECT;
-                               scale: 1;
-                               description { state: "default" 0.0;
-                                       min: 15 0;
-                                       fixed: 1 0;
-                                       visible: 0;
-                                       rel1.to: "elm.rect.thumbnail";
-                                       rel1.relative: 1.0 0.0;
-                                       rel2.to: "elm.rect.thumbnail";
-                                       align: 0.0 0.0;
-                               }
-                       }
-
-                       part { name: "elm.text.title";
-                               clip_to: "disclip";
-                               type: TEXT;
-                               mouse_events: 0;
-                               scale: 1;
-                               description { state: "default" 0.0;
-                                       min: 0 32;
-                                       align: 0.0 0.0;
-                                       fixed: 1 1;
-                                       rel1 {
-                                               relative: 1.0 1.0;
-                                               to_x: "elm.padding.icon.right";
-                                               to_y: "elm.padding.top";
-                                       }
-                                       rel2 {
-                                               relative: 0.0 1.0;
-                                               to_x: "elm.padding.right";
-                                               to_y: "elm.padding.top";
-                                       }
-                                       color: QP_THEME_LIST_ITEM_MAIN_FONT_COLOR;
-                                       text {
-                                               font: QP_THEME_LIST_ITEM_MAIN_FONT_NAME;
-                                               size: QP_THEME_LIST_ITEM_MAIN_FONT_SIZE;
-                                               align: 0.0 0.5;
-                                       }
-                               }
-                               description { state: "selected" 0.0;
-                                       inherit: "default" 0.0;
-                                       color: QP_THEME_LIST_ITEM_MAIN_FONT_COLOR;
-                               }
-                       }
-
-                       part { name: "elm.text.time";
-                               clip_to: "disclip";
-                               type: TEXT;
-                               mouse_events: 0;
-                               scale: 1;
-                               description { state: "default" 0.0;
-                                       align: 1.0 1.0;
-                                       fixed: 1 0;
-                                       rel1 {
-                                               relative: 0.0 0.0;
-                                               to_x: "elm.padding.right";
-                                               to_y: "elm.padding.bottom";
-                                       }
-                                       rel2 {
-                                               relative: 0.0 0.0;
-                                               to_x: "elm.padding.right";
-                                               to_y: "elm.padding.bottom";
-                                       }
-                                       color: QP_THEME_LIST_ITEM_TIME_FONT_COLOR;
-                                       text {
-                                               font: QP_THEME_LIST_ITEM_TIME_FONT_NAME;
-                                               size: QP_THEME_LIST_ITEM_TIME_FONT_SIZE;
-                                               min: 1 0;
-                                               align: 1.0 1.0;
-                                       }
-                               }
-                               description { state: "selected" 0.0;
-                                       inherit: "default" 0.0;
-                                       color: QP_THEME_LIST_ITEM_TIME_FONT_COLOR;
-                               }
-                       }
-
-                       part { name: "elm.text.content";
-                               clip_to: "disclip";
-                               type: TEXT;
-                               mouse_events: 0;
-                               scale: 1;
-                               description { state: "default" 0.0;
-                                       align: 0.0 0.0;
-                                       min: 0 32;
-                                       fixed: 0 1;
-                                       rel1 {
-                                               relative: 1.0 1.0;
-                                               to_x: "elm.padding.icon.right";
-                                               to_y: "elm.text.title";
-                                       }
-                                       rel2 {
-                                               relative: 0.0 1.0;
-                                               to_x: "elm.padding.right";
-                                               to_y: "elm.text.title";
-                                       }
-                                       color: QP_THEME_LIST_ITEM_SUB_FONT_COLOR;
-                                       text {
-                                               font: QP_THEME_LIST_ITEM_SUB_FONT_NAME;
-                                               size: QP_THEME_LIST_ITEM_SUB_FONT_SIZE;
-                                               align: 0.0 0.5;
-                                       }
-                               }
-                               description { state: "show" 0.0;
-                                       inherit: "default" 0.0;
-                                       min: 0 32;
-                               }
-                               description { state: "selected" 0.0;
-                                       inherit: "default" 0.0;
-                                       min: 0 32;
-                                       color: QP_THEME_LIST_ITEM_SUB_FONT_COLOR;
-                               }
-                       }
-
-                       part { name: "elm.swallow.progress";
-                               clip_to: "disclip";
-                               type: SWALLOW;
-                               mouse_events: 0;
-                               scale: 1;
-                               description { state: "default" 0.0;
-                                       min: 0 5;
-                                       fixed: 0 1;
-                                       rel1 {
-                                               relative: 1.0 1.0;
-                                               to_x: "elm.padding.icon.right";
-                                               to_y: "elm.text.content";
-                                       }
-                                       rel2 {
-                                               relative: 0.0 1.0;
-                                               to_x: "elm.padding.right";
-                                               to_y: "elm.text.content";
-                                       }
-                                       align: 0.0 0.0;
-                               }
-                       }
-
-                       part { name: "disclip";
-                               type: RECT;
-                               description {
-                                       state: "default" 0.0;
-                               }
-                               description {
-                                       state: "disabled" 0.0;
-                                       inherit: "default" 0.0;
-                                       color: 255 255 255 64;
-                               }
-                       }
-               }
-
-               programs {
-                       program { name: "show_content";
-                               signal: "elm,state,elm.text.content,active";
-                               source: "elm";
-                               script {
-                                       set_state(PART:"elm.text.content", "show", 0.0);
-                                       set_int(ctnt_shown, 1);
-                               }
-                       }
-                       program { name: "go_active";
-                               signal: "elm,state,selected";
-                               source: "elm";
-                               script {
-                                       set_state(PART:"bg_image", "selected", 0.0);
-                                       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);
-                               }
-                       }
-                       program { name: "go_passive";
-                               signal: "elm,state,unselected";
-                               source: "elm";
-                               script {
-                                       set_state(PART:"bg_image", "default", 0.0);
-                                       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);
-                               }
-                       }
-                       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";
-                       }
-               }
-       }
-
-///////////////////////////////////////////////////////////////////////////////////////
-
-#define NOTI_BUTTON_STATE_ENABLED 0
-#define NOTI_BUTTON_STATE_DISABLED 1
-
-       group { name: "elm/button/base/noticlear";
-               images {
-                       image: "RQ02_button_normal_left.png" COMP;
-                       image: "RQ02_button_normal_center.png" COMP;
-                       image: "RQ02_button_normal_right.png" COMP;
-                       image: "RQ02_button_press_left.png" COMP;
-                       image: "RQ02_button_press_center.png" COMP;
-                       image: "RQ02_button_press_right.png" COMP;
-               }
-
-               script {
-                       public button_state = NOTI_BUTTON_STATE_ENABLED;
-               }
-               parts {
-                       part { name: "button_image";
-                               type: IMAGE;
-                               mouse_events: 1;
-                               scale: 1;
-                               description { state: "default" 0.0;
-                                       rel1 { to_x: "padding.left"; to_y: "elm.text"; }
-                                       rel2 { to_x: "padding.right"; to_y: "elm.text"; }
-                                       min: 180 50;
-                                       image {
-                                               normal: "RQ02_button_normal_center.png";
-                                       }
-                               }
-                               description { state: "clicked" 0.0;
-                                       inherit: "default" 0.0;
-                                       image {
-                                               normal: "RQ02_button_press_center.png";
-                                       }
-                               }
-                               description { state: "disabled" 0.0;
-                                       inherit: "default" 0.0;
-                               }
-                               description { state: "focused" 0.0;
-                                       inherit: "default" 0.0;
-                               }
-                       }
-               part { name: "padding.left";
-                       type: IMAGE;
-                       scale: 1;
-                       description { state: "default" 0.0;
-                               visible: 0;
-                               min: 2 50;
-                               fixed: 1 0;
-                               image {
-                                               normal: "RQ02_button_normal_left.png";
-                               }
-                               rel1.relative: 0 0;
-                               rel2 { relative: 0.0 1.0; to_x: "elm.text"; }
-                               align: 1 0;
-                       }
-               }
-               part { name: "padding.right";
-                       type: IMAGE;
-                       scale: 1;
-                       description { state: "default" 0.0;
-                               visible: 0;
-                               min: 2 50;
-                               fixed: 1 0;
-                               image {
-                                               normal: "RQ02_button_normal_right.png";
-                               }
-                               rel1 { relative: 1.0 0.0; to_x: "elm.text"; }
-                               rel2.relative: 1.0 1.0;
-                               align: 0 0;
-                       }
-               }
-               part {   name: "elm.text";
-                       type: TEXT;
-                       mouse_events: 0;
-                       scale: 1;
-                       description { state: "default" 0.0;
-                               visible: 0;
-                               fixed: 1 1;
-                               align: 0.5 0.5;
-                               color: 249 249 249 255;
-                               text {
-                                       font: "SLP:style=Medium";
-                                       size: 26;
-                                       min: 1 1;
-                                       align: 0.5 0.5;
-                               }
-                       }
-                       description { state: "visible" 0.0;
-                               inherit: "default" 0.0;
-                               visible: 1;
-                               min: 1 1;
-                       }
-                       description { state: "clicked" 0.0;
-                               inherit: "default" 0.0;
-                               visible: 1;
-                               min: 1 1;
-                               //color: BUTTON_CONTACT_BUTTON_TEXT_PRESSED_COLOR_INC;
-                       }
-                       description { state: "disabled" 0.0;
-                               inherit: "default" 0.0;
-                               color: 0 0 0 128;
-                       }
-                       description { state: "disabled_visible" 0.0;
-                               inherit: "default" 0.0;
-                               //color: BUTTON_CONTACT_BUTTON_TEXT_DISABLED_COLOR_INC;
-                               visible: 1;
-                               min: 1 1;
-                       }
-                       description { state: "focused" 0.0;
-                               inherit: "default" 0.0;
-                               visible: 1;
-                               min: 1 1;
-                               //color: BUTTON_CONTACT_BUTTON_TEXT_FOCUSED_COLOR_INC;
-                       }
-               }
-               part { name: "over1";
-                       mouse_events: 0;
-                       description { state: "default" 0.0;
-                               rel2.relative: 1.0 0.5;
-                       }
-               }
-               part { name: "over2";
-                       mouse_events: 1;
-                       repeat_events: 1;
-                       ignore_flags: ON_HOLD;
-                       description { state: "default" 0.0;
-                               rel1.to: "button_image";
-                               rel2.to: "button_image";
-                       }
-               }
-               part { name: "over3";
-                       mouse_events: 1;
-                       repeat_events: 1;
-                       description { state: "default" 0.0;
-                               rel1.to: "button_image";
-                               rel2.to: "button_image";
-                               color: 0 0 0 0;
-                       }
-               }
-               part { name: "disabler";
-                       type: RECT;
-                       description { state: "default" 0.0;
-                               rel1.to: "button_image";
-                               rel2.to: "button_image";
-                               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";
-                       target: "elm.text";
-               }
-               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.text", st, 30, vl);
-                               if (!strcmp(st, "clicked") || !strcmp(st, "focused"))
-                               {
-                                       emit("elm,action,default,text,set", "");
-                                       set_state(PART:"elm.text", "visible", 0.0);
-                               }
-                               if(get_int(button_state) != NOTI_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 {
-                               if(get_int(button_state) != NOTI_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";
-                       action: STATE_SET "default" 0.0;
-                       target: "elm.text";
-               }
-
-               program { name: "disable";
-                       signal: "elm,state,disabled";
-                       source: "elm";
-                       action: STATE_SET "disabled" 0.0;
-                       target: "button_image";
-                       target: "disabler";
-                       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, NOTI_BUTTON_STATE_DISABLED);
-                       }
-               }
-               program { name: "enable";
-                       signal: "elm,state,enabled";
-                       source: "elm";
-                       action: STATE_SET "default" 0.0;
-                       target: "button_image";
-                       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, NOTI_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";
-                       action: STATE_SET "visible" 0.0;
-                       target: "elm.text";
-               }
-       }
-}
-
diff --git a/data/base/quickpanel_theme_def.h b/data/base/quickpanel_theme_def.h
deleted file mode 100755 (executable)
index e28dbea..0000000
+++ /dev/null
@@ -1,43 +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://www.tizenopensource.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 __QUICKPANEL_THEME_DEF_H__
-#define __QUICKPANEL_THEME_DEF_H__
-
-#define QP_THEME_LIST_TITLE_BG_COLOR                   25 25 25 255
-#define QP_THEME_LIST_TITLE_SEPERATOR_COLOR            102 102 102 255
-
-#define QP_THEME_LIST_TITLE_FONT_NAME                  "SLP:style=Medium"
-#define QP_THEME_LIST_TITLE_FONT_COLOR                 163 163 163 255
-#define QP_THEME_LIST_TITLE_FONT_SIZE                  28
-
-#define QP_THEME_LIST_ITEM_BG_COLOR                            0 0 0 255
-#define QP_THEME_LIST_ITEM_SEPERATOR_COLOR             102 102 102 255
-#define QP_THEME_LIST_ITEM_THUMBNAIL_COLOR             25 25 25 255
-
-#define QP_THEME_LIST_ITEM_MAIN_FONT_NAME              "SLP:style=Medium"
-#define QP_THEME_LIST_ITEM_MAIN_FONT_COLOR             249 249 249 255
-#define QP_THEME_LIST_ITEM_MAIN_FONT_SIZE              28
-
-#define QP_THEME_LIST_ITEM_SUB_FONT_NAME               "SLP:style=Roman"
-#define QP_THEME_LIST_ITEM_SUB_FONT_COLOR              153 153 153 255
-#define QP_THEME_LIST_ITEM_SUB_FONT_SIZE               28
-
-#define QP_THEME_LIST_ITEM_TIME_FONT_NAME              "SLP:style=Roman"
-#define QP_THEME_LIST_ITEM_TIME_FONT_COLOR             153 153 153 255
-#define QP_THEME_LIST_ITEM_TIME_FONT_SIZE              24
-
-#endif /*__QUICKPANEL_THEME_DEF_H__*/
diff --git a/data/icons/Q02_Notifications_bg.png b/data/icons/Q02_Notifications_bg.png
new file mode 100644 (file)
index 0000000..d9a28be
Binary files /dev/null and b/data/icons/Q02_Notifications_bg.png differ
diff --git a/data/icons/Q02_quickpanel_button_nomal_01_center.png b/data/icons/Q02_quickpanel_button_nomal_01_center.png
new file mode 100755 (executable)
index 0000000..69c5b73
Binary files /dev/null and b/data/icons/Q02_quickpanel_button_nomal_01_center.png differ
diff --git a/data/icons/Q02_quickpanel_button_nomal_01_left.png b/data/icons/Q02_quickpanel_button_nomal_01_left.png
new file mode 100755 (executable)
index 0000000..4d35a98
Binary files /dev/null and b/data/icons/Q02_quickpanel_button_nomal_01_left.png differ
diff --git a/data/icons/Q02_quickpanel_button_nomal_01_right.png b/data/icons/Q02_quickpanel_button_nomal_01_right.png
new file mode 100755 (executable)
index 0000000..ef53ed9
Binary files /dev/null and b/data/icons/Q02_quickpanel_button_nomal_01_right.png differ
diff --git a/data/icons/Q02_quickpanel_button_press_01_center.png b/data/icons/Q02_quickpanel_button_press_01_center.png
new file mode 100755 (executable)
index 0000000..fcd401b
Binary files /dev/null and b/data/icons/Q02_quickpanel_button_press_01_center.png differ
diff --git a/data/icons/Q02_quickpanel_button_press_01_left.png b/data/icons/Q02_quickpanel_button_press_01_left.png
new file mode 100755 (executable)
index 0000000..585e850
Binary files /dev/null and b/data/icons/Q02_quickpanel_button_press_01_left.png differ
diff --git a/data/icons/Q02_quickpanel_button_press_01_right.png b/data/icons/Q02_quickpanel_button_press_01_right.png
new file mode 100755 (executable)
index 0000000..1e848c7
Binary files /dev/null and b/data/icons/Q02_quickpanel_button_press_01_right.png differ
diff --git a/data/images/Q02_IMG_Handler_Closed.png b/data/images/Q02_IMG_Handler_Closed.png
new file mode 100755 (executable)
index 0000000..579be76
Binary files /dev/null and b/data/images/Q02_IMG_Handler_Closed.png differ
diff --git a/data/images/Q02_IMG_Handler_opened.png b/data/images/Q02_IMG_Handler_opened.png
new file mode 100755 (executable)
index 0000000..06cf962
Binary files /dev/null and b/data/images/Q02_IMG_Handler_opened.png differ
diff --git a/data/images/Q02_quickpanel_handler_bg.png b/data/images/Q02_quickpanel_handler_bg.png
new file mode 100755 (executable)
index 0000000..1044ca8
Binary files /dev/null and b/data/images/Q02_quickpanel_handler_bg.png differ
index daae017b5f1e3fab278080e12e0840bd72e5dffe..654043cd29f3cabfdafb4db8ab534f87e1ffbdd8 100644 (file)
@@ -3,6 +3,7 @@ Encoding=UTF-8
 Name=@PROJECT_NAME@
 Comment=@PROJECT_NAME@
 Exec=@BINDIR@/@PROJECT_NAME@
+Icon=@PKGNAME@.png
 Terminal=false
 Type=Application
 Categories=Application;Utility;
diff --git a/data/quickpanel.edc b/data/quickpanel.edc
new file mode 100755 (executable)
index 0000000..1878e0b
--- /dev/null
@@ -0,0 +1,226 @@
+/*
+ * 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://www.tizenopensource.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 "quickpanel_def.h"
+
+#define QP_MAIN_MIN_W 720
+#define QP_MAIN_MIN_H 620
+
+#define QP_SPN_H 48
+#define QP_SETTING_H 180
+#define QP_SEPERATOR_H 1
+#define QP_TOGGLE_H_MIN 110
+
+#define QP_BG_COLOR    20 20 20 255
+
+#define QP_SEPERATOR_COLOR     102 102 102 255
+
+#define QP_NOTI_SEPERATOR_COLOR        102 102 102 255
+
+#define QP_NOTI_TOGGLE_MAIN_FONT_NAME          "SLP:style=Medium"
+#define QP_NOTI_TOGGLE_MAIN_FONT_SIZE          28
+#define QP_NOTI_TOGGLE_MAIN_FONT_COLOR         249 249 249 255
+
+#define QP_NOTI_TOGGLE_BUTTON_FONT_NAME                "SLP:style=Medium"
+#define QP_NOTI_TOGGLE_BUTTON_FONT_SIZE                26
+#define QP_NOTI_TOGGLE_BUTTON_FONT_COLOR       249 249 249 255
+
+#define QP_NOTI_SPN_SEPERATOR_COLOR    102 102 102 255
+
+#define        QP_SETTING_BUTTON_BG_COLOR      45 45 45 255
+#define        QP_SETTING_BUTTON_BG_INLINE_COLOR       64 64 64 255
+#define QP_SETTING_ALPHA_50P_COLOR     255 255 255 127
+
+images {
+       image: "Q02_quickpanel_handler_bg.png" COMP;
+       image: "Q02_IMG_Handler_opened.png" COMP;
+       image: "Q02_IMG_Handler_Closed.png" COMP;
+}
+
+collections {
+       group { name: "quickpanel/gl_base";
+               parts {
+                       part {
+                               name: "background";
+                               type: RECT;
+                               scale: 1;
+                               mouse_events: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       color: 0 0 0 0;
+                               }
+                       }
+                       part{
+                               name: "qp.base.indicator";
+                               type:RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       fixed: 0 1;
+                                       min: 0 QP_INDICATOR_H;
+                                       rel1 {
+                                               relative: 0.0 0.0;
+                                               to: "background";
+                                       }
+                                       rel2 {
+                                               relative: 1.0 0.0;
+                                               to: "background";
+                                       }
+                                       align: 0.0 0.0;
+                                       color: 0 0 0 0;
+                               }
+                       }
+                       part {
+                               name: "qp.gl_base.gl.swallow";
+                               type: SWALLOW;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       fixed: 1 1;
+                                       min: 0 0;
+                                       rel1 {
+                                               to, "qp.base.indicator";
+                                               relative: 0.0 1.0;
+                                       }
+                                       rel2 {
+                                               to, "qp.base.indicator";
+                                               relative: 1.0 1.0;
+                                       }
+                                       align: 0.0 0.0;
+                               }
+                       }
+                       part{
+                               name: "qp.base.spn.seperator";
+                               type:RECT;
+                               mouse_events: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       fixed: 0 1;
+                                       min: 0 QP_SEPERATOR_H;
+                                       rel1 {
+                                               to, "qp.gl_base.gl.swallow";
+                                               relative: 0.0 1.0;
+                                       }
+                                       rel2 {
+                                               to, "qp.gl_base.gl.swallow";
+                                               relative: 1.0 1.0;
+                                       }
+                                       align: 0.0 0.0;
+                                       color: QP_BG_COLOR;
+                               }
+                       }
+                       part{
+                               name: "qp.base.spn.swallow";
+                               type: SWALLOW;
+                               scale: 1;
+                               mouse_events: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       fixed: 1 1;
+                                       min: 0 QP_SPN_H;
+                                       rel1 {
+                                               to, "qp.base.spn.seperator";
+                                               relative: 0.0 1.0;
+                                       }
+                                       rel2 {
+                                               to, "qp.base.spn.seperator";
+                                               relative: 1.0 1.0;
+                                       }
+                                       align: 0.0 0.0;
+                               }
+                       }
+                       part{
+                               name: "qp.base.handler";
+                               type:IMAGE;
+                               scale:1;
+                               description {
+                                       state: "default" 0.0;
+                                       fixed: 0 1;
+                                       min: 0 QP_HANDLE_H;
+                                       rel1 {
+                                               to, "qp.base.spn.swallow";
+                                               relative: 0.0 1.0;
+                                       }
+                                       rel2 {
+                                               to, "qp.base.spn.swallow";
+                                               relative: 1.0 1.0;
+                                       }
+                                       image {
+                                               normal:"Q02_quickpanel_handler_bg.png";
+                                               border: 0 0 0 0;
+                                               border_scale: 1;
+                                       }
+                                       align: 0.0 0.0;
+                               }
+                       }
+                       part{
+                               name: "qp.base.handler.icon.padding.top";
+                               type:RECT;
+                               scale:1;
+                               description {
+                                       state: "default" 0.0;
+                                       fixed: 0 1;
+                                       min: 0 20;
+                                       rel1 {
+                                               to, "qp.base.handler";
+                                               relative: 0.0 .0;
+                                       }
+                                       rel2 {
+                                               to, "qp.base.handler";
+                                               relative: 1.0 0.0;
+                                       }
+                                       align: 0.0 0.0;
+                                       color: 0 0 0 0;
+                               }
+                       }
+                       part{
+                               name: "qp.base.handler.icon";
+                               type:IMAGE;
+                               scale:1;
+                               description {
+                                       state: "default" 0.0;
+                                       fixed: 1 1;
+                                       min: 32 17;
+                                       rel1 {
+                                               to_x, "qp.base.handler";
+                                               to_y, "qp.base.handler.icon.padding.top";
+                                               relative: 0.5 1.0;
+                                       }
+                                       rel2 {
+                                               to_x, "qp.base.handler";
+                                               to_y, "qp.base.handler.icon.padding.top";
+                                               relative: 0.5 1.0;
+                                       }
+                                       image {
+                                               normal:"Q02_IMG_Handler_Closed.png";
+                                       }
+                                       align: 0.5 0.0;
+                               }
+                       }
+               }
+               programs {
+                       program {
+                               name: "background.touch";
+                               action: SIGNAL_EMIT "close.quickpanel" "";
+                               signal: "mouse,down,1";
+                               source: "background";
+                       }
+               }
+       }
+#include "quickpanel_noti.edc"
+#include "quickpanel_spn.edc"
+}
diff --git a/data/quickpanel.png b/data/quickpanel.png
new file mode 100644 (file)
index 0000000..ef74fd1
Binary files /dev/null and b/data/quickpanel.png differ
old mode 100755 (executable)
new mode 100644 (file)
diff --git a/data/quickpanel.xml.in b/data/quickpanel.xml.in
new file mode 100755 (executable)
index 0000000..1880153
--- /dev/null
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns="http://tizen.org/ns/packages" package="@PKGNAME@" version="0.1.2-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>
+       <author email="ys4610.ko@samsung.com" href="www.samsung.com">Youngsub Ko</author>
+       <description>@PROJECT_NAME@</description>
+       <ui-application appid="@PKGNAME@" exec="@BINDIR@/@PROJECT_NAME@" nodisplay="true" multiple="false" type="capp" taskmanage="false">
+               <label>@PROJECT_NAME@</label>
+       </ui-application>
+</manifest>
diff --git a/data/quickpanel_def.h b/data/quickpanel_def.h
new file mode 100755 (executable)
index 0000000..53ebb62
--- /dev/null
@@ -0,0 +1,23 @@
+/*
+ * 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://www.tizenopensource.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 __QUICKPANEL_EDC_DEF_H__
+#define __QUICKPANEL_EDC_DEF_H__
+
+#define QP_INDICATOR_H 50
+#define QP_HANDLE_H    69
+
+#endif /*__QUICKPANEL_EDC_DEF_H__*/
diff --git a/data/quickpanel_noti.edc b/data/quickpanel_noti.edc
new file mode 100755 (executable)
index 0000000..72bced9
--- /dev/null
@@ -0,0 +1,253 @@
+/*
+ * 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://www.tizenopensource.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.
+ */
+
+group {
+       name: "quickpanel/noti";
+       parts {
+               part {
+                       name: "background";
+                       type: RECT;
+                       scale: 1;
+                       mouse_events: 0;
+                       description {
+                               state: "default" 0.0;
+                               color: QP_BG_COLOR;
+                       }
+               }
+
+               part {
+                       name: "qp.noti.padding.top";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 0;
+                               fixed: 0 1;
+                               rel2.relative: 1.0 0.0;
+                               align: 0.5 0.0;
+                               visible: 0;
+                       }
+               }
+
+               part {
+                       name: "qp.noti.padding.left";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 0;
+                               fixed: 1 0;
+                               rel2.relative: 0.0 1.0;
+                               align: 0.0 0.5;
+                               visible: 0;
+                       }
+               }
+
+               part {
+                       name: "qp.noti.padding.right";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 0;
+                               fixed: 1 0;
+                               rel1.relative: 1.0 0.0;
+                               align: 1.0 0.5;
+                               visible: 0;
+                       }
+               }
+
+               ///////////////////////////////////////////////////////////////////////////////////////
+               //
+               // Toggle AREA
+               //
+               ///////////////////////////////////////////////////////////////////////////////////////
+
+               part{
+                       name: "qp.noti.swallow.toggle";
+                       type:SWALLOW;
+                       description {
+                               state: "default" 0.0;
+                               fixed: 1 1;
+                               rel1 {
+                                       relative: 1.0 1.0;
+                                       to_x: "qp.noti.padding.left";
+                                       to_y: "qp.noti.padding.top";
+                               }
+                               rel2 {
+                                       relative: 0.0 1.0;
+                                       to_x: "qp.noti.padding.right";
+                                       to_y: "qp.noti.padding.top";
+                               }
+                               align: 0.5 0.0;
+                       }
+               }
+
+               ///////////////////////////////////////////////////////////////////////////////////////
+               //
+               // NOTIFICATION LIST AREA
+               //
+               ///////////////////////////////////////////////////////////////////////////////////////
+
+               part {
+                       name: "qp.noti.rect.noti";
+                       type: RECT;
+                       description {
+                               state: "default" 0.0;
+                               rel1 {
+                                       relative: 1.0 1.0;
+                                       to_x: "qp.noti.padding.left";
+                                       to_y: "qp.noti.swallow.toggle";
+                               }
+                               rel2 {
+                                       relative: 1.0 0.0;
+                                       to_x: "qp.noti.padding.right";
+                                       to_y: "qp.noti.rect.spn";
+                               }
+                               visible: 0;
+                       }
+               }
+
+               ////////////////////////////////////////////////////////////////////////////////
+               //
+               // LIST AREA
+               //
+               ///////////////////////////////////////////////////////////////////////////////
+
+               part {
+                       name: "qp.noti.swallow.notilist";
+                       type: SWALLOW;
+                       description {
+                               state: "default" 0.0;
+                               rel1.to: "qp.noti.rect.noti";
+                               rel2.to: "qp.noti.rect.noti";
+                               align: 0.5 0.0;
+                       }
+               }
+
+               ///////////////////////////////////////////////////////////////////////////////////////
+               //
+               // IDLE TEXT
+               //
+               ///////////////////////////////////////////////////////////////////////////////////////
+
+               part {
+                       name: "qp.noti.spn.padding.left";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 20 0;
+                               fixed: 1 0;
+                               rel2.relative: 0.0 1.0;
+                               align: 0.0 0.5;
+                               visible: 0;
+                       }
+               }
+
+               part {
+                       name: "qp.noti.spn.padding.right";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 20 0;
+                               fixed: 1 0;
+                               rel1.relative: 1.0 0.0;
+                               align: 1.0 0.5;
+                               visible: 0;
+                       }
+               }
+
+               part {
+                       name: "qp.noti.rect.spn";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 44;
+                               fixed: 0 1;
+                               align: 0.5 1.0;
+                               rel1 {
+                                       relative: 0.0 0.0;
+                                       to: "qp.noti.padding.bottom";
+                               }
+                               rel2 {
+                                       relative: 1.0 0.0;
+                                       to: "qp.noti.padding.bottom";
+                               }
+                               color: QP_BG_COLOR;
+                       }
+               }
+
+               part {
+                       name: "qp.noti.spn.padding.top";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               rel1 {
+                                       to_y: "qp.noti.swallow.spn";
+                               }
+                               rel2 {
+                                       to_y: "qp.noti.rect.spn";
+                               }
+                               color: QP_BG_COLOR;
+                       }
+               }
+
+               part {
+                       name: "qp.noti.swallow.spn";
+                       type: SWALLOW;
+                       mouse_events: 0;
+                       description {
+                               state: "default" 0.0;
+                               rel1 {
+                                       relative: 1.0 0.0;
+                                       to_x: "qp.noti.spn.padding.left";
+                                       to_y: "qp.noti.rect.spn";
+                               }
+                               rel2 {
+                                       relative: 0.0 1.0;
+                                       to_x: "qp.noti.spn.padding.right";
+                                       to_y: "qp.noti.rect.spn";
+                               }
+                               align: 0.5 1.0;
+                       }
+               }
+
+               ///////////////////////////////////////////////////////////////////////////////////////
+               //
+               // BOTTOM PADDING
+               //
+               ///////////////////////////////////////////////////////////////////////////////////////
+               part {
+                       name: "qp.noti.padding.bottom";
+                       type: RECT;
+                       description {
+                               state: "default" 0.0;
+                               fixed: 0 1;
+                               min: 0 0;
+                               align: 0.5 1.0;
+                               rel1 { relative: 0.0 1.0; }
+                               color: QP_NOTI_SPN_SEPERATOR_COLOR;
+                       }
+               }
+       }
+
+
+}
+
diff --git a/data/quickpanel_spn.edc b/data/quickpanel_spn.edc
new file mode 100755 (executable)
index 0000000..e24cf66
--- /dev/null
@@ -0,0 +1,94 @@
+/*
+ * 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://www.tizenopensource.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.
+ */
+
+group {
+       name: "quickpanel/spn";
+       parts {
+               part {
+                       name: "background";
+                       type: RECT;
+                       scale: 1;
+                       mouse_events: 1;
+                       description {
+                               state: "default" 0.0;
+                               color: QP_BG_COLOR;
+                       }
+
+               }
+               part {
+                       name: "qp.spn.padding.left";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 20 0;
+                               fixed: 1 0;
+                               rel1 {
+                                       relative: 0.0 0.0;
+                                       to, "background";
+                               }
+                               rel2 {
+                                       relative: 0.0 1.0;
+                                       to, "background";
+                               }
+                               align: 0.0 0.5;
+                               visible: 0;
+                       }
+               }
+
+               part {
+                       name: "qp.spn.padding.right";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 20 0;
+                               fixed: 1 0;
+                               rel1 {
+                                       relative: 1.0 0.0;
+                                       to, "background";
+                               }
+                               rel2 {
+                                       relative: 1.0 1.0;
+                                       to, "background";
+                               }
+                               align: 1.0 0.5;
+                               visible: 0;
+                       }
+               }
+
+               part {
+                       name: "qp.spn.swallow";
+                       type: SWALLOW;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 QP_SPN_H;
+                               fixed:0 1;
+                               rel1 {
+                                       relative: 1.0 0.5;
+                                       to_x: "qp.spn.padding.left";
+                                       to_y: "background";
+                               }
+                               rel2 {
+                                       relative: 0.0 0.5;
+                                       to_x: "qp.spn.padding.right";
+                                       to_y: "background";
+                               }
+                       }
+               }
+       }
+}
+
diff --git a/data/quickpanel_theme.edc b/data/quickpanel_theme.edc
new file mode 100755 (executable)
index 0000000..b9f2a2d
--- /dev/null
@@ -0,0 +1,1398 @@
+/*
+ * 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://www.tizenopensource.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 "quickpanel_theme_def.h"
+
+collections {
+       group { name: "elm/genlist/item/qp_item/default/default";
+               alias: "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 0;
+                                       color: 0 0 0 0;
+                               }
+                       }
+
+                       part { name: "bg_image";
+                               clip_to: "disclip";
+                               mouse_events: 0;
+                               description {
+                                       state: "default" 0.0;
+                                       color: QP_THEME_LIST_ITEM_BG_COLOR;
+                               }
+                               description {
+                                       state: "selected" 0.0;
+                                       inherit: "default" 0.0;
+                                       color: QP_THEME_LIST_ITEM_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;
+                                       fixed: 0 1;
+                                       visible: 0;
+                                       rel2.relative: 1.0 0.0;
+                                       align: 0.0 0.0;
+                               }
+                       }
+                       part { name: "elm.padding.bottom";
+                               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.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: "bottom_line";
+                               type: RECT;
+                               clip_to: "disclip";
+                               mouse_events: 0;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 1;
+                                       fixed: 0 1;
+                                       visible: 1;
+                                       color: QP_THEME_LIST_TITLE_SEPERATOR_COLOR;
+                                       rel1 {
+                                               relative: 0.0 1.0;
+                                               offset: 0 -1;
+                                       }
+                               }
+                       }
+                       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/qp_group_title/default";
+               alias: "elm/genlist/item_odd/qp_group_title/default";
+               data.item: "stacking" "above";
+               data.item: "selectraise" "on";
+               data.item: "texts" "elm.text.text";
+               data.item: "contents" "elm.swallow.icon";
+               data.item: "treesize" "20";
+
+               images {
+                       image: "Q02_Notifications_bg.png" COMP;
+               }
+
+               parts {
+                       part { name: "rect";
+                               type: RECT;
+                               repeat_events: 1;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 QP_THEME_LIST_ITEM_GROUP_HEIGHT;
+                                       color: QP_THEME_LIST_TITLE_BG_COLOR;
+                               }
+                       }
+                       part { name: "bg_image";
+                               type: IMAGE;
+                               scale: 1;
+                               description { state: "default" 0.0;
+                                       fixed: 1 1;
+                                       image {
+                                               normal: "Q02_Notifications_bg.png";
+                                       }
+                               }
+                       }
+                       part { name: "bottom_line";
+                               type: RECT;
+                               mouse_events: 0;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 1;
+                                       fixed: 0 1;
+                                       visible: 1;
+                                       color: QP_THEME_LIST_TITLE_SEPERATOR_COLOR;
+                                       rel1 {
+                                               relative: 0.0 1.0;
+                                               offset: 0 -1;
+                                       }
+                               }
+                       }
+                       part { name: "elm.padding.left";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 20 0;
+                                       fixed: 1 0;
+                                       visible: 0;
+                                       rel2.relative: 0.0 1.0;
+                                       align: 0.0 0.5;
+                               }
+                       }
+                       part { name: "elm.padding.right";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 20 0;
+                                       fixed: 1 0;
+                                       visible: 0;
+                                       rel1.relative: 1.0 0.0;
+                                       align: 1.0 0.5;
+                               }
+                       }
+                       part { name: "elm.padding.top";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 0;
+                                       fixed: 1 0;
+                                       visible: 0;
+                                       rel2.relative: 1.0 0.0;
+                                       align: 0.5 0.0;
+                               }
+                       }
+                       part { name: "elm.padding.bottom";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 20;
+                                       fixed: 1 1;
+                                       visible: 0;
+                                       rel1.relative: 0.0 1.0;
+                                       align: 0.5 1.0;
+                               }
+                       }
+
+                       part { name: "elm.text.text";
+                               type: TEXT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 30;
+                                       fixed: 0 1;
+                                       align: 0.0 1.0;
+                                       rel1 {
+                                               to_x: "elm.padding.left";
+                                               to_y: "elm.padding.bottom";
+                                               relative: 1.0 0.0;
+                                       }
+                                       rel2 {
+                                               to_x: "elm.swallow.icon";
+                                               to_y: "elm.padding.bottom";
+                                               relative: 0.0 0.0;
+                                       }
+                                       color: QP_THEME_LIST_TITLE_FONT_COLOR;
+                                       text {
+                                               font: QP_THEME_LIST_TITLE_FONT_NAME;
+                                               size: QP_THEME_LIST_TITLE_FONT_SIZE;
+                                               align: 0.0 1.0;
+                                       }
+                               }
+                       }
+
+                       part { name: "elm.icon.padding.top";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 15;
+                                       fixed: 0 1;
+                                       rel2.relative: 1.0 0.0;
+                                       align: 0.5 0.0;
+                                       visible: 0;
+                               }
+                       }
+
+                       part { name: "elm.icon.padding.bottom";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 15;
+                                       fixed: 0 1;
+                                       rel1.relative: 0.0 1.0;
+                                       align: 0.5 1.0;
+                                       visible: 0;
+                               }
+                       }
+
+                       part { name: "elm.swallow.icon";
+                               type: SWALLOW;
+                               scale: 1;
+                               description { state: "default" 0.0;
+                                       min: 132 50;
+                                       fixed: 1 1;
+                                       align: 1.0 0.5;
+                                       rel1 {
+                                               to_x: "elm.padding.right";
+                                               to_y: "elm.icon.padding.top";
+                                               relative: 0.0 1.0;
+                                       }
+                                       rel2 {
+                                               to_x: "elm.padding.right";
+                                               to_y: "elm.icon.padding.bottom";
+                                               relative: 0.0 0.0;
+                                       }
+                               }
+                       }
+               }
+       }
+
+       group { name: "elm/genlist/item/notification_item/default";
+               alias: "elm/genlist/item_odd/notification_item/default";
+
+               data.item: "stacking" "above";
+               data.item: "selectraise" "on";
+               data.item: "texts" "elm.text.title elm.text.content elm.text.badge elm.text.time elm.text.title.only";
+               data.item: "contents" "elm.swallow.icon elm.swallow.thumbnail";
+               data.item: "states" "elm.text.content elm.text.time";
+
+               script {
+                       public ctnt_shown;
+                       public time_shown;
+               }
+
+               parts {
+                       part { name: "base";
+                               type: RECT;
+                               repeat_events: 1;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 QP_THEME_LIST_ITEM_NOTI_HEIGHT;
+                                       color: QP_THEME_LIST_ITEM_BG_COLOR;
+                               }
+                       }
+
+                       part { name: "bg_image";
+                               mouse_events: 0;
+                               description {
+                                       state: "default" 0.0;
+                                       color: QP_THEME_LIST_ITEM_BG_COLOR;
+                               }
+                               description {
+                                       state: "selected" 0.0;
+                                       inherit: "default" 0.0;
+                                       color: QP_THEME_LIST_ITEM_BG_COLOR;
+                               }
+                       }
+                       part { name: "bottom_line";
+                               type: RECT;
+                               mouse_events: 0;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 1;
+                                       fixed: 0 1;
+                                       visible: 1;
+                                       color: QP_THEME_LIST_TITLE_SEPERATOR_COLOR;
+                                       rel1 {
+                                               relative: 0.0 1.0;
+                                               offset: 0 -1;
+                                       }
+                               }
+                       }
+                       part { name: "elm.padding.top";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 10;
+                                       fixed: 0 1;
+                                       visible: 0;
+                                       rel2.relative: 1.0 0.0;
+                                       align: 0.0 0.0;
+                               }
+                       }
+
+                       part { name: "elm.padding.bottom";
+                               type: RECT;
+                               scale: 1;
+                               description { state: "default" 0.0;
+                                       min: 0 10;
+                                       fixed: 0 1;
+                                       visible: 0;
+                                       rel1.relative: 0.0 1.0;
+                                       align: 0.0 1.0;
+                               }
+                       }
+
+                       part { name: "elm.padding.left";
+                               type: RECT;
+                               scale: 1;
+                               description { state: "default" 0.0;
+                                       min: 16 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: 16 0;
+                                       fixed: 1 0;
+                                       visible: 0;
+                                       rel1.relative: 1.0 0.0;
+                                       align: 1.0 0.0;
+                               }
+                       }
+
+                       part { name: "elm.rect.thumbnail";
+                               clip_to: "disclip";
+                               type: RECT;
+                               mouse_events: 0;
+                               scale: 1;
+                               description { state: "default" 0.0;
+                                       min: 105 105;
+                                       fixed: 1 1;
+                                       rel1 {
+                                               relative: 1.0 0.5;
+                                               to_x: "elm.padding.left";
+                                       }
+                                       rel2 {
+                                               relative: 1.0 0.5;
+                                               to_x: "elm.padding.left";
+                                       }
+                                       align: 0.0 0.5;
+                                       color: QP_THEME_LIST_ITEM_THUMBNAIL_COLOR;
+                               }
+                       }
+
+                       part { name: "elm.swallow.thumbnail";
+                               clip_to: "disclip";
+                               type: SWALLOW;
+                               mouse_events: 0;
+                               scale: 1;
+                               description { state: "default" 0.0;
+                                       fixed: 1 1;
+                                       rel1 {
+                                               to: "elm.rect.thumbnail";
+                                       }
+                                       rel2 {
+                                               to: "elm.rect.thumbnail";
+                                       }
+                                       align: 0.5 0.5;
+                               }
+                       }
+
+                       part { name: "elm.swallow.icon";
+                               clip_to: "disclip";
+                               type: SWALLOW;
+                               mouse_events: 0;
+                               scale: 1;
+                               description { state: "default" 0.0;
+                                       min: 40 40;
+                                       fixed: 1 1;
+                                       rel1 {
+                                               relative: 1.0 1.0;
+                                               to: "elm.rect.thumbnail";
+                                       }
+                                       rel2 {
+                                               relative: 1.0 1.0;
+                                               to: "elm.rect.thumbnail";
+                                       }
+                                       align: 1.0 1.0;
+                               }
+                       }
+
+                       part { name: "elm.padding.icon.right";
+                               type: RECT;
+                               scale: 1;
+                               description { state: "default" 0.0;
+                                       min: 16 0;
+                                       fixed: 1 0;
+                                       visible: 0;
+                                       rel1.to: "elm.rect.thumbnail";
+                                       rel1.relative: 1.0 0.0;
+                                       rel2.to: "elm.rect.thumbnail";
+                                       align: 0.0 0.0;
+                               }
+                       }
+
+                       part { name: "elm.text.title";
+                               clip_to: "disclip";
+                               type: TEXT;
+                               mouse_events: 0;
+                               scale: 1;
+                               description { state: "default" 0.0;
+                                       min: 0 60;
+                                       align: 0.0 0.0;
+                                       fixed: 1 1;
+                                       rel1 {
+                                               relative: 1.0 1.0;
+                                               to_x: "elm.padding.icon.right";
+                                               to_y: "elm.padding.top";
+                                       }
+                                       rel2 {
+                                               relative: 0.0 1.0;
+                                               to_x: "elm.padding.right";
+                                               to_y: "elm.padding.top";
+                                       }
+                                       color: QP_THEME_LIST_ITEM_MAIN_FONT_COLOR;
+                                       text {
+                                               font: QP_THEME_LIST_ITEM_MAIN_FONT_NAME;
+                                               size: QP_THEME_LIST_ITEM_MAIN_FONT_SIZE;
+                                               align: 0.0 0.5;
+                                       }
+                               }
+                               description { state: "selected" 0.0;
+                                       inherit: "default" 0.0;
+                                       color: QP_THEME_LIST_ITEM_MAIN_FONT_COLOR;
+                               }
+                       }
+                       part { name: "elm.text.title.only";
+                               clip_to: "disclip";
+                               type: TEXT;
+                               mouse_events: 0;
+                               scale: 1;
+                               description { state: "default" 0.0;
+                                       align: 0.0 0.0;
+                                       rel1 {
+                                               relative: 1.0 1.0;
+                                               to_x: "elm.padding.icon.right";
+                                               to_y: "elm.padding.top";
+                                       }
+                                       rel2 {
+                                               relative: 0.0 0.0;
+                                               to_x: "elm.padding.right";
+                                               to_y: "elm.padding.bottom";
+                                       }
+                                       color: QP_THEME_LIST_ITEM_MAIN_FONT_COLOR;
+                                       text {
+                                               font: QP_THEME_LIST_ITEM_MAIN_FONT_NAME;
+                                               size: QP_THEME_LIST_ITEM_MAIN_FONT_SIZE;
+                                               align: 0.0 0.5;
+                                       }
+                               }
+                               description { state: "selected" 0.0;
+                                       inherit: "default" 0.0;
+                                       color: QP_THEME_LIST_ITEM_MAIN_FONT_COLOR;
+                               }
+                       }
+
+                       part { name: "elm.text.time";
+                               clip_to: "disclip";
+                               type: TEXT;
+                               mouse_events: 0;
+                               scale: 1;
+                               description { state: "default" 0.0;
+                                       align: 1.0 0.0;
+                                       min: 0 48;
+                                       fixed: 1 1;
+                                       rel1 {
+                                               relative: 0.0 1.0;
+                                               to_x: "elm.padding.right";
+                                               to_y: "elm.text.title";
+                                       }
+                                       rel2 {
+                                               relative: 0.0 1.0;
+                                               to_x: "elm.padding.right";
+                                               to_y: "elm.text.title";
+                                       }
+                                       color: QP_THEME_LIST_ITEM_TIME_FONT_COLOR;
+                                       text {
+                                               font: QP_THEME_LIST_ITEM_TIME_FONT_NAME;
+                                               size: QP_THEME_LIST_ITEM_TIME_FONT_SIZE;
+                                               min: 1 0;
+                                               align: 1.0 0.5;
+                                       }
+                               }
+                               description { state: "selected" 0.0;
+                                       inherit: "default" 0.0;
+                                       color: QP_THEME_LIST_ITEM_TIME_FONT_COLOR;
+                               }
+                       }
+
+                       part { name: "elm.text.content";
+                               clip_to: "disclip";
+                               type: TEXT;
+                               mouse_events: 0;
+                               scale: 1;
+                               description { state: "default" 0.0;
+                                       align: 0.0 0.0;
+                                       min: 0 48;
+                                       fixed: 0 1;
+                                       rel1 {
+                                               relative: 1.0 1.0;
+                                               to_x: "elm.padding.icon.right";
+                                               to_y: "elm.text.title";
+                                       }
+                                       rel2 {
+                                               relative: 0.0 1.0;
+                                               to_x: "elm.padding.right";
+                                               to_y: "elm.text.title";
+                                       }
+                                       color: QP_THEME_LIST_ITEM_SUB_FONT_COLOR;
+                                       text {
+                                               font: QP_THEME_LIST_ITEM_SUB_FONT_NAME;
+                                               size: QP_THEME_LIST_ITEM_SUB_FONT_SIZE;
+                                               align: 0.0 0.5;
+                                       }
+                               }
+                               description { state: "show" 0.0;
+                                       inherit: "default" 0.0;
+                               }
+                               description { state: "selected" 0.0;
+                                       inherit: "default" 0.0;
+                                       color: QP_THEME_LIST_ITEM_SUB_FONT_COLOR;
+                               }
+                       }
+
+                       part { name: "disclip";
+                               type: RECT;
+                               description {
+                                       state: "default" 0.0;
+                               }
+                               description {
+                                       state: "disabled" 0.0;
+                                       inherit: "default" 0.0;
+                                       color: 255 255 255 64;
+                               }
+                       }
+               }
+
+               programs {
+                       program { name: "show_content";
+                               signal: "elm,state,elm.text.content,active";
+                               source: "elm";
+                               script {
+                                       set_state(PART:"elm.text.content", "show", 0.0);
+                                       set_int(ctnt_shown, 1);
+                               }
+                       }
+                       program { name: "go_active";
+                               signal: "elm,state,selected";
+                               source: "elm";
+                               script {
+                                       set_state(PART:"bg_image", "selected", 0.0);
+                                       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);
+                               }
+                       }
+                       program { name: "go_passive";
+                               signal: "elm,state,unselected";
+                               source: "elm";
+                               script {
+                                       set_state(PART:"bg_image", "default", 0.0);
+                                       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);
+                               }
+                       }
+                       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/notification_ongoing_item/default";
+               alias: "elm/genlist/item_odd/notification_ongoing_item/default";
+
+               data.item: "stacking" "above";
+               data.item: "selectraise" "on";
+               data.item: "texts" "elm.text.title elm.text.content elm.text.badge elm.text.time elm.text.content.no.progress";
+               data.item: "contents" "elm.swallow.icon elm.swallow.thumbnail elm.swallow.progress";
+               data.item: "states" "elm.text.content elm.text.time";
+
+               script {
+                       public ctnt_shown;
+                       public time_shown;
+               }
+
+               parts {
+                       part { name: "base";
+                               type: RECT;
+                               repeat_events: 1;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 QP_THEME_LIST_ITEM_ONGOING_HEIGHT;
+                                       color: QP_THEME_LIST_ITEM_BG_COLOR;
+                               }
+                       }
+
+                       part { name: "bg_image";
+                               mouse_events: 0;
+                               description {
+                                       state: "default" 0.0;
+                                       color: QP_THEME_LIST_ITEM_BG_COLOR;
+                               }
+                               description {
+                                       state: "selected" 0.0;
+                                       inherit: "default" 0.0;
+                                       color: QP_THEME_LIST_ITEM_BG_COLOR;
+                               }
+                       }
+                       part { name: "bottom_line";
+                               type: RECT;
+                               mouse_events: 0;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 1;
+                                       fixed: 0 1;
+                                       visible: 1;
+                                       color: QP_THEME_LIST_TITLE_SEPERATOR_COLOR;
+                                       rel1 {
+                                               relative: 0.0 1.0;
+                                               offset: 0 -1;
+                                       }
+                               }
+                       }
+                       part { name: "elm.padding.top";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 1;
+                                       fixed: 0 1;
+                                       visible: 0;
+                                       rel2.relative: 1.0 0.0;
+                                       align: 0.0 0.0;
+                               }
+                       }
+
+                       part { name: "elm.padding.bottom";
+                               type: RECT;
+                               scale: 1;
+                               description { state: "default" 0.0;
+                                       min: 0 1;
+                                       fixed: 0 1;
+                                       visible: 0;
+                                       rel1.relative: 0.0 1.0;
+                                       align: 0.0 1.0;
+                               }
+                       }
+
+                       part { name: "elm.padding.left";
+                               type: RECT;
+                               scale: 1;
+                               description { state: "default" 0.0;
+                                       min: 16 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: 16 0;
+                                       fixed: 1 0;
+                                       visible: 0;
+                                       rel1.relative: 1.0 0.0;
+                                       align: 1.0 0.0;
+                               }
+                       }
+
+                       part { name: "elm.rect.thumbnail";
+                               clip_to: "disclip";
+                               type: RECT;
+                               mouse_events: 0;
+                               scale: 1;
+                               description { state: "default" 0.0;
+                                       min: 105 105;
+                                       fixed: 1 1;
+                                       rel1 {
+                                               relative: 1.0 0.5;
+                                               to_x: "elm.padding.left";
+                                       }
+                                       rel2 {
+                                               relative: 1.0 0.5;
+                                               to_x: "elm.padding.left";
+                                       }
+                                       align: 0.0 0.5;
+                                       color: QP_THEME_LIST_ITEM_THUMBNAIL_COLOR;
+                               }
+                       }
+
+                       part { name: "elm.swallow.thumbnail";
+                               clip_to: "disclip";
+                               type: SWALLOW;
+                               mouse_events: 0;
+                               scale: 1;
+                               description { state: "default" 0.0;
+                                       fixed: 1 1;
+                                       rel1 {
+                                               to: "elm.rect.thumbnail";
+                                       }
+                                       rel2 {
+                                               to: "elm.rect.thumbnail";
+                                       }
+                                       align: 0.5 0.5;
+                               }
+                       }
+
+                       part { name: "elm.swallow.icon";
+                               clip_to: "disclip";
+                               type: SWALLOW;
+                               mouse_events: 0;
+                               scale: 1;
+                               description { state: "default" 0.0;
+                                       min: 40 40;
+                                       fixed: 1 1;
+                                       rel1 {
+                                               relative: 1.0 1.0;
+                                               to: "elm.rect.thumbnail";
+                                       }
+                                       rel2 {
+                                               relative: 1.0 1.0;
+                                               to: "elm.rect.thumbnail";
+                                       }
+                                       align: 1.0 1.0;
+                               }
+                       }
+
+                       part { name: "elm.padding.icon.right";
+                               type: RECT;
+                               scale: 1;
+                               description { state: "default" 0.0;
+                                       min: 16 0;
+                                       fixed: 1 0;
+                                       visible: 0;
+                                       rel1.to: "elm.rect.thumbnail";
+                                       rel1.relative: 1.0 0.0;
+                                       rel2.to: "elm.rect.thumbnail";
+                                       align: 0.0 0.0;
+                               }
+                       }
+
+                       part { name: "elm.text.title";
+                               clip_to: "disclip";
+                               type: TEXT;
+                               mouse_events: 0;
+                               scale: 1;
+                               description { state: "default" 0.0;
+                                       min: 0 69;
+                                       align: 0.0 0.0;
+                                       fixed: 1 1;
+                                       rel1 {
+                                               relative: 1.0 1.0;
+                                               to_x: "elm.padding.icon.right";
+                                               to_y: "elm.padding.top";
+                                       }
+                                       rel2 {
+                                               relative: 0.0 1.0;
+                                               to_x: "elm.padding.right";
+                                               to_y: "elm.padding.top";
+                                       }
+                                       color: QP_THEME_LIST_ITEM_MAIN_FONT_COLOR;
+                                       text {
+                                               font: QP_THEME_LIST_ITEM_MAIN_FONT_NAME;
+                                               size: QP_THEME_LIST_ITEM_MAIN_FONT_SIZE;
+                                               align: 0.0 0.5;
+                                       }
+                               }
+                               description { state: "selected" 0.0;
+                                       inherit: "default" 0.0;
+                                       color: QP_THEME_LIST_ITEM_MAIN_FONT_COLOR;
+                               }
+                       }
+
+                       part { name: "elm.swallow.progress";
+                               clip_to: "disclip";
+                               type: SWALLOW;
+                               mouse_events: 0;
+                               scale: 1;
+                               description { state: "default" 0.0;
+                                       min: 0 5;
+                                       fixed: 0 1;
+                                       rel1 {
+                                               relative: 1.0 1.0;
+                                               to_x: "elm.padding.icon.right";
+                                               to_y: "elm.text.title";
+                                       }
+                                       rel2 {
+                                               relative: 0.0 1.0;
+                                               to_x: "elm.padding.right";
+                                               to_y: "elm.text.title";
+                                       }
+                                       align: 0.0 0.5;
+                               }
+                       }
+
+                       part { name: "elm.text.time";
+                               clip_to: "disclip";
+                               type: TEXT;
+                               mouse_events: 0;
+                               scale: 1;
+                               description { state: "default" 0.0;
+                                       align: 0.0 0.0;
+                                       fixed: 1 1;
+                                       min: 0 54;
+                                       rel1 {
+                                               relative: 1.0 1.0;
+                                               to_x: "elm.padding.icon.right";
+                                               to_y: "elm.swallow.progress";
+                                       }
+                                       rel2 {
+                                               relative: 0.0 1.0;
+                                               to_x: "elm.padding.right";
+                                               to_y: "elm.swallow.progress";
+                                       }
+                                       color: QP_THEME_LIST_ONGOING_PENDING_COLOR;
+                                       text {
+                                               font: QP_THEME_LIST_ONGOING_PENDING_NAME;
+                                               size: QP_THEME_LIST_ONGOING_PENDING_SIZE;
+                                               align: 0.0 0.5;
+                                       }
+                               }
+                               description { state: "selected" 0.0;
+                                       inherit: "default" 0.0;
+                                       color: QP_THEME_LIST_ITEM_TIME_FONT_COLOR;
+                               }
+                       }
+
+                       part { name: "elm.text.content";
+                               clip_to: "disclip";
+                               type: TEXT;
+                               mouse_events: 0;
+                               scale: 1;
+                               description { state: "default" 0.0;
+                                       align: 1.0 0.0;
+                                       min: 0 54;
+                                       fixed: 1 1;
+                                       rel1 {
+                                               relative: 0.0 1.0;
+                                               to_x: "elm.padding.right";
+                                               to_y: "elm.swallow.progress";
+                                       }
+                                       rel2 {
+                                               relative: 0.0 1.0;
+                                               to_x: "elm.padding.right";
+                                               to_y: "elm.swallow.progress";
+                                       }
+                                       color: QP_THEME_LIST_ONGOING_MB_COLOR;
+                                       text {
+                                               font: QP_THEME_LIST_ONGOING_MB_NAME;
+                                               size: QP_THEME_LIST_ONGOING_MB_SIZE;
+                                               min: 1 0;
+                                               align: 1.0 0.5;
+                                       }
+                               }
+                               description { state: "show" 0.0;
+                                       inherit: "default" 0.0;
+                               }
+                               description { state: "selected" 0.0;
+                                       inherit: "default" 0.0;
+                                       color: QP_THEME_LIST_ITEM_SUB_FONT_COLOR;
+                               }
+                       }
+
+                       part { name: "elm.text.content.no.progress";
+                               clip_to: "disclip";
+                               type: TEXT;
+                               mouse_events: 0;
+                               scale: 1;
+                               description { state: "default" 0.0;
+                                       align: 0.0 0.0;
+                                       min: 0 48;
+                                       fixed: 0 1;
+                                       rel1 {
+                                               relative: 1.0 1.0;
+                                               to_x: "elm.padding.icon.right";
+                                               to_y: "elm.text.title";
+                                       }
+                                       rel2 {
+                                               relative: 0.0 1.0;
+                                               to_x: "elm.padding.right";
+                                               to_y: "elm.text.title";
+                                       }
+                                       color: QP_THEME_LIST_ITEM_SUB_FONT_COLOR;
+                                       text {
+                                               font: QP_THEME_LIST_ITEM_SUB_FONT_NAME;
+                                               size: QP_THEME_LIST_ITEM_SUB_FONT_SIZE;
+                                               align: 0.0 0.5;
+                                       }
+                               }
+                               description { state: "show" 0.0;
+                                       inherit: "default" 0.0;
+                               }
+                               description { state: "selected" 0.0;
+                                       inherit: "default" 0.0;
+                                       color: QP_THEME_LIST_ITEM_SUB_FONT_COLOR;
+                               }
+                       }
+
+                       part { name: "disclip";
+                               type: RECT;
+                               description {
+                                       state: "default" 0.0;
+                               }
+                               description {
+                                       state: "disabled" 0.0;
+                                       inherit: "default" 0.0;
+                                       color: 255 255 255 64;
+                               }
+                       }
+               }
+
+               programs {
+                       program { name: "show_content";
+                               signal: "elm,state,elm.text.content,active";
+                               source: "elm";
+                               script {
+                                       set_state(PART:"elm.text.content", "show", 0.0);
+                                       set_int(ctnt_shown, 1);
+                               }
+                       }
+                       program { name: "go_active";
+                               signal: "elm,state,selected";
+                               source: "elm";
+                               script {
+                                       set_state(PART:"bg_image", "selected", 0.0);
+                                       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);
+                               }
+                       }
+                       program { name: "go_passive";
+                               signal: "elm,state,unselected";
+                               source: "elm";
+                               script {
+                                       set_state(PART:"bg_image", "default", 0.0);
+                                       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);
+                               }
+                       }
+                       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";
+                       }
+               }
+       }
+///////////////////////////////////////////////////////////////////////////////////////
+
+#define NOTI_BUTTON_STATE_ENABLED 0
+#define NOTI_BUTTON_STATE_DISABLED 1
+
+       group { name: "elm/button/base/noticlear";
+               images {
+                       image: "Q02_quickpanel_button_nomal_01_left.png" COMP;
+                       image: "Q02_quickpanel_button_nomal_01_center.png" COMP;
+                       image: "Q02_quickpanel_button_nomal_01_right.png" COMP;
+                       image: "Q02_quickpanel_button_press_01_left.png" COMP;
+                       image: "Q02_quickpanel_button_press_01_center.png" COMP;
+                       image: "Q02_quickpanel_button_press_01_right.png" COMP;
+               }
+
+               script {
+                       public button_state = NOTI_BUTTON_STATE_ENABLED;
+               }
+               parts {
+                       part { name: "button_image";
+                               type: IMAGE;
+                               mouse_events: 1;
+                               scale: 1;
+                               description { state: "default" 0.0;
+                                       rel1 {
+                                               relative: 1.0 0.5;
+                                               to_x: "padding.left"; to_y: "elm.text";
+                                       }
+                                       rel2 {
+                                               relative: 0.0 0.5;
+                                               to_x: "padding.right"; to_y: "elm.text";
+                                       }
+                                       min: 122 50;
+                                       fixed: 1 1;
+                                       image {
+                                               normal: "Q02_quickpanel_button_nomal_01_center.png";
+                                       }
+                               }
+                               description { state: "clicked" 0.0;
+                                       inherit: "default" 0.0;
+                                       image {
+                                               normal: "Q02_quickpanel_button_press_01_center.png";
+                                       }
+                               }
+                               description { state: "disabled" 0.0;
+                                       inherit: "default" 0.0;
+                               }
+                               description { state: "focused" 0.0;
+                                       inherit: "default" 0.0;
+                               }
+                       }
+               part { name: "padding.left";
+                       type: IMAGE;
+                       scale: 1;
+                       description { state: "default" 0.0;
+                               min: 5 50;
+                               fixed: 1 1;
+                               image {
+                                               normal: "Q02_quickpanel_button_nomal_01_left.png";
+                               }
+                               rel1.relative: 0.0 0.5;
+                               rel2 { relative: 0.0 0.5; to_y: "elm.text"; }
+                               align: 0 0.5;
+                       }
+                       description { state: "clicked" 0.0;
+                               inherit: "default" 0.0;
+                               image {
+                                       normal: "Q02_quickpanel_button_press_01_left.png";
+                               }
+                       }
+               }
+               part { name: "padding.right";
+                       type: IMAGE;
+                       scale: 1;
+                       description { state: "default" 0.0;
+                               min: 5 50;
+                               fixed: 1 1;
+                               image {
+                                               normal: "Q02_quickpanel_button_nomal_01_right.png";
+                               }
+                               rel1 { relative: 1.0 0.5; to_y: "elm.text"; }
+                               rel2.relative: 1.0 0.5;
+                               align: 1 0.5;
+                       }
+                       description { state: "clicked" 0.0;
+                               inherit: "default" 0.0;
+                               image {
+                                       normal: "Q02_quickpanel_button_press_01_right.png";
+                               }
+                       }
+               }
+               part {   name: "elm.text";
+                       type: TEXT;
+                       mouse_events: 0;
+                       scale: 1;
+                       description { state: "default" 0.0;
+                               visible: 0;
+                               fixed: 1 1;
+                               align: 0.5 0.5;
+                               color: 249 249 249 255;
+                               text {
+                                       font: "SLP:style=Regular";
+                                       size: 26;
+                                       min: 1 1;
+                                       align: 0.5 0.5;
+                               }
+                       }
+                       description { state: "visible" 0.0;
+                               inherit: "default" 0.0;
+                               visible: 1;
+                               min: 1 1;
+                       }
+                       description { state: "clicked" 0.0;
+                               inherit: "default" 0.0;
+                               visible: 1;
+                               min: 1 1;
+                               //color: BUTTON_CONTACT_BUTTON_TEXT_PRESSED_COLOR_INC;
+                       }
+                       description { state: "disabled" 0.0;
+                               inherit: "default" 0.0;
+                               color: 0 0 0 128;
+                       }
+                       description { state: "disabled_visible" 0.0;
+                               inherit: "default" 0.0;
+                               //color: BUTTON_CONTACT_BUTTON_TEXT_DISABLED_COLOR_INC;
+                               visible: 1;
+                               min: 1 1;
+                       }
+                       description { state: "focused" 0.0;
+                               inherit: "default" 0.0;
+                               visible: 1;
+                               min: 1 1;
+                               //color: BUTTON_CONTACT_BUTTON_TEXT_FOCUSED_COLOR_INC;
+                       }
+               }
+               part { name: "over1";
+                       mouse_events: 0;
+                       description { state: "default" 0.0;
+                               rel2.relative: 1.0 0.5;
+                       }
+               }
+               part { name: "over2";
+                       mouse_events: 1;
+                       repeat_events: 1;
+                       ignore_flags: ON_HOLD;
+                       description { state: "default" 0.0;
+                               rel1.to: "button_image";
+                               rel2.to: "button_image";
+                       }
+               }
+               part { name: "over3";
+                       mouse_events: 1;
+                       repeat_events: 1;
+                       description { state: "default" 0.0;
+                               rel1.to: "button_image";
+                               rel2.to: "button_image";
+                               color: 0 0 0 0;
+                       }
+               }
+               part { name: "disabler";
+                       type: RECT;
+                       description { state: "default" 0.0;
+                               rel1.to: "button_image";
+                               rel2.to: "button_image";
+                               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";
+                       target: "padding.left";
+                       target: "padding.right";
+                       target: "elm.text";
+               }
+               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.text", st, 30, vl);
+                               if (!strcmp(st, "clicked") || !strcmp(st, "focused"))
+                               {
+                                       emit("elm,action,default,text,set", "");
+                                       set_state(PART:"elm.text", "visible", 0.0);
+                               }
+                               if(get_int(button_state) != NOTI_BUTTON_STATE_DISABLED)
+                               {
+                                       set_state(PART:"button_image", "default", 0.0);
+                                       set_state(PART:"padding.left", "default", 0.0);
+                                       set_state(PART:"padding.right", "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 {
+                               if(get_int(button_state) != NOTI_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";
+                       action: STATE_SET "default" 0.0;
+                       target: "elm.text";
+               }
+
+               program { name: "disable";
+                       signal: "elm,state,disabled";
+                       source: "elm";
+                       action: STATE_SET "disabled" 0.0;
+                       target: "button_image";
+                       target: "disabler";
+                       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, NOTI_BUTTON_STATE_DISABLED);
+                       }
+               }
+               program { name: "enable";
+                       signal: "elm,state,enabled";
+                       source: "elm";
+                       action: STATE_SET "default" 0.0;
+                       target: "button_image";
+                       target: "padding.left";
+                       target: "padding.right";
+                       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, NOTI_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";
+                       action: STATE_SET "visible" 0.0;
+                       target: "elm.text";
+               }
+       }
+}
+
diff --git a/data/quickpanel_theme_def.h b/data/quickpanel_theme_def.h
new file mode 100755 (executable)
index 0000000..2111833
--- /dev/null
@@ -0,0 +1,55 @@
+/*
+ * 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://www.tizenopensource.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 __QUICKPANEL_THEME_DEF_H__
+#define __QUICKPANEL_THEME_DEF_H__
+
+#define QP_THEME_LIST_ITEM_GROUP_HEIGHT 80
+#define QP_THEME_LIST_ITEM_NOTI_HEIGHT 130
+#define QP_THEME_LIST_ITEM_ONGOING_HEIGHT 130
+
+#define QP_THEME_LIST_TITLE_BG_COLOR                   25 25 25 255
+#define QP_THEME_LIST_TITLE_SEPERATOR_COLOR            102 102 102 255
+
+#define QP_THEME_LIST_TITLE_FONT_NAME                  "SLP:style=Medium"
+#define QP_THEME_LIST_TITLE_FONT_COLOR                 163 163 163 255
+#define QP_THEME_LIST_TITLE_FONT_SIZE                  28
+
+#define QP_THEME_LIST_ITEM_BG_COLOR                            20 20 20 255
+#define QP_THEME_LIST_ITEM_SEPERATOR_COLOR             102 102 102 255
+#define QP_THEME_LIST_ITEM_THUMBNAIL_COLOR             25 25 25 255
+
+#define QP_THEME_LIST_ITEM_MAIN_FONT_NAME              "SLP:style=Bold"
+#define QP_THEME_LIST_ITEM_MAIN_FONT_COLOR             249 249 249 255
+#define QP_THEME_LIST_ITEM_MAIN_FONT_SIZE              34
+
+#define QP_THEME_LIST_ITEM_SUB_FONT_NAME               "SLP:style=Regular"
+#define QP_THEME_LIST_ITEM_SUB_FONT_COLOR              183 183 183 255
+#define QP_THEME_LIST_ITEM_SUB_FONT_SIZE               30
+
+#define QP_THEME_LIST_ITEM_TIME_FONT_NAME              "SLP:style=Regular"
+#define QP_THEME_LIST_ITEM_TIME_FONT_COLOR             255 255 255 255
+#define QP_THEME_LIST_ITEM_TIME_FONT_SIZE              26
+
+#define QP_THEME_LIST_ONGOING_PENDING_NAME             "SLP:style=Regular"
+#define QP_THEME_LIST_ONGOING_PENDING_COLOR            183 183 183 255
+#define QP_THEME_LIST_ONGOING_PENDING_SIZE             26
+
+#define QP_THEME_LIST_ONGOING_MB_NAME          "SLP:style=Regular"
+#define QP_THEME_LIST_ONGOING_MB_COLOR         249 249 249 255
+#define QP_THEME_LIST_ONGOING_MB_SIZE          26
+
+#endif /*__QUICKPANEL_THEME_DEF_H__*/
diff --git a/data/sip.wav b/data/sip.wav
new file mode 100644 (file)
index 0000000..a4394bf
Binary files /dev/null and b/data/sip.wav differ
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
index 453594a..1b4c755
@@ -1,16 +1,18 @@
-%define PREFIX "/opt/apps/org.tizen.quickpanel"
-%define RESDIR  "/opt/apps/org.tizen.quickpanel/res"
-%define DATADIR "/opt/apps/org.tizen.quickpanel/data"
+%define PREFIX    /usr/apps/%{name}
+%define RESDIR    %{PREFIX}/res
+%define DATADIR    %{PREFIX}/data
 
 Name:       org.tizen.quickpanel
 Summary:    Quick Panel
-Version:    0.1.1
+Version:    0.1.2
 Release:    1
 Group:      util
 License:    Flora Software License
 Source0:    %{name}-%{version}.tar.gz
 
-BuildRequires: pkgconfig(appcore-efl)
+BuildRequires: pkgconfig(capi-appfw-application)
+BuildRequires: pkgconfig(capi-appfw-app-manager)
+BuildRequires: pkgconfig(capi-system-runtime-info)
 BuildRequires: pkgconfig(appcore-common)
 BuildRequires: pkgconfig(heynoti)
 BuildRequires: pkgconfig(notification)
@@ -25,12 +27,13 @@ BuildRequires: pkgconfig(evas)
 BuildRequires: pkgconfig(ecore)
 BuildRequires: pkgconfig(edje)
 BuildRequires: pkgconfig(mm-sound)
-BuildRequires: pkgconfig(iniparser)
 BuildRequires: pkgconfig(icu-i18n)
 BuildRequires: pkgconfig(dlog)
 BuildRequires: pkgconfig(elementary)
 BuildRequires: pkgconfig(syspopup-caller)
-       
+BuildRequires: pkgconfig(minicontrol-viewer)
+BuildRequires: pkgconfig(minicontrol-monitor)
+BuildRequires: pkgconfig(utilX)
 BuildRequires: gettext-tools
 BuildRequires: cmake
 BuildRequires: edje-tools
@@ -57,11 +60,20 @@ rm -rf %{buildroot}
 rm -rf %{buildroot}
 
 %post
-INHOUSE_ID="5000"
+APPS_ID="5000"
+
+init_vconf()
+{
+       vconftool set -t bool db/setting/rotate_lock 0 -u 5000
+       vconftool set -t bool db/setting/drivingmode/drivingmode 0 -u 5000
+       vconftool set -t bool memory/private/%{name}/started 0 -i -u 5000
+       vconftool set -t bool memory/private/%{name}/enable_ask 1 -i -u 5000
+       vconftool set -t bool memory/private/%{name}/disable_ask 1 -i -u 5000
+}
 
 change_dir_permission()
 {
-    chown $INHOUSE_ID:$INHOUSE_ID $@ 2>/dev/null
+    chown $APPS_ID:$APPS_ID $@ 2>/dev/null
     if [ $? -ne 0 ]; then
         echo "Failed to change the owner of $@"
     fi  
@@ -78,13 +90,13 @@ change_file_executable()
         echo "Failed to change the perms of $@"
     fi  
 }
-
+init_vconf
 change_dir_permission %{DATADIR}
 change_file_executable /etc/init.d/quickpanel
 mkdir -p /etc/rc.d/rc5.d/
 mkdir -p /etc/rc.d/rc3.d/
-ln -s /etc/init.d/quickpanel /etc/rc.d/rc5.d/S51quickpanel
-ln -s /etc/init.d/quickpanel /etc/rc.d/rc3.d/S51quickpanel
+ln -sf /etc/init.d/quickpanel /etc/rc.d/rc5.d/S51quickpanel
+ln -sf /etc/init.d/quickpanel /etc/rc.d/rc3.d/S51quickpanel
 
 %postun
 /sbin/ldconfig
@@ -94,6 +106,7 @@ rm -f /etc/rc.d/rc3.d/S51quickpanel
 %files
 %defattr(-,root,root,-)
 /etc/init.d/quickpanel
-/opt/apps/org.tizen.quickpanel/bin/*
-/opt/apps/org.tizen.quickpanel/res/*
-/opt/share/applications/org.tizen.quickpanel.desktop
+%{DATADIR}/*
+%{PREFIX}/bin/*
+%{RESDIR}/*
+/usr/share/packages/%{name}.xml
old mode 100755 (executable)
new mode 100644 (file)
old mode 100644 (file)
new mode 100755 (executable)
index 653f2df..b46e204
@@ -1,6 +1,21 @@
+msgid "IDS_QP_BUTTON_ROTATION"
+msgstr "Drehung"
+
 msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
 msgstr "Benachrichtigungen (%d)"
 
+msgid "IDS_QP_BUTTON_VIBRATION"
+msgstr "Vibration"
+
+msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
+msgstr "Ton & Vibration"
+
+msgid "IDS_QP_TAB4_AUTO_ROTATION"
+msgstr "Automat. Ausrichten"
+
+msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
+msgstr "Automat. Ausrichten"
+
 msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
 msgstr "Massenspeichermodus"
 
@@ -9,3 +24,4 @@ msgstr "Deaktiv."
 
 msgid "IDS_QP_BUTTON_ENABLE"
 msgstr "Aktivieren"
+
old mode 100644 (file)
new mode 100755 (executable)
index 41508e7..43828e4
@@ -1,6 +1,21 @@
+msgid "IDS_QP_BUTTON_ROTATION"
+msgstr "Περιστρ."
+
 msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
 msgstr "Ειδοποιήσεις (%d)"
 
+msgid "IDS_QP_BUTTON_VIBRATION"
+msgstr "Δόνηση"
+
+msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
+msgstr "Ήχος & δόνηση"
+
+msgid "IDS_QP_TAB4_AUTO_ROTATION"
+msgstr "Αυτόμ. περιστρ."
+
+msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
+msgstr "Κλείδ. περιστρ."
+
 msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
 msgstr "Λειτ. μαζικής αποθήκευσης"
 
@@ -9,3 +24,4 @@ msgstr "Απενεργ."
 
 msgid "IDS_QP_BUTTON_ENABLE"
 msgstr "Ενεργό"
+
old mode 100644 (file)
new mode 100755 (executable)
index 3b79262..9cd0465
--- a/po/en.po
+++ b/po/en.po
@@ -1,6 +1,21 @@
+msgid "IDS_QP_BUTTON_ROTATION"
+msgstr "Rotation"
+
 msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
 msgstr "Notifications (%d)"
 
+msgid "IDS_QP_BUTTON_VIBRATION"
+msgstr "Vibration"
+
+msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
+msgstr "Sound & vibration"
+
+msgid "IDS_QP_TAB4_AUTO_ROTATION"
+msgstr "Auto rotation"
+
+msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
+msgstr "Rotation lock"
+
 msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
 msgstr "Mass storage mode"
 
@@ -9,3 +24,4 @@ msgstr "Disable"
 
 msgid "IDS_QP_BUTTON_ENABLE"
 msgstr "Enable"
+
old mode 100644 (file)
new mode 100755 (executable)
index 7fe974f..5a4df8f
@@ -1,6 +1,21 @@
+msgid "IDS_QP_BUTTON_ROTATION"
+msgstr "Rotación"
+
 msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
 msgstr "Notificaciones (%d)"
 
+msgid "IDS_QP_BUTTON_VIBRATION"
+msgstr "Vibración"
+
+msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
+msgstr "Sonido y vibración"
+
+msgid "IDS_QP_TAB4_AUTO_ROTATION"
+msgstr "Rotación autom"
+
+msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
+msgstr "Bloq rotación"
+
 msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
 msgstr "Modo almacenam masivo"
 
@@ -9,3 +24,4 @@ msgstr "Desactiv"
 
 msgid "IDS_QP_BUTTON_ENABLE"
 msgstr "Habilitar"
+
old mode 100644 (file)
new mode 100755 (executable)
index a7b971e..0f35920
@@ -1,11 +1,27 @@
+msgid "IDS_QP_BUTTON_ROTATION"
+msgstr "Rotation"
+
 msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
 msgstr "Notifications (%d)"
 
+msgid "IDS_QP_BUTTON_VIBRATION"
+msgstr "Vibreur"
+
+msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
+msgstr "Son et vibreur"
+
+msgid "IDS_QP_TAB4_AUTO_ROTATION"
+msgstr "Rotation auto"
+
+msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
+msgstr "Désactiver rotation"
+
 msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
 msgstr "Mode stockage de masse"
 
 msgid "IDS_QP_BUTTON_DISABLE"
-msgstr "Désactiv." 
+msgstr "Désactiv."
 
 msgid "IDS_QP_BUTTON_ENABLE"
 msgstr "Activer"
+
old mode 100644 (file)
new mode 100755 (executable)
index 3c10fe5..4ad6282
@@ -1,6 +1,21 @@
+msgid "IDS_QP_BUTTON_ROTATION"
+msgstr "Rotaz."
+
 msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
 msgstr "Notifiche (%d)"
 
+msgid "IDS_QP_BUTTON_VIBRATION"
+msgstr "Vibraz."
+
+msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
+msgstr "Suono e vibraz."
+
+msgid "IDS_QP_TAB4_AUTO_ROTATION"
+msgstr "Ruota automat."
+
+msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
+msgstr "Blocco rotazione"
+
 msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
 msgstr "Modalità archiv. di massa"
 
@@ -9,3 +24,4 @@ msgstr "Disattiva"
 
 msgid "IDS_QP_BUTTON_ENABLE"
 msgstr "Attiva"
+
old mode 100644 (file)
new mode 100755 (executable)
index 3c8a496..382bb24
@@ -1,6 +1,21 @@
+msgid "IDS_QP_BUTTON_ROTATION"
+msgstr "回転"
+
 msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
 msgstr "通知​(%d)"
 
+msgid "IDS_QP_BUTTON_VIBRATION"
+msgstr "バイブ"
+
+msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
+msgstr "サウンドとバイブ"
+
+msgid "IDS_QP_TAB4_AUTO_ROTATION"
+msgstr "画面 回転"
+
+msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
+msgstr "回転​ロック"
+
 msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
 msgstr "マスストレージモード"
 
@@ -9,3 +24,4 @@ msgstr "無効"
 
 msgid "IDS_QP_BUTTON_ENABLE"
 msgstr "有効"
+
old mode 100644 (file)
new mode 100755 (executable)
index c067093..d7aa21b
@@ -1,5 +1,21 @@
+msgid "IDS_QP_BUTTON_ROTATION"
+msgstr "회전"
+
 msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
 msgstr "알림(%d개)"
+
+msgid "IDS_QP_BUTTON_VIBRATION"
+msgstr "진동"
+
+msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
+msgstr "소리 및 진동"
+
+msgid "IDS_QP_TAB4_AUTO_ROTATION"
+msgstr "자동 회전"
+
+msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
+msgstr "회전 잠금"
+
 msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
 msgstr "이동식 메모리 모드"
 
@@ -8,3 +24,4 @@ msgstr "해제"
 
 msgid "IDS_QP_BUTTON_ENABLE"
 msgstr "실행"
+
old mode 100644 (file)
new mode 100755 (executable)
index 6a4d236..feb361b
@@ -1,6 +1,21 @@
+msgid "IDS_QP_BUTTON_ROTATION"
+msgstr "Rotatie"
+
 msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
 msgstr "Meldingen (%d)"
 
+msgid "IDS_QP_BUTTON_VIBRATION"
+msgstr "Trillen"
+
+msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
+msgstr "Geluid en trillen"
+
+msgid "IDS_QP_TAB4_AUTO_ROTATION"
+msgstr "Autom. draaien"
+
+msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
+msgstr "Rotatie vergrend."
+
 msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
 msgstr "Massaopslagmodus"
 
@@ -9,3 +24,4 @@ msgstr "Uitzetten"
 
 msgid "IDS_QP_BUTTON_ENABLE"
 msgstr "Aanzetten"
+
old mode 100644 (file)
new mode 100755 (executable)
index 28bafd4..cd6b3d7
@@ -1,6 +1,21 @@
+msgid "IDS_QP_BUTTON_ROTATION"
+msgstr "Rotação"
+
 msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
 msgstr "Notificações (%d)"
 
+msgid "IDS_QP_BUTTON_VIBRATION"
+msgstr "Vibração"
+
+msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
+msgstr "Som e vibração"
+
+msgid "IDS_QP_TAB4_AUTO_ROTATION"
+msgstr "Rotação autom."
+
+msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
+msgstr "Bloqueio rotação"
+
 msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
 msgstr "Modo armazenamento massa"
 
@@ -9,3 +24,4 @@ msgstr "Desactivar"
 
 msgid "IDS_QP_BUTTON_ENABLE"
 msgstr "Activar"
+
old mode 100644 (file)
new mode 100755 (executable)
index 3fefa6f..f5593be
@@ -1,6 +1,21 @@
+msgid "IDS_QP_BUTTON_ROTATION"
+msgstr "Поворот"
+
 msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
 msgstr "Уведомления (%d)"
 
+msgid "IDS_QP_BUTTON_VIBRATION"
+msgstr "Вибрация"
+
+msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
+msgstr "Звук и вибрация"
+
+msgid "IDS_QP_TAB4_AUTO_ROTATION"
+msgstr "Авто поворот"
+
+msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
+msgstr "Блокир. поворот"
+
 msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
 msgstr "Режим съемного устройства"
 
@@ -9,3 +24,4 @@ msgstr "Выключить"
 
 msgid "IDS_QP_BUTTON_ENABLE"
 msgstr "Включено"
+
old mode 100644 (file)
new mode 100755 (executable)
index a913d28..776b541
@@ -1,6 +1,21 @@
+msgid "IDS_QP_BUTTON_ROTATION"
+msgstr "Döndürme"
+
 msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
 msgstr "Bildirimler (%d)"
 
+msgid "IDS_QP_BUTTON_VIBRATION"
+msgstr "Titreşim"
+
+msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
+msgstr "Ses ve titreşim"
+
+msgid "IDS_QP_TAB4_AUTO_ROTATION"
+msgstr "Otomatk döndürme"
+
+msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
+msgstr "Döndürme kilidi"
+
 msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
 msgstr "Yığın depolama modu"
 
old mode 100644 (file)
new mode 100755 (executable)
index 44d318f..8e9ffce
@@ -1,6 +1,21 @@
+msgid "IDS_QP_BUTTON_ROTATION"
+msgstr "转动"
+
 msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
 msgstr "通知 (%d)"
 
+msgid "IDS_QP_BUTTON_VIBRATION"
+msgstr "振动"
+
+msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
+msgstr "声音和振动"
+
+msgid "IDS_QP_TAB4_AUTO_ROTATION"
+msgstr "自动旋转"
+
+msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
+msgstr "旋转锁定"
+
 msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
 msgstr "大容量存储模式"
 
@@ -9,3 +24,4 @@ msgstr "禁用"
 
 msgid "IDS_QP_BUTTON_ENABLE"
 msgstr "启动"
+
old mode 100644 (file)
new mode 100755 (executable)
index fc59bcf..837b131
@@ -1,6 +1,21 @@
+msgid "IDS_QP_BUTTON_ROTATION"
+msgstr "旋轉"
+
 msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
 msgstr "通知(%d)"
 
+msgid "IDS_QP_BUTTON_VIBRATION"
+msgstr "震動"
+
+msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
+msgstr "聲音和震動"
+
+msgid "IDS_QP_TAB4_AUTO_ROTATION"
+msgstr "自動旋轉"
+
+msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
+msgstr "旋轉鎖定"
+
 msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
 msgstr "大容量儲存裝置模式"
 
@@ -9,3 +24,4 @@ msgstr "關閉"
 
 msgid "IDS_QP_BUTTON_ENABLE"
 msgstr "啟用"
+
old mode 100644 (file)
new mode 100755 (executable)
index a0ca2f4..056b357
@@ -1,6 +1,21 @@
+msgid "IDS_QP_BUTTON_ROTATION"
+msgstr "旋轉"
+
 msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
 msgstr "通知 (%d)"
 
+msgid "IDS_QP_BUTTON_VIBRATION"
+msgstr "震動"
+
+msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
+msgstr "聲音與震動"
+
+msgid "IDS_QP_TAB4_AUTO_ROTATION"
+msgstr "自動旋轉"
+
+msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
+msgstr "旋轉鎖定"
+
 msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
 msgstr "大容量儲存裝置模式"
 
@@ -9,3 +24,4 @@ msgstr "停用"
 
 msgid "IDS_QP_BUTTON_ENABLE"
 msgstr "啟用"
+