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")
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")
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")
ENDIF("${ARCH}" STREQUAL "arm")
ADD_DEFINITIONS("-fpie")
+ADD_DEFINITIONS("-DQP_MINICTRL_ENABLE")
ADD_DEFINITIONS("-DVENDOR=\"${VENDOR}\"")
ADD_DEFINITIONS("-DPACKAGE=\"${PACKAGE}\"")
#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_ */
#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);
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;
}
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;
}
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);
}
}
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;
}
{
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;
}
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;
}
--- /dev/null
+/*
+ * 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);
+}
--- /dev/null
+/*
+ * 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_ */
+
--- /dev/null
+/*
+ * 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;
+}
* limitations under the License.
*/
-#include <appcore-efl.h>
#include "common.h"
#include "modules.h"
*****************************************************************/
/* 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;
extern QP_Module idletxt;
static QP_Module *modules[] = {
+#ifdef QP_MINICTRL_ENABLE
+ &minictrl,
+#endif /* QP_MINICTRL_ENABLE */
¬i,
&ticker,
&idletxt
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;
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;
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;
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;
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;
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;
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);
- }
}
}
#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",
.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;
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);
}
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;
}
}
notification_get_id(noti, NULL, ¬i_priv_id);
if (!strcmp(noti_pkgname, pkgname)
&& priv_id == noti_priv_id) {
- notification_set_text(noti, NOTIFICATION_TEXT_TYPE_CONTENT,
- content, NULL, NOTIFICATION_VARIABLE_TYPE_NONE);
+ notification_set_text(noti,
+ NOTIFICATION_TEXT_TYPE_CONTENT,
+ content, NULL,
+ NOTIFICATION_VARIABLE_TYPE_NONE);
return noti;
}
head = notification_list_get_next(head);
notification_get_id(noti, NULL, ¬i_priv_id);
if (!strcmp(noti_pkgname, pkgname)
&& priv_id == noti_priv_id) {
- notification_set_text(noti, NOTIFICATION_TEXT_TYPE_CONTENT,
- content, NULL, NOTIFICATION_VARIABLE_TYPE_NONE);
+ notification_set_text(noti,
+ NOTIFICATION_TEXT_TYPE_CONTENT,
+ content, NULL,
+ NOTIFICATION_VARIABLE_TYPE_NONE);
return noti;
}
head = notification_list_get_next(head);
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;
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)
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;
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)
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;
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 */
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");
- }
}
}
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;
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"))) {
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);
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);
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;
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);
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")) {
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;
}
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;
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;
{
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,
- ¬i_count);
+ if (ad->show_setting) {
+ notification_get_count(NOTIFICATION_TYPE_NOTI, NULL,
+ NOTIFICATION_GROUP_ID_NONE,
+ NOTIFICATION_PRIV_ID_NONE,
+ ¬i_count);
+ } else {
+ notification_get_count(NOTIFICATION_TYPE_NONE, NULL,
+ NOTIFICATION_GROUP_ID_NONE,
+ NOTIFICATION_PRIV_ID_NONE,
+ ¬i_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);
}
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;
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);
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);
}
}
}
+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)
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);
}
_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)
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);
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;
}
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;
}
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);
/* 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;
}
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;
}
{
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;
+}
#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);
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;
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;
/* 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;
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!");
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)
}
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)
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.");
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;
}
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;
INFO("_quickpanel_ticker_noti_changed_cb");
- // Get latest item
+ /* Get latest item */
noti_err = notification_get_grouping_list(type, 1, ¬i_list);
if (noti_err != NOTIFICATION_ERROR_NONE) {
ERR("Fail to notification_get_grouping_list : %d", noti_err);
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;
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:
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;
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:
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);
*/
#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)
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)
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;
}
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);
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);
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)
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)
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)
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();
_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);
}
#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;
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__ */
-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")
+
+++ /dev/null
-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})
-
+++ /dev/null
-/*
- * 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;
- }
- }
- }
-
-
- }
-
-}
+++ /dev/null
-/*
- * 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__*/
+++ /dev/null
-/*
- * 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";
- }
- }
-}
-
+++ /dev/null
-/*
- * 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__*/
Name=@PROJECT_NAME@
Comment=@PROJECT_NAME@
Exec=@BINDIR@/@PROJECT_NAME@
+Icon=@PKGNAME@.png
Terminal=false
Type=Application
Categories=Application;Utility;
--- /dev/null
+/*
+ * 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"
+}
--- /dev/null
+<?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>
--- /dev/null
+/*
+ * 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__*/
--- /dev/null
+/*
+ * 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;
+ }
+ }
+ }
+
+
+}
+
--- /dev/null
+/*
+ * 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";
+ }
+ }
+ }
+ }
+}
+
--- /dev/null
+/*
+ * 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";
+ }
+ }
+}
+
--- /dev/null
+/*
+ * 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__*/
-%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)
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
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
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
%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
+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"
msgid "IDS_QP_BUTTON_ENABLE"
msgstr "Aktivieren"
+
+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 "Λειτ. μαζικής αποθήκευσης"
msgid "IDS_QP_BUTTON_ENABLE"
msgstr "Ενεργό"
+
+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"
msgid "IDS_QP_BUTTON_ENABLE"
msgstr "Enable"
+
+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"
msgid "IDS_QP_BUTTON_ENABLE"
msgstr "Habilitar"
+
+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"
+
+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"
msgid "IDS_QP_BUTTON_ENABLE"
msgstr "Attiva"
+
+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 "マスストレージモード"
msgid "IDS_QP_BUTTON_ENABLE"
msgstr "有効"
+
+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 "이동식 메모리 모드"
msgid "IDS_QP_BUTTON_ENABLE"
msgstr "실행"
+
+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"
msgid "IDS_QP_BUTTON_ENABLE"
msgstr "Aanzetten"
+
+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"
msgid "IDS_QP_BUTTON_ENABLE"
msgstr "Activar"
+
+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 "Режим съемного устройства"
msgid "IDS_QP_BUTTON_ENABLE"
msgstr "Включено"
+
+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"
+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 "大容量存储模式"
msgid "IDS_QP_BUTTON_ENABLE"
msgstr "启动"
+
+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 "大容量儲存裝置模式"
msgid "IDS_QP_BUTTON_ENABLE"
msgstr "啟用"
+
+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 "大容量儲存裝置模式"
msgid "IDS_QP_BUTTON_ENABLE"
msgstr "啟用"
+