From 368b4ef606abbec129ddee7dc44f4bfef5f27637 Mon Sep 17 00:00:00 2001 From: "sung1103.park" Date: Fri, 22 Mar 2013 13:57:00 +0900 Subject: [PATCH] sync with master --- daemon/indicator.h | 8 +- daemon/indicator_box_util.c | 85 +- daemon/indicator_box_util.h | 2 +- daemon/indicator_icon_util.c | 15 +- daemon/indicator_icon_util.h | 3 + daemon/indicator_ui.c | 664 +++++++++--- daemon/indicator_ui.h | 10 +- daemon/indicator_util.c | 26 +- daemon/indicator_util.h | 2 + data/indicator.sh.in | 2 +- data/indicator.xml.in | 2 +- data/resource/CMakeLists.txt | 21 +- data/resource/indicator_common.edc | 56 ++ data/resource/indicator_gui.h | 6 +- data/resource/indicator_land.edc | 1053 ++++++++++++++++++++ .../resource/{indicator.edc => indicator_port.edc} | 199 +++- modules/clock/clock.c | 310 +++++- modules/connection/connection.c | 36 +- modules/connection/mobile_hotspot.c | 29 +- modules/connection/usb.c | 2 - modules/connection/wifi.c | 33 +- modules/information/alarm.c | 2 +- modules/information/earphone.c | 29 +- modules/information/fm_radio.c | 145 --- modules/information/mmc.c | 67 +- modules/information/mp3_playing.c | 61 +- modules/information/noti.c | 86 +- modules/information/voice_recorder.c | 62 +- modules/modules.c | 38 +- modules/modules.h | 3 +- modules/network/rssi.c | 29 +- modules/power/battery.c | 80 +- modules/processing/active_sync.c | 109 +- modules/processing/call.c | 13 +- modules/processing/call_divert.c | 2 +- modules/processing/sos.c | 64 +- modules/processing/trnsfr.c | 171 ---- modules/setting/bluetooth.c | 70 +- modules/setting/gps.c | 68 +- modules/setting/nfc.c | 31 +- modules/setting/rotation-lock.c | 182 ---- modules/setting/silent.c | 1 - modules/setting/wifi-direct.c | 33 +- packaging/org.tizen.indicator.spec | 15 +- 44 files changed, 2972 insertions(+), 953 deletions(-) create mode 100755 data/resource/indicator_land.edc rename data/resource/{indicator.edc => indicator_port.edc} (86%) delete mode 100755 modules/information/fm_radio.c delete mode 100755 modules/processing/trnsfr.c delete mode 100755 modules/setting/rotation-lock.c diff --git a/daemon/indicator.h b/daemon/indicator.h index e352cc2..0336fcb 100755 --- a/daemon/indicator.h +++ b/daemon/indicator.h @@ -27,6 +27,9 @@ #ifndef VCONFKEY_INDICATOR_STARTED #define VCONFKEY_INDICATOR_STARTED "memory/private/"PACKAGE_NAME"/started" #endif +#define VCONFKEY_APPTRAY_STATE "file/private/com.samsung.app-tray/is_top" + +#define VCONFKEY_BATTERY_DISP_STATE "memory/private/"PACKAGE_NAME"/battery_disp" #define _FIXED_COUNT 5 @@ -49,7 +52,8 @@ enum { INDICATOR_PRIORITY_FIXED_MAX = INDICATOR_PRIORITY_FIXED6, INDICATOR_PRIORITY_SYSTEM_MIN, - INDICATOR_PRIORITY_SYSTEM_6 = INDICATOR_PRIORITY_SYSTEM_MIN, + INDICATOR_PRIORITY_SYSTEM_7 = INDICATOR_PRIORITY_SYSTEM_MIN, + INDICATOR_PRIORITY_SYSTEM_6, INDICATOR_PRIORITY_SYSTEM_5, INDICATOR_PRIORITY_SYSTEM_4, INDICATOR_PRIORITY_SYSTEM_3, @@ -137,8 +141,8 @@ typedef struct Indicator_Icon { int (*lang_changed) (void *); int (*region_changed) (void *); int (*minictrl_control) (int, const char *, void *); + int (*wake_up) (void *); - char data[1024]; void *ad; Eina_Bool obj_exist; Text_Icon_Info txt_obj; diff --git a/daemon/indicator_box_util.c b/daemon/indicator_box_util.c index b548fb0..d928f4d 100755 --- a/daemon/indicator_box_util.c +++ b/daemon/indicator_box_util.c @@ -23,6 +23,7 @@ #include "indicator_icon_list.h" #include "indicator_ui.h" #include "indicator_gui.h" +#include "indicator_util.h" #include #define DEFAULT_SIZE (CLOCK_WIDTH + (PADDING_WIDTH * 2)) @@ -37,7 +38,7 @@ Eina_List *_view_fixed_list[INDICATOR_WIN_MAX]; Eina_List *_view_system_list[INDICATOR_WIN_MAX]; Eina_List *_view_noti_list[INDICATOR_WIN_MAX]; -extern int indicator_icon_show_state; +extern int indicator_icon_show_state[INDICATOR_WIN_MAX]; static Evas_Object *indicator_box_add(Evas_Object * parent) { @@ -62,7 +63,7 @@ static void _update_window(win_info *win) int root_w, root_h; Ecore_X_Window xwin, root; - retif(win == NULL, NULL, "Invalid parameter!"); + retif(win == NULL, , "Invalid parameter!"); INFO("_update_window"); @@ -109,7 +110,7 @@ static void _update_display(win_info *win) Eina_List *l; int i = 0; - retif(win == NULL, NULL, "Invalid parameter!"); + retif(win == NULL, , "Invalid parameter!"); for (i = 0; i < _FIXED_COUNT; ++i) elm_box_unpack_all(win->_fixed_box[i]); @@ -280,7 +281,7 @@ static void _update_display(win_info *win) void indicator_util_update_display(win_info *win) { - retif(win == NULL, FAIL, "Invalid parameter!"); + retif(win == NULL, , "Invalid parameter!"); _update_window(win); @@ -761,33 +762,85 @@ int indicator_util_check_home_icon_area(win_info *win, Evas_Coord curr_x, Evas_C return 0; } -void indicator_util_show_hide_icons(void* data,int bShow) +static void indicator_util_icon_state(int win_type, int bShow) { - struct appdata *ad = (struct appdata *)data; - Indicator_Icon_Object *icon; - Eina_List *l; + DBG("win_type(%d) Show(%d)",win_type,bShow); + indicator_icon_show_state[win_type] = bShow; +} + +void indicator_util_show_hide_icons(void* data,int bShow, int bEffect) +{ + win_info *win = (win_info *)data; + Ecore_Evas *ee_port; retif(data == NULL, , "Invalid parameter!"); - int i = 0; + if(bShow) + { + indicator_util_icon_state(win->type,1); + } + else + { + indicator_util_icon_state(win->type,0); + } - DBG("Show = %d",bShow); - if(bShow) + ee_port = ecore_evas_ecore_evas_get(evas_object_evas_get(win->win_main)); + + if(win->type == INDICATOR_WIN_LAND) { - indicator_clock_display_battery_percentage(data); + DBG("land = %d",bShow); + if(bShow==FALSE) + { + int mode = 2; + int bRepeat = 1; + ecore_evas_msg_send(ee_port, MSG_DOMAIN_CONTROL_INDICATOR, MSG_ID_INDICATOR_REPEAT_EVENT, &bRepeat, sizeof(int)); + ecore_evas_msg_send(ee_port, MSG_DOMAIN_CONTROL_INDICATOR, MSG_ID_INDICATOR_TYPE, &mode, sizeof(int)); + } + else + { + int mode = 1; + int bRepeat = 0; + ecore_evas_msg_send(ee_port, MSG_DOMAIN_CONTROL_INDICATOR, MSG_ID_INDICATOR_REPEAT_EVENT, &bRepeat, sizeof(int)); + ecore_evas_msg_send(ee_port, MSG_DOMAIN_CONTROL_INDICATOR, MSG_ID_INDICATOR_TYPE, &mode, sizeof(int)); + } + } + else + { + DBG("port = %d",bShow); + int mode = 1; + int bRepeat = 0; + ecore_evas_msg_send(ee_port, MSG_DOMAIN_CONTROL_INDICATOR, MSG_ID_INDICATOR_REPEAT_EVENT, &bRepeat, sizeof(int)); + ecore_evas_msg_send(ee_port, MSG_DOMAIN_CONTROL_INDICATOR, MSG_ID_INDICATOR_TYPE, &mode, sizeof(int)); } - if(bShow) + if(bEffect) { - indicator_signal_emit(data,"indicator.noti.show", "indicator.prog"); + if(bShow) + { + indicator_signal_emit_by_win(data,"indicator.clip.show", "indicator.prog"); + indicator_signal_emit_by_win(data,"indicator.noti.show", "indicator.prog"); + } + else + { + indicator_signal_emit_by_win(data,"indicator.clip.hide", "indicator.prog"); + indicator_signal_emit_by_win(data,"indicator.noti.hide", "indicator.prog"); + } } else { - indicator_signal_emit(data,"indicator.noti.hide", "indicator.prog"); + if(bShow) + { + indicator_signal_emit_by_win(data,"indicator.clip.show.noeffect", "indicator.prog"); + indicator_signal_emit_by_win(data,"indicator.noti.show.noeffect", "indicator.prog"); + } + else + { + indicator_signal_emit_by_win(data,"indicator.clip.hide.noeffect", "indicator.prog"); + indicator_signal_emit_by_win(data,"indicator.noti.hide.noeffect", "indicator.prog"); + } } } - Eina_Bool indicator_util_is_show_icon(Indicator_Icon_Object *obj) { retif(obj == NULL, FAIL, "Invalid parameter!"); diff --git a/daemon/indicator_box_util.h b/daemon/indicator_box_util.h index e71f230..6a2532f 100755 --- a/daemon/indicator_box_util.h +++ b/daemon/indicator_box_util.h @@ -54,7 +54,7 @@ extern Icon_AddType indicator_is_enable_to_insert_in_non_fixed_list(Indicator_Ic extern int indicator_util_get_priority_in_move_area(win_info *win, Evas_Coord, Evas_Coord); int indicator_util_check_indicator_area(win_info *win,Evas_Coord curr_x, Evas_Coord curr_y); int indicator_util_check_home_icon_area(win_info *win,Evas_Coord curr_x, Evas_Coord curr_y); -void indicator_util_show_hide_icons(void* data, int bShow); +void indicator_util_show_hide_icons(void* data, int bShow, int bEffect); extern Eina_Bool indicator_util_is_show_icon(Indicator_Icon_Object *obj); int indicator_util_handle_animated_gif(Indicator_Icon_Object *icon); diff --git a/daemon/indicator_icon_util.c b/daemon/indicator_icon_util.c index f6a6a42..043617b 100755 --- a/daemon/indicator_icon_util.c +++ b/daemon/indicator_icon_util.c @@ -24,6 +24,8 @@ #include "indicator_gui.h" #include "indicator_util.h" +static unsigned int update_icon_flag = 1; + static void _animation_set(Indicator_Icon_Object *icon, int type) { Evas_Object *img_edje, *txt_edje; @@ -466,7 +468,6 @@ void indicator_util_icon_hide(Indicator_Icon_Object *icon) retif(icon == NULL, , "Invalid parameter!"); - memset(icon->data, 0x00, sizeof(icon->data)); icon->wish_to_show = EINA_FALSE; DBG("%s icon is hidden!", icon->name); @@ -487,7 +488,6 @@ void indicator_util_icon_hide(Indicator_Icon_Object *icon) void indicator_util_event_count_set(int count, void *data) { - struct appdata *ad = data; static int _cnt = -1; char buf[1024]; @@ -511,3 +511,14 @@ unsigned int indicator_util_max_visible_event_count(int type) { return indicator_get_max_count_in_non_fixed_list(type); } + +unsigned int indicator_util_get_update_flag(void) +{ + return update_icon_flag; +} + +void indicator_util_set_update_flag(unsigned int val) +{ + INFO("SET UPDATE FLAG %d",val); + update_icon_flag = val; +} diff --git a/daemon/indicator_icon_util.h b/daemon/indicator_icon_util.h index 2ec1a64..2b551fa 100755 --- a/daemon/indicator_icon_util.h +++ b/daemon/indicator_icon_util.h @@ -48,4 +48,7 @@ extern Eina_Bool indicator_util_icon_del(Indicator_Icon_Object *icon); extern void indicator_util_event_count_set(int count, void *data); extern unsigned int indicator_util_max_visible_event_count(int type); +extern unsigned int indicator_util_get_update_flag(void); +void indicator_util_set_update_flag(unsigned int val); + #endif /*__INDICATOR_ICON_UTIL_H__*/ diff --git a/daemon/indicator_ui.c b/daemon/indicator_ui.c index e27edc2..489e9df 100755 --- a/daemon/indicator_ui.c +++ b/daemon/indicator_ui.c @@ -59,13 +59,22 @@ #endif #endif +#define MENUSCREEN_PKG_NAME "com.samsung.menuscreen" #define APP_TRAY_PKG_NAME "com.samsung.app-tray" static Eina_Bool home_button_pressed = EINA_FALSE; -static Eina_Bool show_hide_pressed = EINA_FALSE; +static Eina_Bool show_hide_pressed[INDICATOR_WIN_MAX] = {EINA_FALSE,EINA_FALSE}; +static Ecore_Timer *hide_timer = NULL; +int indicator_icon_show_state[INDICATOR_WIN_MAX] = {0,}; +int indicator_icon_backup_state[INDICATOR_WIN_MAX] = {0,}; -int indicator_icon_show_state = 0; +static int is_quickpanel_opened = 0; +static int is_apptray_opened = 0; +static int current_angle = 0; +Evas_Coord_Point indicator_press_coord = {0,0}; + +#define STR_ATOM_MV_INDICATOR_GEOMETRY "_E_MOVE_INDICATOR_GEOMETRY" static void _change_home_padding(void *data, int angle); static void _change_nonfixed_icon_padding(void *data, Eina_Bool status); @@ -95,40 +104,9 @@ static void _indicator_mouse_up_cb(void *data, Evas * e, Evas_Object * obj, void *event); -static void _change_home_padding(void *data, int angle) -{ - struct appdata *ad = (struct appdata *)data; - - retif(data == NULL, , "Invalid parameter!"); - - switch (angle) { - case 0: - indicator_signal_emit(data, - "change,home,pad,2", "elm.rect.*"); - break; - case 90: - indicator_signal_emit(data, - "change,home,pad,1", "elm.rect.*"); - break; - case 180: - indicator_signal_emit(data, - "change,home,pad,2", "elm.rect.*"); - break; - case 270: - indicator_signal_emit(data, - "change,home,pad,1", "elm.rect.*"); - break; - default: - indicator_signal_emit(data, - "change,home,pad,2", "elm.rect.*"); - break; - } -} static void _change_nonfixed_icon_padding(void *data, Eina_Bool status) { - struct appdata *ad = (struct appdata *)data; - retif(data == NULL, , "Invalid parameter!"); if (status == EINA_TRUE) @@ -343,7 +321,6 @@ static void _indicator_window_delete_cb(void *data, Evas_Object * obj, static void _indicator_notify_pm_state_cb(keynode_t * node, void *data) { - struct appdata *ad = (struct appdata *)data; int val = -1; if (data == NULL) { @@ -358,13 +335,104 @@ static void _indicator_notify_pm_state_cb(keynode_t * node, void *data) DBG("PM state Notification!!(%d)",val); - indicator_util_update_display(data); + switch(val) + { + case VCONFKEY_PM_STATE_LCDOFF: + case VCONFKEY_PM_STATE_SLEEP: + indicator_util_set_update_flag(0); + break; + case VCONFKEY_PM_STATE_NORMAL: + indicator_util_set_update_flag(1); + indicator_wake_up_modules(data); + break; + case VCONFKEY_PM_STATE_LCDDIM: + default: + break; + } + +} + +static void _indicator_notify_apptray_state_cb(keynode_t * node, void *data) +{ + + struct appdata *ad = (struct appdata *)data; + int val = -1; + + if (data == NULL) { + ERR("lockd is NULL"); + return; + } + + if (vconf_get_bool(VCONFKEY_APPTRAY_STATE, &val) < 0) { + ERR("Cannot get VCONFKEY_APPTRAY_STATE"); + return; + } + + DBG("_indicator_notify_apptray_state_cb!!(%d)",val); + + switch(val) + { + case 0: + is_apptray_opened = 0; + indicator_util_show_hide_icons(&(ad->win[INDICATOR_WIN_LAND]),0,0); + if (hide_timer != NULL) { + ecore_timer_del(hide_timer); + hide_timer = NULL; + } + break; + case 1: + is_apptray_opened = 1; + indicator_util_show_hide_icons(&(ad->win[INDICATOR_WIN_LAND]),1,0); + if (hide_timer != NULL) { + ecore_timer_del(hide_timer); + hide_timer = NULL; + } + break; + default: + break; + } } static void _rotate_window(void *data, int new_angle) { + retif(data == NULL, , "Invalid parameter!"); + + struct appdata *ad = (struct appdata *)data; + + DBG("_rotate_window = %d",new_angle); + + current_angle = new_angle; + switch (new_angle) + { + case 0: + case 180: + { + int mode = 1; + int bRepeat = 0; + Ecore_Evas *ee_port; + ee_port = ecore_evas_ecore_evas_get(evas_object_evas_get(ad->win[INDICATOR_WIN_PORT].win_main)); + ecore_evas_msg_send(ee_port, MSG_DOMAIN_CONTROL_INDICATOR, MSG_ID_INDICATOR_REPEAT_EVENT, &bRepeat, sizeof(int)); + ecore_evas_msg_send(ee_port, MSG_DOMAIN_CONTROL_INDICATOR, MSG_ID_INDICATOR_TYPE, &mode, sizeof(int)); + + } + break; + case 90: + case 270: + if(is_quickpanel_opened == 0&&is_apptray_opened==0) + { + DBG("hide indicator = %d %d",is_quickpanel_opened,is_apptray_opened); + indicator_util_show_hide_icons(&(ad->win[INDICATOR_WIN_LAND]),0,0); + if (hide_timer != NULL) { + ecore_timer_del(hide_timer); + hide_timer = NULL; + } + } + break; + default: + break; + } } #ifdef INDICATOR_SUPPORT_OPACITY_MODE @@ -403,65 +471,89 @@ static void _change_opacity(void *data, enum indicator_opacity_mode mode) DBG("send signal [%s] to indicator layout", signal); } -static void _notification_panel_changed(void *data, int is_open) +static void _indicator_quickpanel_changed(void *data, int is_open) { struct appdata *ad = NULL; + retif(data == NULL, , "Invalid parameter!"); + DBG("_indicator_quickpanel_changed %d %d\n", is_open, current_angle); + ad = data; - if (is_open) { - indicator_signal_emit(data,"bg.notification", "indicator.prog"); + if (is_open) + { + if(is_quickpanel_opened==0) + { + is_quickpanel_opened = 1; - DBG("send signal [%s] to indicator layout", "bg.notification"); + if( current_angle==0 || current_angle == 180) + { + if(indicator_icon_backup_state[INDICATOR_WIN_PORT]==0) + { + indicator_util_show_hide_icons(&(ad->win[INDICATOR_WIN_PORT]),1,1); + } + else + { + indicator_util_show_hide_icons(&(ad->win[INDICATOR_WIN_PORT]),1,0); + } + indicator_util_show_hide_icons(&(ad->win[INDICATOR_WIN_LAND]),1,0); + } + else + { + indicator_util_show_hide_icons(&(ad->win[INDICATOR_WIN_LAND]),1,0); + } + + vconf_set_int(VCONFKEY_BATTERY_DISP_STATE,2); + + if (hide_timer != NULL) { + ecore_timer_del(hide_timer); + hide_timer = NULL; + } + } } else - _change_opacity(data, ad->opacity_mode); -} + { + if(is_quickpanel_opened==1) + { + is_quickpanel_opened = 0; + if( current_angle==0 || current_angle == 180) + { + if(indicator_icon_backup_state[INDICATOR_WIN_PORT]==0) + indicator_util_show_hide_icons(&(ad->win[INDICATOR_WIN_PORT]),0,1); + else + indicator_util_show_hide_icons(&(ad->win[INDICATOR_WIN_PORT]),1,0); + + indicator_util_show_hide_icons(&(ad->win[INDICATOR_WIN_LAND]),0,0); + } + else + { + indicator_util_show_hide_icons(&(ad->win[INDICATOR_WIN_LAND]),0,1); + } + + } + } +} #endif static Eina_Bool _indicator_client_message_cb(void *data, int type, void *event) { Ecore_X_Event_Client_Message *ev = (Ecore_X_Event_Client_Message *) event; - int new_angle; retif(data == NULL || event == NULL, ECORE_CALLBACK_RENEW, "Invalid parameter!"); -#ifdef INDICATOR_SUPPORT_OPACITY_MODE - if (ev->message_type == ECORE_X_ATOM_E_ILLUME_INDICATOR_OPACITY_MODE) { - int trans_mode; - - if (ev->data.l[0] - == ECORE_X_ATOM_E_ILLUME_INDICATOR_TRANSLUCENT) - trans_mode = INDICATOR_OPACITY_TRANSLUCENT; - else if (ev->data.l[0] - == ECORE_X_ATOM_E_ILLUME_INDICATOR_TRANSPARENT) - trans_mode = INDICATOR_OPACITY_TRANSPARENT; - else - trans_mode = INDICATOR_OPACITY_OPAQUE; - - _change_opacity(data, trans_mode); - } -#endif if (ev->message_type == ECORE_X_ATOM_E_ILLUME_QUICKPANEL_STATE) { -#ifdef INDICATOR_SUPPORT_OPACITY_MODE if (ev->data.l[0] == ECORE_X_ATOM_E_ILLUME_QUICKPANEL_ON) - _notification_panel_changed(data, 1); + _indicator_quickpanel_changed(data, 1); else if (ev->data.l[0] == ECORE_X_ATOM_E_ILLUME_QUICKPANEL_OFF) - _notification_panel_changed(data, 0); + _indicator_quickpanel_changed(data, 0); -#else - if (ev->data.l[0] == ECORE_X_ATOM_E_ILLUME_QUICKPANEL_OFF) - _change_view(ecore_x_window_root_first_get(), data); -#endif } - if (ev->message_type == ECORE_X_ATOM_E_ILLUME_ROTATE_WINDOW_ANGLE) { - } return ECORE_CALLBACK_RENEW; } @@ -487,11 +579,74 @@ static void _mctrl_monitor_cb(minicontrol_action_e action, indicator_minictrl_control_modules(action,name,data); } +static void +_indicator_ecore_evas_msg_parent_handle(Ecore_Evas *ee, int msg_domain, int msg_id, void *data, int size) +{ + DBG("Receive msg from clien msg_domain=%x msg_id=%x size=%d\n", msg_domain, msg_id, size); + retif(!data, , "data is NULL"); + + if (msg_domain == MSG_DOMAIN_CONTROL_INDICATOR) + { + struct appdata *ad = (struct appdata *)ecore_evas_data_get(ee,"indicator_app_data"); + + if ((msg_id == MSG_ID_INDICATOR_ROTATION) && (size == sizeof(int))) + { + int *rot = data; + DBG("Receive msg is portrait rotation . rot=%d \n", *rot); + _rotate_window(ad,*rot); + } + if ((msg_id == MSG_ID_INDICATOR_OPACITY) && (size == sizeof(Elm_Win_Indicator_Opacity_Mode))) + { + Elm_Win_Indicator_Opacity_Mode *omod; + int trans_mode; + omod = data; + DBG("Receive msg is opacity . opacity=%d \n", *omod); + switch(*omod) + { + case ELM_WIN_INDICATOR_OPAQUE: + trans_mode = INDICATOR_OPACITY_OPAQUE; + break; + case ELM_WIN_INDICATOR_TRANSLUCENT: + trans_mode = INDICATOR_OPACITY_TRANSLUCENT; + break; + case ELM_WIN_INDICATOR_TRANSPARENT: + trans_mode = INDICATOR_OPACITY_TRANSPARENT; + break; + default: + trans_mode = INDICATOR_OPACITY_OPAQUE; + break; + } + } + } + +} + +static void +_indicator_port_ecore_evas_msg_parent_handle(Ecore_Evas *ee, int msg_domain, int msg_id, void *data, int size) +{ + DBG("PORT : Receive msg from clien msg_domain=%x msg_id=%x size=%d\n", msg_domain, msg_id, size); + retif(!data, , "data is NULL"); + + _indicator_ecore_evas_msg_parent_handle(ee,msg_domain,msg_id,data,size); +} + +static void +_indicator_land_ecore_evas_msg_parent_handle(Ecore_Evas *ee, int msg_domain, int msg_id, void *data, int size) +{ + DBG("LAND : Receive msg from clien msg_domain=%x msg_id=%x size=%d\n", msg_domain, msg_id, size); + retif(!data, , "data is NULL"); + + _indicator_ecore_evas_msg_parent_handle(ee,msg_domain,msg_id,data,size); +} static void _register_event_handler_both(win_info *win, void *data) { + Ecore_Evas *ee; + retif(win == NULL, , "Invalid parameter!"); + ee = ecore_evas_ecore_evas_get(evas_object_evas_get(win->win_main)); + evas_object_smart_callback_add(win->win_main, "delete,request", _indicator_window_delete_cb, data); @@ -506,6 +661,15 @@ static void _register_event_handler_both(win_info *win, void *data) evas_object_event_callback_add(win->layout_main, EVAS_CALLBACK_MOUSE_UP, _indicator_mouse_up_cb, win); + if(win->type == INDICATOR_WIN_PORT) + { + ecore_evas_callback_msg_parent_handle_set(ee, _indicator_port_ecore_evas_msg_parent_handle); + } + else + { + ecore_evas_callback_msg_parent_handle_set(ee, _indicator_land_ecore_evas_msg_parent_handle); + } + ecore_evas_data_set(ee,"indicator_app_data",data); } @@ -550,6 +714,14 @@ static void register_event_handler(void *data) ERR("Fail vconf_notify_key_changed : VCONFKEY_PM_STATE"); } + ret = vconf_notify_key_changed(VCONFKEY_APPTRAY_STATE, + _indicator_notify_apptray_state_cb, (void *)ad); + + if (ret == -1) { + ERR("VCONFKEY_APPTRAY_STATE is failed\n"); + return; + } + heynoti_subscribe(ad->notifd, HIBERNATION_ENTER_NOTI, _indicator_hibernation_enter_cb, (void *)ad); heynoti_subscribe(ad->notifd, HIBERNATION_LEAVE_NOTI, @@ -605,6 +777,12 @@ static int unregister_event_handler(void *data) vconf_ignore_key_changed(VCONFKEY_SETAPPL_BATTERY_PERCENTAGE_BOOL, _indicator_check_battery_percent_on_cb); + vconf_ignore_key_changed(VCONFKEY_PM_STATE, + _indicator_notify_pm_state_cb); + + vconf_ignore_key_changed(VCONFKEY_APPTRAY_STATE, + _indicator_notify_apptray_state_cb); + heynoti_unsubscribe(ad->notifd, HIBERNATION_ENTER_NOTI, _indicator_hibernation_enter_cb); heynoti_unsubscribe(ad->notifd, HIBERNATION_LEAVE_NOTI, @@ -649,7 +827,6 @@ static Evas_Object *load_edj(Evas_Object * parent, const char *file, static void create_win(void* data,int type) { - Evas_Object *win_port; char *indi_name = NULL; struct appdata *ad = data; @@ -660,18 +837,33 @@ static void create_win(void* data,int type) int root_h; Ecore_X_Window root; - if(type == INDICATOR_WIN_PORT) + root = ecore_x_window_root_first_get(); + ecore_x_window_size_get(root, &root_w, &root_h); + INFO("xwin_size = %d %d", root_w, root_h); + + ad->scale = elm_config_scale_get(); + INFO("scale = %f", ad->scale); + + + switch(type) { + case INDICATOR_WIN_PORT: ad->win[type].win_main = elm_win_add(NULL, "portrait_indicator", ELM_WIN_SOCKET_IMAGE); indi_name = "elm_indicator_portrait"; - } - else - { + elm_win_title_set(ad->win[type].win_main, "win sock test:port"); + ad->win[type].w = root_w; + break; + case INDICATOR_WIN_LAND: ad->win[type].win_main = elm_win_add(NULL, "win_socket_test:land", ELM_WIN_SOCKET_IMAGE); indi_name = "elm_indicator_landscape"; + elm_win_title_set(ad->win[type].win_main, "win sock test:land"); + ad->win[type].w = root_h; + break; + default : + break; } - retif(ad->win[type].win_main == NULL, FAIL, "elm_win_add failed!"); + retif(ad->win[type].win_main == NULL, , "elm_win_add failed!"); if (!elm_win_socket_listen(ad->win[type].win_main , indi_name, 0, EINA_FALSE)) { @@ -681,15 +873,6 @@ static void create_win(void* data,int type) } elm_win_alpha_set(ad->win[type].win_main , EINA_TRUE); - if(type == INDICATOR_WIN_PORT) - { - elm_win_title_set(ad->win[type].win_main, "win sock test:port"); - } - else - { - elm_win_title_set(ad->win[type].win_main, "win sock test:land"); - } - elm_win_borderless_set(ad->win[type].win_main , EINA_TRUE); evas_object_size_hint_fill_set(ad->win[type].win_main , EVAS_HINT_EXPAND, @@ -702,31 +885,25 @@ static void create_win(void* data,int type) states[1] = ECORE_X_WINDOW_STATE_SKIP_PAGER; ecore_x_netwm_window_state_set(xwin, states, 2); - ecore_x_icccm_name_class_set(xwin, "INDICATOR", "INDICATOR"); - zone = ecore_x_e_illume_zone_get(xwin); ecore_x_event_mask_set(zone, ECORE_X_EVENT_MASK_WINDOW_CONFIGURE); ad->win[type].evas = evas_object_evas_get(ad->win[type].win_main ); - ad->win[type].layout_main = load_edj(ad->win[type].win_main , EDJ_FILE, GRP_MAIN); - retif(ad->win[type].layout_main == NULL, FAIL, "Failed to get layout main!"); - root = ecore_x_window_root_first_get(); - ecore_x_window_size_get(root, &root_w, &root_h); - INFO("xwin_size = %d %d", root_w, root_h); - - ad->scale = elm_config_scale_get(); - INFO("scale = %f", ad->scale); - - if(type == INDICATOR_WIN_PORT) - { - ad->win[type].w = root_w; - } - else + switch(type) { - ad->win[type].w = root_h; + case INDICATOR_WIN_PORT: + ad->win[type].layout_main = load_edj(ad->win[type].win_main , EDJ_FILE0, GRP_MAIN); + break; + case INDICATOR_WIN_LAND: + ad->win[type].layout_main = load_edj(ad->win[type].win_main , EDJ_FILE1, GRP_MAIN); + break; + default : + break; } + retif(ad->win[type].layout_main == NULL, , "Failed to get layout main!"); + ad->win[type].h = (int)(INDICATOR_HEIGHT * ad->scale); evas_object_resize(ad->win[type].win_main , ad->win[type].w, ad->win[type].h); evas_object_move(ad->win[type].win_main , 0, 0); @@ -745,13 +922,6 @@ static void create_win(void* data,int type) indicator_util_layout_add(&(ad->win[type])); - if(type == INDICATOR_WIN_LAND) - { - Evas_Object *edje; - edje = elm_layout_edje_get(ad->win[type].layout_main); - edje_object_signal_emit(edje, "change,home,pad,1", "elm.rect.*"); - } - ad->win[type].data = data; evas_object_show(ad->win[type].layout_main); @@ -759,16 +929,82 @@ static void create_win(void* data,int type) return ; } +static void create_overlay_win(void* data) +{ + + struct appdata *ad = data; + Evas_Object *conform = NULL; + + Evas_Object *eo; + int w, h; + int indi_h; + Ecore_X_Window xwin; + Ecore_X_Window zone; + Ecore_X_Window_State states[2]; + Ecore_X_Atom ATOM_MV_INDICATOR_GEOMETRY = 0; + + indi_h = (int)(INDICATOR_HEIGHT * ad->scale); + + eo = elm_win_add(NULL, "INDICATOR", ELM_WIN_BASIC); + elm_win_title_set(eo, "INDICATOR"); + elm_win_borderless_set(eo, EINA_TRUE); + ecore_x_window_size_get(ecore_x_window_root_first_get(), &w, &h); + evas_object_resize(eo, w, (int)(INDICATOR_HEIGHT * ad->scale)); + evas_object_move(eo , 0, 0); + elm_win_alpha_set(eo, EINA_TRUE); + + elm_win_indicator_mode_set(eo, ELM_WIN_INDICATOR_SHOW); + elm_win_indicator_opacity_set(eo, ELM_WIN_INDICATOR_OPAQUE); + + conform = elm_conformant_add(eo); + + evas_object_size_hint_weight_set(conform, EVAS_HINT_EXPAND,EVAS_HINT_EXPAND); + elm_win_resize_object_add(eo, conform); + evas_object_show(conform); + + xwin = elm_win_xwindow_get(eo); + ecore_x_icccm_hints_set(xwin, 0, 0, 0, 0, 0, 0, 0); + states[0] = ECORE_X_WINDOW_STATE_SKIP_TASKBAR; + states[1] = ECORE_X_WINDOW_STATE_SKIP_PAGER; + ecore_x_netwm_window_state_set(xwin, states, 2); + + ecore_x_icccm_name_class_set(xwin, "INDICATOR", "INDICATOR"); + + ecore_x_netwm_window_type_set(xwin, ECORE_X_WINDOW_TYPE_DOCK); + + unsigned int ind_gio_val[16] = { 0, 0, w, indi_h, + 0, 0, indi_h, h, + 0, h-indi_h, w, indi_h, + w-indi_h, 0, indi_h, h }; + + ATOM_MV_INDICATOR_GEOMETRY = ecore_x_atom_get(STR_ATOM_MV_INDICATOR_GEOMETRY); + + ecore_x_window_prop_card32_set(xwin, + ATOM_MV_INDICATOR_GEOMETRY, + ind_gio_val, + 16); + + zone = ecore_x_e_illume_zone_get(xwin); + ecore_x_event_mask_set(zone, ECORE_X_EVENT_MASK_WINDOW_CONFIGURE); + evas_object_show(eo); + + ad->win_overlay = eo; + + return ; +} + static void _indicator_init_wininfo(void * data) { int i = 0; struct appdata *ad = data; - retif(data == NULL, FAIL, "Invalid parameter!"); + retif(data == NULL, , "Invalid parameter!"); for(i=0;iwin[i]),0x00,sizeof(win_info)); } + + ad->win_overlay = NULL; } static int indicator_window_new(void *data) @@ -783,9 +1019,10 @@ static int indicator_window_new(void *data) for(i=0;iwin[i]),0,0); } - indicator_util_show_hide_icons(data,0); + create_overlay_win(data); register_event_handler(ad); return OK; @@ -811,6 +1048,9 @@ static int indicator_window_del(void *data) ad->win[i].win_main = NULL; } + evas_object_del(ad->win_overlay); + ad->win_overlay = NULL; + if (ad) free(ad); @@ -911,6 +1151,63 @@ static Eina_Bool _indicator_hw_home_key_release_cancel(void *data) #endif +static void __indicator_launch_apptray(void* data) +{ + int lock_state = VCONFKEY_IDLE_UNLOCK; + int lock_ret = -1; + service_h service; + int ret = SERVICE_ERROR_NONE; + + lock_ret = vconf_get_int(VCONFKEY_IDLE_LOCK_STATE, + &lock_state); + DBG("Check Lock State : %d %d", lock_ret, lock_state); + + if (lock_ret == 0 && lock_state == VCONFKEY_IDLE_LOCK) + { + goto __CATCH; + } + + INFO("[Home Button Released]"); + + if (check_system_status() == FAIL) + { + INFO("check_system_status failed"); + goto __CATCH; + } + + service_create(&service); + + service_set_operation(service, SERVICE_OPERATION_DEFAULT); + + service_set_app_id(service, APP_TRAY_PKG_NAME); + + service_add_extra_data(service, "LONG_PRESS", "0"); + + ret = service_send_launch_request(service, NULL, NULL); + + if(ret != SERVICE_ERROR_NONE) + { + ERR("Cannot launch app"); + } + + service_destroy(service); + +__CATCH: + _indicator_home_icon_action(data, 0); + home_button_pressed = EINA_FALSE; +} + +static void __indicator_hide_icon_timer_cb(void* data) +{ + if (hide_timer != NULL) { + ecore_timer_del(hide_timer); + hide_timer = NULL; + } + + indicator_util_show_hide_icons(data,0,1); + +} + static void _indicator_mouse_down_cb(void *data, Evas * e, Evas_Object * obj, void *event) { @@ -928,8 +1225,65 @@ static void _indicator_mouse_down_cb(void *data, Evas * e, Evas_Object * obj, #ifdef HOME_KEY_EMULATION if(indicator_util_check_indicator_area(win, ev->canvas.x, ev->canvas.y)) { - show_hide_pressed = EINA_TRUE; + if (indicator_util_check_home_icon_area(win, ev->canvas.x, ev->canvas.y)) + { + + int lock_state = VCONFKEY_IDLE_UNLOCK; + int ret = -1; + char *menuscreen = NULL; + + ret = vconf_get_int(VCONFKEY_IDLE_LOCK_STATE,&lock_state); + DBG("Check Lock State : %d %d", ret, lock_state); + + if (ret != 0 || lock_state == VCONFKEY_IDLE_LOCK) + { + goto __CATCH; + } + + if (check_system_status() == FAIL) + { + INFO("check_system_status failed"); + goto __CATCH; + } + menuscreen = vconf_get_str("db/setting/menuscreen/package_name"); + + if(menuscreen!=NULL&&!strncmp(menuscreen,MENUSCREEN_PKG_NAME,strlen(MENUSCREEN_PKG_NAME))) + { + DBG("package_name: %s", menuscreen); + goto __CATCH; + } + + if(win->type==INDICATOR_WIN_LAND) + { + if(indicator_icon_show_state[win->type]==0) + { + DBG("SKIP APPTRAY: %d", win->type); + show_hide_pressed[win->type] = EINA_TRUE; + goto __CATCH; + } + } + + _indicator_home_icon_action(win, 1); + home_button_pressed = EINA_TRUE; + + + } + else + { + if( is_quickpanel_opened == 0 ) + { + show_hide_pressed[win->type] = EINA_TRUE; + } + else + { + show_hide_pressed[win->type] = EINA_FALSE; + DBG("quick panel is opened : %d", is_quickpanel_opened); + } + } + indicator_press_coord.x = ev->canvas.x; + indicator_press_coord.y = ev->canvas.y; } + __CATCH : return; #else @@ -970,12 +1324,53 @@ static void _indicator_mouse_move_cb(void *data, Evas * e, Evas_Object * obj, retif(data == NULL || event == NULL, , "Invalid parameter!"); ev = event; - - if (show_hide_pressed) { - if (!indicator_util_check_indicator_area(win,ev->cur.canvas.x,ev->cur.canvas.y)) + if (home_button_pressed) { + if (!indicator_util_check_home_icon_area(win,ev->cur.canvas.x,ev->cur.canvas.y)) + { + DBG("_indicator_mouse_move_cb : %d %d canceled", ev->cur.canvas.x, ev->cur.canvas.y); + _indicator_home_icon_action(data, 0); + home_button_pressed = FALSE; + } + if(ev->cur.canvas.y - indicator_press_coord.y >= INDICATOR_HIDE_TRIGER_H*elm_config_scale_get()) { - show_hide_pressed = FALSE; - DBG("cancel show/hide key"); + DBG("_indicator_mouse_move_cb : %d %d launch apptray", ev->cur.canvas.x, ev->cur.canvas.y); + __indicator_launch_apptray(win->data); + home_button_pressed = FALSE; + } + } + if(win->type == INDICATOR_WIN_PORT) + { + if (show_hide_pressed[win->type]) { + if (!indicator_util_check_indicator_area(win,ev->cur.canvas.x,ev->cur.canvas.y) + || indicator_util_check_home_icon_area(win,ev->cur.canvas.x,ev->cur.canvas.y)) + { + show_hide_pressed[win->type] = FALSE; + DBG("cancel show/hide key"); + } + } + } + else + { + if(ev->cur.canvas.y - indicator_press_coord.y >= INDICATOR_HIDE_TRIGER_H*elm_config_scale_get()) + { + DBG("ev->cur.canvas.x(%d) ev->cur.canvas.y(%d)",ev->cur.canvas.x,ev->cur.canvas.y); + DBG("indicator_press_coord.x(%d) indicator_press_coord.y(%d)",indicator_press_coord.x,indicator_press_coord.y); + + if(show_hide_pressed[win->type] == EINA_TRUE) + { + if(indicator_icon_show_state[win->type] == 0) + { + indicator_util_show_hide_icons(win,1,1); + if (hide_timer != NULL) { + ecore_timer_del(hide_timer); + hide_timer = NULL; + } + + hide_timer = ecore_timer_add(3, (void *)__indicator_hide_icon_timer_cb,data); + + show_hide_pressed[win->type] = EINA_FALSE; + } + } } } } @@ -997,28 +1392,43 @@ static void _indicator_mouse_up_cb(void *data, Evas * e, Evas_Object * obj, if(indicator_util_check_indicator_area(win, ev->canvas.x, ev->canvas.y)) { + if (indicator_util_check_home_icon_area(win,ev->canvas.x,ev->canvas.y)) { - if(show_hide_pressed == EINA_TRUE) + if(home_button_pressed == EINA_TRUE) { - if(indicator_icon_show_state == 0) - { - indicator_util_show_hide_icons(win->data,1); - indicator_icon_show_state = 1; - } - else + __indicator_launch_apptray(win->data); + feedback_play_type(FEEDBACK_TYPE_SOUND, FEEDBACK_PATTERN_TAP); + } + + } + else + { + if(win->type == INDICATOR_WIN_PORT) + { + if(show_hide_pressed[win->type] == EINA_TRUE) { - indicator_util_show_hide_icons(win->data,0); - indicator_icon_show_state = 0; - } + if(indicator_icon_show_state[win->type] == 0) + { + indicator_icon_backup_state[win->type] = 1; + indicator_util_show_hide_icons(win,1,1); + } + else + { + indicator_icon_backup_state[win->type] = 0; + indicator_util_show_hide_icons(win,0,1); + } - feedback_play_type(FEEDBACK_TYPE_SOUND, FEEDBACK_PATTERN_TAP); + vconf_set_int(VCONFKEY_BATTERY_DISP_STATE,win->type); + feedback_play_type(FEEDBACK_TYPE_SOUND, FEEDBACK_PATTERN_TAP); + } } } + } __CATCH: _indicator_home_icon_action(data, 0); home_button_pressed = EINA_FALSE; - show_hide_pressed = EINA_FALSE; + show_hide_pressed[win->type] = EINA_FALSE; #else int mouse_up_prio = -1; int mouse_down_prio = -1; @@ -1205,7 +1615,7 @@ static void app_service(service_h service, void *data) INFO("[INDICATOR IS STARTED]"); ret = indicator_window_new(data); - retif(ret != OK, FAIL, "Failed to create a new window!"); + retif(ret != OK, , "Failed to create a new window!"); _change_view(ecore_x_window_root_first_get(), data); diff --git a/daemon/indicator_ui.h b/daemon/indicator_ui.h index bf8ef1a..5f9d48d 100755 --- a/daemon/indicator_ui.h +++ b/daemon/indicator_ui.h @@ -38,7 +38,8 @@ # define ICONDIR "/usr/apps/com.samsung.indicator/res/icons" #endif -#define EDJ_FILE EDJDIR"/"PACKAGE".edj" +#define EDJ_FILE0 EDJDIR"/"PACKAGE"_port.edj" +#define EDJ_FILE1 EDJDIR"/"PACKAGE"_land.edj" #define ICON_THEME_FILE EDJDIR"/"PACKAGE"_icon_theme.edj" #define ICON_NONFIXED_THEME_FILE EDJDIR"/"PACKAGE"_icon_nonfixed_theme.edj" @@ -52,6 +53,12 @@ #define CALL_NAME "com.samsung.call" #define VTCALL_NAME "com.samsung.vtmain" +#define MSG_DOMAIN_CONTROL_INDICATOR 0x10001 +#define MSG_ID_INDICATOR_REPEAT_EVENT 0x10002 +#define MSG_ID_INDICATOR_ROTATION 0x10003 +#define MSG_ID_INDICATOR_OPACITY 0X1004 +#define MSG_ID_INDICATOR_TYPE 0X1005 + enum _win_type { TOP_WIN_NORMAL = 0, TOP_WIN_LOCK_SCREEN, @@ -70,6 +77,7 @@ enum indicator_opacity_mode{ struct appdata { win_info win[INDICATOR_WIN_MAX]; + Evas_Object* win_overlay; double xscale; double yscale; diff --git a/daemon/indicator_util.c b/daemon/indicator_util.c index a0dc598..c14ac30 100755 --- a/daemon/indicator_util.c +++ b/daemon/indicator_util.c @@ -91,7 +91,7 @@ void indicator_signal_emit(void* data, const char *emission, const char *source) for(i=0;iwin[i].layout_main == NULL, FAIL, "Invalid parameter!"); + retif(ad->win[i].layout_main == NULL, , "Invalid parameter!"); edje = elm_layout_edje_get(ad->win[i].layout_main); edje_object_signal_emit(edje, emission, source); } @@ -106,9 +106,31 @@ void indicator_part_text_emit(void* data, const char *part, const char *text) for(i=0;iwin[i].layout_main == NULL, FAIL, "Invalid parameter!"); + retif(ad->win[i].layout_main == NULL, , "Invalid parameter!"); edje = elm_layout_edje_get(ad->win[i].layout_main); edje_object_part_text_set(edje, part, text); } } +void indicator_signal_emit_by_win(void* data, const char *emission, const char *source) +{ + win_info *win = (win_info*)data; + retif(data == NULL, , "Invalid parameter!"); + Evas_Object *edje; + + retif(win->layout_main == NULL, , "Invalid parameter!"); + edje = elm_layout_edje_get(win->layout_main); + edje_object_signal_emit(edje, emission, source); +} + +void indicator_part_text_emit_by_win(void* data, const char *part, const char *text) +{ + win_info *win = (win_info*)data; + retif(data == NULL, , "Invalid parameter!"); + Evas_Object *edje; + + retif(win->layout_main == NULL, , "Invalid parameter!"); + edje = elm_layout_edje_get(win->layout_main); + edje_object_part_text_set(edje, part, text); +} + diff --git a/daemon/indicator_util.h b/daemon/indicator_util.h index 0037746..15f742e 100755 --- a/daemon/indicator_util.h +++ b/daemon/indicator_util.h @@ -21,5 +21,7 @@ extern char *set_label_text_color(const char *txt); extern const char *get_icon_dir(void); void indicator_signal_emit(void* data, const char *emission, const char *source); void indicator_part_text_emit(void* data, const char *part, const char *text); +void indicator_signal_emit_by_win(void* data, const char *emission, const char *source); +void indicator_part_text_emit_by_win(void* data, const char *part, const char *text); #endif diff --git a/data/indicator.sh.in b/data/indicator.sh.in index 7522307..8e5236e 100755 --- a/data/indicator.sh.in +++ b/data/indicator.sh.in @@ -1,2 +1,2 @@ @BINDIR@/@PROJECT_NAME@ & -sleep 7 +sleep 2 diff --git a/data/indicator.xml.in b/data/indicator.xml.in index cc867bc..394f04c 100755 --- a/data/indicator.xml.in +++ b/data/indicator.xml.in @@ -1,5 +1,5 @@ - + Youngjoo Park seungtaek chung diff --git a/data/resource/CMakeLists.txt b/data/resource/CMakeLists.txt index ae10b65..2cb55a8 100755 --- a/data/resource/CMakeLists.txt +++ b/data/resource/CMakeLists.txt @@ -1,10 +1,18 @@ -ADD_CUSTOM_TARGET(indicator.edj +ADD_CUSTOM_TARGET(indicator_port.edj COMMAND edje_cc -id ${CMAKE_CURRENT_SOURCE_DIR}/icons_edc - ${CMAKE_CURRENT_SOURCE_DIR}/indicator.edc - ${CMAKE_CURRENT_BINARY_DIR}/indicator.edj - DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/indicator.edc + ${CMAKE_CURRENT_SOURCE_DIR}/indicator_port.edc + ${CMAKE_CURRENT_BINARY_DIR}/indicator_port.edj + DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/indicator_port.edc ) -ADD_DEPENDENCIES(${PROJECT_NAME} indicator.edj) +ADD_DEPENDENCIES(${PROJECT_NAME} indicator_port.edj) + +ADD_CUSTOM_TARGET(indicator_land.edj + COMMAND edje_cc -id ${CMAKE_CURRENT_SOURCE_DIR}/icons_edc + ${CMAKE_CURRENT_SOURCE_DIR}/indicator_land.edc + ${CMAKE_CURRENT_BINARY_DIR}/indicator_land.edj + DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/indicator_land.edc +) +ADD_DEPENDENCIES(${PROJECT_NAME} indicator_land.edj) ADD_CUSTOM_TARGET(indicator_icon_theme.edj COMMAND edje_cc @@ -22,7 +30,8 @@ ADD_CUSTOM_TARGET(indicator_icon_nonfixed_theme.edj ) ADD_DEPENDENCIES(${PROJECT_NAME} indicator_icon_nonfixed_theme.edj) -INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/indicator.edj DESTINATION ${EDJDIR}) +INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/indicator_port.edj DESTINATION ${EDJDIR}) +INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/indicator_land.edj DESTINATION ${EDJDIR}) INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/indicator_icon_theme.edj DESTINATION ${EDJDIR}) INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/indicator_icon_nonfixed_theme.edj DESTINATION ${EDJDIR}) diff --git a/data/resource/indicator_common.edc b/data/resource/indicator_common.edc index 8805735..736a6cb 100755 --- a/data/resource/indicator_common.edc +++ b/data/resource/indicator_common.edc @@ -53,6 +53,34 @@ name: partName; \ type: SWALLOW; \ mouse_events: 0; \ + clip_to : slide_clip2; \ + scale: 1; \ + description { \ + state: "default" 0.0; \ + min: MinWidth MinHeight; \ + fixed: 1 0; \ + rel1 { relative: 1.0 -1.0; to_x: rel_x; to_y: rel_y; } \ + rel2 { relative: 1.0 0.0; to_x: rel_x; to_y: rel_y; } \ + align: 0.0 0.5; \ + visible: 1; \ + } \ + description { \ + state: "show" 0.0; \ + min: MinWidth MinHeight; \ + fixed: 1 0; \ + rel1 { relative: 1.0 0.0; to_x: rel_x; to_y: rel_y; } \ + rel2 { relative: 1.0 1.0; to_x: rel_x; to_y: rel_y; } \ + align: 0.0 0.5; \ + visible: 1; \ + } \ + } \ + +#define SWALLOW_PART_FROM_LEFT_WITH_EFFECT2( partName, rel_x, rel_y, MinWidth, MinHeight) \ + part { \ + name: partName; \ + type: SWALLOW; \ + mouse_events: 0; \ + clip_to : slide_clip2; \ scale: 1; \ description { \ state: "default" 0.0; \ @@ -113,6 +141,34 @@ name: partName; \ type: SWALLOW; \ mouse_events: 0; \ + clip_to : slide_clip; \ + scale: 1; \ + description { \ + state: "default" 0.0; \ + min: MinWidth MinHeight; \ + fixed: 1 0; \ + rel1 { relative: 0.0 -1.0; to_x: rel_x; to_y: rel_y; } \ + rel2 { relative: 0.0 0.0; to_x: rel_x; to_y: rel_y; } \ + align: 1.0 0.5; \ + visible: 1; \ + } \ + description { \ + state: "show" 0.0; \ + min: MinWidth MinHeight; \ + fixed: 1 0; \ + rel1 { relative: 0.0 0.0; to_x: rel_x; to_y: rel_y; } \ + rel2 { relative: 0.0 1.0; to_x: rel_x; to_y: rel_y; } \ + align: 1.0 0.5; \ + visible: 1; \ + } \ + } \ + +#define SWALLOW_PART_FROM_RIGHT_WITH_EFFECT2( partName, rel_x, rel_y, MinWidth, MinHeight) \ + part { \ + name: partName; \ + type: SWALLOW; \ + mouse_events: 0; \ + clip_to : slide_clip; \ scale: 1; \ description { \ state: "default" 0.0; \ diff --git a/data/resource/indicator_gui.h b/data/resource/indicator_gui.h index ae823cb..1c086a8 100755 --- a/data/resource/indicator_gui.h +++ b/data/resource/indicator_gui.h @@ -56,8 +56,8 @@ #define HOME_PADDING_LANDSCAPE 78 #define DEFAULT_NON_FIXED_PADDING 0 -#define INDI_DEFAULT_BG_COLOR 0 0 0 0 -#define INDI_DEFAULT_BG_TRANSLUCENT 0 0 0 50 +#define INDI_DEFAULT_BG_COLOR 52 52 50 255 +#define INDI_DEFAULT_BG_TRANSLUCENT 0 0 0 125 #define INDI_DEFAULT_BG_TRANSPARENT 0 0 0 0 #define ICON_FONT_NAME "Tizen" @@ -65,6 +65,8 @@ #define ICON_FONT_SIZE 20 #define FONT_COLOR 255, 255, 255, 255 +#define INDICATOR_HIDE_TRIGER_H 30 + #define DEFAULT_LABEL_STRING "%s" #define CUSTOM_LABEL_STRING "%s" diff --git a/data/resource/indicator_land.edc b/data/resource/indicator_land.edc new file mode 100755 index 0000000..d1ab9f5 --- /dev/null +++ b/data/resource/indicator_land.edc @@ -0,0 +1,1053 @@ +/* + * Copyright 2012 Samsung Electronics Co., Ltd + * + * Licensed under the Flora License, Version 1.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "indicator_gui.h" +#include "indicator_common.edc" + +collections { + group { + name: "indicator"; + script { + public bg_set, badge_set, theme, changepad, changebg, changeHomePad; + } + styles + { + style { + name: "textblock_style"; + base: "font=Tizen:style=Medium text_class=tizen color=#FFFFFFFF "; + } + style { + name: "textblock_outline_style"; + base: "font=Tizen:style=Medium text_class=tizen color=#FFFFFFFF"; + } + style { + name: "message_style"; + base: "font=Tizen:style=Medium text_class=tizen font_size=23 color=#FFFFFFCC valign=middle wrap=none ellipsis=1"; + } + } + + images { + image: "B03_Status_bar_line.PNG" COMP; + } + + parts { + part { + name: "background"; + type: RECT; + scale: 1; + description { + state: "default" 0.0; + min: 0 INDICATOR_HEIGHT; + color: 0 0 0 0; + } + } + part { + name: "padding.top"; + type: RECT; + scale: 1; + mouse_events: 0; + description { + state: "default" 0.0; + min: 0 INDICATOR_PADDING_H; + fixed: 0 1; + rel1 { relative: 0.0 0.0; to: "background"; } + rel2 { relative: 1.0 0.0; to: "background"; } + align: 0.0 0.0; + visible: 0; + } + } + part { + name: "padding.bottom"; + type: RECT; + scale: 1; + mouse_events: 0; + description { + state: "default" 0.0; + min: 0 INDICATOR_PADDING_H; + fixed: 0 1; + rel1 { relative: 0.0 1.0; to: "background"; } + rel2 { relative: 1.0 1.0; to: "background"; } + align: 0.0 1.0; + visible: 0; + } + + } + + part { + name: "padding.left"; + type: RECT; + scale: 1; + mouse_events: 0; + description { + state: "default" 0.0; + min: LEFT_PADDING_WIDTH 0; + fixed: 1 0; + rel1.relative: 0.0 0.0; + rel2.relative: 0.0 1.0; + color: 0 0 0 0; + visible: 0; + } + } + + part { + name: "padding.right"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + min: RIGHT_PADDING_WIDTH 0; + fixed: 1 0; + rel1.relative: 1.0 0.0; + color: 0 0 0 0; + visible: 0; + } + } + part { + name: "elm.rect.transparent"; + type: RECT; + scale: 1; + mouse_events: 0; + description { + state: "default" 0.0; + min: 0 40; + fixed: 0 1; + rel1 { + relative: 0.0 1.0; + to: "background"; + } + rel2 { + relative: 1.0 1.0; + to: "background"; + } + color: 0 0 0 0; + align: 0.0 1.0; + visible: 1; + } + description { + state: "show" 0.0; + min: 0 0; + fixed: 0 1; + rel1 { + relative: 0.0 1.0; + to: "background"; + } + rel2 { + relative: 1.0 1.0; + to: "background"; + } + color: 0 0 0 0; + align: 0.0 1.0; + visible: 1; + } + } + part { + name: "elm.rect.bg"; + type: RECT; + scale: 1; + mouse_events: 0; + description { + state: "default" 0.0; + min: 0 INDICATOR_HEIGHT; + fixed: 0 1; + rel1 { relative: 0.0 0.0; to_x: background; to_y: elm.rect.transparent; } + rel2 { relative: 1.0 0.0; to_x: background; to_y: elm.rect.transparent; } + color: INDI_DEFAULT_BG_TRANSPARENT; + align: 0.0 1.0; + } + description { + state: "show" 0.0; + inherit: "default" 0.0; + color: INDI_DEFAULT_BG_COLOR; + } + + } + + part { + name: "elm.rect.left_con"; + type: RECT; + scale: 1; + mouse_events: 0; + description { + state: "default" 0.0; + min: HOME_PADDING_LANDSCAPE 0; + visible: 0; + fixed: 1 0; + rel1 { relative: 0.0 0.0; to: "elm.rect.bg"; } + rel2 { relative: 0.0 1.0; to: "elm.rect.bg"; } + align: 0.0 0.0; + } + } + + part { + name: "icon_bg"; + type: RECT; + scale: 1; + mouse_events: 0; + description { + state: "default" 0.0; + visible: 0; + rel1 { relative: 1.0 0.0; to_x: padding.separator; to_y: elm.rect.bg; } + rel2 { relative: 0.0 1.0; to_x: padding.separator2; to_y: elm.rect.bg; } + align: 0.0 0.0; + } + } + + part { + name: "elm.rect.middle_con"; + type: RECT; + scale: 1; + mouse_events: 0; + description { + state: "default" 0.0; + visible: 0; + rel1 { relative: 0.0 0.0; to: "icon_bg"; } + rel2 { relative: 1.0 1.0; to: "icon_bg"; } + } + description { + state: "show" 0.0; + inherit: "default" 0.0; + } + description { + state: "hide" 0.0; + inherit: "default" 0.0; + min: 0 INDICATOR_HEIGHT; + fixed: 0 1; + rel1 { relative: 0.0 0.0; to: "icon_bg"; } + rel2 { relative: 1.0 0.0; to: "icon_bg"; } + align: 0.0 1.0; + } + + } + + part { + name: "message.bg"; + type: RECT; + scale: 1; + mouse_events: 0; + description { + state: "default" 0.0; + visible: 0; + min: 0 INDICATOR_HEIGHT; + fixed: 0 1; + rel1 { relative: 0.0 1.0; to: "elm.rect.middle_con"; } + rel2 { relative: 1.0 1.0; to: "elm.rect.middle_con"; } + align: 0.0 0.0; + visible: 0; + } + } + + part { + name: "message.padding.left"; + type: RECT; + scale: 1; + mouse_events: 0; + description { + state: "default" 0.0; + min: MESSAGE_PADDING 0; + fixed: 1 0; + rel1 { + relative: 0.0 0.0; + to: "message.bg"; + } + rel2 { + relative: 0.0 1.0; + to: "message.bg"; + } + align: 0.0 0.0; + visible: 0; + } + } + part { + name: "message.padding.right"; + type: RECT; + scale: 1; + mouse_events: 0; + description { + state: "default" 0.0; + min: MESSAGE_PADDING 0; + fixed: 1 0; + rel1 { + relative: 1.0 0.0; + to: "message.bg"; + } + rel2 { + relative: 1.0 1.0; + to: "message.bg"; + } + align: 1.0 0.0; + visible: 0; + } + } + part { + name: "message.padding.top"; + type: RECT; + scale: 1; + mouse_events: 0; + description { + state: "default" 0.0; + min: 0 INDICATOR_PADDING_H; + fixed: 0 1; + rel1 { relative: 0.0 0.0; to: "message.bg"; } + rel2 { relative: 1.0 0.0; to: "message.bg"; } + align: 0.0 0.0; + visible: 0; + } + } + part { + name: "message.padding.bottom"; + type: RECT; + scale: 1; + mouse_events: 0; + description { + state: "default" 0.0; + min: 0 INDICATOR_PADDING_H; + fixed: 0 1; + rel1 { relative: 0.0 1.0; to: "message.bg"; } + rel2 { relative: 1.0 1.0; to: "message.bg"; } + align: 0.0 1.0; + visible: 0; + } + + } + part { + name: "message.text"; + type: TEXTBLOCK; + scale: 1; + mouse_events: 0; + description { + state: "default" 0.0; + fixed: 1 1; + visible: 1; + rel1 { + relative: 1.0 1.0; + to_x: "message.padding.left"; + to_y: "message.bg"; + } + + rel2 { + relative: 0.0 0.0; + to_x: "message.padding.right"; + to_y: "message.bg"; + } + text { + style: "message_style"; + min: 0 1; + } + } + } + + part { + name: elm.swallow.fixed0; + type: SWALLOW; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + min: HOME_PADDING_LANDSCAPE APPTRAY_ICON_HEIGHT; + fixed: 1 0; + rel1 { relative: 1.0 0.0; to_x: padding.left; to_y: elm.rect.left_con; } + rel2 { relative: 1.0 1.0; to_x: padding.left; to_y: elm.rect.left_con; } + align: 0.0 0.5; + visible: 0; + } + description { + state: "show" 0.0; + inherit: "default" 0.0; + visible : 1; + } + } + + part { + name: "seperator.image"; + type: IMAGE; + scale: 1; + mouse_events: 0; + description { + state: "default" 0.0; + visible: 0; + min: 4 36; + fixed: 1 1; + image.normal: "B03_Status_bar_line.PNG"; + rel1 { + relative: 1.0 0.5; + to_x: "elm.swallow.fixed0"; + to_y: "elm.rect.bg"; + } + rel2 { + relative: 1.0 0.5; + to_x: "elm.swallow.fixed0"; + to_y: "elm.rect.bg"; + } + align: 0.0 0.5; + visible : 0; + } + description { + state: "show" 0.0; + inherit: "default" 0.0; + visible : 0; + } + } + + part { + name: "padding.separator"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + min: PADDING_WIDTH 0; + fixed: 1 0; + rel1 { + relative: 1.0 1.0; + to_x: "seperator.image"; + to_y: "padding.top"; + } + rel2 { + relative: 1.0 0.0; + to_x: "seperator.image"; + to_y: "padding.bottom"; + } + align: 0.0 0.5; + visible: 1; + color: 0 0 0 0; + } + } + + DYNAMIC_RECT_FROM_LEFT( "elm.rect.fixed2", "elm.swallow.fixed3", "elm.rect.middle_con", DEFAULT_ICON_PADDING, FIXED4_DYNAMIC_PADDING, INDI_DEFAULT_BG_COLOR, 0) + SWALLOW_PART_FROM_LEFT_WITH_EFFECT2( "elm.swallow.fixed2", "elm.rect.fixed2", "elm.rect.middle_con", DEFAULT_ICON_WIDTH, DEFAULT_ICON_HEIGHT ) + + FIXED_RECT_FROM_LEFT( "elm.rect.fixed3", "elm.swallow.fixed2", "elm.rect.middle_con", DEFAULT_ICON_PADDING, INDI_DEFAULT_BG_COLOR, 0) + SWALLOW_PART_FROM_LEFT_WITH_EFFECT2( "elm.swallow.fixed1", "elm.rect.fixed3", "elm.rect.middle_con", DEFAULT_ICON_WIDTH, DEFAULT_ICON_HEIGHT ) + + FIXED_RECT_FROM_LEFT( "elm.rect.nonfixed", "elm.swallow.fixed1", "elm.rect.middle_con", DEFAULT_ICON_PADDING, INDI_DEFAULT_BG_COLOR, 0) + SWALLOW_PART_FROM_LEFT_WITH_EFFECT2( "elm.swallow.nonfixed", "elm.rect.nonfixed", "elm.rect.middle_con", 0, 0) + + SWALLOW_PART_FROM_RIGHT_WITH_EFFECT2( "elm.swallow.noti", "clock.padding.left", "elm.rect.middle_con", 0, 0) + + part { + name: elm.swallow.fixed4; + type: SWALLOW; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + min: HOME_PADDING_LANDSCAPE APPTRAY_ICON_HEIGHT; + fixed: 1 0; + rel1 { relative: 0.0 0.0; to_x: padding.right; to_y: elm.rect.left_con; } + rel2 { relative: 0.0 1.0; to_x: padding.right; to_y: elm.rect.left_con; } + align: 1.0 0.5; + visible: 0; + } + description { + state: "show" 0.0; + inherit: "default" 0.0; + visible : 1; + } + } + + part { + name: "seperator.image2"; + type: IMAGE; + scale: 1; + mouse_events: 0; + description { + state: "default" 0.0; + visible: 0; + min: 4 36; + fixed: 1 1; + image.normal: "B03_Status_bar_line.PNG"; + rel1 { + relative: 0.0 0.5; + to_x: "elm.swallow.fixed4"; + to_y: "elm.rect.bg"; + } + rel2 { + relative: 0.0 0.5; + to_x: "elm.swallow.fixed4"; + to_y: "elm.rect.bg"; + } + align: 1.0 0.5; + visible : 0; + } + description { + state: "show" 0.0; + inherit: "default" 0.0; + visible : 0; + } + } + + part { + name: "padding.separator2"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + min: PADDING_WIDTH 0; + fixed: 1 0; + rel1 { + relative: 1.0 1.0; + to_x: "seperator.image2"; + to_y: "padding.top"; + } + rel2 { + relative: 1.0 0.0; + to_x: "seperator.image2"; + to_y: "padding.bottom"; + } + align: 0.0 0.5; + visible: 1; + color: 0 0 0 0; + } + } + + part { + name: "clock.padding.left"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + min: 12 0; + fixed: 1 0; + rel1.to_x: "elm.rect.clock"; + rel2 { relative: 0.0 1.0; to_x: "elm.rect.clock"; } + visible: 0; + } + } + + part { + name: "clock.padding.top"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + min: 116 5; + fixed: 1 1; + rel1 { relative: 0.5 0.0; to_x: elm.rect.bg; to_y: elm.rect.middle_con; } + rel2 { relative: 0.5 0.0; to_x: elm.rect.bg; to_y: elm.rect.middle_con; } + visible: 0; + } + } + part { + name: "elm.rect.clock"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + min: CLOCK_WIDTH CLOCK_HEIGHT; + fixed: 1 1; + rel1 { relative: 0.5 1.0; to: "clock.padding.top"; } + rel2 { relative: 0.5 1.0; to: "clock.padding.top"; } + align: 0.5 0.0; + visible: 0; + } + description { + state: "ampm" 0.0; + min: CLOCK_WIDTH CLOCK_HEIGHT; + fixed: 1 1; + rel1 { relative: 0.5 1.0; to: "clock.padding.top"; } + rel2 { relative: 0.5 1.0; to: "clock.padding.top"; } + align: 0.5 0.0; + visible: 0; + } + } + part { + name: "elm.rect.innerclock"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.5 0.5; to: "elm.rect.clock";} + rel2 { relative: 0.5 0.5; to: "elm.rect.clock";} + } + } + part { + name: "elm.text.clock"; + type: TEXTBLOCK; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + rel1.to: "elm.rect.innerclock"; + rel2.to: "elm.rect.innerclock"; + fixed: 1 1; + text { + style: "textblock_style"; + min: 1 1; + align: 0.5 0.5; + } + visible : 0; + } + description { + state: "show" 0.0; + inherit: "default" 0.0; + visible : 1; + } + } + + part { + name: "elm.swallow.fixed3"; + type: SWALLOW; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + min: BATTERY_ICON_WIDTH BATTERY_ICON_HEIGHT; + fixed: 1 1; + rel1 { relative: 0.5 0.0; to: "clock.padding.bottom"; } + rel2 { relative: 0.5 0.0; to: "clock.padding.bottom"; } + align: 0.5 1.0; + visible: 1; + } + } + + part { + name: "clock.padding.bottom"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + min: 116 2; + fixed: 1 1; + rel1 { relative: 0.5 1.0; to: "elm.rect.bg";} + rel2 { relative: 0.5 1.0; to: "elm.rect.bg";} + align: 0.5 1.0; + visible: 0; + } + description { + state: "show" 0.0; + min: 116 4; + fixed: 1 1; + rel1 { relative: 0.5 1.0; to: "elm.rect.bg";} + rel2 { relative: 0.5 1.0; to: "elm.rect.bg";} + align: 0.5 1.0; + visible: 0; + } + } + + part { + name: "clock.padding.right"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + min: 12 0; + fixed: 1 0; + rel1 { relative: 1.0 0.0; to_x: "elm.rect.clock"; } + rel2 { relative: 0.0 1.0; to_x: "elm.rect.clock"; } + visible: 0; + } + } + + part { + name: "elm.padding.badge.left"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + min: 3 0; + fixed: 1 0; + rel1.to: "elm.text.badge"; + rel2 { to: "elm.text.badge"; relative: 0.0 1.0; } + align: 1.0 0.5; + visible: 1; + } + } + + part { + name: "elm.padding.badge.right"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + min: 3 0; + fixed: 1 0; + rel1 { to: "elm.text.badge"; relative: 1.0 0.0; } + rel2.to: "elm.text.badge"; + align: 0.0 0.5; + visible: 1; + } + } + + part { + name: "elm.image.badge"; + type: IMAGE; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + min: 18 18; + fixed: 1 1; + rel1.to: "elm.padding.badge.left"; + rel2.to: "elm.padding.badge.right"; + image { + border: 8 8 8 8; + border_scale: 1; + } + visible: 0; + } + description { + state: "show" 0.0; + inherit: "default" 0.0; + visible: 1; + } + description { + state: "show2" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + + part { + name: "elm.text.badge"; + type: TEXT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + rel1 { to: "elm.rect.clock"; relative: 0.95 0.2; } + rel2 { to: "elm.rect.clock"; relative: 0.95 0.2; } + color: 255 255 255 255; + align: 1.0 0.0; + text { + font: "Tizen"; + size: 15; + min: 1 0; + align: 0.5 0.5; + } + } + description { + state: "default2" 0.0; + inherit: "default" 0.0; + color: 0 0 0 255; + } + } + part { + name: "slide_clip"; + type: RECT; + scale: 1; + description { + state: "default" 0.0; + rel1 { + relative: 1.0 -1.0; + to_x: "seperator.image"; + to_y: "elm.rect.bg"; + } + rel2 { + relative: 1.0 1.0; + to_x: "clock.padding.left"; + to_y: "elm.rect.bg"; + } + color: 255 255 255 0; + } + description { + state: "show" 0.0; + rel1 { + relative: 1.0 0.0; + to_x: "seperator.image"; + to_y: "elm.rect.bg"; + } + rel2 { + relative: 1.0 1.0; + to_x: "clock.padding.left"; + to_y: "elm.rect.bg"; + } + color: 255 255 255 255; + } + } + part { + name: "slide_clip2"; + type: RECT; + scale: 1; + description { + state: "default" 0.0; + rel1 { + relative: 1.0 -1.0; + to_x: "clock.padding.right"; + to_y: "elm.rect.bg"; + } + rel2 { + relative: 0.0 1.0; + to_x: "seperator.image2"; + to_y: "elm.rect.bg"; + } + color: 255 255 255 0; + } + description { + state: "show" 0.0; + rel1 { + relative: 1.0 0.0; + to_x: "clock.padding.right"; + to_y: "elm.rect.bg"; + } + rel2 { + relative: 0.0 1.0; + to_x: "seperator.image2"; + to_y: "elm.rect.bg"; + } + color: 255 255 255 255; + } + } + + } + + programs { + program { + name: "change_padding_1"; + action: STATE_SET "changePad" 0.0; + signal: "change,padding,1"; + source: "elm.rect.*"; + script { + if (get_int(changepad) == 0) { + set_int(changepad,1); + } + } + } + + program { + name: "change_padding_2"; + action: STATE_SET "changePad" 0.0; + signal: "change,padding,2"; + source: "elm.rect.*"; + script { + if (get_int(changepad) == 1) { + set_int(changepad,0); + } + } + } + + program { + name: "home_pressed"; + signal: "home.pressed"; + source: "indicator.prog"; + script { + } + } + + program { + name: "bg_opaque"; + action: STATE_SET "default" 0.0; + signal: "bg.opaque"; + source: "indicator.prog"; + script { + set_int(bg_set, 0); + } + + } + program { + name: "bg_translucent"; + action: STATE_SET "default" 0.0; + signal: "bg.translucent"; + source: "indicator.prog"; + script { + set_int(bg_set, 1); + } + + } + program { + name: "bg_transparent"; + signal: "bg.transparent"; + source: "indicator.prog"; + script { + set_int(bg_set, 2); + } + + } + program { + name: "bg_notification"; + signal: "bg.notification"; + source: "indicator.prog"; + script { + set_int(bg_set, 3); + } + + } + + program { + name: "clock_size_default"; + signal: "indicator.clock.default"; + source: "indicator.prog"; + script { + set_state(PART:"elm.rect.clock", "default", 0.0); + } + + } + program { + name: "clock_size_ampm"; + signal: "indicator.clock.ampm"; + source: "indicator.prog"; + script { + set_state(PART:"elm.rect.clock", "ampm", 0.0); + } + + } + + program { + name: "show.clip.noeffect"; + in: 0.15 0.0; + action: STATE_SET "show" 0.0; + signal: "indicator.clip.show.noeffect"; + source: "indicator.prog"; + target: "slide_clip"; + target: "slide_clip2"; + } + + program { + name: "show.clip"; + in: 0.15 0.0; + action: STATE_SET "show" 0.0; + signal: "indicator.clip.show"; + source: "indicator.prog"; + target: "slide_clip"; + target: "slide_clip2"; + transition: LINEAR 0.15; + } + + program { + name: "hide.clip.noeffect"; + action: STATE_SET "default" 0.0; + signal: "indicator.clip.hide.noeffect"; + source: "indicator.prog"; + target: "slide_clip"; + target: "slide_clip2"; + } + + program { + name: "hide.clip"; + action: STATE_SET "default" 0.0; + signal: "indicator.clip.hide"; + source: "indicator.prog"; + target: "slide_clip"; + target: "slide_clip2"; + transition: LINEAR 0.15; + } + + program { + name: "show.noti.noeffect"; + action: STATE_SET "show" 0.0; + signal: "indicator.noti.show.noeffect"; + source: "indicator.prog"; + target: "elm.swallow.noti"; + target: "elm.swallow.nonfixed"; + target: "elm.swallow.fixed1"; + target: "elm.swallow.fixed2"; + target: "elm.rect.transparent"; + target: "elm.swallow.fixed0"; + target: "elm.swallow.fixed4"; + target: "elm.text.clock"; + target: "clock.padding.bottom"; + target: "elm.rect.bg"; + target: "seperator.image2"; + } + + program { + name: "show.noti"; + action: STATE_SET "show" 0.0; + signal: "indicator.noti.show"; + source: "indicator.prog"; + target: "elm.swallow.noti"; + target: "elm.swallow.nonfixed"; + target: "elm.swallow.fixed1"; + target: "elm.swallow.fixed2"; + target: "elm.rect.transparent"; + target: "elm.swallow.fixed0"; + target: "elm.swallow.fixed4"; + target: "elm.text.clock"; + target: "clock.padding.bottom"; + target: "elm.rect.bg"; + target: "seperator.image2"; + transition: LINEAR 0.3; + } + + program { + name: "hide.noti.noeffect"; + action: STATE_SET "default" 0.0; + signal: "indicator.noti.hide.noeffect"; + source: "indicator.prog"; + target: "elm.swallow.noti"; + target: "elm.swallow.nonfixed"; + target: "elm.swallow.fixed1"; + target: "elm.swallow.fixed2"; + target: "elm.rect.transparent"; + target: "elm.swallow.fixed0"; + target: "elm.swallow.fixed4"; + target: "elm.text.clock"; + target: "clock.padding.bottom"; + target: "elm.rect.bg"; + target: "seperator.image2"; + } + + program { + name: "hide.noti"; + action: STATE_SET "default" 0.0; + signal: "indicator.noti.hide"; + source: "indicator.prog"; + target: "elm.swallow.noti"; + target: "elm.swallow.nonfixed"; + target: "elm.swallow.fixed1"; + target: "elm.swallow.fixed2"; + target: "elm.rect.transparent"; + target: "elm.swallow.fixed0"; + target: "elm.swallow.fixed4"; + target: "elm.text.clock"; + target: "clock.padding.bottom"; + target: "elm.rect.bg"; + target: "seperator.image2"; + transition: LINEAR 0.3; + } + + + program { + name: "badge_show"; + signal: "badge,show,1"; + source: "elm.image.badge"; + script { + if (get_int(badge_set) == 0) { + set_int(badge_set, 1); + if (get_int(theme) == 2) { + set_state(PART:"elm.image.badge", "show2", 0.0); + set_state(PART:"elm.text.badge", "default2", 0.0); + } else { + set_state(PART:"elm.image.badge", "show", 0.0); + set_state(PART:"elm.text.badge", "default", 0.0); + } + } + } + } + + program { + name: "badge_hide"; + signal: "badge,hide,1"; + source: "elm.image.badge"; + script { + if (get_int(badge_set) == 1) { + set_int(badge_set, 0); + set_state(PART:"elm.image.badge", "default", 0.0); + } + } + } + } + } +} diff --git a/data/resource/indicator.edc b/data/resource/indicator_port.edc similarity index 86% rename from data/resource/indicator.edc rename to data/resource/indicator_port.edc index d509f5e..694703c 100755 --- a/data/resource/indicator.edc +++ b/data/resource/indicator_port.edc @@ -102,7 +102,6 @@ collections { } } - part { name: "padding.right"; type: RECT; @@ -132,7 +131,7 @@ collections { relative: 1.0 1.0; to: "background"; } - color: INDI_DEFAULT_BG_COLOR; + color: INDI_DEFAULT_BG_TRANSPARENT; } description { state: "opaque" 0.0; @@ -172,11 +171,6 @@ collections { rel2 { relative: 0.0 1.0; to: "elm.rect.bg"; } align: 0.0 0.0; } - description { - state: "landscape" 0.0; - inherit: "default" 0.0; - min: HOME_PADDING_LANDSCAPE 0; - } } part { @@ -351,15 +345,6 @@ collections { align: 0.0 0.5; visible: 1; } - description { - state: "landscape" 0.0; - min: HOME_PADDING_LANDSCAPE APPTRAY_ICON_HEIGHT; - fixed: 1 0; - rel1 { relative: 1.0 0.0; to_x: padding.left; to_y: elm.rect.left_con; } - rel2 { relative: 1.0 1.0; to_x: padding.left; to_y: elm.rect.left_con; } - align: 0.0 0.5; - visible: 1; - } } part { @@ -386,6 +371,11 @@ collections { align: 0.0 0.5; visible : 0; } + description { + state: "show" 0.0; + inherit: "default" 0.0; + visible : 0; + } } part { @@ -413,7 +403,6 @@ collections { } } - DYNAMIC_RECT_FROM_LEFT( "elm.rect.fixed2", "elm.swallow.fixed3", "elm.rect.middle_con", DEFAULT_ICON_PADDING, FIXED4_DYNAMIC_PADDING, INDI_DEFAULT_BG_COLOR, 0) SWALLOW_PART_FROM_LEFT_WITH_EFFECT( "elm.swallow.fixed2", "elm.rect.fixed2", "elm.rect.middle_con", DEFAULT_ICON_WIDTH, DEFAULT_ICON_HEIGHT ) @@ -439,15 +428,6 @@ collections { align: 1.0 0.5; visible: 1; } - description { - state: "landscape" 0.0; - min: HOME_PADDING_LANDSCAPE APPTRAY_ICON_HEIGHT; - fixed: 1 0; - rel1 { relative: 0.0 0.0; to_x: padding.right; to_y: elm.rect.left_con; } - rel2 { relative: 0.0 1.0; to_x: padding.right; to_y: elm.rect.left_con; } - align: 1.0 0.5; - visible: 1; - } } part { @@ -474,6 +454,11 @@ collections { align: 1.0 0.5; visible : 0; } + description { + state: "show" 0.0; + inherit: "default" 0.0; + visible : 0; + } } part { @@ -722,6 +707,74 @@ collections { color: 0 0 0 255; } } + part { + name: "slide_clip"; + type: RECT; + scale: 1; + description { + state: "default" 0.0; + rel1 { + relative: 1.0 -1.0; + to_x: "seperator.image"; + to_y: "elm.rect.bg"; + } + rel2 { + relative: 1.0 1.0; + to_x: "clock.padding.left"; + to_y: "elm.rect.bg"; + } + color: 255 255 255 0; + } + description { + state: "show" 0.0; + rel1 { + relative: 1.0 0.0; + to_x: "seperator.image"; + to_y: "elm.rect.bg"; + } + rel2 { + relative: 1.0 1.0; + to_x: "clock.padding.left"; + to_y: "elm.rect.bg"; + } + color: 255 255 255 255; + } + } + part { + name: "slide_clip2"; + type: RECT; + scale: 1; + description { + state: "default" 0.0; + rel1 { + relative: 1.0 -1.0; + to_x: "clock.padding.right"; + to_y: "elm.rect.bg"; + } + rel2 { + relative: 0.0 1.0; + to_x: "seperator.image2"; + to_y: "elm.rect.bg"; + } + color: 255 255 255 0; + } + description { + state: "show" 0.0; + rel1 { + relative: 1.0 0.0; + to_x: "clock.padding.right"; + to_y: "elm.rect.bg"; + } + rel2 { + relative: 0.0 1.0; + to_x: "seperator.image2"; + to_y: "elm.rect.bg"; + } + color: 255 255 255 255; + } + } + + } programs { program { @@ -756,33 +809,6 @@ collections { } } - program { - name: "change_home_pad_1"; - action: STATE_SET "changeHomePad" 0.0; - signal: "change,home,pad,1"; - source: "elm.rect.*"; - script { - if (get_int(changeHomePad) == 0) { - set_state(PART:"elm.rect.left_con", "landscape", 0.0); - set_state(PART:"elm.swallow.fixed0", "landscape", 0.0); - set_int(changeHomePad,1); - } - } - } - - program { - name: "change_home_pad_2"; - action: STATE_SET "changeHomePad" 0.0; - signal: "change,home,pad,2"; - source: "elm.rect.*"; - script { - if (get_int(changeHomePad) == 1) { - set_state(PART:"elm.rect.left_con", "default", 0.0); - set_state(PART:"elm.swallow.fixed0", "default", 0.0); - set_int(changeHomePad, 0); - } - } - } program { name: "bg_opaque"; @@ -847,6 +873,58 @@ collections { } program { + name: "show.clip.noeffect"; + in: 0.15 0.0; + action: STATE_SET "show" 0.0; + signal: "indicator.clip.show.noeffect"; + source: "indicator.prog"; + target: "slide_clip"; + target: "slide_clip2"; + } + + program { + name: "show.clip"; + in: 0.15 0.0; + action: STATE_SET "show" 0.0; + signal: "indicator.clip.show"; + source: "indicator.prog"; + target: "slide_clip"; + target: "slide_clip2"; + transition: LINEAR 0.15; + } + + program { + name: "hide.clip.noeffect"; + action: STATE_SET "default" 0.0; + signal: "indicator.clip.hide.noeffect"; + source: "indicator.prog"; + target: "slide_clip"; + target: "slide_clip2"; + } + + program { + name: "hide.clip"; + action: STATE_SET "default" 0.0; + signal: "indicator.clip.hide"; + source: "indicator.prog"; + target: "slide_clip"; + target: "slide_clip2"; + transition: LINEAR 0.15; + } + program { + name: "show.noti.noeffect"; + action: STATE_SET "show" 0.0; + signal: "indicator.noti.show.noeffect"; + source: "indicator.prog"; + target: "elm.swallow.noti"; + target: "elm.swallow.nonfixed"; + target: "elm.swallow.fixed1"; + target: "elm.swallow.fixed2"; + target: "seperator.image"; + target: "seperator.image2"; + } + + program { name: "show.noti"; action: STATE_SET "show" 0.0; signal: "indicator.noti.show"; @@ -857,6 +935,19 @@ collections { target: "elm.swallow.fixed2"; target: "seperator.image"; target: "seperator.image2"; + transition: LINEAR 0.3; + } + program { + name: "hide.noti.noeffect"; + action: STATE_SET "default" 0.0; + signal: "indicator.noti.hide.noeffect"; + source: "indicator.prog"; + target: "elm.swallow.noti"; + target: "elm.swallow.nonfixed"; + target: "elm.swallow.fixed1"; + target: "elm.swallow.fixed2"; + target: "seperator.image"; + target: "seperator.image2"; } program { name: "hide.noti"; @@ -869,8 +960,10 @@ collections { target: "elm.swallow.fixed2"; target: "seperator.image"; target: "seperator.image2"; + transition: LINEAR 0.3; } + program { name: "badge_show"; signal: "badge,show,1"; diff --git a/modules/clock/clock.c b/modules/clock/clock.c index 3589e9a..7171edf 100755 --- a/modules/clock/clock.c +++ b/modules/clock/clock.c @@ -22,12 +22,14 @@ #include #include #include +#include #include "common.h" #include "indicator.h" #include "indicator_ui.h" #include "indicator_gui.h" #include "indicator_icon_util.h" +#include "indicator_util.h" #include "modules.h" #define SYSTEM_RESUME "system_wakeup" @@ -42,6 +44,9 @@ #define LABEL_STRING "%s" \ "" +#define BATTERY_TIMER_INTERVAL 3 +#define BATTERY_TIMER_INTERVAL_CHARGING 30 + #define CLOCK_STR_LEN 256 enum { @@ -56,6 +61,9 @@ static int apm_length = 0; static int apm_position = 0; static Ecore_Timer *timer = NULL; static Ecore_Timer *battery_timer = NULL; +static Ecore_Timer *battery_charging_timer = NULL; +static int battery_charging = 0; +static int battery_charging_first = 0; static int register_clock_module(void *data); static int unregister_clock_module(void); @@ -63,12 +71,14 @@ static int hib_enter_clock_module(void); static int hib_leave_clock_module(void *data); static int language_changed_cb(void *data); static int region_changed_cb(void *data); +static int wake_up_cb(void *data); #define ICON_PRIORITY INDICATOR_PRIORITY_FIXED6 #define MODULE_NAME "clock" static void indicator_get_time_by_region(char* output, void* data); static void ICU_set_timezone(const char *timezone); +static void indicator_clock_display_battery_percentage(void *data,int win_type ); Indicator_Icon_Object sysclock[INDICATOR_WIN_MAX] = { { @@ -87,7 +97,8 @@ Indicator_Icon_Object sysclock[INDICATOR_WIN_MAX] = { .hib_leave = hib_leave_clock_module, .lang_changed = NULL, .region_changed = region_changed_cb, - .lang_changed = language_changed_cb + .lang_changed = language_changed_cb, + .wake_up = wake_up_cb }, { .win_type = INDICATOR_WIN_LAND, @@ -105,7 +116,8 @@ Indicator_Icon_Object sysclock[INDICATOR_WIN_MAX] = { .hib_leave = hib_leave_clock_module, .lang_changed = NULL, .region_changed = region_changed_cb, - .lang_changed = language_changed_cb + .lang_changed = language_changed_cb, + .wake_up = wake_up_cb } }; @@ -121,12 +133,11 @@ static void set_app_state(void* data) static void indicator_clock_changed_cb(void *data) { - struct appdata *ad = (struct appdata *)data; char time_str[32]; char time_buf[128], ampm_buf[128]; char buf[CLOCK_STR_LEN]; char icu_apm[CLOCK_STR_LEN] = {0,}; - char apm_result[CLOCK_STR_LEN] ={0,}; + struct tm *ts = NULL; time_t ctime; int len; @@ -134,7 +145,13 @@ static void indicator_clock_changed_cb(void *data) retif(data == NULL, , "Invalid parameter!"); - if (battery_timer != NULL) + if(indicator_util_get_update_flag()==0) + { + DBG("need to update"); + return; + } + + if (battery_timer != NULL || battery_charging_timer != NULL) { DBG("battery is displaying. ignore clock callback"); return; @@ -242,35 +259,182 @@ static void indicator_clock_format_changed_cb(keynode_t *node, void *data) free(timezone); } -static void indicator_clock_battery_changed_cb(keynode_t *node, void *data) +static void indicator_clock_pm_state_change_cb(keynode_t *node, void *data) +{ + int status = 0; + + retif(data == NULL, , "Invalid parameter!"); + + vconf_get_int(VCONFKEY_PM_STATE, &status); + + switch(status) + { + case VCONFKEY_PM_STATE_LCDOFF: + if (timer != NULL) { + ecore_timer_del(timer); + timer = NULL; + } + + if (battery_timer != NULL) { + ecore_timer_del(battery_timer); + battery_timer = NULL; + } + + if (battery_charging_timer != NULL) { + ecore_timer_del(battery_charging_timer); + battery_charging_timer = NULL; + } + break; + default: + break; + } + +} + +static void indicator_clock_battery_disp_changed_cb(keynode_t *node, void *data) { - indicator_clock_display_battery_percentage(data); + int status = 0; + + vconf_get_int(VCONFKEY_BATTERY_DISP_STATE,&status); + + DBG("indicator_clock_battery_disp_changed_cb(%d)",status); + + if(status==2) + { + indicator_clock_display_battery_percentage(data,0); + indicator_clock_display_battery_percentage(data,1); + } + else + { + indicator_clock_display_battery_percentage(data,status); + } +} + +static void indicator_clock_charging_now_cb(keynode_t *node, void *data) +{ + int status = 0; + int lock_state = 0; + + retif(data == NULL, , "Invalid parameter!"); + + vconf_get_int(VCONFKEY_IDLE_LOCK_STATE, &lock_state); + + vconf_get_int(VCONFKEY_SYSMAN_BATTERY_CHARGE_NOW, &status); + + battery_charging = status; + + DBG("indicator_clock_charging_now_cb(%d)",status); + + if(lock_state==VCONFKEY_IDLE_LOCK) + { + DBG("indicator_clock_charging_now_cb:lock_state(%d)",lock_state); + return; + } + + if(battery_charging_first == 1&&status==1) + { + DBG("indicator_clock_charging_now_cb : ignore(%d)",status); + } + + if(status==1) + { + battery_charging_first = 1; + indicator_clock_display_battery_percentage(data,0); + } +} + +static void indicator_clock_battery_capacity_cb(keynode_t *node, void *data) +{ + retif(data == NULL, , "Invalid parameter!"); + + if(battery_charging==1&&battery_charging_timer!=NULL) + { + DBG("indicator_clock_battery_capacity_cb:battery_charging(%d)",battery_charging); + indicator_clock_display_battery_percentage(data,0); + } +} + + +static void indicator_clock_usb_cb(keynode_t *node, void *data) +{ + int status = 0; + + retif(data == NULL, , "Invalid parameter!"); + + vconf_get_int(VCONFKEY_SYSMAN_USB_STATUS, &status); + + DBG("indicator_clock_usb_cb(%d)",status); + + if(status==VCONFKEY_SYSMAN_USB_DISCONNECTED) + { + battery_charging_first = 0; + if (battery_charging_timer != NULL) + { + ecore_timer_del(battery_charging_timer); + battery_charging_timer = NULL; + } + indicator_clock_changed_cb(data); + } } static void indicator_clock_battery_display_cb(void *data) { - int ret = 0; + INFO("indicator_clock_battery_charging_stop_cb"); if (battery_timer != NULL) { ecore_timer_del(battery_timer); battery_timer = NULL; } - ret = vconf_ignore_key_changed(VCONFKEY_SYSMAN_BATTERY_CAPACITY, - indicator_clock_battery_changed_cb); - if (ret != OK) - ERR("Fail: unregister VCONFKEY_REGIONFORMAT_TIME1224"); + indicator_clock_changed_cb(data); +} + +static void indicator_clock_battery_charging_stop_cb(void *data) +{ + + INFO("indicator_clock_battery_charging_stop_cb"); + + if (battery_charging_timer != NULL) { + ecore_timer_del(battery_charging_timer); + battery_charging_timer = NULL; + } indicator_clock_changed_cb(data); } -void indicator_clock_display_battery_percentage(void *data) +static void indicator_clock_lock_state_cb(keynode_t *node, void *data) +{ + int status = 0; + + retif(data == NULL, , "Invalid parameter!"); + + vconf_get_int(VCONFKEY_IDLE_LOCK_STATE, &status); + + DBG("indicator_clock_lock_state_cb(%d)",status); + + if(status==VCONFKEY_IDLE_UNLOCK && battery_charging==1) + { + battery_charging_first = 1; + indicator_clock_display_battery_percentage(data,0); + } + +} + +static void indicator_clock_display_battery_percentage(void *data,int win_type ) { int ret = FAIL; int status = 0; int battery_capa = 0; char buf[256] = {0,}; char temp[256] = {0,}; + struct appdata *ad = (struct appdata *)data; + + + if(battery_charging_timer!=NULL) + { + INFO("30sec timer alive"); + return; + } ret = vconf_get_bool(VCONFKEY_SETAPPL_BATTERY_PERCENTAGE_BOOL, &status); if (ret != OK) @@ -302,16 +466,22 @@ void indicator_clock_display_battery_percentage(void *data) INFO("indicator_clock_display_battery_percentage %s", buf); - indicator_part_text_emit(data,"elm.text.clock", buf); + indicator_part_text_emit_by_win(&(ad->win[win_type]),"elm.text.clock", buf); - ret = vconf_notify_key_changed(VCONFKEY_SYSMAN_BATTERY_CAPACITY, - indicator_clock_battery_changed_cb, data); - if (ret != OK) { - ERR("Fail: register VCONFKEY_REGIONFORMAT_TIME1224"); - return; + if(battery_charging == 1) + { + + battery_charging_timer = ecore_timer_add(BATTERY_TIMER_INTERVAL_CHARGING, (void *)indicator_clock_battery_charging_stop_cb,data); } + else + { + if (battery_timer != NULL) { + ecore_timer_del(battery_timer); + battery_timer = NULL; + } - battery_timer = ecore_timer_add(3, (void *)indicator_clock_battery_display_cb,data); + battery_timer = ecore_timer_add(BATTERY_TIMER_INTERVAL, (void *)indicator_clock_battery_display_cb,data); + } } } @@ -331,6 +501,29 @@ static int region_changed_cb(void *data) return OK; } +static int wake_up_cb(void *data) +{ + int status = 0; + + INFO("CLOCK wake_up_cb"); + + retif(data == NULL, FAIL, "Invalid parameter!"); + + vconf_get_int(VCONFKEY_IDLE_LOCK_STATE, &status); + + DBG("wake_up_cb(%d)",status); + + if(status==VCONFKEY_IDLE_UNLOCK && battery_charging==1) + { + indicator_clock_display_battery_percentage(data,0); + } + else + { + indicator_clock_changed_cb(data); + } + return OK; +} + static int register_clock_module(void *data) { int r = 0, ret = -1; @@ -381,13 +574,50 @@ static int register_clock_module(void *data) r = r | ret; } - ret = vconf_notify_key_changed(VCONFKEY_PM_STATE, indicator_clock_format_changed_cb, (void *)data); + ret = vconf_notify_key_changed(VCONFKEY_PM_STATE, indicator_clock_pm_state_change_cb, (void *)data); if (ret != OK) { ERR("Fail: register VCONFKEY_PM_STATE"); r = r | ret; } + ret = vconf_notify_key_changed(VCONFKEY_BATTERY_DISP_STATE, + indicator_clock_battery_disp_changed_cb, data); + if (ret != OK) { + ERR("Fail: register VCONFKEY_SETAPPL_TIMEZONE_INT"); + r = r | ret; + } + + ret = vconf_notify_key_changed(VCONFKEY_SYSMAN_BATTERY_CAPACITY, + indicator_clock_battery_capacity_cb, data); + if (ret != OK) { + ERR("Failed to register callback!"); + r = r | ret; + } + + ret = vconf_notify_key_changed(VCONFKEY_SYSMAN_BATTERY_CHARGE_NOW, + indicator_clock_charging_now_cb, data); + if (ret != OK) { + ERR("Failed to register callback!"); + r = r | ret; + } + + ret = vconf_notify_key_changed(VCONFKEY_SYSMAN_USB_STATUS, + indicator_clock_usb_cb, data); + if (ret != OK) { + ERR("Failed to register callback!"); + r = r | ret; + } + + + ret = vconf_notify_key_changed(VCONFKEY_IDLE_LOCK_STATE, + indicator_clock_lock_state_cb, data); + if (ret != OK) { + ERR("Failed to register callback!"); + r = r | ret; + } + + indicator_clock_format_changed_cb(NULL, data); return r; @@ -418,10 +648,36 @@ static int unregister_clock_module(void) ERR("Fail: unregister VCONFKEY_SETAPPL_TIMEZONE_INT"); ret = vconf_ignore_key_changed(VCONFKEY_PM_STATE, - indicator_clock_format_changed_cb); + indicator_clock_battery_disp_changed_cb); if (ret != OK) ERR("Fail: unregister VCONFKEY_PM_STATE"); + ret = vconf_ignore_key_changed(VCONFKEY_BATTERY_DISP_STATE, + indicator_clock_pm_state_change_cb); + if (ret != OK) + ERR("Fail: unregister VCONFKEY_BATTERY_DISP_STATE"); + + ret = vconf_ignore_key_changed(VCONFKEY_SYSMAN_BATTERY_CAPACITY, + indicator_clock_battery_capacity_cb); + if (ret != OK) + ERR("Fail: unregister VCONFKEY_SYSMAN_BATTERY_CHARGE_NOW"); + + ret = vconf_ignore_key_changed(VCONFKEY_SYSMAN_BATTERY_CHARGE_NOW, + indicator_clock_charging_now_cb); + if (ret != OK) + ERR("Fail: unregister VCONFKEY_SYSMAN_BATTERY_CHARGE_NOW"); + + ret = vconf_ignore_key_changed(VCONFKEY_SYSMAN_USB_STATUS, + indicator_clock_usb_cb); + if (ret != OK) + ERR("Fail: unregister VCONFKEY_SYSMAN_BATTERY_CHARGE_NOW"); + + + ret = vconf_ignore_key_changed(VCONFKEY_IDLE_LOCK_STATE, + indicator_clock_lock_state_cb); + if (ret != OK) + ERR("Fail: unregister VCONFKEY_SYSMAN_BATTERY_CHARGE_NOW"); + if (timer != NULL) { ecore_timer_del(timer); timer = NULL; @@ -462,8 +718,8 @@ static int hib_leave_clock_module(void *data) void indicator_get_time_by_region(char* output,void *data) { - retif(data == NULL, NULL, "Data parameter is NULL"); - retif(output == NULL, NULL, "output parameter is NULL"); + retif(data == NULL, , "Data parameter is NULL"); + retif(output == NULL, , "output parameter is NULL"); UChar customSkeleton[CLOCK_STR_LEN] = { 0, }; @@ -546,6 +802,12 @@ static UChar *uastrcpy(const char *chars) static void ICU_set_timezone(const char *timezone) { + if(timezone == NULL) + { + ERR("TIMEZONE is NULL"); + return; + } + DBG("ICU_set_timezone = %s ", timezone); UErrorCode ec = U_ZERO_ERROR; UChar *str = uastrcpy(timezone); diff --git a/modules/connection/connection.c b/modules/connection/connection.c index 318de91..a7ff3a5 100755 --- a/modules/connection/connection.c +++ b/modules/connection/connection.c @@ -30,8 +30,7 @@ static int register_conn_module(void *data); static int unregister_conn_module(void); -extern void show_trnsfr_icon(void *data); -extern void hide_trnsfr_icon(void); +static int wake_up_cb(void *data); Indicator_Icon_Object conn[INDICATOR_WIN_MAX] = { { @@ -46,7 +45,8 @@ Indicator_Icon_Object conn[INDICATOR_WIN_MAX] = { .img_obj = {0,}, .obj_exist = EINA_FALSE, .init = register_conn_module, - .fini = unregister_conn_module + .fini = unregister_conn_module, + .wake_up = wake_up_cb }, { .win_type = INDICATOR_WIN_LAND, @@ -60,7 +60,8 @@ Indicator_Icon_Object conn[INDICATOR_WIN_MAX] = { .img_obj = {0,}, .obj_exist = EINA_FALSE, .init = register_conn_module, - .fini = unregister_conn_module + .fini = unregister_conn_module, + .wake_up = wake_up_cb } }; @@ -97,6 +98,8 @@ static const char *icon_path[LEVEL_MAX] = { }; static Eina_Bool dnet_transferring = EINA_FALSE; +static int updated_while_lcd_off = 0; + static void set_app_state(void* data) { @@ -134,15 +137,22 @@ static void indicator_conn_change_cb(keynode_t *node, void *data) int ret = 0; int ps_type = VCONFKEY_TELEPHONY_PSTYPE_NONE; + if(indicator_util_get_update_flag()==0) + { + updated_while_lcd_off = 1; + DBG("need to update %d",updated_while_lcd_off); + return; + } + updated_while_lcd_off = 0; + retif(data == NULL, , "Invalid parameter!"); ret = vconf_get_int(VCONFKEY_WIFI_STATE, &status); if (ret == OK) { INFO("CONNECTION WiFi Status: %d", status); if ((status == VCONFKEY_WIFI_CONNECTED)) { - indicator_util_icon_hide(&conn); + hide_image_icon(); if (dnet_transferring == EINA_TRUE) { - hide_trnsfr_icon(); dnet_transferring = EINA_FALSE; } return; @@ -154,12 +164,10 @@ static void indicator_conn_change_cb(keynode_t *node, void *data) INFO("CONNECTION DNET Status: %d", status); if (status == VCONFKEY_DNET_TRANSFER) { if (dnet_transferring == EINA_FALSE) { - show_trnsfr_icon(data); dnet_transferring = EINA_TRUE; } } else { if (dnet_transferring == EINA_TRUE) { - hide_trnsfr_icon(); dnet_transferring = EINA_FALSE; } } @@ -216,6 +224,17 @@ static void indicator_conn_change_cb(keynode_t *node, void *data) return; } +static int wake_up_cb(void *data) +{ + if(updated_while_lcd_off==0) + { + DBG("ICON WAS NOT UPDATED"); + return OK; + } + indicator_conn_change_cb(NULL, data); + return OK; +} + static int register_conn_module(void *data) { int r = 0, ret = -1; @@ -265,7 +284,6 @@ static int unregister_conn_module(void) ERR("Failed to unregister callback!"); if (dnet_transferring == EINA_TRUE) { - hide_trnsfr_icon(); dnet_transferring = EINA_FALSE; } diff --git a/modules/connection/mobile_hotspot.c b/modules/connection/mobile_hotspot.c index 743b49a..af9ca34 100755 --- a/modules/connection/mobile_hotspot.c +++ b/modules/connection/mobile_hotspot.c @@ -29,6 +29,7 @@ static int register_mobile_hotspot_module(void *data); static int unregister_mobile_hotspot_module(void); +static int wake_up_cb(void *data); Indicator_Icon_Object mobile_hotspot[INDICATOR_WIN_MAX] = { { @@ -42,7 +43,8 @@ Indicator_Icon_Object mobile_hotspot[INDICATOR_WIN_MAX] = { .obj_exist = EINA_FALSE, .area = INDICATOR_ICON_AREA_NOTI, .init = register_mobile_hotspot_module, - .fini = unregister_mobile_hotspot_module + .fini = unregister_mobile_hotspot_module, + .wake_up = wake_up_cb }, { .win_type = INDICATOR_WIN_LAND, @@ -56,7 +58,8 @@ Indicator_Icon_Object mobile_hotspot[INDICATOR_WIN_MAX] = { .obj_exist = EINA_FALSE, .area = INDICATOR_ICON_AREA_NOTI, .init = register_mobile_hotspot_module, - .fini = unregister_mobile_hotspot_module + .fini = unregister_mobile_hotspot_module, + .wake_up = wake_up_cb } }; @@ -89,6 +92,7 @@ static const char *icon_path[MOBILEAP_MAX] = { [MOBILEAP_CONNECTED8] = "Connection/B03_MobileAP_connected_08.png", [MOBILEAP_CONNECTED9] = "Connection/B03_MobileAP_connected_09.png", }; +static int updated_while_lcd_off = 0; static void set_app_state(void* data) { @@ -124,6 +128,15 @@ static void indicator_mobile_hotspot_change_cb(keynode_t *node, void *data) int ret; retif(data == NULL, , "Invalid parameter!"); + + if(indicator_util_get_update_flag()==0) + { + updated_while_lcd_off = 1; + DBG("need to update %d",updated_while_lcd_off); + return; + } + updated_while_lcd_off = 0; + ret = vconf_get_int(VCONFKEY_MOBILE_HOTSPOT_MODE, &status); if (ret == OK) { INFO("mobile_hotspot status: %d", status); @@ -164,6 +177,18 @@ static void indicator_mobile_hotspot_change_cb(keynode_t *node, void *data) return; } +static int wake_up_cb(void *data) +{ + if(updated_while_lcd_off==0) + { + DBG("ICON WAS NOT UPDATED"); + return OK; + } + + indicator_mobile_hotspot_change_cb(NULL, data); + return OK; +} + static int register_mobile_hotspot_module(void *data) { int r = 0, ret = -1; diff --git a/modules/connection/usb.c b/modules/connection/usb.c index 99730e6..bcf1e57 100755 --- a/modules/connection/usb.c +++ b/modules/connection/usb.c @@ -30,8 +30,6 @@ static int register_usb_module(void *data); static int unregister_usb_module(void); -extern void show_trnsfr_icon(void *data); -extern void hide_trnsfr_icon(void); Indicator_Icon_Object usb[INDICATOR_WIN_MAX] = { { diff --git a/modules/connection/wifi.c b/modules/connection/wifi.c index bad1e9a..98daf89 100755 --- a/modules/connection/wifi.c +++ b/modules/connection/wifi.c @@ -30,8 +30,7 @@ static int register_wifi_module(void *data); static int unregister_wifi_module(void); -extern void show_trnsfr_icon(void *data); -extern void hide_trnsfr_icon(void); +static int wake_up_cb(void *data); Indicator_Icon_Object wifi[INDICATOR_WIN_MAX] = { { @@ -46,7 +45,8 @@ Indicator_Icon_Object wifi[INDICATOR_WIN_MAX] = { .obj_exist = EINA_FALSE, .area = INDICATOR_ICON_AREA_FIXED, .init = register_wifi_module, - .fini = unregister_wifi_module + .fini = unregister_wifi_module, + .wake_up = wake_up_cb }, { .win_type = INDICATOR_WIN_LAND, @@ -60,7 +60,8 @@ Indicator_Icon_Object wifi[INDICATOR_WIN_MAX] = { .obj_exist = EINA_FALSE, .area = INDICATOR_ICON_AREA_FIXED, .init = register_wifi_module, - .fini = unregister_wifi_module + .fini = unregister_wifi_module, + .wake_up = wake_up_cb } }; @@ -81,6 +82,7 @@ static const char *icon_path[LEVEL_WIFI_MAX] = { }; static Eina_Bool wifi_transferring = EINA_FALSE; +static int updated_while_lcd_off = 0; static void set_app_state(void* data) { @@ -120,6 +122,15 @@ static void indicator_wifi_change_cb(keynode_t *node, void *data) int ret; retif(data == NULL, , "Invalid parameter!"); + + if(indicator_util_get_update_flag()==0) + { + updated_while_lcd_off = 1; + DBG("need to update %d",updated_while_lcd_off); + return; + } + updated_while_lcd_off = 0; + ret = vconf_get_int(VCONFKEY_WIFI_STRENGTH, &strength); if (ret == OK) { INFO("CONNECTION WiFi Strength: %d", strength); @@ -136,7 +147,6 @@ static void indicator_wifi_change_cb(keynode_t *node, void *data) INFO("CONNECTION WiFi Status: %d", status); if (status != VCONFKEY_WIFI_TRANSFER) { if ( wifi_transferring == EINA_TRUE ) { - hide_trnsfr_icon(); wifi_transferring = EINA_FALSE; } } @@ -151,7 +161,6 @@ static void indicator_wifi_change_cb(keynode_t *node, void *data) return; } else if (status == VCONFKEY_WIFI_TRANSFER) { if (wifi_transferring != EINA_TRUE) { - show_trnsfr_icon(data); wifi_transferring = EINA_TRUE; } return; @@ -161,6 +170,18 @@ static void indicator_wifi_change_cb(keynode_t *node, void *data) return; } +static int wake_up_cb(void *data) +{ + if(updated_while_lcd_off==0) + { + DBG("ICON WAS NOT UPDATED"); + return OK; + } + + indicator_wifi_change_cb(NULL, data); + return OK; +} + static int register_wifi_module(void *data) { int r = 0, ret = -1; diff --git a/modules/information/alarm.c b/modules/information/alarm.c index 3a60a4d..cdff44b 100755 --- a/modules/information/alarm.c +++ b/modules/information/alarm.c @@ -24,7 +24,7 @@ #include "modules.h" #include "indicator_icon_util.h" -#define ICON_PRIORITY INDICATOR_PRIORITY_SYSTEM_2 +#define ICON_PRIORITY INDICATOR_PRIORITY_SYSTEM_3 #define MODULE_NAME "alarm" static int register_alarm_module(void *data); diff --git a/modules/information/earphone.c b/modules/information/earphone.c index 6d31811..ce40d81 100755 --- a/modules/information/earphone.c +++ b/modules/information/earphone.c @@ -35,6 +35,7 @@ static int register_earphone_module(void *data); static int unregister_earphone_module(void); +static int wake_up_cb(void *data); Indicator_Icon_Object earphone[INDICATOR_WIN_MAX] = { { @@ -48,7 +49,8 @@ Indicator_Icon_Object earphone[INDICATOR_WIN_MAX] = { .obj_exist = EINA_FALSE, .area = INDICATOR_ICON_AREA_NOTI, .init = register_earphone_module, - .fini = unregister_earphone_module + .fini = unregister_earphone_module, + .wake_up = wake_up_cb }, { .win_type = INDICATOR_WIN_LAND, @@ -61,7 +63,8 @@ Indicator_Icon_Object earphone[INDICATOR_WIN_MAX] = { .obj_exist = EINA_FALSE, .area = INDICATOR_ICON_AREA_NOTI, .init = register_earphone_module, - .fini = unregister_earphone_module + .fini = unregister_earphone_module, + .wake_up = wake_up_cb } }; @@ -70,6 +73,8 @@ static const char *icon_path[] = { "Earphone/B03_Earphone.png", NULL }; +static int updated_while_lcd_off = 0; + static void set_app_state(void* data) { @@ -108,6 +113,14 @@ static void indicator_earphone_change_cb(keynode_t *node, void *data) retif(data == NULL, , "Invalid parameter!"); + if(indicator_util_get_update_flag()==0) + { + updated_while_lcd_off = 1; + DBG("need to update %d",updated_while_lcd_off); + return; + } + updated_while_lcd_off = 0; + ret = vconf_get_int(VCONFKEY_SYSMAN_EARJACK, &status); if (ret == FAIL) { ERR("Failed to get VCONFKEY_MMC_STATE!"); @@ -128,6 +141,18 @@ static void indicator_earphone_change_cb(keynode_t *node, void *data) } } +static int wake_up_cb(void *data) +{ + if(updated_while_lcd_off==0) + { + DBG("ICON WAS NOT UPDATED"); + return OK; + } + + indicator_earphone_change_cb(NULL, data); + return OK; +} + static int register_earphone_module(void *data) { int ret; diff --git a/modules/information/fm_radio.c b/modules/information/fm_radio.c deleted file mode 100755 index 0fc0e30..0000000 --- a/modules/information/fm_radio.c +++ /dev/null @@ -1,145 +0,0 @@ -/* - * Copyright 2012 Samsung Electronics Co., Ltd - * - * Licensed under the Flora License, Version 1.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://floralicense.org/license/ - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - -#include -#include -#include -#include "common.h" -#include "indicator.h" -#include "indicator_icon_util.h" -#include "modules.h" -#include "indicator_ui.h" - -#define ICON_PRIORITY INDICATOR_PRIORITY_NOTI_1 -#define MODULE_NAME "FM_Radio" - -static int register_fm_radio_module(void *data); -static int unregister_fm_radio_module(void); - -Indicator_Icon_Object fm_radio[INDICATOR_WIN_MAX] = { -{ - .win_type = INDICATOR_WIN_PORT, - .type = INDICATOR_IMG_ICON, - .name = MODULE_NAME, - .priority = ICON_PRIORITY, - .always_top = EINA_TRUE, - .exist_in_view = EINA_FALSE, - .txt_obj = {0,}, - .img_obj = {0,}, - .obj_exist = EINA_FALSE, - .area = INDICATOR_ICON_AREA_NOTI, - .init = register_fm_radio_module, - .fini = unregister_fm_radio_module -}, -{ - .win_type = INDICATOR_WIN_LAND, - .type = INDICATOR_IMG_ICON, - .name = MODULE_NAME, - .priority = ICON_PRIORITY, - .always_top = EINA_TRUE, - .exist_in_view = EINA_FALSE, - .txt_obj = {0,}, - .img_obj = {0,}, - .obj_exist = EINA_FALSE, - .area = INDICATOR_ICON_AREA_NOTI, - .init = register_fm_radio_module, - .fini = unregister_fm_radio_module -} -}; - -static char *icon_path[] = { - "Background playing/B03_Backgroundplaying_FMradio.png", - NULL -}; - -static void set_app_state(void* data) -{ - int i = 0; - - for (i=0 ; i #include +#include #include #include "common.h" #include "indicator.h" @@ -76,7 +77,6 @@ struct noti_status { static Eina_List *status_list; -static int noti_cnt; static void set_app_state(void* data) { @@ -120,10 +120,25 @@ static void free_image_icon(struct noti_status *data) if (data->icon[i]) { if (data->icon[i]->img_obj.data) - free((char *)data->icon[i]->img_obj.data); + { + free(data->icon[i]->img_obj.data); + } + + if (data->icon[i]->name) + { + free(data->icon[i]->name); + } free(data->icon[i]); } + + } + + if(data!=NULL) + { + INFO("noti data free!"); + free(data); + data = NULL; } } @@ -155,13 +170,16 @@ static void show_image_icon(struct noti_status *data) } DBG("Get Path of Notication %s : %s",data->icon[0]->name, icon_path); if (icon_path == NULL - || !ecore_file_exists(icon_path)) { + || !ecore_file_exists(icon_path)) + { int i = 0; for(i=0 ; iicon[i]->img_obj.data = NULL; } - } else { + } + else + { show_icon_with_path(data, icon_path); } } @@ -172,7 +190,6 @@ static void show_image_icon_all( void ) { Eina_List *l; struct noti_status *data; - int total = 0, noti_count = 0; EINA_LIST_REVERSE_FOREACH(status_list, l, data) { if (data) { @@ -186,7 +203,7 @@ static void _icon_add(struct noti_status *noti_data, const char *name, void *dat { int i = 0; DBG("noti_data %x",noti_data); - retif(noti_data == NULL || data == NULL, NULL, "Invalid parameter!"); + retif(noti_data == NULL || data == NULL, , "Invalid parameter!"); for (i=0 ; i= 0) { - noti_cnt = cnt; - indicator_util_event_count_set(noti_cnt, noti[0].ad); - } -} - -static int _get_noti_cnt(void) -{ - return noti_cnt; -} - -static void _update_all_status(void) +static void _remove_all_noti(void) { Eina_List *l; - struct noti_status *data; - int total = 0, noti_count = 0; - - EINA_LIST_FOREACH(status_list, l, data) { - if (data) { - DBG("%s is updated! Cnt : %d", - data->icon[0]->name, data->cnt); - notification_get_count(NOTIFICATION_TYPE_NONE, NULL, - NOTIFICATION_GROUP_ID_NONE, - NOTIFICATION_PRIV_ID_NONE, - ¬i_count); - data->cnt = noti_count; - - if (data->cnt == 0) - hide_image_icon(data); - else - total += data->cnt; - } + struct noti_status *n_data; + EINA_LIST_FOREACH(status_list, l, n_data) { + DBG("Clear Status List : %s", n_data->icon[0]->name); + hide_image_icon(n_data); + free_image_icon(n_data); + status_list = eina_list_remove_list(status_list, l); } + eina_list_free(status_list); + } static void _change_icon_status(void *data, notification_list_h noti_list) { - int cnt = 0, new_cnt = 0; + int new_cnt = 0; Eina_List *l = NULL; notification_h noti = NULL; struct noti_status *n_data = NULL; @@ -319,7 +313,6 @@ static void _change_icon_status(void *data, notification_list_h noti_list) status->noti = noti; insert_icon_list(status); status_list = eina_list_append(status_list, status); - cnt = _get_noti_cnt() + status->cnt; } } } @@ -330,20 +323,29 @@ static void _change_icon_status(void *data, notification_list_h noti_list) void update_noti_module_new(void *data, notification_type_e type) { notification_list_h list = NULL; + notification_list_h noti_list_head = NULL; notification_error_e noti_err = NOTIFICATION_ERROR_NONE; int get_event_count = indicator_util_max_visible_event_count(INDICATOR_WIN_LAND); retif(data == NULL, , "Invalid parameter!"); - noti_err = notification_get_grouping_list(NOTIFICATION_TYPE_NONE, + INFO("update_noti_module_new %d", type); + + noti_err = notification_get_list(NOTIFICATION_TYPE_NONE, get_event_count, &list); + noti_list_head = list; + if (noti_err != NOTIFICATION_ERROR_NONE || list == NULL) { - _update_all_status(); + INFO("update_noti_module_new %d %x", noti_err, list); + _remove_all_noti(); + notification_free_list(noti_list_head); return; } _change_icon_status(data, list); + + notification_free_list(noti_list_head); } diff --git a/modules/information/voice_recorder.c b/modules/information/voice_recorder.c index 8b8d08e..64d25be 100755 --- a/modules/information/voice_recorder.c +++ b/modules/information/voice_recorder.c @@ -32,7 +32,11 @@ static int register_voice_recorder_module(void *data); static int unregister_voice_recorder_module(void); -static void mctrl_monitor_cb(int action, const char *name, void *data); +static int mctrl_monitor_cb(int action, const char *name, void *data); +static int wake_up_cb(void *data); + +static int vr_registerd = 0; +static int updated_while_lcd_off = 0; Indicator_Icon_Object voice_recorder[INDICATOR_WIN_MAX] = { { @@ -48,7 +52,8 @@ Indicator_Icon_Object voice_recorder[INDICATOR_WIN_MAX] = { .area = INDICATOR_ICON_AREA_NOTI, .init = register_voice_recorder_module, .fini = unregister_voice_recorder_module, - .minictrl_control = mctrl_monitor_cb + .minictrl_control = mctrl_monitor_cb, + .wake_up = wake_up_cb }, { .win_type = INDICATOR_WIN_LAND, @@ -63,7 +68,8 @@ Indicator_Icon_Object voice_recorder[INDICATOR_WIN_MAX] = { .area = INDICATOR_ICON_AREA_NOTI, .init = register_voice_recorder_module, .fini = unregister_voice_recorder_module, - .minictrl_control = mctrl_monitor_cb + .minictrl_control = mctrl_monitor_cb, + .wake_up = wake_up_cb } }; @@ -119,6 +125,14 @@ static void show_voicerecoder_icon(void *data) retif(data == NULL, , "Invalid parameter!"); + if(indicator_util_get_update_flag()==0) + { + updated_while_lcd_off = 1; + DBG("need to update %d",updated_while_lcd_off); + return; + } + updated_while_lcd_off = 0; + ret = vconf_get_int(VCONFKEY_VOICERECORDER_STATE, &status); if (ret == OK) { INFO("VOICE RECORDER state: %d", status); @@ -142,42 +156,68 @@ static void show_voicerecoder_icon(void *data) static void indicator_voice_recorder_change_cb(keynode_t *node, void *data) { - int status; - int ret; - retif(data == NULL, , "Invalid parameter!"); show_voicerecoder_icon(data); return; } -static void mctrl_monitor_cb(int action, const char *name, void *data) +static int mctrl_monitor_cb(int action, const char *name, void *data) { - retif(!data, , "data is NULL"); - retif(!name, , "name is NULL"); + retif(!data, FAIL, "data is NULL"); + retif(!name, FAIL, "name is NULL"); if(strncmp(name,MINICONTROL_NAME,strlen(MINICONTROL_NAME))!=0) { ERR("_mctrl_monitor_cb: no VR %s",name); - return; + return FAIL; } DBG("_mctrl_monitor_cb:%s %d",name,action); switch (action) { case MINICONTROL_ACTION_START: + vr_registerd = 1; vconf_notify_key_changed(VCONFKEY_VOICERECORDER_STATE, indicator_voice_recorder_change_cb, data); show_voicerecoder_icon(data); break; case MINICONTROL_ACTION_STOP: - hide_image_icon(); + vr_registerd = 0; + + if(indicator_util_get_update_flag()==1) + { + hide_image_icon(); + } + vconf_ignore_key_changed(VCONFKEY_VOICERECORDER_STATE, indicator_voice_recorder_change_cb); break; default: break; } + + return OK; +} + +static int wake_up_cb(void *data) +{ + if(updated_while_lcd_off==0) + { + DBG("ICON WAS NOT UPDATED"); + return OK; + } + + if(vr_registerd==1) + { + indicator_voice_recorder_change_cb(NULL, data); + } + else + { + hide_image_icon(); + } + return OK; } + static int register_voice_recorder_module(void *data) { diff --git a/modules/modules.c b/modules/modules.c index 94f15c3..47e821b 100755 --- a/modules/modules.c +++ b/modules/modules.c @@ -17,29 +17,24 @@ #include "modules.h" -#define INDICATOR_MODULE_NUMBERS 24 +#define INDICATOR_MODULE_NUMBERS 22 extern Indicator_Icon_Object home[INDICATOR_WIN_MAX]; extern Indicator_Icon_Object rssi[INDICATOR_WIN_MAX]; -extern Indicator_Icon_Object roaming[INDICATOR_WIN_MAX]; extern Indicator_Icon_Object usb[INDICATOR_WIN_MAX]; extern Indicator_Icon_Object wifi[INDICATOR_WIN_MAX]; extern Indicator_Icon_Object mobile_hotspot[INDICATOR_WIN_MAX]; extern Indicator_Icon_Object conn[INDICATOR_WIN_MAX]; -extern Indicator_Icon_Object trnsfr[INDICATOR_WIN_MAX]; extern Indicator_Icon_Object sos[INDICATOR_WIN_MAX]; extern Indicator_Icon_Object call[INDICATOR_WIN_MAX]; extern Indicator_Icon_Object call_divert[INDICATOR_WIN_MAX]; -extern Indicator_Icon_Object active_sync[INDICATOR_WIN_MAX]; extern Indicator_Icon_Object mmc[INDICATOR_WIN_MAX]; extern Indicator_Icon_Object noti[INDICATOR_WIN_MAX]; extern Indicator_Icon_Object useralarm[INDICATOR_WIN_MAX]; -extern Indicator_Icon_Object fm_radio[INDICATOR_WIN_MAX]; extern Indicator_Icon_Object mp3_play[INDICATOR_WIN_MAX]; extern Indicator_Icon_Object voice_recorder[INDICATOR_WIN_MAX]; extern Indicator_Icon_Object silent[INDICATOR_WIN_MAX]; extern Indicator_Icon_Object bluetooth[INDICATOR_WIN_MAX]; -extern Indicator_Icon_Object rotate[INDICATOR_WIN_MAX]; extern Indicator_Icon_Object gps[INDICATOR_WIN_MAX]; extern Indicator_Icon_Object nfc[INDICATOR_WIN_MAX]; extern Indicator_Icon_Object wifi_direct[INDICATOR_WIN_MAX]; @@ -50,11 +45,12 @@ extern Indicator_Icon_Object earphone[INDICATOR_WIN_MAX]; static Indicator_Icon_Object *modules[INDICATOR_WIN_MAX][INDICATOR_MODULE_NUMBERS] = { { + &sysclock[0], + &battery[0], + &wifi[0], &rssi[0], - &roaming[0], &sos[0], &usb[0], - &wifi[0], &mobile_hotspot[0], &conn[0], &call[0], @@ -62,7 +58,6 @@ static Indicator_Icon_Object *modules[INDICATOR_WIN_MAX][INDICATOR_MODULE_NUMBER &mmc[0], ¬i[0], &useralarm[0], - &fm_radio[0], &mp3_play[0], &voice_recorder[0], &silent[0], @@ -70,17 +65,16 @@ static Indicator_Icon_Object *modules[INDICATOR_WIN_MAX][INDICATOR_MODULE_NUMBER &gps[0], &nfc[0], &wifi_direct[0], - &sysclock[0], - &battery[0], &earphone[0], NULL }, { + &sysclock[1], + &battery[1], + &wifi[1], &rssi[1], - &roaming[1], &sos[1], &usb[1], - &wifi[1], &mobile_hotspot[1], &conn[1], &call[1], @@ -88,7 +82,6 @@ static Indicator_Icon_Object *modules[INDICATOR_WIN_MAX][INDICATOR_MODULE_NUMBER &mmc[1], ¬i[1], &useralarm[1], - &fm_radio[1], &mp3_play[1], &voice_recorder[1], &silent[1], @@ -96,8 +89,6 @@ static Indicator_Icon_Object *modules[INDICATOR_WIN_MAX][INDICATOR_MODULE_NUMBER &gps[1], &nfc[1], &wifi_direct[1], - &sysclock[1], - &battery[1], &earphone[1], NULL } @@ -205,3 +196,18 @@ void indicator_minictrl_control_modules(int action, const char* name, void *data } } } + +void indicator_wake_up_modules(void *data) +{ + int i; + int j = 0; + + for(j=0;jwake_up) + modules[j][i]->wake_up(data); + } + } +} + diff --git a/modules/modules.h b/modules/modules.h index 086a22b..8de5f6b 100755 --- a/modules/modules.h +++ b/modules/modules.h @@ -31,5 +31,6 @@ void indicator_hib_enter_modules(void *data); void indicator_hib_leave_modules(void *data); void indicator_lang_changed_modules(void *data); void indicator_region_changed_modules(void *data); - +void indicator_minictrl_control_modules(int action, const char* name, void *data); +void indicator_wake_up_modules(void *data); #endif diff --git a/modules/network/rssi.c b/modules/network/rssi.c index e0d3ebc..59afe8c 100755 --- a/modules/network/rssi.c +++ b/modules/network/rssi.c @@ -37,6 +37,7 @@ static int unregister_rssi_module(void); static int hib_enter_rssi_module(void); static int hib_leave_rssi_module(void *data); static int language_changed_cb(void *data); +static int wake_up_cb(void *data); Indicator_Icon_Object rssi[INDICATOR_WIN_MAX] = { { @@ -54,7 +55,8 @@ Indicator_Icon_Object rssi[INDICATOR_WIN_MAX] = { .fini = unregister_rssi_module, .hib_enter = hib_enter_rssi_module, .hib_leave = hib_leave_rssi_module, - .lang_changed = language_changed_cb + .lang_changed = language_changed_cb, + .wake_up = wake_up_cb }, { .win_type = INDICATOR_WIN_LAND, @@ -71,7 +73,8 @@ Indicator_Icon_Object rssi[INDICATOR_WIN_MAX] = { .fini = unregister_rssi_module, .hib_enter = hib_enter_rssi_module, .hib_leave = hib_leave_rssi_module, - .lang_changed = language_changed_cb + .lang_changed = language_changed_cb, + .wake_up = wake_up_cb } }; @@ -91,6 +94,7 @@ enum { }; static int bRoaming = 0; +static int updated_while_lcd_off = 0; static const char *icon_path[LEVEL_MAX] = { [LEVEL_RSSI_0] = "RSSI/B03_RSSI_Sim_00.png", @@ -182,6 +186,14 @@ static void indicator_rssi_change_cb(keynode_t *node, void *data) retif(data == NULL, , "Invalid parameter!"); + if(indicator_util_get_update_flag()==0) + { + updated_while_lcd_off = 1; + DBG("need to update %d",updated_while_lcd_off); + return; + } + updated_while_lcd_off = 0; + ret = vconf_get_bool(VCONFKEY_TELEPHONY_FLIGHT_MODE, &status); if (ret == OK && status == TRUE) { INFO("RSSI Status: Flight Mode"); @@ -240,6 +252,19 @@ static int language_changed_cb(void *data) return OK; } +static int wake_up_cb(void *data) +{ + if(updated_while_lcd_off==0) + { + DBG("ICON WAS NOT UPDATED"); + return OK; + } + + indicator_rssi_change_cb(NULL, data); + return OK; +} + + static int register_rssi_module(void *data) { int r = 0, ret = -1; diff --git a/modules/power/battery.c b/modules/power/battery.c index 77bc6ea..b4f6dce 100755 --- a/modules/power/battery.c +++ b/modules/power/battery.c @@ -36,6 +36,7 @@ static int register_battery_module(void *data); static int unregister_battery_module(void); +static int wake_up_cb(void *data); Indicator_Icon_Object battery[INDICATOR_WIN_MAX] = { { @@ -50,7 +51,8 @@ Indicator_Icon_Object battery[INDICATOR_WIN_MAX] = { .img_obj = {0,0,BATTERY_ICON_WIDTH,BATTERY_ICON_HEIGHT}, .obj_exist = EINA_FALSE, .init = register_battery_module, - .fini = unregister_battery_module + .fini = unregister_battery_module, + .wake_up = wake_up_cb }, { .win_type = INDICATOR_WIN_LAND, @@ -64,7 +66,8 @@ Indicator_Icon_Object battery[INDICATOR_WIN_MAX] = { .img_obj = {0,0,BATTERY_ICON_WIDTH,BATTERY_ICON_HEIGHT}, .obj_exist = EINA_FALSE, .init = register_battery_module, - .fini = unregister_battery_module + .fini = unregister_battery_module, + .wake_up = wake_up_cb } }; @@ -76,7 +79,6 @@ enum { static int clock_mode = INDICATOR_CLOCK_MODE_12H; - enum { BATTERY_ICON_WIDTH_12H, BATTERY_ICON_WIDTH_24H, @@ -193,37 +195,11 @@ static const char *fuel_guage_icon_path[BATTERY_ICON_WIDTH_NUM][FUEL_GAUGE_LV_NU [BATTERY_ICON_WIDTH_24H][FUEL_GAUGE_LV_20] = "Power/24H/B03_battery_animation_24h_20.png", }; -static const char *fuel_guage_charging_icon_path[FUEL_GAUGE_LV_NUM] = { - [FUEL_GAUGE_LV_0] = "Power/battery_20/B03_Power_charging_00.png", - [FUEL_GAUGE_LV_1] = "Power/battery_20/B03_Power_charging_01.png", - [FUEL_GAUGE_LV_2] = "Power/battery_20/B03_Power_charging_02.png", - [FUEL_GAUGE_LV_3] = "Power/battery_20/B03_Power_charging_03.png", - [FUEL_GAUGE_LV_4] = "Power/battery_20/B03_Power_charging_04.png", - [FUEL_GAUGE_LV_5] = "Power/battery_20/B03_Power_charging_05.png", - [FUEL_GAUGE_LV_6] = "Power/battery_20/B03_Power_charging_06.png", - [FUEL_GAUGE_LV_7] = "Power/battery_20/B03_Power_charging_07.png", - [FUEL_GAUGE_LV_8] = "Power/battery_20/B03_Power_charging_08.png", - [FUEL_GAUGE_LV_9] = "Power/battery_20/B03_Power_charging_09.png", - [FUEL_GAUGE_LV_10] = "Power/battery_20/B03_Power_charging_10.png", - [FUEL_GAUGE_LV_11] = "Power/battery_20/B03_Power_charging_11.png", - [FUEL_GAUGE_LV_12] = "Power/battery_20/B03_Power_charging_12.png", - [FUEL_GAUGE_LV_13] = "Power/battery_20/B03_Power_charging_13.png", - [FUEL_GAUGE_LV_14] = "Power/battery_20/B03_Power_charging_14.png", - [FUEL_GAUGE_LV_15] = "Power/battery_20/B03_Power_charging_15.png", - [FUEL_GAUGE_LV_16] = "Power/battery_20/B03_Power_charging_16.png", - [FUEL_GAUGE_LV_17] = "Power/battery_20/B03_Power_charging_17.png", - [FUEL_GAUGE_LV_18] = "Power/battery_20/B03_Power_charging_18.png", - [FUEL_GAUGE_LV_19] = "Power/battery_20/B03_Power_charging_19.png", - [FUEL_GAUGE_LV_20] = "Power/battery_20/B03_Power_charging_20.png", -}; - struct battery_level_info { int current_level; int current_capa; int min_level; int max_level; - const char **icon_path; - const char **charing_icon_path; }; static struct battery_level_info _level; @@ -338,8 +314,6 @@ static void indicator_battery_level_init(void) _level.current_level = -1; _level.current_capa = -1; _level.max_level = FUEL_GAUGE_LV_MAX; - _level.icon_path = fuel_guage_icon_path; - _level.charing_icon_path = fuel_guage_icon_path; indicator_battery_get_time_format(); } @@ -448,7 +422,6 @@ static void indicator_battery_check_percentage_option(void *data) ERR("Fail to get [%s: %d]", VCONFKEY_SETAPPL_BATTERY_PERCENTAGE_BOOL, ret); - int i = 0; for(i=0 ; i -#include -#include -#include -#include "common.h" -#include "indicator.h" -#include "indicator_ui.h" -#include "modules.h" -#include "indicator_icon_util.h" - -#define ICON_PRIORITY INDICATOR_PRIORITY_NOTI_2 -#define MODULE_NAME "transfer" -#define TIMER_INTERVAL 0.03 - -static int register_trnsfr_module(void *data); -static int unregister_trnsfr_module(void); - -Indicator_Icon_Object trnsfr[INDICATOR_WIN_MAX] = { -{ - .win_type = INDICATOR_WIN_PORT, - .type = INDICATOR_IMG_ICON, - .name = MODULE_NAME, - .priority = ICON_PRIORITY, - .always_top = EINA_FALSE, - .exist_in_view = EINA_FALSE, - .txt_obj = {0,}, - .img_obj = {0,}, - .obj_exist = EINA_FALSE, - .area = INDICATOR_ICON_AREA_NOTI, - .init = register_trnsfr_module, - .fini = unregister_trnsfr_module -}, -{ - .win_type = INDICATOR_WIN_LAND, - .type = INDICATOR_IMG_ICON, - .name = MODULE_NAME, - .priority = ICON_PRIORITY, - .always_top = EINA_FALSE, - .exist_in_view = EINA_FALSE, - .txt_obj = {0,}, - .img_obj = {0,}, - .obj_exist = EINA_FALSE, - .area = INDICATOR_ICON_AREA_NOTI, - .init = register_trnsfr_module, - .fini = unregister_trnsfr_module -} -}; - -static const char *icon_path[] = { - "Processing/B03_Processing_01.png", - "Processing/B03_Processing_02.png", - "Processing/B03_Processing_03.png", - "Processing/B03_Processing_04.png", - "Processing/B03_Processing_05.png", - "Processing/B03_Processing_06.png", - "Processing/B03_Processing_07.png", - "Processing/B03_Processing_08.png", - "Processing/B03_Processing_09.png", - "Processing/B03_Processing_10.png", - "Processing/B03_Processing_11.png", - "Processing/B03_Processing_12.png", - "Processing/B03_Processing_13.png", - "Processing/B03_Processing_14.png", - "Processing/B03_Processing_15.png", - "Processing/B03_Processing_16.png", - "Processing/B03_Processing_17.png", - "Processing/B03_Processing_18.png", - "Processing/B03_Processing_19.png", - "Processing/B03_Processing_20.png", - "Processing/B03_Processing_21.png", - "Processing/B03_Processing_22.png", - "Processing/B03_Processing_23.png", - "Processing/B03_Processing_24.png", - "Processing/B03_Processing_25.png", - "Processing/B03_Processing_26.png", - "Processing/B03_Processing_27.png", - "Processing/B03_Processing_28.png", - "Processing/B03_Processing_29.png", - "Processing/B03_Processing_30.png", - NULL -}; - -static Ecore_Timer *timer = NULL; -static unsigned int process_req_cnt = 0; - -static void delete_timer(void) -{ - if (timer != NULL) { - ecore_timer_del(timer); - timer = NULL; - } -} - -static void show_image_icon(void *data, int index) -{ - int i = 0; - - for (i=0 ; i -#include -#include -#include "common.h" -#include "indicator.h" -#include "indicator_ui.h" -#include "modules.h" -#include "indicator_icon_util.h" - -#define ICON_PRIORITY INDICATOR_PRIORITY_NOTI_2 -#define MODULE_NAME "rotate-lock" - -static int register_rotate_module(void *data); -static int unregister_rotate_module(void); -static int hib_enter_rotate_module(void); -static int hib_leave_rotate_module(void *data); - -Indicator_Icon_Object rotate[INDICATOR_WIN_MAX] = { -{ - .win_type = INDICATOR_WIN_PORT, - .type = INDICATOR_IMG_ICON, - .name = MODULE_NAME, - .priority = ICON_PRIORITY, - .always_top = EINA_FALSE, - .exist_in_view = EINA_FALSE, - .txt_obj = {0,}, - .img_obj = {0,}, - .obj_exist = EINA_FALSE, - .area = INDICATOR_ICON_AREA_NOTI, - .init = register_rotate_module, - .fini = unregister_rotate_module, - .hib_enter = hib_enter_rotate_module, - .hib_leave = hib_leave_rotate_module -}, -{ - .win_type = INDICATOR_WIN_LAND, - .type = INDICATOR_IMG_ICON, - .name = MODULE_NAME, - .priority = ICON_PRIORITY, - .always_top = EINA_FALSE, - .exist_in_view = EINA_FALSE, - .txt_obj = {0,}, - .img_obj = {0,}, - .obj_exist = EINA_FALSE, - .area = INDICATOR_ICON_AREA_NOTI, - .init = register_rotate_module, - .fini = unregister_rotate_module, - .hib_enter = hib_enter_rotate_module, - .hib_leave = hib_leave_rotate_module -} - -}; - -static char *icon_path[] = { - "Rotation locked/B03_Rotationlocked.png", - NULL -}; - -static void set_app_state(void* data) -{ - int i = 0; - - for (i=0 ; i