[Tizen 3.0] 2.4 source code merge 90/40790/3 accepted/tizen/mobile/20150622.091633 submit/tizen_mobile/20150622.090813
authorEunyoung Lee <ey928.lee@samsung.com>
Tue, 9 Jun 2015 05:32:38 +0000 (14:32 +0900)
committerEunyoung Lee <ey928.lee@samsung.com>
Thu, 11 Jun 2015 05:46:09 +0000 (14:46 +0900)
Change-Id: I96c92f8a4ad3f27eca241d90a8bbb0b6fffc3e35

663 files changed:
AUTHORS [changed mode: 0644->0755]
CMakeLists.txt
LICENSE [new file with mode: 0644]
LICENSE.Flora [deleted file]
NOTICE [changed mode: 0644->0755]
daemon/box.c [new file with mode: 0644]
daemon/box.h [new file with mode: 0644]
daemon/common.h [changed mode: 0755->0644]
daemon/icon.c [new file with mode: 0644]
daemon/icon.h [new file with mode: 0644]
daemon/indicator.h [changed mode: 0755->0644]
daemon/indicator_box_util.c [deleted file]
daemon/indicator_box_util.h [deleted file]
daemon/indicator_icon_list.c [deleted file]
daemon/indicator_icon_list.h [deleted file]
daemon/indicator_icon_util.c [deleted file]
daemon/indicator_icon_util.h [deleted file]
daemon/indicator_ui.c [deleted file]
daemon/indicator_ui.h [deleted file]
daemon/indicator_util.c [deleted file]
daemon/indicator_util.h [deleted file]
daemon/list.c [new file with mode: 0644]
daemon/list.h [new file with mode: 0644]
daemon/log.h [new file with mode: 0755]
daemon/main.c [new file with mode: 0644]
daemon/main.h [new file with mode: 0644]
daemon/message.c [new file with mode: 0644]
daemon/message.h [new file with mode: 0644]
daemon/noti_win.c [new file with mode: 0644]
daemon/noti_win.h [new file with mode: 0644]
daemon/plmn.c [new file with mode: 0644]
daemon/plmn.h [new file with mode: 0644]
daemon/ticker.c [new file with mode: 0644]
daemon/ticker.h [new file with mode: 0644]
daemon/tts.c [new file with mode: 0644]
daemon/tts.h [new file with mode: 0644]
daemon/util.c [new file with mode: 0644]
daemon/util.h [new file with mode: 0644]
data/CMakeLists.txt
data/indicator.conf [changed mode: 0755->0644]
data/indicator.desktop.in [changed mode: 0755->0644]
data/indicator.sh.in [new file with mode: 0644]
data/indicator.xml.in [changed mode: 0755->0644]
data/org.tizen.indicator_ChangeableColorInfo.xml [new file with mode: 0644]
data/org.tizen.indicator_ChangeableFontInfo.xml [new file with mode: 0644]
data/resource/CMakeLists.txt [changed mode: 0755->0644]
data/resource/animated_icon/noti_download_01.png [new file with mode: 0755]
data/resource/animated_icon/noti_download_02.png [new file with mode: 0755]
data/resource/animated_icon/noti_download_03.png [new file with mode: 0755]
data/resource/animated_icon/noti_download_04.png [new file with mode: 0755]
data/resource/animated_icon/noti_download_05.png [new file with mode: 0755]
data/resource/animated_icon/noti_download_complete.png [new file with mode: 0755]
data/resource/animated_icon/noti_install_01.png [new file with mode: 0755]
data/resource/animated_icon/noti_install_02.png [new file with mode: 0755]
data/resource/animated_icon/noti_install_03.png [new file with mode: 0755]
data/resource/animated_icon/noti_install_04.png [new file with mode: 0755]
data/resource/animated_icon/noti_install_05.png [new file with mode: 0755]
data/resource/animated_icon/noti_install_complete.png [new file with mode: 0755]
data/resource/animated_icon/noti_upload_01.png [new file with mode: 0755]
data/resource/animated_icon/noti_upload_02.png [new file with mode: 0755]
data/resource/animated_icon/noti_upload_03.png [new file with mode: 0755]
data/resource/animated_icon/noti_upload_04.png [new file with mode: 0755]
data/resource/animated_icon/noti_upload_05.png [new file with mode: 0755]
data/resource/animated_icon/noti_upload_complete.png [new file with mode: 0755]
data/resource/color_classes.edc [new file with mode: 0644]
data/resource/icons/Account/B03_samsung_account.png [new file with mode: 0755]
data/resource/icons/Account/B03_tizen_account.png [new file with mode: 0755]
data/resource/icons/Alarm/B03_Alarm.png
data/resource/icons/Alarm/B03_snooze.png [new file with mode: 0755]
data/resource/icons/App tray/B03_always.PNG [deleted file]
data/resource/icons/App tray/B03_always_dim.PNG [deleted file]
data/resource/icons/App tray/B03_always_press.PNG [deleted file]
data/resource/icons/App tray/B03_app_tray.PNG [deleted file]
data/resource/icons/App tray/B03_app_tray_dim.PNG [deleted file]
data/resource/icons/App tray/B03_app_tray_press.PNG [deleted file]
data/resource/icons/B03_notification.png [new file with mode: 0644]
data/resource/icons/B03_notification_press.png [new file with mode: 0644]
data/resource/icons/B03_search.png [new file with mode: 0644]
data/resource/icons/B03_search_press.png [new file with mode: 0644]
data/resource/icons/Background playing/B03_Backgroundplaying_FMradio.png [changed mode: 0755->0644]
data/resource/icons/Background playing/B03_Backgroundplaying_Voicerecorder.png [new file with mode: 0644]
data/resource/icons/Background playing/B03_Backgroundplaying_music_paused.png [new file with mode: 0644]
data/resource/icons/Background playing/B03_Backgroundplaying_music_playing.png [new file with mode: 0644]
data/resource/icons/Background playing/B03_Backgroundplaying_voicerecorder_Recording.png [deleted file]
data/resource/icons/Background playing/B03_Backgroundplaying_voicerecorder_paused.png [deleted file]
data/resource/icons/Background playing/B03_Backgroundplaying_voicerecorder_player_pause.png [new file with mode: 0644]
data/resource/icons/Background playing/B03_Backgroundplaying_voicerecorder_player_play.png [new file with mode: 0644]
data/resource/icons/Bluetooth, NFC, GPS/B03-4_BT_activated.png [deleted file]
data/resource/icons/Bluetooth, NFC, GPS/B03-4_BT_activated_on.png [changed mode: 0755->0644]
data/resource/icons/Bluetooth, NFC, GPS/B03_BT_On&Connected&headset.png
data/resource/icons/Bluetooth, NFC, GPS/B03_BT_On&Connected.png
data/resource/icons/Bluetooth, NFC, GPS/B03_BT_On&Notconnected.png
data/resource/icons/Bluetooth, NFC, GPS/B03_BT_activated.png [new file with mode: 0755]
data/resource/icons/Bluetooth, NFC, GPS/B03_BT_activated_on.png [new file with mode: 0755]
data/resource/icons/Bluetooth, NFC, GPS/B03_BT_tethering-network.png [new file with mode: 0755]
data/resource/icons/Bluetooth, NFC, GPS/B03_BT_tethering_network.png [new file with mode: 0755]
data/resource/icons/Bluetooth, NFC, GPS/B03_GPS_On.png
data/resource/icons/Bluetooth, NFC, GPS/B03_GPS_Searching.png [changed mode: 0755->0644]
data/resource/icons/Bluetooth, NFC, GPS/B03_NFC_On.png
data/resource/icons/Bluetooth, NFC, GPS/B03_Wi-fi_direct On_connected.png [deleted file]
data/resource/icons/Bluetooth, NFC, GPS/B03_Wi-fi_direct On_not connected.png [deleted file]
data/resource/icons/Bluetooth, NFC, GPS/B03_Wi-fi_direct-On_connected.png [new file with mode: 0755]
data/resource/icons/Bluetooth, NFC, GPS/B03_Wi-fi_direct-On_not-connected.png [new file with mode: 0755]
data/resource/icons/Bluetooth, NFC, GPS/B03_bt_headset.png [new file with mode: 0755]
data/resource/icons/Call divert/B03_Call_divert_Sim_1.png [new file with mode: 0755]
data/resource/icons/Call divert/B03_Call_divert_Sim_2.png [new file with mode: 0755]
data/resource/icons/Call divert/B03_Call_divert_Sim_MMS.png [new file with mode: 0755]
data/resource/icons/Call divert/B03_Call_divert_Sim_SMS.png [new file with mode: 0755]
data/resource/icons/Call divert/B03_Call_divert_Sim_data.png [new file with mode: 0755]
data/resource/icons/Call divert/B03_Call_divert_Sim_global.png [new file with mode: 0755]
data/resource/icons/Call divert/B03_Call_divert_Sim_heart.png [new file with mode: 0755]
data/resource/icons/Call divert/B03_Call_divert_Sim_home.png [new file with mode: 0755]
data/resource/icons/Call divert/B03_Call_divert_Sim_messages.png [new file with mode: 0755]
data/resource/icons/Call divert/B03_Call_divert_Sim_office.png [new file with mode: 0755]
data/resource/icons/Call divert/B03_Call_divert_Sim_phone.png [new file with mode: 0755]
data/resource/icons/Call divert/B03_Call_divert_default.png [new file with mode: 0755]
data/resource/icons/Call/B03_Call_Duringcall.png
data/resource/icons/Call/B03_Call_Missedcall.png
data/resource/icons/Call/B03_Call_Mute.png [new file with mode: 0755]
data/resource/icons/Call/B03_Call_SOSmessge_active.png
data/resource/icons/Call/B03_Call_Speaker_on.png [new file with mode: 0755]
data/resource/icons/Call/B03_Call_bluetooth.png [new file with mode: 0755]
data/resource/icons/Cloud/B03_cloud.png [new file with mode: 0755]
data/resource/icons/Connection Latin/B03_conection_latin_UPdownload.png [new file with mode: 0755]
data/resource/icons/Connection Latin/B03_connection_latin_3G.png [new file with mode: 0755]
data/resource/icons/Connection Latin/B03_connection_latin_4G.png [new file with mode: 0755]
data/resource/icons/Connection Latin/B03_connection_latin_E.png [new file with mode: 0755]
data/resource/icons/Connection Latin/B03_connection_latin_GSM.png [new file with mode: 0755]
data/resource/icons/Connection Latin/B03_connection_latin_H+.png [new file with mode: 0755]
data/resource/icons/Connection Latin/B03_connection_latin_H.png [new file with mode: 0755]
data/resource/icons/Connection Latin/B03_connection_latin_LimitedService.png [new file with mode: 0755]
data/resource/icons/Connection Latin/B03_latin_3G.png [new file with mode: 0755]
data/resource/icons/Connection Latin/B03_latin_4G.png [new file with mode: 0755]
data/resource/icons/Connection Latin/B03_latin_E.png [new file with mode: 0755]
data/resource/icons/Connection Latin/B03_latin_GSM.png [new file with mode: 0755]
data/resource/icons/Connection Latin/B03_latin_H+.png [new file with mode: 0755]
data/resource/icons/Connection Latin/B03_latin_H.png [new file with mode: 0755]
data/resource/icons/Connection Latin/B03_latin_LimitedService.png [new file with mode: 0755]
data/resource/icons/Connection/B03_1x.png [new file with mode: 0755]
data/resource/icons/Connection/B03_3G+.png [new file with mode: 0755]
data/resource/icons/Connection/B03_3G.png [new file with mode: 0755]
data/resource/icons/Connection/B03_4G.png [new file with mode: 0755]
data/resource/icons/Connection/B03_CDMA.png [new file with mode: 0755]
data/resource/icons/Connection/B03_E.png [new file with mode: 0755]
data/resource/icons/Connection/B03_EVDO.png [new file with mode: 0755]
data/resource/icons/Connection/B03_GPRS.png [new file with mode: 0755]
data/resource/icons/Connection/B03_GSM.png [new file with mode: 0755]
data/resource/icons/Connection/B03_H+.png [new file with mode: 0755]
data/resource/icons/Connection/B03_H.png [new file with mode: 0755]
data/resource/icons/Connection/B03_Highspeed.png [new file with mode: 0755]
data/resource/icons/Connection/B03_LTE.png [new file with mode: 0755]
data/resource/icons/Connection/B03_MobileAP_connected.png
data/resource/icons/Connection/B03_MobileAP_connected_01.png
data/resource/icons/Connection/B03_MobileAP_connected_02.png
data/resource/icons/Connection/B03_MobileAP_connected_03.png
data/resource/icons/Connection/B03_MobileAP_connected_04.png
data/resource/icons/Connection/B03_MobileAP_connected_05.png
data/resource/icons/Connection/B03_MobileAP_connected_06.png
data/resource/icons/Connection/B03_MobileAP_connected_07.png
data/resource/icons/Connection/B03_MobileAP_connected_08.png
data/resource/icons/Connection/B03_MobileAP_connected_09.png
data/resource/icons/Connection/B03_MobileAP_connected_10.png [new file with mode: 0755]
data/resource/icons/Connection/B03_MobileAP_connected_11.png [new file with mode: 0755]
data/resource/icons/Connection/B03_MobileAP_connected_12.png [new file with mode: 0755]
data/resource/icons/Connection/B03_MobileAP_connected_13.png [new file with mode: 0755]
data/resource/icons/Connection/B03_MobileAP_connected_14.png [new file with mode: 0755]
data/resource/icons/Connection/B03_MobileAP_connected_15.png [new file with mode: 0755]
data/resource/icons/Connection/B03_MobileAP_connected_16.png [new file with mode: 0755]
data/resource/icons/Connection/B03_MobileAP_connected_17.png [new file with mode: 0755]
data/resource/icons/Connection/B03_MobileAP_connected_18.png [new file with mode: 0755]
data/resource/icons/Connection/B03_MobileAP_in_range.png [new file with mode: 0755]
data/resource/icons/Connection/B03_MobileAP_on&not connected.png [deleted file]
data/resource/icons/Connection/B03_MobileAP_on&not-connected.png [new file with mode: 0755]
data/resource/icons/Connection/B03_USB.png [new file with mode: 0755]
data/resource/icons/Connection/B03_conection_UPdownload.png [new file with mode: 0755]
data/resource/icons/Connection/B03_conection_not_UPdownload.png [new file with mode: 0755]
data/resource/icons/Connection/B03_connection_1x.png
data/resource/icons/Connection/B03_connection_3G+.png
data/resource/icons/Connection/B03_connection_3G.png
data/resource/icons/Connection/B03_connection_4G.png
data/resource/icons/Connection/B03_connection_C.png [new file with mode: 0755]
data/resource/icons/Connection/B03_connection_E.png [new file with mode: 0755]
data/resource/icons/Connection/B03_connection_EV.png [new file with mode: 0755]
data/resource/icons/Connection/B03_connection_EVDO.png [deleted file]
data/resource/icons/Connection/B03_connection_G.png [new file with mode: 0755]
data/resource/icons/Connection/B03_connection_GPRS.png
data/resource/icons/Connection/B03_connection_GSM.png [deleted file]
data/resource/icons/Connection/B03_connection_H+.png [new file with mode: 0755]
data/resource/icons/Connection/B03_connection_H.png [new file with mode: 0755]
data/resource/icons/Connection/B03_connection_HS.png [new file with mode: 0755]
data/resource/icons/Connection/B03_connection_Highspeed.png [deleted file]
data/resource/icons/Connection/B03_connection_LTE.png
data/resource/icons/Connection/B03_connection_UPload.png [new file with mode: 0755]
data/resource/icons/Connection/B03_connection_USB.png [deleted file]
data/resource/icons/Connection/B03_connection_Wifi_01.png
data/resource/icons/Connection/B03_connection_Wifi_02.png
data/resource/icons/Connection/B03_connection_Wifi_03.png
data/resource/icons/Connection/B03_connection_Wifi_04.png
data/resource/icons/Connection/B03_connection_download.png [new file with mode: 0755]
data/resource/icons/Connection/B03_connection_download_3G.png [new file with mode: 0755]
data/resource/icons/Connection/B03_connection_download_LTE.png [new file with mode: 0755]
data/resource/icons/Connection/B03_data_downloading_Wifi_01.png [new file with mode: 0755]
data/resource/icons/Connection/B03_data_downloading_Wifi_02.png [new file with mode: 0755]
data/resource/icons/Connection/B03_data_downloading_Wifi_03.png [new file with mode: 0755]
data/resource/icons/Connection/B03_data_downloading_Wifi_04.png [new file with mode: 0755]
data/resource/icons/Connection/B03_network_bonding_download_00.png [new file with mode: 0755]
data/resource/icons/Connection/B03_network_bonding_download_01.png [new file with mode: 0755]
data/resource/icons/Connection/B03_network_bonding_download_02.png [new file with mode: 0755]
data/resource/icons/Connection/B03_network_bonding_download_03.png [new file with mode: 0755]
data/resource/icons/Connection/B03_network_bonding_download_04.png [new file with mode: 0755]
data/resource/icons/Connection/B03_network_bonding_download_05.png [new file with mode: 0755]
data/resource/icons/Connection/B03_network_bonding_download_06.png [new file with mode: 0755]
data/resource/icons/Connection/B03_not_conection_UPdownload.png [new file with mode: 0755]
data/resource/icons/Connection/network_restriction_mode.png [new file with mode: 0644]
data/resource/icons/Desk dock/B03_desk_dock.png [new file with mode: 0755]
data/resource/icons/Download booster/B03_download_booster_3g_dim.png [new file with mode: 0755]
data/resource/icons/Download booster/B03_download_booster_3g_on.png [new file with mode: 0755]
data/resource/icons/Download booster/B03_download_booster_LTE_dim.png [new file with mode: 0755]
data/resource/icons/Download booster/B03_download_booster_LTE_on.png [new file with mode: 0755]
data/resource/icons/Download booster/B03_download_booster_dim.png [new file with mode: 0755]
data/resource/icons/Download booster/B03_download_booster_down_up.png [new file with mode: 0755]
data/resource/icons/Download booster/B03_download_booster_down_up_download.png [new file with mode: 0755]
data/resource/icons/Download booster/B03_download_booster_down_up_none.png [new file with mode: 0755]
data/resource/icons/Download booster/B03_download_booster_down_up_upload.png [new file with mode: 0755]
data/resource/icons/Download booster/B03_download_booster_no_service.png [new file with mode: 0755]
data/resource/icons/Download booster/B03_download_booster_no_service_dim.png [new file with mode: 0755]
data/resource/icons/Download booster/B03_download_booster_on.png [new file with mode: 0755]
data/resource/icons/Download booster/B03_download_booster_wifi_00.png [new file with mode: 0755]
data/resource/icons/Download booster/B03_download_booster_wifi_01.png [new file with mode: 0755]
data/resource/icons/Download booster/B03_download_booster_wifi_02.png [new file with mode: 0755]
data/resource/icons/Download booster/B03_download_booster_wifi_03.png [new file with mode: 0755]
data/resource/icons/Download booster/B03_download_booster_wifi_04.png [new file with mode: 0755]
data/resource/icons/Dropbox/B03_dropbox.png [moved from data/resource/icons/Background playing/B03_Backgroundplaying_Voicerecording.png with 77% similarity]
data/resource/icons/Dual SIM/B03_Dual_Sim_00.png [new file with mode: 0755]
data/resource/icons/Dual SIM/B03_Dual_Sim_01.png [new file with mode: 0755]
data/resource/icons/Dual SIM/B03_Dual_Sim_1.png [new file with mode: 0755]
data/resource/icons/Dual SIM/B03_Dual_Sim_2.png [new file with mode: 0755]
data/resource/icons/Dual SIM/B03_Dual_Sim_MMS.png [new file with mode: 0755]
data/resource/icons/Dual SIM/B03_Dual_Sim_SMS.png [new file with mode: 0755]
data/resource/icons/Dual SIM/B03_Dual_Sim_data.png [new file with mode: 0755]
data/resource/icons/Dual SIM/B03_Dual_Sim_global.png [new file with mode: 0755]
data/resource/icons/Dual SIM/B03_Dual_Sim_heart.png [new file with mode: 0755]
data/resource/icons/Dual SIM/B03_Dual_Sim_home.png [new file with mode: 0755]
data/resource/icons/Dual SIM/B03_Dual_Sim_messages.png [new file with mode: 0755]
data/resource/icons/Dual SIM/B03_Dual_Sim_office.png [new file with mode: 0755]
data/resource/icons/Dual SIM/B03_Dual_Sim_phone.png [new file with mode: 0755]
data/resource/icons/Earphone/B03_BT_Headset.png [new file with mode: 0755]
data/resource/icons/Earphone/B03_Earphone.png [deleted file]
data/resource/icons/Error/B03_Error.png [moved from data/resource/icons/Connection/B03_connection02.png with 86% similarity]
data/resource/icons/Event/B03_Event_IM.png
data/resource/icons/Event/B03_Event_Message.png
data/resource/icons/Event/B03_Event_email.png
data/resource/icons/Event/B03_Event_voicemail.png
data/resource/icons/Event/B03_event_OTA_Messages.png [new file with mode: 0755]
data/resource/icons/Event/B03_event_blocking_mode.png [new file with mode: 0755]
data/resource/icons/Event/B03_event_cancel_message.png [new file with mode: 0755]
data/resource/icons/Event/B03_event_delivery_report_message.png [new file with mode: 0755]
data/resource/icons/Event/B03_event_private_mode.png [moved from data/resource/icons/Connection/B03_connection_CDMA.png with 87% similarity]
data/resource/icons/Event/B03_event_read_report_message.png [new file with mode: 0755]
data/resource/icons/Event/B03_event_screen_mirroring.png [new file with mode: 0755]
data/resource/icons/Face Detection/B03_face_detection_off.png [new file with mode: 0755]
data/resource/icons/Face Detection/B03_face_detection_on.png [new file with mode: 0755]
data/resource/icons/Felica/Felica.png [moved from data/resource/icons/Background playing/B03_Backgroundplaying_Music_paused.png with 83% similarity, mode: 0644]
data/resource/icons/Find my mobile/B03_fmm_call_log.png [new file with mode: 0755]
data/resource/icons/Find my mobile/B03_fmm_location_info.png [new file with mode: 0755]
data/resource/icons/Find my mobile/B03_fmm_unlock.png [new file with mode: 0755]
data/resource/icons/Fota/B03_fota.png [moved from data/resource/icons/Background playing/B03_Backgroundplaying_MP3playing.png with 82% similarity]
data/resource/icons/Gear/B03_gear_connect.png [new file with mode: 0755]
data/resource/icons/Gear/B03_gear_disconnect.png [new file with mode: 0755]
data/resource/icons/Group play/B03_group_play.png [new file with mode: 0755]
data/resource/icons/Message/B03_OTA_Messages.png [new file with mode: 0755]
data/resource/icons/More/B03_notification.png [new file with mode: 0755]
data/resource/icons/Near by device/B03_near_by_device.png [new file with mode: 0755]
data/resource/icons/Notification/B03_battery_full.png [new file with mode: 0755]
data/resource/icons/Notification/B03_video.png [new file with mode: 0644]
data/resource/icons/Notify/B03_noti_readout.png [new file with mode: 0755]
data/resource/icons/Notify/B03_notification.png [new file with mode: 0644]
data/resource/icons/Notify/B03_notify_Wi-fi.png [new file with mode: 0755]
data/resource/icons/Notify/B03_notify_Wi-fi_direct_not_connected.png [new file with mode: 0755]
data/resource/icons/Notify/B03_notify_Wi-fi_range.png [new file with mode: 0755]
data/resource/icons/Notify/B03_notify_Wi-fi_timer.png [new file with mode: 0755]
data/resource/icons/Notify/B03_notify_Wi-fi_warning.png [new file with mode: 0755]
data/resource/icons/Notify/B03_notify_image.png [new file with mode: 0755]
data/resource/icons/Notify/B03_notify_image_error.png [new file with mode: 0755]
data/resource/icons/Notify/B03_notify_message.png [new file with mode: 0755]
data/resource/icons/Notify/B03_notify_message_failed.png [new file with mode: 0755]
data/resource/icons/Notify/B03_notify_more.png [new file with mode: 0755]
data/resource/icons/Notify/B03_notify_safe_mode.png [new file with mode: 0755]
data/resource/icons/Notify/B03_notify_slideshow_play.png [new file with mode: 0755]
data/resource/icons/Notify/B03_notify_torch.png [new file with mode: 0755]
data/resource/icons/Notify/B03_notify_video_play.png [new file with mode: 0755]
data/resource/icons/Notify/B03_notiy_readout.png.png [new file with mode: 0755]
data/resource/icons/Notify/B03_side_sync.png [new file with mode: 0755]
data/resource/icons/Patterns/B03_patterns_cooling_down.png [new file with mode: 0755]
data/resource/icons/Personal mode/B03_personal_mode.png [new file with mode: 0644]
data/resource/icons/Power saving mode/B03_Power_saving_mode.png [new file with mode: 0755]
data/resource/icons/Power saving mode/B03_ultra_Power_saving_mode.png [new file with mode: 0755]
data/resource/icons/Power/12H/B03_battery_animation_12h_00.png [deleted file]
data/resource/icons/Power/12H/B03_battery_animation_12h_01.png [deleted file]
data/resource/icons/Power/12H/B03_battery_animation_12h_02.png [deleted file]
data/resource/icons/Power/12H/B03_battery_animation_12h_03.png [deleted file]
data/resource/icons/Power/12H/B03_battery_animation_12h_04.png [deleted file]
data/resource/icons/Power/12H/B03_battery_animation_12h_05.png [deleted file]
data/resource/icons/Power/12H/B03_battery_animation_12h_06.png [deleted file]
data/resource/icons/Power/12H/B03_battery_animation_12h_07.png [deleted file]
data/resource/icons/Power/12H/B03_battery_animation_12h_08.png [deleted file]
data/resource/icons/Power/12H/B03_battery_animation_12h_09.png [deleted file]
data/resource/icons/Power/12H/B03_battery_animation_12h_10.png [deleted file]
data/resource/icons/Power/12H/B03_battery_animation_12h_11.png [deleted file]
data/resource/icons/Power/12H/B03_battery_animation_12h_12.png [deleted file]
data/resource/icons/Power/12H/B03_battery_animation_12h_13.png [deleted file]
data/resource/icons/Power/12H/B03_battery_animation_12h_14.png [deleted file]
data/resource/icons/Power/12H/B03_battery_animation_12h_15.png [deleted file]
data/resource/icons/Power/12H/B03_battery_animation_12h_16.png [deleted file]
data/resource/icons/Power/12H/B03_battery_animation_12h_17.png [deleted file]
data/resource/icons/Power/12H/B03_battery_animation_12h_18.png [deleted file]
data/resource/icons/Power/12H/B03_battery_animation_12h_19.png [deleted file]
data/resource/icons/Power/12H/B03_battery_animation_12h_20.png [deleted file]
data/resource/icons/Power/24H/B03_battery_animation_24h_00.png [deleted file]
data/resource/icons/Power/24H/B03_battery_animation_24h_01.png [deleted file]
data/resource/icons/Power/24H/B03_battery_animation_24h_02.png [deleted file]
data/resource/icons/Power/24H/B03_battery_animation_24h_03.png [deleted file]
data/resource/icons/Power/24H/B03_battery_animation_24h_04.png [deleted file]
data/resource/icons/Power/24H/B03_battery_animation_24h_05.png [deleted file]
data/resource/icons/Power/24H/B03_battery_animation_24h_06.png [deleted file]
data/resource/icons/Power/24H/B03_battery_animation_24h_07.png [deleted file]
data/resource/icons/Power/24H/B03_battery_animation_24h_08.png [deleted file]
data/resource/icons/Power/24H/B03_battery_animation_24h_09.png [deleted file]
data/resource/icons/Power/24H/B03_battery_animation_24h_10.png [deleted file]
data/resource/icons/Power/24H/B03_battery_animation_24h_11.png [deleted file]
data/resource/icons/Power/24H/B03_battery_animation_24h_12.png [deleted file]
data/resource/icons/Power/24H/B03_battery_animation_24h_13.png [deleted file]
data/resource/icons/Power/24H/B03_battery_animation_24h_14.png [deleted file]
data/resource/icons/Power/24H/B03_battery_animation_24h_15.png [deleted file]
data/resource/icons/Power/24H/B03_battery_animation_24h_16.png [deleted file]
data/resource/icons/Power/24H/B03_battery_animation_24h_17.png [deleted file]
data/resource/icons/Power/24H/B03_battery_animation_24h_18.png [deleted file]
data/resource/icons/Power/24H/B03_battery_animation_24h_19.png [deleted file]
data/resource/icons/Power/24H/B03_battery_animation_24h_20.png [deleted file]
data/resource/icons/Power/B03_stat_sys_battery_0.png [new file with mode: 0755]
data/resource/icons/Power/B03_stat_sys_battery_10.png [new file with mode: 0755]
data/resource/icons/Power/B03_stat_sys_battery_100.png [new file with mode: 0755]
data/resource/icons/Power/B03_stat_sys_battery_15.png [new file with mode: 0755]
data/resource/icons/Power/B03_stat_sys_battery_20.png [new file with mode: 0755]
data/resource/icons/Power/B03_stat_sys_battery_25.png [new file with mode: 0755]
data/resource/icons/Power/B03_stat_sys_battery_30.png [new file with mode: 0755]
data/resource/icons/Power/B03_stat_sys_battery_35.png [new file with mode: 0755]
data/resource/icons/Power/B03_stat_sys_battery_4.png [new file with mode: 0755]
data/resource/icons/Power/B03_stat_sys_battery_40.png [new file with mode: 0755]
data/resource/icons/Power/B03_stat_sys_battery_45.png [new file with mode: 0755]
data/resource/icons/Power/B03_stat_sys_battery_5.png [new file with mode: 0755]
data/resource/icons/Power/B03_stat_sys_battery_50.png [new file with mode: 0755]
data/resource/icons/Power/B03_stat_sys_battery_55.png [new file with mode: 0755]
data/resource/icons/Power/B03_stat_sys_battery_60.png [new file with mode: 0755]
data/resource/icons/Power/B03_stat_sys_battery_65.png [new file with mode: 0755]
data/resource/icons/Power/B03_stat_sys_battery_70.png [new file with mode: 0755]
data/resource/icons/Power/B03_stat_sys_battery_75.png [new file with mode: 0755]
data/resource/icons/Power/B03_stat_sys_battery_80.png [new file with mode: 0755]
data/resource/icons/Power/B03_stat_sys_battery_85.png [new file with mode: 0755]
data/resource/icons/Power/B03_stat_sys_battery_90.png [new file with mode: 0755]
data/resource/icons/Power/B03_stat_sys_battery_95.png [new file with mode: 0755]
data/resource/icons/Power/B03_stat_sys_battery_charge_anim0.png [new file with mode: 0755]
data/resource/icons/Power/B03_stat_sys_battery_charge_anim10.png [new file with mode: 0755]
data/resource/icons/Power/B03_stat_sys_battery_charge_anim100.png [new file with mode: 0755]
data/resource/icons/Power/B03_stat_sys_battery_charge_anim15.png [new file with mode: 0755]
data/resource/icons/Power/B03_stat_sys_battery_charge_anim20.png [new file with mode: 0755]
data/resource/icons/Power/B03_stat_sys_battery_charge_anim25.png [new file with mode: 0755]
data/resource/icons/Power/B03_stat_sys_battery_charge_anim30.png [new file with mode: 0755]
data/resource/icons/Power/B03_stat_sys_battery_charge_anim35.png [new file with mode: 0755]
data/resource/icons/Power/B03_stat_sys_battery_charge_anim4.png [new file with mode: 0755]
data/resource/icons/Power/B03_stat_sys_battery_charge_anim40.png [new file with mode: 0755]
data/resource/icons/Power/B03_stat_sys_battery_charge_anim45.png [new file with mode: 0755]
data/resource/icons/Power/B03_stat_sys_battery_charge_anim5.png [new file with mode: 0755]
data/resource/icons/Power/B03_stat_sys_battery_charge_anim50.png [new file with mode: 0755]
data/resource/icons/Power/B03_stat_sys_battery_charge_anim55.png [new file with mode: 0755]
data/resource/icons/Power/B03_stat_sys_battery_charge_anim60.png [new file with mode: 0755]
data/resource/icons/Power/B03_stat_sys_battery_charge_anim65.png [new file with mode: 0755]
data/resource/icons/Power/B03_stat_sys_battery_charge_anim70.png [new file with mode: 0755]
data/resource/icons/Power/B03_stat_sys_battery_charge_anim75.png [new file with mode: 0755]
data/resource/icons/Power/B03_stat_sys_battery_charge_anim80.png [new file with mode: 0755]
data/resource/icons/Power/B03_stat_sys_battery_charge_anim85.png [new file with mode: 0755]
data/resource/icons/Power/B03_stat_sys_battery_charge_anim90.png [new file with mode: 0755]
data/resource/icons/Power/B03_stat_sys_battery_charge_anim95.png [new file with mode: 0755]
data/resource/icons/Power/B03_stat_sys_battery_full.png [new file with mode: 0644]
data/resource/icons/Power/B03_stat_sys_battery_percent_0.png [new file with mode: 0755]
data/resource/icons/Power/B03_stat_sys_battery_percent_10.png [new file with mode: 0755]
data/resource/icons/Power/B03_stat_sys_battery_percent_100.png [new file with mode: 0755]
data/resource/icons/Power/B03_stat_sys_battery_percent_20.png [new file with mode: 0755]
data/resource/icons/Power/B03_stat_sys_battery_percent_30.png [new file with mode: 0755]
data/resource/icons/Power/B03_stat_sys_battery_percent_40.png [new file with mode: 0755]
data/resource/icons/Power/B03_stat_sys_battery_percent_50.png [new file with mode: 0755]
data/resource/icons/Power/B03_stat_sys_battery_percent_60.png [new file with mode: 0755]
data/resource/icons/Power/B03_stat_sys_battery_percent_70.png [new file with mode: 0755]
data/resource/icons/Power/B03_stat_sys_battery_percent_80.png [new file with mode: 0755]
data/resource/icons/Power/B03_stat_sys_battery_percent_90.png [new file with mode: 0755]
data/resource/icons/Power/B03_stat_sys_battery_percent_charge_anim0.png [new file with mode: 0755]
data/resource/icons/Power/B03_stat_sys_battery_percent_charge_anim10.png [new file with mode: 0755]
data/resource/icons/Power/B03_stat_sys_battery_percent_charge_anim100.png [new file with mode: 0755]
data/resource/icons/Power/B03_stat_sys_battery_percent_charge_anim20.png [new file with mode: 0755]
data/resource/icons/Power/B03_stat_sys_battery_percent_charge_anim30.png [new file with mode: 0755]
data/resource/icons/Power/B03_stat_sys_battery_percent_charge_anim40.png [new file with mode: 0755]
data/resource/icons/Power/B03_stat_sys_battery_percent_charge_anim50.png [new file with mode: 0755]
data/resource/icons/Power/B03_stat_sys_battery_percent_charge_anim60.png [new file with mode: 0755]
data/resource/icons/Power/B03_stat_sys_battery_percent_charge_anim70.png [new file with mode: 0755]
data/resource/icons/Power/B03_stat_sys_battery_percent_charge_anim80.png [new file with mode: 0755]
data/resource/icons/Power/B03_stat_sys_battery_percent_charge_anim90.png [new file with mode: 0755]
data/resource/icons/Power/battery_text/B03_stat_sys_battery_bg_1.png [moved from data/resource/00_winset_indicator_bg.png with 92% similarity, mode: 0644]
data/resource/icons/Power/battery_text/B03_stat_sys_battery_bg_2.png [moved from data/resource/00_winset_indicator_event_bg.png with 92% similarity, mode: 0644]
data/resource/icons/Power/battery_text/B03_stat_sys_battery_num_0.png [new file with mode: 0755]
data/resource/icons/Power/battery_text/B03_stat_sys_battery_num_1.png [new file with mode: 0755]
data/resource/icons/Power/battery_text/B03_stat_sys_battery_num_100.png [new file with mode: 0755]
data/resource/icons/Power/battery_text/B03_stat_sys_battery_num_2.png [new file with mode: 0755]
data/resource/icons/Power/battery_text/B03_stat_sys_battery_num_3.png [new file with mode: 0755]
data/resource/icons/Power/battery_text/B03_stat_sys_battery_num_4.png [new file with mode: 0755]
data/resource/icons/Power/battery_text/B03_stat_sys_battery_num_5.png [new file with mode: 0755]
data/resource/icons/Power/battery_text/B03_stat_sys_battery_num_6.png [new file with mode: 0755]
data/resource/icons/Power/battery_text/B03_stat_sys_battery_num_7.png [new file with mode: 0755]
data/resource/icons/Power/battery_text/B03_stat_sys_battery_num_8.png [new file with mode: 0755]
data/resource/icons/Power/battery_text/B03_stat_sys_battery_num_9.png [new file with mode: 0755]
data/resource/icons/Private mode/B03_private_mode.png [new file with mode: 0755]
data/resource/icons/Processing/B03_Call_divert_Sim_1.png [new file with mode: 0644]
data/resource/icons/Processing/B03_Call_divert_Sim_2.png [new file with mode: 0644]
data/resource/icons/Processing/B03_Call_divert_Sim_MMS.png [new file with mode: 0644]
data/resource/icons/Processing/B03_Call_divert_Sim_SMS.png [new file with mode: 0644]
data/resource/icons/Processing/B03_Call_divert_Sim_global.png [new file with mode: 0644]
data/resource/icons/Processing/B03_Call_divert_Sim_heart.png [new file with mode: 0644]
data/resource/icons/Processing/B03_Call_divert_Sim_home.png [new file with mode: 0644]
data/resource/icons/Processing/B03_Call_divert_Sim_office.png [new file with mode: 0644]
data/resource/icons/Processing/B03_Call_divert_Sim_phone.png [new file with mode: 0644]
data/resource/icons/Processing/B03_Processing_01.png
data/resource/icons/Processing/B03_Processing_02.png
data/resource/icons/Processing/B03_Processing_03.png
data/resource/icons/Processing/B03_Processing_04.png
data/resource/icons/Processing/B03_Processing_05.png
data/resource/icons/Processing/B03_Processing_06.png
data/resource/icons/Processing/B03_Processing_07.png
data/resource/icons/Processing/B03_Processing_08.png
data/resource/icons/Processing/B03_Processing_09.png
data/resource/icons/Processing/B03_Processing_10.png
data/resource/icons/Processing/B03_Processing_11.png
data/resource/icons/Processing/B03_Processing_12.png
data/resource/icons/Processing/B03_Processing_13.png
data/resource/icons/Processing/B03_Processing_14.png
data/resource/icons/Processing/B03_Processing_15.png
data/resource/icons/Processing/B03_Processing_16.png
data/resource/icons/Processing/B03_Processing_17.png
data/resource/icons/Processing/B03_Processing_18.png
data/resource/icons/Processing/B03_Processing_19.png
data/resource/icons/Processing/B03_Processing_20.png
data/resource/icons/Processing/B03_Processing_21.png
data/resource/icons/Processing/B03_Processing_22.png
data/resource/icons/Processing/B03_Processing_23.png
data/resource/icons/Processing/B03_Processing_24.png
data/resource/icons/Processing/B03_Processing_25.png
data/resource/icons/Processing/B03_Processing_26.png
data/resource/icons/Processing/B03_Processing_27.png
data/resource/icons/Processing/B03_Processing_28.png
data/resource/icons/Processing/B03_Processing_29.png
data/resource/icons/Processing/B03_Processing_30.png
data/resource/icons/Processing/B03_Processing_CPHS_line1.png
data/resource/icons/Processing/B03_Processing_CPHS_line2.png
data/resource/icons/Processing/B03_Processing_Syncerror.png
data/resource/icons/Processing/B03_Processing_Syncing.png [deleted file]
data/resource/icons/Processing/B03_Processing_Syncing_01.png
data/resource/icons/Processing/B03_Processing_Syncing_02.png
data/resource/icons/Processing/B03_Processing_Syncing_03.png
data/resource/icons/Processing/B03_Processing_Syncing_04.png
data/resource/icons/Processing/B03_Processing_calldivert.png
data/resource/icons/Processing/B03_Processing_download_ani_00.png [new file with mode: 0755]
data/resource/icons/Processing/B03_Processing_download_ani_01.png [new file with mode: 0755]
data/resource/icons/Processing/B03_Processing_download_ani_02.png [new file with mode: 0755]
data/resource/icons/Processing/B03_Processing_download_ani_03.png [new file with mode: 0755]
data/resource/icons/Processing/B03_Processing_download_ani_04.png [new file with mode: 0755]
data/resource/icons/Processing/B03_Processing_download_ani_05.png [new file with mode: 0755]
data/resource/icons/Processing/B03_Processing_download_ani_06.png [new file with mode: 0755]
data/resource/icons/Processing/B03_Processing_download_complete.png [new file with mode: 0755]
data/resource/icons/Processing/B03_Processing_download_failed.png [new file with mode: 0755]
data/resource/icons/Processing/B03_Processing_upload_ani_00.png [new file with mode: 0755]
data/resource/icons/Processing/B03_Processing_upload_ani_01.png [new file with mode: 0755]
data/resource/icons/Processing/B03_Processing_upload_ani_02.png [new file with mode: 0755]
data/resource/icons/Processing/B03_Processing_upload_ani_03.png [new file with mode: 0755]
data/resource/icons/Processing/B03_Processing_upload_ani_04.png [new file with mode: 0755]
data/resource/icons/Processing/B03_Processing_upload_ani_05.png [new file with mode: 0755]
data/resource/icons/Processing/B03_Processing_upload_ani_06.png [new file with mode: 0755]
data/resource/icons/Processing/B03_Processing_upload_complete.png [new file with mode: 0755]
data/resource/icons/Processing/B03_Processing_upload_failed.png [new file with mode: 0755]
data/resource/icons/Profile/B03_Profile_Mute.png
data/resource/icons/Profile/B03_Profile_Sound&Vibration.png [deleted file]
data/resource/icons/Profile/B03_Profile_Vibration.png
data/resource/icons/RCS/B03_RCS.png
data/resource/icons/RSSI/B03_Network_LimitedService.png [new file with mode: 0755]
data/resource/icons/RSSI/B03_RSSI_Drivingmode.png [new file with mode: 0755]
data/resource/icons/RSSI/B03_RSSI_Dual_Sim_00.png [new file with mode: 0755]
data/resource/icons/RSSI/B03_RSSI_Dual_Sim_01.png [new file with mode: 0755]
data/resource/icons/RSSI/B03_RSSI_Dual_Sim_02.png [new file with mode: 0755]
data/resource/icons/RSSI/B03_RSSI_Dual_Sim_03.png [new file with mode: 0755]
data/resource/icons/RSSI/B03_RSSI_Dual_Sim_04.png [new file with mode: 0755]
data/resource/icons/RSSI/B03_RSSI_Dual_Sim_roaming_00.png [new file with mode: 0755]
data/resource/icons/RSSI/B03_RSSI_Dual_Sim_roaming_01.png [new file with mode: 0755]
data/resource/icons/RSSI/B03_RSSI_Dual_Sim_roaming_02.png [new file with mode: 0755]
data/resource/icons/RSSI/B03_RSSI_Dual_Sim_roaming_03.png [new file with mode: 0755]
data/resource/icons/RSSI/B03_RSSI_Dual_Sim_roaming_04.png [new file with mode: 0755]
data/resource/icons/RSSI/B03_RSSI_Flightmode.png
data/resource/icons/RSSI/B03_RSSI_NoService.png
data/resource/icons/RSSI/B03_RSSI_NoSim.png
data/resource/icons/RSSI/B03_RSSI_Searching.png
data/resource/icons/RSSI/B03_RSSI_Sim1_00.png [changed mode: 0755->0644]
data/resource/icons/RSSI/B03_RSSI_Sim1_01.png [changed mode: 0755->0644]
data/resource/icons/RSSI/B03_RSSI_Sim1_02.png [changed mode: 0755->0644]
data/resource/icons/RSSI/B03_RSSI_Sim1_03.png [changed mode: 0755->0644]
data/resource/icons/RSSI/B03_RSSI_Sim1_04.png [changed mode: 0755->0644]
data/resource/icons/RSSI/B03_RSSI_Sim2_00.png [changed mode: 0755->0644]
data/resource/icons/RSSI/B03_RSSI_Sim2_01.png [changed mode: 0755->0644]
data/resource/icons/RSSI/B03_RSSI_Sim2_02.png [changed mode: 0755->0644]
data/resource/icons/RSSI/B03_RSSI_Sim2_03.png [changed mode: 0755->0644]
data/resource/icons/RSSI/B03_RSSI_Sim2_04.png [changed mode: 0755->0644]
data/resource/icons/RSSI/B03_RSSI_Sim_00.png
data/resource/icons/RSSI/B03_RSSI_Sim_01.png
data/resource/icons/RSSI/B03_RSSI_Sim_02.png
data/resource/icons/RSSI/B03_RSSI_Sim_03.png
data/resource/icons/RSSI/B03_RSSI_Sim_04.png
data/resource/icons/RSSI/B03_RSSI_Sim_office_04.png [new file with mode: 0755]
data/resource/icons/RSSI/B03_RSSI_roaming_00.png
data/resource/icons/RSSI/B03_RSSI_roaming_01.png
data/resource/icons/RSSI/B03_RSSI_roaming_02.png
data/resource/icons/RSSI/B03_RSSI_roaming_03.png
data/resource/icons/RSSI/B03_RSSI_roaming_04.png
data/resource/icons/RSSI/B03_Roaming.png
data/resource/icons/Ready to share/B03_ready_to_share.png [new file with mode: 0755]
data/resource/icons/Rotation locked/B03_Rotationlocked.png
data/resource/icons/SIM card full/B03_sim_card_full.png [new file with mode: 0755]
data/resource/icons/Security/B03_Device_encryption_error.png [new file with mode: 0755]
data/resource/icons/Security/B03_Firewall.png [new file with mode: 0755]
data/resource/icons/Security/B03_SDcard_dectyption.png [new file with mode: 0755]
data/resource/icons/Security/B03_SDcard_encryption.png [new file with mode: 0755]
data/resource/icons/Security/B03_Sdcard_encryption_error.png [new file with mode: 0755]
data/resource/icons/Security/B03_Security_error.png [new file with mode: 0755]
data/resource/icons/Security/B03_security_lock.png [new file with mode: 0755]
data/resource/icons/Send help messages/B03_send_help_messages.png [new file with mode: 0755]
data/resource/icons/Shealth/B03_shealth.png [new file with mode: 0755]
data/resource/icons/Splanner/B03_Splanner.png [new file with mode: 0755]
data/resource/icons/Storage/B03_storage_memoryfull.png [new file with mode: 0755]
data/resource/icons/Storage/B03_storage_t_flash.png [new file with mode: 0755]
data/resource/icons/Tethering/B03_All_connected.png [new file with mode: 0755]
data/resource/icons/Tethering/B03_All_no_connected.png [new file with mode: 0755]
data/resource/icons/Tethering/B03_BT_connected.png [new file with mode: 0755]
data/resource/icons/Tethering/B03_BT_no_connected.png [new file with mode: 0755]
data/resource/icons/Tethering/B03_USB_connected.png [new file with mode: 0755]
data/resource/icons/Tethering/B03_USB_no_connected.png [new file with mode: 0755]
data/resource/icons/Tethering/B03_Wi_Fi_connected.png [new file with mode: 0755]
data/resource/icons/Tethering/B03_Wi_Fi_no_connected.png [new file with mode: 0755]
data/resource/icons/USB tethering/B03_USB.png [changed mode: 0755->0644]
data/resource/icons/VPN/B03_VPN.png [new file with mode: 0755]
data/resource/icons/Voice control/B03_voice_control.png [new file with mode: 0755]
data/resource/icons/facebook/B03_facbook_app.png [new file with mode: 0755]
data/resource/icons/facebook/B03_facbook_event.png [new file with mode: 0755]
data/resource/icons/facebook/B03_facbook_friend_request.png [moved from data/resource/icons/Background playing/B03_Memorycard.png with 86% similarity]
data/resource/icons/facebook/B03_facbook_messages.png [new file with mode: 0755]
data/resource/icons/handler_bg.#.png [new file with mode: 0755]
data/resource/icons/handler_bg_ef.#.png [moved from data/resource/icons_edc/B03_Status_bar_line.PNG with 94% similarity]
data/resource/icons/tethering/B03_All_connected.png [new file with mode: 0755]
data/resource/icons/tethering/B03_All_no_connected.png [new file with mode: 0755]
data/resource/icons/tethering/B03_BT_connected.png [new file with mode: 0755]
data/resource/icons/tethering/B03_BT_no_connected.png [new file with mode: 0755]
data/resource/icons/tethering/B03_USB_connected.png [new file with mode: 0755]
data/resource/icons/tethering/B03_USB_no_connected.png [new file with mode: 0755]
data/resource/icons/tethering/B03_Wi_Fi_connected.png [new file with mode: 0755]
data/resource/icons/tethering/B03_Wi_Fi_no_connected.png [new file with mode: 0755]
data/resource/icons_edc/B03_OrangeF.png [new file with mode: 0644]
data/resource/icons_edc/B03_Processing_download_ani_00.png [new file with mode: 0755]
data/resource/icons_edc/B03_Processing_download_ani_01.png [new file with mode: 0755]
data/resource/icons_edc/B03_Processing_download_ani_02.png [new file with mode: 0755]
data/resource/icons_edc/B03_Processing_download_ani_03.png [new file with mode: 0755]
data/resource/icons_edc/B03_Processing_download_ani_04.png [new file with mode: 0755]
data/resource/icons_edc/B03_Processing_download_ani_05.png [new file with mode: 0755]
data/resource/icons_edc/B03_Processing_download_ani_06.png [new file with mode: 0755]
data/resource/icons_edc/B03_Processing_download_complete.png [new file with mode: 0755]
data/resource/icons_edc/B03_Processing_download_failed.png [new file with mode: 0755]
data/resource/icons_edc/B03_Processing_upload_ani_00.png [new file with mode: 0755]
data/resource/icons_edc/B03_Processing_upload_ani_01.png [new file with mode: 0755]
data/resource/icons_edc/B03_Processing_upload_ani_02.png [new file with mode: 0755]
data/resource/icons_edc/B03_Processing_upload_ani_03.png [new file with mode: 0755]
data/resource/icons_edc/B03_Processing_upload_ani_04.png [new file with mode: 0755]
data/resource/icons_edc/B03_Processing_upload_ani_05.png [new file with mode: 0755]
data/resource/icons_edc/B03_Processing_upload_ani_06.png [new file with mode: 0755]
data/resource/icons_edc/B03_Processing_upload_complete.png [new file with mode: 0755]
data/resource/icons_edc/B03_Processing_upload_failed.png [new file with mode: 0755]
data/resource/icons_edc/B03_conection_UPdownload.png [new file with mode: 0755]
data/resource/icons_edc/B03_conection_not_UPdownload.png [new file with mode: 0755]
data/resource/icons_edc/B03_connection_UPload.png [new file with mode: 0755]
data/resource/icons_edc/B03_connection_download.png [new file with mode: 0755]
data/resource/icons_edc/B03_indicator_bg.png [new file with mode: 0644]
data/resource/icons_edc/B03_not_conection_UPdownload.png [new file with mode: 0755]
data/resource/icons_edc/B03_notify_more.png [new file with mode: 0755]
data/resource/icons_edc/B03_search_divider.png [moved from data/resource/icons/App tray/B03_Status_bar_line.PNG with 95% similarity, mode: 0644]
data/resource/icons_edc/core_theme_bg_01.png [new file with mode: 0644]
data/resource/icons_edc/handler_bg.#.png [new file with mode: 0755]
data/resource/icons_edc/handler_bg_ef.#.png [new file with mode: 0755]
data/resource/icons_edc/handler_btn_02.png [new file with mode: 0644]
data/resource/indicator_common.edc [changed mode: 0755->0644]
data/resource/indicator_gui.h [changed mode: 0755->0644]
data/resource/indicator_icon_animation.edc [new file with mode: 0644]
data/resource/indicator_icon_nonfixed_theme.edc [changed mode: 0755->0644]
data/resource/indicator_icon_theme.edc [changed mode: 0755->0644]
data/resource/indicator_land.edc [deleted file]
data/resource/indicator_port.edc [changed mode: 0755->0644]
data/resource/ticker.edc [new file with mode: 0755]
data/resource/ticker_animated_icon.edc [new file with mode: 0755]
data/resource/ticker_default.edc [new file with mode: 0755]
modules/clock/clock.c [changed mode: 0755->0644]
modules/connection/connection.c [changed mode: 0755->0644]
modules/connection/connection.h [new file with mode: 0644]
modules/connection/dock.c [new file with mode: 0644]
modules/connection/mobile_hotspot.c [changed mode: 0755->0644]
modules/connection/nosim.c [new file with mode: 0644]
modules/connection/usb.c [changed mode: 0755->0644]
modules/connection/wifi.c [changed mode: 0755->0644]
modules/home/always.c [moved from daemon/indicator.c with 67% similarity, mode: 0644]
modules/home/home.c [changed mode: 0755->0644]
modules/home/search.c [new file with mode: 0644]
modules/information/alarm.c [changed mode: 0755->0644]
modules/information/earphone.c [changed mode: 0755->0644]
modules/information/felica_lock.c [moved from test/indicator_debug_util.h with 62% similarity, mode: 0644]
modules/information/fm_radio.c [new file with mode: 0644]
modules/information/lowmem.c [new file with mode: 0644]
modules/information/mmc.c [changed mode: 0755->0644]
modules/information/more_notify.c [new file with mode: 0644]
modules/information/mp3_playing.c [changed mode: 0755->0644]
modules/information/noti.c [changed mode: 0755->0644]
modules/information/video_play.c [new file with mode: 0644]
modules/information/voice_recorder.c [changed mode: 0755->0644]
modules/modules.c [changed mode: 0755->0644]
modules/modules.h [changed mode: 0755->0644]
modules/network/roaming.c [changed mode: 0755->0644]
modules/network/rssi.c [changed mode: 0755->0644]
modules/network/rssi.h [moved from test/indicator_test_util.h with 57% similarity, mode: 0644]
modules/power/battery.c [changed mode: 0755->0644]
modules/processing/active_sync.c [deleted file]
modules/processing/call.c [changed mode: 0755->0644]
modules/processing/call_divert.c [changed mode: 0755->0644]
modules/processing/call_divert.h [new file with mode: 0644]
modules/processing/downloading.c [new file with mode: 0644]
modules/processing/sos.c [deleted file]
modules/processing/transfer.c [new file with mode: 0644]
modules/processing/uploading.c [new file with mode: 0644]
modules/setting/bluetooth.c [changed mode: 0755->0644]
modules/setting/gps.c [changed mode: 0755->0644]
modules/setting/network-restriction.c [new file with mode: 0644]
modules/setting/nfc.c [changed mode: 0755->0644]
modules/setting/rotation-lock.c [new file with mode: 0644]
modules/setting/silent.c [changed mode: 0755->0644]
modules/setting/wifi-direct.c [changed mode: 0755->0644]
org.tizen.indicator.efl [new file with mode: 0644]
org.tizen.indicator.manifest [new file with mode: 0644]
org.tizen.indicator.rule [new file with mode: 0755]
packaging/indicator.service
packaging/indicator.service.system [new file with mode: 0644]
packaging/org.tizen.indicator.changes [deleted file]
packaging/org.tizen.indicator.manifest [deleted file]
packaging/org.tizen.indicator.spec [changed mode: 0755->0644]
po/hy.po
test/indicator_debug_util.c [deleted file]
test/indicator_test_util.c [deleted file]

diff --git a/AUTHORS b/AUTHORS
old mode 100644 (file)
new mode 100755 (executable)
index 998309a..e19cca1 100644 (file)
@@ -5,9 +5,9 @@ IF("${CMAKE_BUILD_TYPE}" STREQUAL "")
        SET(CMAKE_BUILD_TYPE "Release")
 ENDIF("${CMAKE_BUILD_TYPE}" STREQUAL "")
 
-SET(VENDOR "tizen")
+SET(VENDOR "org.tizen")
 SET(PACKAGE ${PROJECT_NAME})
-SET(PKGNAME "org.${VENDOR}.${PACKAGE}")
+SET(PKGNAME "${VENDOR}.${PACKAGE}")
 SET(PREFIX ${CMAKE_INSTALL_PREFIX})
 SET(PREFIXRW ${CMAKE_INSTALL_PREFIXRW})
 SET(BINDIR "${PREFIX}/bin")
@@ -16,11 +16,13 @@ SET(DATADIR "${PREFIXRW}/data")
 SET(LOCALEDIR "${RESDIR}/locale")
 SET(ICONDIR "${RESDIR}/icons")
 SET(EDJDIR "${RESDIR}/edje")
+SET(CHANGEABLEDIR "${PREFIX}/shared/res/tables")
 SET(DESKTOPDIR "/usr/share/applications")
 SET(MANIFESTXMLDIR "/usr/share/packages")
 
 AUX_SOURCE_DIRECTORY(${CMAKE_CURRENT_SOURCE_DIR}/daemon DAEMON_SRCS)
 AUX_SOURCE_DIRECTORY(${CMAKE_CURRENT_SOURCE_DIR}/test TEST_SRCS)
+#AUX_SOURCE_DIRECTORY(${CMAKE_CURRENT_SOURCE_DIR}/modules MODULE_SRCS)
 FILE(GLOB_RECURSE MODULE_SRCS modules/*.c)
 
 SET(SRCS ${DAEMON_SRCS} ${MODULE_SRCS} ${TEST_SRCS})
@@ -34,14 +36,31 @@ INCLUDE_DIRECTORIES(
 
 SET(CMAKE_SKIP_BUILD_RPATH TRUE)
 
+FIND_PROGRAM(UNAME NAMES uname)
+EXEC_PROGRAM("${UNAME}" ARGS "-m" OUTPUT_VARIABLE "ARCH")
+
+IF("${ARCH}" STREQUAL "armv7l")
+    ADD_DEFINITIONS("-DDEVICE_BUILD")
+    MESSAGE("Building for target: add -DDEVICE_BUILD")
+ENDIF("${ARCH}" STREQUAL "armv7l")
+
 INCLUDE(FindPkgConfig)
 pkg_check_modules(pkgs REQUIRED
        capi-appfw-application
        capi-appfw-app-manager
        capi-system-runtime-info
+       capi-network-bluetooth
+       capi-appfw-preference
+       capi-system-system-settings
+       capi-media-player
+       capi-media-sound-manager
+       capi-media-metadata-extractor
+       capi-network-wifi
+       capi-ui-efl-util
+       appcore-common
        dlog
        ecore
-       ecore-x
+#      ecore-x
        ecore-evas
        ecore-file
        edbus
@@ -49,25 +68,34 @@ pkg_check_modules(pkgs REQUIRED
        elementary
        evas
        eina
-       fontconfig
+       edbus
        libprivilege-control
        notification
+#      utilX
        vconf
-       utilX
        minicontrol-monitor
        feedback
+       pkgmgr-info
+       efl-assist
+       tapi
 )
 
 FOREACH(flag ${pkgs_CFLAGS})
        SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
 ENDFOREACH(flag)
-#SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} -finstrument-functions -g")
 
-#SET(CMAKE_C_COMPILER "/scratchbox/devkits/sbwrap")
-#SET(CMAKE_C_COMPILER_ARG1 "/home/serena/working/indicator.trace /scratchbox/compilers/bin/gcc gcc")
+SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS} -fPIE")
 
+SET(CMAKE_C_FLAGS_PROFILING    "-O0 -g -pg -fPIE")
+SET(CMAKE_CXX_FLAGS_PROFILING  "-O0 -std=c++0x -g -pg -fPIE")
+SET(CMAKE_C_FLAGS_DEBUG        "-O0 -g -fPIE")
+SET(CMAKE_CXX_FLAGS_DEBUG      "-O0 -std=c++0x -g -fPIE")
+SET(CMAKE_C_FLAGS_RELEASE      "-O2 -g -fPIE")
+SET(CMAKE_CXX_FLAGS_RELEASE    "-O2 -std=c++0x -g -fPIE")
+SET(CMAKE_C_FLAGS_CCOV         "-O2 -g --coverage -fPIE")
+SET(CMAKE_CXX_FLAGS_CCOV       "-O2 -std=c++0x -g --coverage -fPIE")
 
-SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS} -Wall -g -O2")
+SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed -pie")
 
 ADD_DEFINITIONS("-DVENDOR=\"${VENDOR}\"")
 ADD_DEFINITIONS("-DPACKAGE=\"${PACKAGE}\"")
@@ -80,10 +108,8 @@ ADD_DEFINITIONS("-DICONDIR=\"${ICONDIR}\"")
 ADD_DEFINITIONS("-DEDJDIR=\"${EDJDIR}\"")
 ADD_DEFINITIONS("-DHOME_KEY_EMULATION")
 ADD_DEFINITIONS("-DINDICATOR_SUPPORT_OPACITY_MODE")
-#ADD_DEFINITIONS("-DFILE_DEBUG")
 ADD_DEFINITIONS("-D_DLOG_USED")
 
-SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed")
 
 ADD_EXECUTABLE(${PROJECT_NAME} ${SRCS})
 TARGET_LINK_LIBRARIES(${PROJECT_NAME} -licui18n -licuuc)
@@ -91,7 +117,6 @@ TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${pkgs_LDFLAGS})
 
 INSTALL(TARGETS ${PROJECT_NAME} DESTINATION ${BINDIR})
 INSTALL(DIRECTORY DESTINATION ${DATADIR})
+INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/${PKGNAME}.efl DESTINATION /etc/smack/accesses.d)
 
-ADD_SUBDIRECTORY(po)
 ADD_SUBDIRECTORY(data)
-
diff --git a/LICENSE b/LICENSE
new file mode 100644 (file)
index 0000000..54b213e
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,204 @@
+Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd. All rights reserved.
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   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.
+
diff --git a/LICENSE.Flora b/LICENSE.Flora
deleted file mode 100644 (file)
index 571fe79..0000000
+++ /dev/null
@@ -1,206 +0,0 @@
-Flora License
-
-Version 1.1, April, 2013
-
-http://floralicense.org/license/
-
-TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-1. Definitions.
-
-"License" shall mean the terms and conditions for use, reproduction,
-and distribution as defined by Sections 1 through 9 of this document.
-
-"Licensor" shall mean the copyright owner or entity authorized by
-the copyright owner that is granting the License.
-
-"Legal Entity" shall mean the union of the acting entity and
-all other entities that control, are controlled by, or are
-under common control with that entity. For the purposes of
-this definition, "control" means (i) the power, direct or indirect,
-to cause the direction or management of such entity,
-whether by contract or otherwise, or (ii) ownership of fifty percent (50%)
-or more of the outstanding shares, or (iii) beneficial ownership of
-such entity.
-
-"You" (or "Your") shall mean an individual or Legal Entity
-exercising permissions granted by this License.
-
-"Source" form shall mean the preferred form for making modifications,
-including but not limited to software source code, documentation source,
-and configuration files.
-
-"Object" form shall mean any form resulting from mechanical
-transformation or translation of a Source form, including but
-not limited to compiled object code, generated documentation,
-and conversions to other media types.
-
-"Work" shall mean the work of authorship, whether in Source or Object form,
-made available under the License, as indicated by a copyright notice
-that is included in or attached to the work (an example is provided
-in the Appendix below).
-
-"Derivative Works" shall mean any work, whether in Source or Object form,
-that is based on (or derived from) the Work and for which the editorial
-revisions, annotations, elaborations, or other modifications represent,
-as a whole, an original work of authorship. For the purposes of this License,
-Derivative Works shall not include works that remain separable from,
-or merely link (or bind by name) to the interfaces of, the Work and
-Derivative Works thereof.
-
-"Contribution" shall mean any work of authorship, including the original
-version of the Work and any modifications or additions to that Work or
-Derivative Works thereof, that is intentionally submitted to Licensor
-for inclusion in the Work by the copyright owner or by an individual or
-Legal Entity authorized to submit on behalf of the copyright owner.
-For the purposes of this definition, "submitted" means any form of
-electronic, verbal, or written communication sent to the Licensor or
-its representatives, including but not limited to communication on
-electronic mailing lists, source code control systems, and issue
-tracking systems that are managed by, or on behalf of, the Licensor
-for the purpose of discussing and improving the Work, but excluding
-communication that is conspicuously marked or otherwise designated
-in writing by the copyright owner as "Not a Contribution."
-
-"Contributor" shall mean Licensor and any individual or Legal Entity
-on behalf of whom a Contribution has been received by Licensor and
-subsequently incorporated within the Work.
-
-"Tizen Certified Platform" shall mean a software platform that complies
-with the standards set forth in the Tizen Compliance Specification
-and passes the Tizen Compliance Tests as defined from time to time
-by the Tizen Technical Steering Group and certified by the Tizen
-Association or its designated agent.
-
-2. Grant of Copyright License.  Subject to the terms and conditions of
-this License, each Contributor hereby grants to You a perpetual,
-worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-copyright license to reproduce, prepare Derivative Works of,
-publicly display, publicly perform, sublicense, and distribute the
-Work and such Derivative Works in Source or Object form.
-
-3. Grant of Patent License.  Subject to the terms and conditions of
-this License, each Contributor hereby grants to You a perpetual,
-worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-(except as stated in this section) patent license to make, have made,
-use, offer to sell, sell, import, and otherwise transfer the Work
-solely as incorporated into a Tizen Certified Platform, where such
-license applies only to those patent claims licensable by such
-Contributor that are necessarily infringed by their Contribution(s)
-alone or by combination of their Contribution(s) with the Work solely
-as incorporated into a Tizen Certified Platform to which such
-Contribution(s) was submitted. If You institute patent litigation
-against any entity (including a cross-claim or counterclaim
-in a lawsuit) alleging that the Work or a Contribution incorporated
-within the Work constitutes direct or contributory patent infringement,
-then any patent licenses granted to You under this License for that
-Work shall terminate as of the date such litigation is filed.
-
-4. Redistribution.  You may reproduce and distribute copies of the
-Work or Derivative Works thereof pursuant to the copyright license
-above, in any medium, with or without modifications, and in Source or
-Object form, provided that You meet the following conditions:
-
-  1. You must give any other recipients of the Work or Derivative Works
-     a copy of this License; and
-  2. You must cause any modified files to carry prominent notices stating
-     that You changed the files; and
-  3. You must retain, in the Source form of any Derivative Works that
-     You distribute, all copyright, patent, trademark, and attribution
-     notices from the Source form of the Work, excluding those notices
-     that do not pertain to any part of the Derivative Works; and
-  4. If the Work includes a "NOTICE" text file as part of its distribution,
-     then any Derivative Works that You distribute must include a readable
-     copy of the attribution notices contained within such NOTICE file,
-     excluding those notices that do not pertain to any part of
-     the Derivative Works, in at least one of the following places:
-     within a NOTICE text file distributed as part of the Derivative Works;
-     within the Source form or documentation, if provided along with the
-     Derivative Works; or, within a display generated by the Derivative Works,
-     if and wherever such third-party notices normally appear.
-     The contents of the NOTICE file are for informational purposes only
-     and do not modify the License. You may add Your own attribution notices 
-     within Derivative Works that You distribute, alongside or as an addendum 
-     to the NOTICE text from the Work, provided that such additional attribution 
-     notices cannot be construed as modifying the License. You may add Your own
-     copyright statement to Your modifications and may provide additional or
-     different license terms and conditions for use, reproduction, or
-     distribution of Your modifications, or for any such Derivative Works
-     as a whole, provided Your use, reproduction, and distribution of
-     the Work otherwise complies with the conditions stated in this License
-     and your own copyright statement or terms and conditions do not conflict
-     the conditions stated in the License including section 3.
-
-5. Submission of Contributions. Unless You explicitly state otherwise,
-any Contribution intentionally submitted for inclusion in the Work
-by You to the Licensor shall be under the terms and conditions of
-this License, without any additional terms or conditions.
-Notwithstanding the above, nothing herein shall supersede or modify
-the terms of any separate license agreement you may have executed
-with Licensor regarding such Contributions.
-
-6. Trademarks.  This License does not grant permission to use the trade
-names, trademarks, service marks, or product names of the Licensor,
-except as required for reasonable and customary use in describing the
-origin of the Work and reproducing the content of the NOTICE file.
-
-7. Disclaimer of Warranty. Unless required by applicable law or
-agreed to in writing, Licensor provides the Work (and each
-Contributor provides its Contributions) on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-implied, including, without limitation, any warranties or conditions
-of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-PARTICULAR PURPOSE. You are solely responsible for determining the
-appropriateness of using or redistributing the Work and assume any
-risks associated with Your exercise of permissions under this License.
-
-8. Limitation of Liability. In no event and under no legal theory,
-whether in tort (including negligence), contract, or otherwise,
-unless required by applicable law (such as deliberate and grossly
-negligent acts) or agreed to in writing, shall any Contributor be
-liable to You for damages, including any direct, indirect, special,
-incidental, or consequential damages of any character arising as a
-result of this License or out of the use or inability to use the
-Work (including but not limited to damages for loss of goodwill,
-work stoppage, computer failure or malfunction, or any and all
-other commercial damages or losses), even if such Contributor
-has been advised of the possibility of such damages.
-
-9. Accepting Warranty or Additional Liability. While redistributing
-the Work or Derivative Works thereof, You may choose to offer,
-and charge a fee for, acceptance of support, warranty, indemnity,
-or other liability obligations and/or rights consistent with this
-License. However, in accepting such obligations, You may act only
-on Your own behalf and on Your sole responsibility, not on behalf
-of any other Contributor, and only if You agree to indemnify,
-defend, and hold each Contributor harmless for any liability
-incurred by, or claims asserted against, such Contributor by reason
-of your accepting any such warranty or additional liability.
-
-END OF TERMS AND CONDITIONS
-
-APPENDIX: How to apply the Flora License to your work
-
-To apply the Flora License to your work, attach the following
-boilerplate notice, with the fields enclosed by brackets "[]"
-replaced with your own identifying information. (Don't include
-the brackets!) The text should be enclosed in the appropriate
-comment syntax for the file format. We also recommend that a
-file or class name and description of purpose be included on the
-same "printed page" as the copyright notice for easier
-identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed under the Flora License, Version 1.1 (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.
-
diff --git a/NOTICE b/NOTICE
old mode 100644 (file)
new mode 100755 (executable)
index 10ae78c..b2e5019
--- a/NOTICE
+++ b/NOTICE
@@ -1,4 +1 @@
-Copyright (c) Samsung Electronics Co., Ltd. All rights reserved.
-Except as noted, this software is licensed under Flora License, Version 1.1.
-Please, see the LICENSE.flora file for Flora License, Version 1.1 terms and conditions.
-
+Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd. All rights reserved.
diff --git a/daemon/box.c b/daemon/box.c
new file mode 100644 (file)
index 0000000..b08a49b
--- /dev/null
@@ -0,0 +1,1064 @@
+/*
+ *  Indicator
+ *
+ * Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * 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 <Ecore_X.h>
+#include <Eina.h>
+#include <vconf.h>
+
+#include "common.h"
+#include "box.h"
+#include "icon.h"
+#include "list.h"
+#include "main.h"
+#include "indicator_gui.h"
+#include "util.h"
+#include "plmn.h"
+#include "message.h"
+#include "log.h"
+
+#define FIXED_BOX_PART_NAME            "elm.swallow.fixed"
+#define SYSTEM_BOX_PART_NAME   "elm.swallow.system"
+#define MINICTRL_BOX_PART_NAME "elm.swallow.minictrl"
+#define NOTI_BOX_PART_NAME     "elm.swallow.noti"
+#define DIGIT_BOX_PART_NAME "percentage.digit.box"
+
+#define CORRECTION 10
+#define MORE_NOTI "more_notify"
+
+Eina_List *_view_fixed_list;
+Eina_List *_view_system_list;
+Eina_List *_view_minictrl_list;
+Eina_List *_view_noti_list;
+Eina_List *_view_alarm_list;
+
+/* FIXME */
+#if 0
+win_info *_win;
+#endif
+static int icon_show_state = 0;
+int previous_noti_count = 0;
+
+
+
+static Evas_Object *_box_add(Evas_Object * parent)
+{
+       Evas_Object *obj = NULL;
+
+       retv_if(!parent, NULL);
+
+       obj = elm_box_add(parent);
+       retv_if(!obj, NULL);
+       evas_object_size_hint_weight_set(obj, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_fill_set(obj, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+       /* Align to left-top */
+       elm_box_horizontal_set(obj, EINA_TRUE);
+       evas_object_show(obj);
+
+       return obj;
+}
+
+
+#if 0
+static void _update_window(win_info *win)
+{
+       int root_w, root_h;
+       Ecore_X_Window xwin, root;
+
+       retif(win == NULL, , "Invalid parameter!");
+
+       xwin = elm_win_xwindow_get(win->win);
+       if (!xwin) return;
+       root = ecore_x_window_root_get(xwin);
+       if (!root) return;
+       ecore_x_window_size_get(root, &root_w, &root_h);
+
+       if (win->angle == 0 || win->angle == 180) win->w = root_w;
+       else win->w = root_h;
+
+       switch (win->angle) {
+       case 0:
+               ecore_x_window_shape_input_rectangle_set(xwin, root_w - win->w, 0, win->w, win->h);
+               break;
+       case 90:
+               ecore_x_window_shape_input_rectangle_set(xwin, 0, 0, win->h, win->w);
+               break;
+       case 180:
+               ecore_x_window_shape_input_rectangle_set(xwin, 0, 0, win->w, win->h);
+               break;
+       case 270:
+               ecore_x_window_shape_input_rectangle_set(xwin, 0, root_h - win->w, win->h, win->w);
+               break;
+       default:
+               break;
+       }
+}
+#endif
+
+#if 0
+void box_delete_noti_icon_all(win_info *win)
+{
+       icon_s *icon;
+       Eina_List *l;
+
+       elm_box_unpack_all(win->_noti_box);
+
+       EINA_LIST_FOREACH(_view_noti_list, l, icon) {
+               if (icon->obj_exist == EINA_TRUE) {
+                       if (icon_del(icon) == EINA_TRUE) {
+                               icon->obj_exist = EINA_FALSE;
+                       }
+               }
+       }
+}
+#endif
+
+
+static void _fixed_box_pack_icon(win_info *win, icon_s *icon)
+{
+       ret_if(!win);
+       ret_if(!icon);
+
+       switch (icon->type) {
+               case INDICATOR_IMG_ICON:
+                       evas_object_show(icon->img_obj.obj);
+                       elm_box_pack_start(win->_fixed_box[icon->priority], icon->img_obj.obj);
+                       break;
+               case INDICATOR_TXT_ICON:
+                       break;
+               case INDICATOR_TXT_WITH_IMG_ICON:
+                       break;
+               case INDICATOR_DIGIT_ICON:
+                       switch(icon->digit_area) {
+                               case DIGIT_UNITY:
+                                       evas_object_show(icon->img_obj.obj);
+                                       elm_box_pack_end(win->_digit_box, icon->img_obj.obj);
+                                       break;
+                               case DIGIT_DOZENS:
+                                       evas_object_show(icon->img_obj.obj);
+                                       elm_box_pack_end(win->_digit_box, icon->img_obj.obj);
+                                       break;
+                               case DIGIT_DOZENS_UNITY:
+                                       evas_object_show(icon->img_obj.obj);
+                                       elm_box_pack_end(win->_digit_box, icon->img_obj.obj);
+                                       break;
+                               case DIGIT_HUNDREDS:
+                                       evas_object_show(icon->img_obj.obj);
+                                       elm_box_pack_end(win->_digit_box, icon->img_obj.obj);
+                                       break;
+                               default:
+                                       _E("default");
+                                       break;
+                       }
+                       break;
+               default:
+                       _E("default");
+                       break;
+       }
+#ifdef _SUPPORT_SCREEN_READER
+       util_icon_access_register(icon);
+#endif
+}
+
+
+
+static void _box_pack_icon(icon_s *icon, Evas_Object *box)
+{
+       ret_if(!icon);
+       ret_if(!box);
+
+       switch (icon->type) {
+       case INDICATOR_IMG_ICON:
+               evas_object_show(icon->img_obj.obj);
+               elm_box_pack_end(box, icon->img_obj.obj);
+               break;
+       case INDICATOR_TXT_ICON:
+               break;
+       case INDICATOR_TXT_WITH_IMG_ICON:
+               break;
+       case INDICATOR_DIGIT_ICON:
+               evas_object_show(icon->img_obj.obj);
+               elm_box_pack_end(box, icon->img_obj.obj);
+               break;
+       default:
+               _E("default");
+               break;
+       }
+#ifdef _support_screen_reader
+       util_icon_access_register(icon);
+#endif
+       if (icon->area == INDICATOR_ICON_AREA_NOTI || icon->area == INDICATOR_ICON_AREA_ALARM) {
+               util_start_noti_ani(icon);
+       }
+}
+
+
+
+static void _create_img_obj(icon_s *icon)
+{
+       Evas_Object *img_eo = NULL;
+
+       ret_if(!icon);
+
+       img_eo = evas_object_data_get(icon->img_obj.obj, DATA_KEY_IMG_ICON);
+       evas_object_size_hint_min_set(img_eo, ELM_SCALE_SIZE(icon->img_obj.width), ELM_SCALE_SIZE(icon->img_obj.height));
+       box_handle_animated_gif(icon);
+}
+
+
+
+static void _update_icon(win_info *win, Eina_List *list)
+{
+       icon_s *icon;
+       Eina_List *l;
+
+       ret_if(!win);
+       ret_if(!list);
+
+       EINA_LIST_FOREACH(list, l, icon) {
+               if (icon->obj_exist == EINA_FALSE) {
+                       icon_add(win, icon);
+               }
+
+               if (icon->obj_exist == EINA_TRUE) {
+                       if (icon->area == INDICATOR_ICON_AREA_FIXED
+                       && icon->priority <= INDICATOR_PRIORITY_FIXED_MAX) {
+                               _create_img_obj(icon);
+                               _fixed_box_pack_icon(win, icon);
+                       }
+                       if (icon->area == INDICATOR_ICON_AREA_SYSTEM
+                       && icon->priority >= INDICATOR_PRIORITY_SYSTEM_MIN
+                       && icon->priority <= INDICATOR_PRIORITY_SYSTEM_MAX) {
+                               _create_img_obj(icon);
+                               _box_pack_icon(icon, win->_non_fixed_box);
+                       }
+                       if (icon->area == INDICATOR_ICON_AREA_MINICTRL
+                       && icon->priority >= INDICATOR_PRIORITY_MINICTRL_MIN
+                       && icon->priority <= INDICATOR_PRIORITY_MINICTRL_MAX) {
+                               _create_img_obj(icon);
+                               _box_pack_icon(icon, win->_minictrl_box);
+                       }
+                       if (icon->area == INDICATOR_ICON_AREA_NOTI) {
+                               _create_img_obj(icon);
+                               _box_pack_icon(icon, win->_noti_box);
+                       }
+                       if (icon->area == INDICATOR_ICON_AREA_ALARM) {
+                               _create_img_obj(icon);
+                               _box_pack_icon(icon, win->_alarm_box);
+                       }
+               }
+       }
+}
+
+
+
+extern unsigned int box_get_count(Box_List list)
+{
+       int count = 0;
+
+       switch (list) {
+       case FIXED_LIST:
+               count = eina_list_count(_view_fixed_list);
+               break;
+       case SYSTEM_LIST:
+               count = eina_list_count(_view_system_list);
+               break;
+       case MINICTRL_LIST:
+               count = eina_list_count(_view_minictrl_list);
+               break;
+       case NOTI_LIST:
+               count = eina_list_count(_view_noti_list);
+               break;
+       default:
+               _D("List dose not exist");
+               break;
+       }
+
+       return count;
+}
+
+
+
+static void _update_display(win_info *win)
+{
+       int i = 0;
+
+       ret_if(!win);
+
+       if (box_get_count(SYSTEM_LIST)) {
+               util_signal_emit(win->data, "indicator.system.show", "indicator.prog");
+       } else {
+               util_signal_emit(win->data, "indicator.system.hide", "indicator.prog");
+       }
+
+       if (box_get_count(MINICTRL_LIST)) {
+               util_signal_emit(win->data, "indicator.minictrl.show", "indicator.prog");
+       } else {
+               util_signal_emit(win->data, "indicator.minictrl.hide", "indicator.prog");
+       }
+
+       if (box_get_count(NOTI_LIST)) {
+               util_signal_emit(win->data, "indicator.noti.show", "indicator.prog");
+       } else {
+               util_signal_emit(win->data, "indicator.noti.hide", "indicator.prog");
+       }
+
+
+       if (message_ani_playing_check() == 1) {
+               return;
+       }
+
+       for (i = 0; i < FIXED_COUNT; ++i) {
+               elm_box_unpack_all(win->_fixed_box[i]);
+       }
+
+       elm_box_unpack_all(win->_non_fixed_box);
+       elm_box_unpack_all(win->_minictrl_box);
+       elm_box_unpack_all(win->_noti_box);
+       elm_box_unpack_all(win->_alarm_box);
+       elm_box_unpack_all(win->_digit_box);
+
+       _update_icon(win, _view_fixed_list);
+       _update_icon(win, _view_system_list);
+       _update_icon(win, _view_minictrl_list);
+       _update_icon(win, _view_noti_list);
+       _update_icon(win, _view_alarm_list);
+
+#if 0
+       if (win) _update_window(win);
+#endif
+}
+
+
+
+extern void box_update_display(win_info *win)
+{
+       ret_if(!win);
+
+#if 0
+       _update_window(win);
+#endif
+       icon_reset_list();
+       _update_display(win);
+       icon_handle_more_notify_icon(win);
+}
+
+
+
+extern int box_pack(icon_s *icon)
+{
+       struct appdata *ad = NULL;
+       int noti_count = 0;
+
+       retv_if(!icon, 0);
+
+       ad = (struct appdata*)icon->ad;
+
+       if (box_exist_icon(icon)) return OK;
+
+       if (INDICATOR_ICON_AREA_FIXED == icon->area) {
+               icon->exist_in_view = EINA_TRUE;
+               _view_fixed_list = eina_list_append(_view_fixed_list, icon);
+       } else if(INDICATOR_ICON_AREA_SYSTEM == icon->area) {
+               icon_s *data;
+               Eina_List *l = NULL;
+
+               EINA_LIST_FOREACH(_view_system_list, l, data) {
+                       if (data->priority <= icon->priority) {
+                               icon->exist_in_view = EINA_TRUE;
+                               _view_system_list = eina_list_append_relative_list(_view_system_list, icon, l);
+                               DBG("System (eina_list_append_relative_list) %s",icon->name);
+                               goto __CATCH;
+                       }
+               }
+
+               /* if finding condition is failed, append it at tail */
+               icon->exist_in_view = EINA_TRUE;
+               _view_system_list = eina_list_prepend(_view_system_list, icon);
+               DBG("System prepend (Priority low) : %s",icon->name);
+       } else if(INDICATOR_ICON_AREA_MINICTRL == icon->area) {
+               INFO("Pack to MINICTRL list : %s", icon->name);
+               icon_s *data;
+               Eina_List *l;
+
+               EINA_LIST_FOREACH(_view_minictrl_list, l, data) {
+                       if (data->priority <= icon->priority) {
+                               icon->exist_in_view = EINA_TRUE;
+                               _view_minictrl_list = eina_list_append_relative_list(_view_minictrl_list, icon, l);
+                               goto __CATCH;
+                       }
+               }
+
+               /* if finding condition is failed, append it at tail */
+               icon->exist_in_view = EINA_TRUE;
+               _view_minictrl_list = eina_list_append(_view_minictrl_list, icon);
+       } else if(INDICATOR_ICON_AREA_NOTI == icon->area) {
+               if(strncmp(icon->name, MORE_NOTI, strlen(MORE_NOTI))==0)
+               {
+                       icon->exist_in_view = EINA_TRUE;
+                       _view_noti_list = eina_list_prepend(_view_noti_list, icon);
+                       goto __CATCH;
+               }
+
+               /* if finding condition is failed, append it at tail */
+               icon->exist_in_view = EINA_TRUE;
+               _view_noti_list = eina_list_append(_view_noti_list, icon);
+       } else {
+               icon->exist_in_view = EINA_TRUE;
+               _view_alarm_list = eina_list_append(_view_alarm_list, icon);
+       }
+
+__CATCH:
+       previous_noti_count = noti_count;
+       if (icon->area == INDICATOR_ICON_AREA_NOTI
+                       || icon->area == INDICATOR_ICON_AREA_SYSTEM
+                       || icon->area == INDICATOR_ICON_AREA_MINICTRL) {
+               int bDisplay = 0;
+               bDisplay = 1;
+
+               if (ad->opacity_mode == INDICATOR_OPACITY_TRANSPARENT
+                               && bDisplay == 1) {
+                       util_send_status_message_start(ad,2.5);
+               }
+       }
+
+       return OK;
+}
+
+
+
+extern int box_pack_append(icon_s *icon)
+{
+       Eina_List *l;
+       icon_s *data;
+
+       retv_if(!icon, 0);
+
+       if (box_exist_icon(icon)) return OK;
+
+       switch (icon->area) {
+       case INDICATOR_ICON_AREA_FIXED:
+               icon->exist_in_view = EINA_TRUE;
+               _view_fixed_list = eina_list_append(_view_fixed_list, icon);
+               break;
+       case INDICATOR_ICON_AREA_SYSTEM:
+               icon->exist_in_view = EINA_TRUE;
+               _view_system_list = eina_list_append(_view_system_list, icon);
+               break;
+       case INDICATOR_ICON_AREA_MINICTRL:
+               icon->exist_in_view = EINA_TRUE;
+               _view_minictrl_list = eina_list_append(_view_minictrl_list, icon);
+               break;
+       case INDICATOR_ICON_AREA_NOTI:
+               EINA_LIST_FOREACH(_view_noti_list, l, data) {
+                       if (strncmp(data->name, MORE_NOTI, strlen(MORE_NOTI)) == 0) {
+                               icon->exist_in_view = EINA_TRUE;
+                               _view_noti_list = eina_list_append_relative_list(_view_noti_list, icon, l);
+                               return OK;
+                       }
+               }
+               icon->exist_in_view = EINA_TRUE;
+               _view_noti_list = eina_list_append(_view_noti_list, icon);
+               break;
+       default:
+               _D("Icon area does not exists");
+               break;
+       }
+
+       return OK;
+}
+
+
+
+int box_unpack(icon_s *icon)
+{
+       retv_if(!icon, 0);
+
+       SECURE_DBG("[box_unpack] %s!",icon->name);
+       switch (icon->area) {
+       case INDICATOR_ICON_AREA_FIXED:
+               icon->exist_in_view = EINA_FALSE;
+               _view_fixed_list = eina_list_remove(_view_fixed_list, icon);
+               break;
+       case INDICATOR_ICON_AREA_SYSTEM:
+               icon->exist_in_view = EINA_FALSE;
+               _view_system_list = eina_list_remove(_view_system_list, icon);
+               break;
+       case INDICATOR_ICON_AREA_MINICTRL:
+               icon->exist_in_view = EINA_FALSE;
+               _view_minictrl_list = eina_list_remove(_view_minictrl_list, icon);
+               break;
+       case INDICATOR_ICON_AREA_NOTI:
+               icon->exist_in_view = EINA_FALSE;
+               _view_noti_list = eina_list_remove(_view_noti_list, icon);
+               break;
+       case INDICATOR_ICON_AREA_ALARM:
+               icon->exist_in_view = EINA_FALSE;
+               _view_alarm_list = eina_list_remove(_view_alarm_list, icon);
+               break;
+       default:
+               _D("icon area dose not exists");
+               break;
+       }
+
+#if 0
+       int noti_count = 0;
+
+       noti_count = box_get_count(NOTI_LIST);
+       if (noti_count > 0) {
+               util_signal_emit(_win->data, "indicator.noti.show", "indicator.prog");
+       } else {
+               DBG("Need to stop blink animation and hide icon");
+               util_signal_emit_by_win(_win->data,"indicator.noti.hide", "indicator.prog");
+       }
+#endif
+#ifdef _SUPPORT_SCREEN_READER
+       util_icon_access_unregister(icon);
+#endif
+
+       if (icon->obj_exist == EINA_TRUE) {
+               if (icon_del(icon) == EINA_TRUE) {
+                       icon->obj_exist = EINA_FALSE;
+               }
+       }
+
+       return OK;
+}
+
+
+
+extern void box_init(win_info *win)
+{
+       char *str_text = NULL;
+       int i = 0;
+
+       ret_if(!win);
+
+       /* Make Fixed Box Object */
+       for (i = 0; i < FIXED_COUNT; ++i) {
+               if (win->_fixed_box[i] == NULL) {
+                       win->_fixed_box[i] = _box_add(win->layout);
+                       ret_if(!(win->_fixed_box[i]));
+
+                       Eina_Strbuf *temp_str = eina_strbuf_new();
+                       eina_strbuf_append_printf(temp_str, "%s%d", FIXED_BOX_PART_NAME, i);
+                       str_text = eina_strbuf_string_steal(temp_str);
+
+                       edje_object_part_swallow(elm_layout_edje_get(win->layout), str_text, win->_fixed_box[i]);
+                       eina_strbuf_free(temp_str);
+                       free(str_text);
+               }
+       }
+
+       /* Make Non Fixed Box(SYSTEM) Object */
+       win->_non_fixed_box = _box_add(win->layout);
+       ret_if(!(win->_non_fixed_box));
+
+       evas_object_size_hint_align_set(win->_non_fixed_box, EVAS_HINT_FILL, EVAS_HINT_FILL);
+       edje_object_part_swallow(elm_layout_edje_get(win->layout), SYSTEM_BOX_PART_NAME, win->_non_fixed_box);
+
+       /* Make Non Fixed Box(MINICTRL) Object */
+       win->_minictrl_box = _box_add(win->layout);
+       ret_if(!(win->_minictrl_box));
+
+       evas_object_size_hint_align_set(win->_minictrl_box, EVAS_HINT_FILL, EVAS_HINT_FILL);
+       edje_object_part_swallow(elm_layout_edje_get(win->layout), MINICTRL_BOX_PART_NAME, win->_minictrl_box);
+
+       /* Make Non Fixed Box(NOTI) Box Object */
+       win->_noti_box = _box_add(win->layout);
+       ret_if(!(win->_noti_box));
+
+       evas_object_size_hint_align_set(win->_noti_box, EVAS_HINT_FILL, EVAS_HINT_FILL);
+       edje_object_part_swallow(elm_layout_edje_get(win->layout), NOTI_BOX_PART_NAME, win->_noti_box);
+
+       win->_alarm_box = _box_add(win->layout);
+       ret_if(!(win->_alarm_box));
+
+       evas_object_size_hint_align_set(win->_alarm_box, EVAS_HINT_FILL, EVAS_HINT_FILL);
+       edje_object_part_swallow(elm_layout_edje_get(win->layout), "indicator.alarm.icon", win->_alarm_box);
+
+       win->_digit_box = _box_add(win->layout);
+       ret_if(!(win->_digit_box));
+
+       evas_object_size_hint_align_set(win->_digit_box, EVAS_HINT_FILL, EVAS_HINT_FILL);
+       edje_object_part_swallow(elm_layout_edje_get(win->layout), DIGIT_BOX_PART_NAME, win->_digit_box);
+
+       return;
+}
+
+
+
+
+extern void box_fini(win_info *win)
+{
+       int i = 0;
+
+       ret_if(!win);
+       ret_if(!(win->layout));
+
+       if (win->_digit_box != NULL) {
+               edje_object_part_unswallow(elm_layout_edje_get(win->layout), win->_digit_box);
+               elm_box_unpack_all(win->_digit_box);
+               evas_object_del(win->_digit_box);
+               win->_digit_box = NULL;
+       }
+
+       if (win->_non_fixed_box != NULL) {
+               edje_object_part_unswallow(elm_layout_edje_get(win->layout), win->_non_fixed_box);
+               elm_box_unpack_all(win->_non_fixed_box);
+               evas_object_del(win->_non_fixed_box);
+               win->_non_fixed_box = NULL;
+       }
+
+       if (win->_minictrl_box != NULL) {
+               edje_object_part_unswallow(elm_layout_edje_get(win->layout), win->_minictrl_box);
+               elm_box_unpack_all(win->_minictrl_box);
+               evas_object_del(win->_minictrl_box);
+               win->_minictrl_box = NULL;
+       }
+
+       if (win->_noti_box != NULL) {
+               edje_object_part_unswallow(elm_layout_edje_get(win->layout), win->_noti_box);
+               elm_box_unpack_all(win->_noti_box);
+               evas_object_del(win->_noti_box);
+               win->_noti_box = NULL;
+       }
+
+       if (win->_alarm_box != NULL) {
+               edje_object_part_unswallow(elm_layout_edje_get(win->layout), win->_alarm_box);
+               elm_box_unpack_all(win->_alarm_box);
+               evas_object_del(win->_alarm_box);
+               win->_alarm_box = NULL;
+       }
+
+       for (i = 0; i < FIXED_COUNT; ++i) {
+               if (win->_fixed_box[i] != NULL) {
+                       edje_object_part_unswallow(elm_layout_edje_get(win->layout), win->_fixed_box[i]);
+                       elm_box_unpack_all(win->_fixed_box[i]);
+                       evas_object_del(win->_fixed_box[i]);
+                       win->_fixed_box[i] = NULL;
+               }
+       }
+
+       return;
+}
+
+
+
+unsigned int box_get_count_in_noti_list_except_minictrl(void)
+{
+       icon_s *data;
+       Eina_List *l;
+       int count = 0;
+
+       EINA_LIST_FOREACH(_view_noti_list, l, data) {
+               if (data->priority != INDICATOR_PRIORITY_NOTI_1) {
+                       count++;
+               }
+       }
+       return count;
+
+}
+
+
+
+int box_get_enabled_noti_count(void)
+{
+       int enabled_noti_cnt = 0;
+
+       int system_cnt = box_get_count(SYSTEM_LIST);
+       int minictrl_cnt = box_get_count(MINICTRL_LIST);
+       DBG("System Count : %d, Minictrl Count : %d", system_cnt, minictrl_cnt);
+
+       enabled_noti_cnt = MAX_NOTI_ICONS_PORT - system_cnt - minictrl_cnt;
+       if(enabled_noti_cnt <= 0) {
+               enabled_noti_cnt = 1;    // Notification icon must show at least 1.
+       }
+
+       DBG("Notification icon enabled_noti_cnt %d",enabled_noti_cnt);
+
+       return enabled_noti_cnt;
+}
+
+
+
+int box_get_enabled_system_count(void)
+{
+       int system_cnt = 0;
+       int noti_cnt = box_get_count(NOTI_LIST);
+       int minictrl_cnt = box_get_count(MINICTRL_LIST);
+
+       _D("Noti count : %d , MiniCtrl count : %d", noti_cnt, minictrl_cnt);
+
+       system_cnt = PORT_SYSTEM_ICON_COUNT;  // MAX = 5.
+
+       if(noti_cnt > 0) {
+               system_cnt--;    // Notification icon must show at least 1.
+       }
+
+       if(minictrl_cnt > 0) {
+               system_cnt--;    // Minictrl icon must show at least 1.
+       }
+
+       return system_cnt;
+}
+
+
+
+int box_get_minictrl_list(void)
+{
+       int icon_count = 0;
+       int noti_count = box_get_count(NOTI_LIST);
+       int system_count = box_get_count(SYSTEM_LIST);
+
+       icon_count = PORT_MINICTRL_ICON_COUNT; // = 2.    MIN (1) / MAX (3)
+
+       if(noti_count) {        // noti_count >= 1
+               if(system_count >= 3) {
+                       icon_count--;   // icon_count = 2 -> 1
+               } else if(system_count <= 1) {
+                       icon_count++;   // icon_count = 2 -> 3
+               }
+       } else {        // noti_count == 0
+               if(system_count >= 4) {
+                       icon_count--;   // icon_count = 2 -> 1
+               } else if(system_count <= 2) {
+                       icon_count++;   // icon_count = 2 -> 3
+               }
+       }
+
+       _D("Noti count : %d, System count : %d, Minictrl count : %d", noti_count, system_count, icon_count);
+
+       return icon_count;
+}
+
+
+
+int box_get_max_count_in_non_fixed_list(void)
+{
+       int added_count = 0;
+       int icon_count = 0;
+       int status = 0;
+
+       if (OK != vconf_get_bool(VCONFKEY_SETAPPL_BATTERY_PERCENTAGE_BOOL, &status)) {
+               _E("Fail to get vconfkey");
+       }
+
+       if (status == EINA_TRUE) {
+               added_count = BATTERY_TEXT_ON_COUNT;
+       } else {
+               added_count = BATTERY_TEXT_OFF_COUNT;
+       }
+
+       icon_count = PORT_NONFIXED_ICON_COUNT + added_count;
+
+       return icon_count;
+}
+
+
+
+Icon_AddType box_is_enable_to_insert_in_non_fixed_list(icon_s *obj)
+{
+       icon_s *icon;
+       Eina_List *l;
+
+       int higher_cnt = 0;
+       int same_cnt = 0;
+       int same_top_cnt = 0;
+       int lower_cnt = 0;
+       int noti_cnt = box_get_count(NOTI_LIST);
+       Eina_List * tmp_list = NULL;
+
+       retv_if(!obj, 0);
+
+       switch (obj->area) {
+       case INDICATOR_ICON_AREA_SYSTEM:
+               tmp_list = _view_system_list;
+               break;
+       case INDICATOR_ICON_AREA_MINICTRL:
+               tmp_list = _view_minictrl_list;
+               break;
+       case INDICATOR_ICON_AREA_NOTI:
+               tmp_list = _view_noti_list;
+               break;
+       default:
+               _D("obj area does not exists");
+               break;
+       }
+
+       EINA_LIST_FOREACH(tmp_list, l, icon) {
+               /* If same Icon exist in non-fixed view list, it need not to add icon */
+               if (!strcmp(icon->name, obj->name)) {
+                       return CANNOT_ADD;
+               }
+
+               if (icon->priority > obj->priority) {
+                       ++higher_cnt;
+               } else if (icon->priority == obj->priority) {
+                       ++same_cnt;
+                       if (icon->always_top == EINA_TRUE) {
+                               ++same_top_cnt;
+                       }
+               } else {
+                       lower_cnt++;
+               }
+       }
+
+       if (obj->area == INDICATOR_ICON_AREA_SYSTEM) {
+               if (higher_cnt + same_cnt + lower_cnt >= box_get_enabled_system_count()) {
+                       if (obj->always_top == EINA_TRUE) {
+                               if(same_top_cnt >= box_get_enabled_system_count()) {
+                                       return CANNOT_ADD;
+                               } else {
+                                       return CAN_ADD_WITH_DEL_SYSTEM;
+                               }
+                       } else {
+                               if (higher_cnt >= box_get_enabled_system_count()) {
+                                       return CANNOT_ADD;
+                               } else if (higher_cnt+same_cnt >= box_get_enabled_system_count()) {
+                                       return CAN_ADD_WITH_DEL_SYSTEM;
+                               } else {
+                                       return CAN_ADD_WITH_DEL_SYSTEM;
+                               }
+                       }
+               } else {
+                       return CAN_ADD_WITHOUT_DEL;
+               }
+       } else if (obj->area == INDICATOR_ICON_AREA_MINICTRL) {
+               if (higher_cnt + same_cnt + lower_cnt >= box_get_minictrl_list()) {
+                       if (obj->always_top == EINA_TRUE) {
+                               if (same_top_cnt >= box_get_minictrl_list()) {
+                                       return CANNOT_ADD;
+                               } else {
+                                       return CAN_ADD_WITH_DEL_MINICTRL;
+                               }
+                       } else {
+                               if (higher_cnt >= box_get_minictrl_list()) {
+                                       return CANNOT_ADD;
+                               } else if (higher_cnt+same_cnt >= box_get_minictrl_list()) {
+                                       return CAN_ADD_WITH_DEL_MINICTRL;
+                               } else {
+                                       return CAN_ADD_WITH_DEL_MINICTRL;
+                               }
+                       }
+               } else {
+                       return CAN_ADD_WITHOUT_DEL;
+               }
+       } else {
+               if (noti_cnt > MAX_NOTI_ICONS_PORT) {
+                       return CAN_ADD_WITH_DEL_NOTI;
+               } else {
+                       return CAN_ADD_WITHOUT_DEL;
+               }
+       }
+
+       return CANNOT_ADD;
+}
+
+
+
+int box_get_priority_in_move_area(win_info *win, Evas_Coord curr_x, Evas_Coord curr_y)
+{
+       Evas_Coord x, y, h, w;
+
+       /* Home Area Check for launching home */
+       evas_object_geometry_get(win->_fixed_box[INDICATOR_PRIORITY_FIXED1], &x, &y, &h, &w);
+
+       if (curr_x >= x - CORRECTION && curr_x <= x+h + CORRECTION) {
+               if (curr_y == -1) {
+                       return INDICATOR_PRIORITY_FIXED1;
+               } else if (curr_y >= y - CORRECTION && curr_y <= y+h + CORRECTION) {
+                       return INDICATOR_PRIORITY_FIXED1;
+               }
+       }
+
+       /* Non Fixed Area check for show/hide quickpanel */
+       return -1;
+}
+
+
+
+int box_check_indicator_area(win_info *win, Evas_Coord curr_x, Evas_Coord curr_y)
+{
+       Evas_Coord x, y, w, h;
+
+       /* Home Area Check for launching home */
+       evas_object_geometry_get(win->layout, &x, &y, &w, &h);
+
+       if (curr_x >= x && curr_x < x + w && curr_y >= y && curr_y < y + h) {
+               return 1;
+       }
+
+       return 0;
+}
+
+
+
+int box_check_home_icon_area(win_info *win, Evas_Coord curr_x, Evas_Coord curr_y)
+{
+       Evas_Coord x, y, w, h;
+
+       /* Home Area Check for launching home */
+       evas_object_geometry_get(win->_fixed_box[INDICATOR_PRIORITY_FIXED7], &x, &y, &w, &h);
+
+       if (curr_x >= x && curr_x < x + w && curr_y >= y && curr_y < y + h) {
+               return 1;
+       }
+
+       return 0;
+}
+
+
+
+int box_check_more_icon_area(win_info *win, Evas_Coord curr_x, Evas_Coord curr_y)
+{
+       Evas_Coord x, y, w, h;
+
+       /* Home Area Check for launching home */
+       evas_object_geometry_get(win->_fixed_box[INDICATOR_PRIORITY_FIXED11], &x, &y, &w, &h);
+
+       if (curr_x >= x && curr_x < x + w && curr_y >= y && curr_y < y + h) {
+               return 1;
+       }
+
+       return 0;
+}
+
+
+
+void box_icon_state_set(int bShow, char* file, int line)
+{
+       icon_show_state = bShow;
+}
+
+
+
+int box_icon_state_get(void)
+{
+       return icon_show_state;
+}
+
+
+
+extern Eina_Bool box_exist_icon(icon_s *obj)
+{
+       retv_if(!obj, ECORE_CALLBACK_CANCEL);
+
+       switch (obj->area) {
+       case INDICATOR_ICON_AREA_FIXED:
+               if (eina_list_data_find(_view_fixed_list, obj)) {
+                       return EINA_TRUE;
+               } else {
+                       return EINA_FALSE;
+               }
+               break;
+       case INDICATOR_ICON_AREA_SYSTEM:
+               if (eina_list_data_find(_view_system_list, obj)) {
+                       return EINA_TRUE;
+               } else {
+                       return EINA_FALSE;
+               }
+               break;
+       case INDICATOR_ICON_AREA_MINICTRL:
+               if (eina_list_data_find(_view_minictrl_list, obj)) {
+                       return EINA_TRUE;
+               } else {
+                       return EINA_FALSE;
+               }
+               break;
+       case INDICATOR_ICON_AREA_NOTI:
+               if (eina_list_data_find(_view_noti_list, obj)) {
+                       return EINA_TRUE;
+               } else {
+                       return EINA_FALSE;
+               }
+               break;
+       default:
+               break;
+       }
+
+       return EINA_FALSE;
+}
+
+
+
+int box_handle_animated_gif(icon_s *icon)
+{
+       int bPlay = TRUE;
+       int val = 0;
+       Evas_Object *icon_eo = evas_object_data_get(icon->img_obj.obj, DATA_KEY_IMG_ICON);
+
+       retif(icon == NULL, FAIL, "Invalid parameter!");
+
+       if (elm_image_animated_available_get(icon_eo) == EINA_FALSE) {
+               return FALSE;
+       }
+
+       if (vconf_get_int(VCONFKEY_PM_STATE, &val) < 0) {
+               return FALSE;
+       }
+
+       switch (val) {
+       case VCONFKEY_PM_STATE_LCDOFF : //LCD OFF
+               bPlay = FALSE;
+               break;
+       case VCONFKEY_PM_STATE_NORMAL : //LCD ON
+               bPlay = TRUE;
+               break;
+       default:
+               bPlay = TRUE;
+               break;
+       }
+
+       if (bPlay == TRUE) {
+               if (elm_image_animated_get(icon_eo)==EINA_FALSE) {
+                       elm_image_animated_set(icon_eo,EINA_TRUE);
+               }
+
+               if (elm_image_animated_play_get(icon_eo) == EINA_FALSE) {
+                       elm_image_animated_play_set(icon_eo, EINA_TRUE);
+               }
+       } else {
+               if(elm_image_animated_play_get(icon_eo) == EINA_TRUE) {
+                       elm_image_animated_play_set(icon_eo, EINA_FALSE);
+               }
+       }
+
+       return TRUE;
+}
+
+
+
+void box_noti_ani_handle(int bStart)
+{
+       icon_s *icon;
+       Eina_List *l;
+
+       EINA_LIST_FOREACH(_view_noti_list, l, icon) {
+               if (icon->obj_exist == EINA_TRUE) {
+                       if (bStart == 1) {
+                               util_start_noti_ani(icon);
+                       } else {
+                               util_stop_noti_ani(icon);
+                       }
+               }
+       }
+}
+
+/* End of file */
diff --git a/daemon/box.h b/daemon/box.h
new file mode 100644 (file)
index 0000000..1352514
--- /dev/null
@@ -0,0 +1,77 @@
+/*
+ *  Indicator
+ *
+ * Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+
+#ifndef __INDICATOR_BOX_UTIL_H__
+#define __INDICATOR_BOX_UTIL_H__
+
+#include <Elementary.h>
+
+#include "indicator.h"
+
+typedef enum _Icon_AddType {
+       CANNOT_ADD = -1,
+       CAN_ADD_WITH_DEL_SYSTEM,
+       CAN_ADD_WITH_DEL_MINICTRL,
+       CAN_ADD_WITH_DEL_NOTI,
+       CAN_ADD_WITHOUT_DEL,
+} Icon_AddType;
+
+typedef enum _Icon_Display_Count {
+       BATTERY_TEXT_ON_COUNT = 0,
+       BATTERY_TEXT_OFF_COUNT = 0,
+       PORT_NONFIXED_ICON_COUNT = 7,
+       LAND_NONFIXED_ICON_COUNT = 11,
+       PORT_SYSTEM_ICON_COUNT = 5,   // MIN : (1), MAX : (5)
+       LAND_SYSTEM_ICON_COUNT = 6,
+       PORT_MINICTRL_ICON_COUNT = 2, // MIN : (1), MAX : (3)
+       LAND_MINICTRL_ICON_COUNT = 2,
+} Icon_Display_Count;
+
+typedef enum Box_List {
+       FIXED_LIST = 0,
+       SYSTEM_LIST,
+       MINICTRL_LIST,
+       NOTI_LIST
+} Box_List;
+
+extern int box_pack(icon_s *icon);
+extern int box_pack_append(icon_s *icon);
+extern int box_unpack(icon_s *icon);
+extern void box_init(win_info *win);
+extern void box_fini(win_info *win);
+extern unsigned int box_get_count(Box_List list);
+extern int box_get_max_count_in_non_fixed_list(void);
+extern Icon_AddType box_is_enable_to_insert_in_non_fixed_list(icon_s *obj);
+extern int box_get_priority_in_move_area(win_info *win, Evas_Coord, Evas_Coord);
+extern int box_check_indicator_area(win_info *win,Evas_Coord curr_x, Evas_Coord curr_y);
+extern int box_check_home_icon_area(win_info *win,Evas_Coord curr_x, Evas_Coord curr_y);
+extern Eina_Bool box_exist_icon(icon_s *obj);
+extern int box_handle_animated_gif(icon_s *icon);
+extern void box_noti_ani_handle(int bStart);
+extern void box_icon_state_set(int bShow,char* file,int line);
+extern int box_icon_state_get(void);
+extern unsigned int box_get_count_in_noti_list_except_minictrl(void);
+extern int box_get_enabled_noti_count(void);
+extern int box_check_more_icon_area(win_info *win, Evas_Coord curr_x, Evas_Coord curr_y);
+extern void box_update_display(win_info *win);
+extern int box_get_enabled_system_count(void);
+extern int box_get_minictrl_list(void);
+
+#endif /*__INDICATOR_BOX_UTIL_H__*/
old mode 100755 (executable)
new mode 100644 (file)
index 79ab49c..0021519
@@ -1,19 +1,23 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ *  Indicator
  *
- * Licensed under the Flora License, Version 1.1 (the "License");
+ * Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.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/
+ * http://www.apache.org/licenses/LICENSE-2.0
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
+ *
  */
 
+
 #ifndef __DEF_common_H_
 #define __DEF_common_H_
 
@@ -25,7 +29,7 @@
 #define FAIL   (-1)
 
 #ifdef _DLOG_USED
-#define LOG_TAG "indicator"
+//#define LOG_TAG "INDICATOR"
 #include <dlog.h>
 
 #define ERR(str, args...)      LOGE("%s[%d]\t " #str "\n", \
 #define DBG(str, args...)      LOGD("%s[%d]\t " #str "\n", \
                                        __func__, __LINE__, ##args)
 #define INFO(str, args...)     LOGI(#str"\n", ##args)
+
+#define SECURE_ERR(str, args...)       SECURE_LOGE("%s[%d]\t " #str "\n", \
+                                       __func__, __LINE__, ##args)
+#define SECURE_DBG(str, args...)       SECURE_LOGD("%s[%d]\t " #str "\n", \
+                                       __func__, __LINE__, ##args)
+#define SECURE_INFO(str, args...)      SECURE_LOGI(#str"\n", ##args)
+
 #elif FILE_DEBUG /*_DLOG_USED*/
 #include "indicator_debug_util.h"
 #define ERR(str, args...)      debug_printf("%s[%d]\t " #str "\n", \
@@ -54,6 +65,7 @@
                return ret;\
        } \
 } while (0);
+#define ECORE_FILE_MONITOR_DELIF(p) ({if (p) {ecore_file_monitor_del(p); p = NULL; }})
 
 #define gotoif(cond, target, str, args...) do {\
        if (cond) { \
diff --git a/daemon/icon.c b/daemon/icon.c
new file mode 100644 (file)
index 0000000..4e2f625
--- /dev/null
@@ -0,0 +1,824 @@
+/*
+ *  Indicator
+ *
+ * Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * 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 <Eina.h>
+#include <vconf.h>
+#include <app_preference.h>
+
+#include "common.h"
+#include "box.h"
+#include "icon.h"
+#include "list.h"
+#include "main.h"
+#include "indicator_gui.h"
+#include "util.h"
+#include "log.h"
+
+#define PRIVATE_DATA_KEY_ICON_B_ANI "p_i_ba"
+
+extern int current_angle;
+
+#define ON_TIMER_ICON_ANIMATION_FRAME_TIME 0.3
+#define UPLOAD_ICON_ANIMATION_SIGNAL   "indicator.ani.uploading.%d"
+#define DOWNLOAD_ICON_ANIMATION_SIGNAL "indicator.ani.downloading.%d"
+
+static unsigned int update_icon_flag = 1;      // For battery problem
+
+
+
+static void _reset_on_timer_icon_animation(icon_s *icon)
+{
+       ret_if(!icon);
+
+       if (icon->p_animation_timer) {
+               ecore_timer_del(icon->p_animation_timer);
+               icon->p_animation_timer = NULL;
+       }
+       icon->animation_in_progress = EINA_FALSE;
+       icon->last_animation_timestamp = ecore_time_unix_get();
+       icon->signal_to_emit_prefix[0] = '\0';
+       icon->animation_state = UD_ICON_ANI_STATE_0;
+}
+
+
+
+static Eina_Bool _animate_on_timer_cb(void *data)
+{
+       icon_s *icon = NULL;
+
+       retv_if(!data, ECORE_CALLBACK_CANCEL);
+
+       icon = (icon_s *)data;
+
+       if (icon->animation_in_progress == EINA_FALSE) {
+               icon->p_animation_timer = NULL;
+               return ECORE_CALLBACK_CANCEL;
+       }
+
+       if ((ecore_time_unix_get() - icon->last_animation_timestamp) < ON_TIMER_ICON_ANIMATION_FRAME_TIME) {
+               return ECORE_CALLBACK_RENEW;
+       }
+
+       Evas_Object *img_edje = elm_layout_edje_get(icon->img_obj.obj);
+       retv_if(!img_edje, ECORE_CALLBACK_CANCEL);
+
+       char signal_to_emit[32] = {'\0',};
+       sprintf(signal_to_emit,icon->signal_to_emit_prefix,icon->animation_state);
+
+       edje_object_signal_emit(img_edje, signal_to_emit,"prog");
+
+       if (icon->animation_state == UD_ICON_ANI_STATE_MAX) {
+               icon->animation_state = UD_ICON_ANI_STATE_0;
+       } else {
+               icon->animation_state++;
+       }
+       icon->last_animation_timestamp = ecore_time_unix_get();
+
+       return ECORE_CALLBACK_RENEW;
+}
+
+
+
+static const char *_icon_ani_type_set_send_signal(icon_s *icon, Icon_Ani_Type type)
+{
+       retv_if(!icon, NULL);
+
+       const char *BLINK_SIGNAL = "icon,state,blink";
+       const char *ROATATE_SIGNAL = "icon,state,rotate";
+       const char *METRONOME_SIGNAL = "icon,state,metronome";
+       const char *DEFAULT = "icon,state,default";
+       const char *send_signal = DEFAULT;
+
+       switch (type) {
+       case ICON_ANI_BLINK:
+               send_signal = BLINK_SIGNAL;
+               break;
+       case ICON_ANI_ROTATE:
+               send_signal = ROATATE_SIGNAL;
+               break;
+       case ICON_ANI_METRONOME:
+               send_signal = METRONOME_SIGNAL;
+               break;
+       case ICON_ANI_DOWNLOADING:
+       case ICON_ANI_UPLOADING:
+               /* If this icon is already animated during download/upload we don't have to set timer again */
+               if (icon->animation_in_progress == EINA_FALSE) {
+                       _reset_on_timer_icon_animation(icon);
+                       send_signal = "dummy.signal";
+
+                       if (type == ICON_ANI_DOWNLOADING) {
+                               strncpy(icon->signal_to_emit_prefix, DOWNLOAD_ICON_ANIMATION_SIGNAL, sizeof(DOWNLOAD_ICON_ANIMATION_SIGNAL));
+                       }
+
+                       if (type == ICON_ANI_UPLOADING) {
+                               strncpy(icon->signal_to_emit_prefix, UPLOAD_ICON_ANIMATION_SIGNAL,sizeof(UPLOAD_ICON_ANIMATION_SIGNAL));
+                       }
+                       icon->animation_in_progress = EINA_TRUE;
+                       icon->p_animation_timer = ecore_timer_add(ON_TIMER_ICON_ANIMATION_FRAME_TIME,_animate_on_timer_cb, icon);
+               }
+               break;
+       default:
+               break;
+       }
+
+       return send_signal;
+}
+
+
+
+void icon_ani_set(icon_s *icon, Icon_Ani_Type type)
+{
+       Evas_Object *img_edje = NULL;
+       const char *send_signal = NULL;
+
+       ret_if(!icon);
+
+       icon->ani = type;
+
+       if (!icon->obj_exist) return;
+
+       send_signal = _icon_ani_type_set_send_signal(icon, type);
+       ret_if(!send_signal);
+
+       switch (icon->type) {
+       case INDICATOR_IMG_ICON:
+               img_edje = elm_layout_edje_get(icon->img_obj.obj);
+               edje_object_signal_emit(img_edje, send_signal,"elm.swallow.icon");
+               break;
+       case INDICATOR_TXT_ICON:
+               break;
+       case INDICATOR_TXT_WITH_IMG_ICON:
+               break;
+       case INDICATOR_DIGIT_ICON:
+               img_edje = elm_layout_edje_get(icon->img_obj.obj);
+               edje_object_signal_emit(img_edje, send_signal,"elm.swallow.icon");
+               break;
+       default:
+               break;
+       }
+}
+
+
+
+static void _fixed_icon_layout_file_set(icon_s *icon, Evas_Object *ly)
+{
+       ret_if(!icon);
+       ret_if(!ly);
+
+       if(icon->type == INDICATOR_DIGIT_ICON && icon->digit_area == DIGIT_DOZENS) {
+               elm_layout_file_set(ly, ICON_THEME_FILE,"elm/indicator/icon/dozen_digit");
+       } else {
+               elm_layout_file_set(ly, ICON_THEME_FILE,"elm/indicator/icon/base");
+       }
+}
+
+
+
+static void _noti_ani_icon_layout_file_set(int noti_is_ani, Evas_Object *ly)
+{
+       ret_if(!ly);
+
+       if (noti_is_ani) {
+               evas_object_data_set(ly, PRIVATE_DATA_KEY_ICON_B_ANI, (void *) 1);
+               elm_layout_file_set(ly, ICON_NONFIXED_THEME_ANI_FILE, "elm/indicator/icon/base");
+       } else {
+               elm_layout_file_set(ly, ICON_NONFIXED_THEME_FILE, "elm/indicator/icon/base");
+       }
+}
+
+
+
+static Evas_Object *_img_icon_add(win_info *win, icon_s *icon)
+{
+       char path[PATH_MAX];
+       Evas_Object *evas_icon;
+       Evas_Object *ly;
+       char *imgpath = NULL;
+       int noti_is_ani = 0;
+       int b_ani = 0;
+
+       retv_if(!win, NULL);
+       retv_if(!icon, NULL);
+
+       imgpath = (char *) icon->img_obj.data;
+
+       _reset_on_timer_icon_animation(icon);
+
+       if (icon->img_obj.width <= 0) {
+               icon->img_obj.width = DEFAULT_ICON_WIDTH;
+       }
+
+       if (icon->img_obj.height <= 0) {
+               icon->img_obj.height = DEFAULT_ICON_HEIGHT;
+       }
+
+       memset(path, 0x00, sizeof(path));
+
+       ly = elm_layout_add(win->layout);
+       retv_if(!ly, NULL);
+
+       if (icon->area == INDICATOR_ICON_AREA_FIXED) {
+               _fixed_icon_layout_file_set(icon, ly);
+       } else {
+               noti_is_ani = util_check_noti_ani(imgpath);
+               _noti_ani_icon_layout_file_set(noti_is_ani, ly);
+       }
+
+       evas_icon = elm_image_add(ly);
+       retv_if(!evas_icon, NULL);
+
+       b_ani = (int) evas_object_data_get(ly, PRIVATE_DATA_KEY_ICON_B_ANI);
+       if (!b_ani) {
+               /* Absolute path? */
+               if (strncmp(imgpath, "/", 1) != 0) {
+                       snprintf(path, sizeof(path), "%s/%s", util_get_icon_dir(), imgpath);
+               } else {
+                       strncpy(path, imgpath, sizeof(path)-1);
+               }
+
+               if (!ecore_file_exists(path)) {
+                       _E("icon file does not exist : %s", path);
+               }
+               elm_image_file_set(evas_icon, path, NULL);
+       }
+
+       evas_object_size_hint_min_set(evas_icon, ELM_SCALE_SIZE(icon->img_obj.width), ELM_SCALE_SIZE(icon->img_obj.height));
+       elm_object_part_content_set(ly, "elm.swallow.icon", evas_icon);
+
+       evas_object_data_set(ly, DATA_KEY_IMG_ICON, evas_icon);
+       evas_object_size_hint_min_set(ly, ELM_SCALE_SIZE(icon->img_obj.width), ELM_SCALE_SIZE(icon->img_obj.height));
+       evas_object_hide(ly);
+
+       return ly;
+}
+
+
+
+char *icon_label_set(const char *buf, char *font_name, char *font_style, int font_size, void *data)
+{
+       Eina_Strbuf *temp_buf = NULL;
+       char *ret_str = NULL;
+       char *label_font = ICON_FONT_NAME;
+       char *label_font_style = ICON_FONT_STYLE;
+       int label_font_size = ICON_FONT_SIZE;
+       Eina_Bool buf_result = EINA_FALSE;
+
+       retif(data == NULL || buf == NULL, NULL, "Invalid parameter!");
+
+       temp_buf = eina_strbuf_new();
+       if (font_name != NULL)
+               label_font = font_name;
+       if (font_style != NULL)
+               label_font_style = font_style;
+       if (font_size > 0)
+               label_font_size = font_size;
+
+       buf_result = eina_strbuf_append_printf(temp_buf, CUSTOM_LABEL_STRING,
+                                                  label_font, label_font_style,
+                                                  label_font_size, buf);
+
+       if (buf_result != EINA_FALSE)
+               ret_str = eina_strbuf_string_steal(temp_buf);
+
+       eina_strbuf_free(temp_buf);
+
+       return ret_str;
+}
+
+
+
+Eina_Bool icon_add(win_info *win, icon_s *icon)
+{
+       retv_if(!icon, EINA_FALSE);
+
+       switch (icon->type) {
+       case INDICATOR_TXT_ICON:
+               break;
+       case INDICATOR_IMG_ICON:
+               icon->img_obj.obj = _img_icon_add(win, icon);
+               break;
+       case INDICATOR_TXT_WITH_IMG_ICON:
+               break;
+       case INDICATOR_DIGIT_ICON:
+               icon->img_obj.obj = _img_icon_add(win, icon);
+               break;
+       default:
+               _E("Icon type check error!");
+               return EINA_FALSE;
+       }
+       icon->obj_exist = EINA_TRUE;
+
+       return EINA_TRUE;
+}
+
+
+
+Eina_Bool icon_del(icon_s *icon)
+{
+       Evas_Object *icon_obj;
+       retif(icon == NULL, EINA_FALSE, "Invalid parameter!");
+
+       _reset_on_timer_icon_animation(icon);
+
+       if (icon->obj_exist != EINA_FALSE) {
+               if (icon->img_obj.obj) {
+                       icon_obj =
+                               evas_object_data_get(icon->img_obj.obj, DATA_KEY_IMG_ICON);
+                       evas_object_del(icon_obj);
+                       evas_object_del(icon->img_obj.obj);
+                       icon->img_obj.obj = NULL;
+               }
+       }
+       return EINA_TRUE;
+}
+
+
+
+/******************************************************************************
+ *
+ * Static functions : util functions - check priority
+ *
+ *****************************************************************************/
+
+static int _show_others_in_same_priority(icon_s *icon)
+{
+       icon_s *wish_add_icon;
+       int area = icon->area;
+       retif(icon == NULL, FAIL, "Invalid parameter!");
+
+       wish_add_icon = list_try_to_find_icon_to_show(icon->area, icon->priority);
+       if (wish_add_icon == NULL)
+       {
+               return OK;
+       }
+
+       if (box_exist_icon(wish_add_icon))
+       {
+               /* Already shown icon */
+               return OK;
+       }
+
+       if(area ==INDICATOR_ICON_AREA_NOTI)
+       {
+               box_pack_append(wish_add_icon);
+       }
+       else
+       {
+               box_pack(wish_add_icon);
+       }
+
+       return OK;
+}
+
+
+
+static int _hide_others_in_view_list(icon_s *icon)
+{
+       icon_s *wish_remove_icon = NULL;
+       retif(icon == NULL, FAIL, "Invalid parameter!");
+
+       if (INDICATOR_ICON_AREA_SYSTEM == icon->area || INDICATOR_ICON_AREA_NOTI == icon->area || INDICATOR_ICON_AREA_MINICTRL == icon->area)
+       {
+               Icon_AddType ret;
+
+               /* In Case of Nonfixed icon, remove same or
+                * lower priority icon. Check count of non-fixed view list
+                * to insert icon
+                */
+               ret = box_is_enable_to_insert_in_non_fixed_list(icon);
+               icon->wish_to_show = EINA_TRUE;
+               list_update(icon);
+
+               switch (ret) {
+               case CAN_ADD_WITH_DEL_NOTI:
+                       wish_remove_icon = list_try_to_find_icon_to_remove(INDICATOR_ICON_AREA_NOTI,0);
+                       box_unpack(wish_remove_icon);
+
+                       retif(wish_remove_icon == NULL, FAIL, "Unexpected Error : CAN_ADD_WITH_DEL_NOTI");
+                       break;
+               case CAN_ADD_WITH_DEL_SYSTEM:
+                       wish_remove_icon = list_try_to_find_icon_to_remove(INDICATOR_ICON_AREA_SYSTEM,0);
+
+                       box_unpack(wish_remove_icon);
+                       retif(wish_remove_icon == NULL, FAIL, "Unexpected Error : CAN_ADD_WITH_DEL_SYSTEM");
+                       break;
+               case CAN_ADD_WITH_DEL_MINICTRL:
+                       wish_remove_icon = list_try_to_find_icon_to_remove(INDICATOR_ICON_AREA_MINICTRL,0);
+
+                       box_unpack(wish_remove_icon);
+                       retif(wish_remove_icon == NULL, FAIL, "Unexpected Error : CAN_ADD_WITH_DEL_MINICTRL");
+                       break;
+               case CAN_ADD_WITHOUT_DEL:
+                       break;
+               case CANNOT_ADD:
+                       return FAIL;
+                       break;
+               }
+
+               return OK;
+       }
+       else if (INDICATOR_ICON_AREA_FIXED == icon->area)
+       {
+               /* In Case of fixed icon, remove same priority icon */
+               wish_remove_icon = list_try_to_find_icon_to_remove(INDICATOR_ICON_AREA_FIXED,icon->priority);
+
+               /* First icon in the priority */
+               if (wish_remove_icon == NULL)
+               {
+                       return OK;
+               }
+
+               /* Already shown icon */
+               if (wish_remove_icon == icon)
+               {
+                       return FAIL;
+               }
+
+               icon->wish_to_show = EINA_TRUE;
+               list_update(icon);
+
+               /* Wish_remove_icon is always_top icon */
+               if (wish_remove_icon->always_top)
+               {
+                       return FAIL;
+               }
+
+               /* Other Icon of Same Priority should remove in view list */
+               box_unpack(wish_remove_icon);
+       }
+
+       return OK;
+}
+
+
+
+/******************************************************************************
+ *
+ * Util Functions : external
+ *
+ *****************************************************************************/
+
+#if 0
+int icon_width_set(icon_s *icon)
+{
+       return 0;
+}
+#endif
+
+
+static int _icon_update(icon_s *icon)
+{
+       struct appdata *ad = NULL;
+       Evas_Object *img_eo;
+       char buf[PATH_MAX];
+
+       retif(icon == NULL || icon->ad == NULL, FAIL, "Invalid parameter!");
+       ad = icon->ad;
+
+       memset(buf, 0x00, sizeof(buf));
+
+       if (icon->type == INDICATOR_IMG_ICON || icon->type == INDICATOR_TXT_WITH_IMG_ICON || icon->type == INDICATOR_DIGIT_ICON) {
+               if (icon->area== INDICATOR_ICON_AREA_FIXED) {
+                       if(icon->type == INDICATOR_DIGIT_ICON && icon->digit_area == DIGIT_DOZENS) {
+                               elm_layout_file_set(icon->img_obj.obj, ICON_THEME_FILE,"elm/indicator/icon/dozen_digit");
+                       } else {
+                               elm_layout_file_set(icon->img_obj.obj, ICON_THEME_FILE,"elm/indicator/icon/base");
+                       }
+               } else {
+                       if(util_check_noti_ani(icon->img_obj.data)) {
+                               elm_layout_file_set(icon->img_obj.obj, ICON_NONFIXED_THEME_ANI_FILE,"elm/indicator/icon/base");
+                       } else{
+                               elm_layout_file_set(icon->img_obj.obj, ICON_NONFIXED_THEME_FILE,"elm/indicator/icon/base");
+                       }
+               }
+
+               img_eo = evas_object_data_get(icon->img_obj.obj, DATA_KEY_IMG_ICON);
+
+               util_start_noti_ani(icon);
+
+               /* Check absolute path */
+               retif(icon->img_obj.data == NULL, FAIL,"Invalid parameter!");
+
+               if (strncmp(icon->img_obj.data, "/", 1) != 0) {
+                       snprintf(buf, sizeof(buf), "%s/%s", util_get_icon_dir(),icon->img_obj.data);
+                       elm_image_file_set(img_eo, buf, NULL);
+               } else {
+                       retif(icon->img_obj.data[0] == '\0', FAIL,"Invalid parameter!");
+                       elm_image_file_set(img_eo, icon->img_obj.data, NULL);
+               }
+
+               if (icon->img_obj.width >= 0 && icon->img_obj.height>=0) {
+                       evas_object_size_hint_min_set(img_eo,
+                               ELM_SCALE_SIZE(icon->img_obj.width),
+                               ELM_SCALE_SIZE(icon->img_obj.height));
+               } else {
+                       evas_object_size_hint_min_set(img_eo, ELM_SCALE_SIZE(DEFAULT_ICON_WIDTH), ELM_SCALE_SIZE(DEFAULT_ICON_HEIGHT));
+               }
+       }
+
+       if (icon->area == INDICATOR_ICON_AREA_SYSTEM) {
+               int bDisplay = 0;
+               bDisplay = 1;
+               if(ad->opacity_mode == INDICATOR_OPACITY_TRANSPARENT && bDisplay == 1) {
+                       util_send_status_message_start(ad,2.5);
+               }
+       }
+
+       return OK;
+}
+
+
+
+void icon_show(icon_s *icon)
+{
+       struct appdata *ad = NULL;
+
+       ret_if(!icon);
+       ret_if(!(icon->ad));
+
+       ad = (struct appdata *)icon->ad;
+
+       if (icon->obj_exist != EINA_FALSE) {
+               if (icon->priority == INDICATOR_PRIORITY_NOTI_2) {
+                       box_unpack(icon);
+                       box_pack(icon);
+                       box_update_display(&(ad->win));
+               } else {
+                       _icon_update(icon);
+               }
+       }
+
+       if (_hide_others_in_view_list(icon) == FAIL) {
+               return;
+       }
+
+       box_pack(icon);
+
+       box_update_display(&(ad->win));
+}
+
+void icon_hide(icon_s *icon)
+{
+       int ret;
+
+       retif(icon == NULL, , "Invalid parameter!");
+       struct appdata *ad = (struct appdata *)icon->ad;
+
+       icon->wish_to_show = EINA_FALSE;
+
+       if (icon->exist_in_view == EINA_TRUE) {
+               ret = box_unpack(icon);
+
+               if (ret == FAIL)
+                       SECURE_ERR("Failed to unpack %s!", icon->name);
+
+               _show_others_in_same_priority(icon);
+
+               box_update_display(&(ad->win));
+
+       }
+}
+
+
+#if 0
+void icon_event_count_set(int count, void *data)
+{
+       static int _cnt = -1;
+       char buf[1024];
+
+       retif(data == NULL, , "Cannot get layout!");
+
+       if (_cnt != count) {
+               memset(buf, 0x00, sizeof(buf));
+               if (count) {
+                       snprintf(buf, sizeof(buf), "%d", count);
+                       util_signal_emit(data,"badge,show,1","elm.image.badge");
+               } else {
+                       util_signal_emit(data,"badge,hide,1","elm.image.badge");
+               }
+
+               util_part_text_emit(data,"elm.text.badge", buf);
+               _cnt = count;
+       }
+}
+#endif
+
+
+unsigned int icon_get_update_flag(void)
+{
+       return update_icon_flag;
+}
+
+
+
+void icon_set_update_flag(unsigned int val)
+{
+       DBG("SET UPDATE FLAG %d",val);
+       update_icon_flag = val;
+}
+
+
+
+void icon_reset_list(void)
+{
+       int system_cnt = box_get_count(SYSTEM_LIST);
+
+       if (system_cnt > box_get_enabled_system_count()) {
+               while(system_cnt > box_get_enabled_system_count()) {
+                       icon_s *wish_remove_icon = NULL;
+                       wish_remove_icon = list_try_to_find_icon_to_remove(INDICATOR_ICON_AREA_SYSTEM, 0);
+
+                       if (wish_remove_icon == NULL) {
+                               break;
+                       }
+
+                       box_unpack(wish_remove_icon);
+                       system_cnt = box_get_count(SYSTEM_LIST);
+                       SECURE_DBG("system remove %s %d",wish_remove_icon->name,system_cnt);
+               }
+       } else {
+               while (system_cnt < box_get_enabled_system_count()) {
+                       icon_s *wish_add_icon = NULL;
+                       wish_add_icon = list_try_to_find_icon_to_show(INDICATOR_ICON_AREA_SYSTEM, 0);
+                       if (wish_add_icon == NULL) {
+                               break;
+                       }
+
+                       if (box_exist_icon(wish_add_icon)) {
+                               break;
+                       }
+
+                       box_pack_append(wish_add_icon);
+                       system_cnt = box_get_count(SYSTEM_LIST);
+                       SECURE_DBG("system insert %s %d",wish_add_icon->name,system_cnt);
+                       if(system_cnt == box_get_enabled_system_count()) {
+                               SECURE_DBG("quit adding %d %d",system_cnt,box_get_enabled_system_count());
+                               break;
+                       }
+               }
+       }
+
+       int minictrl_cnt = box_get_count(MINICTRL_LIST);
+
+       if (minictrl_cnt > box_get_minictrl_list()) {
+               DBG("11 minictrl_cnt : %d //  box_get_minictrl_list : %d", minictrl_cnt, box_get_minictrl_list());
+               while (minictrl_cnt > box_get_minictrl_list()) {
+                       DBG("22 minictrl_cnt : %d //  box_get_minictrl_list : %d", minictrl_cnt, box_get_minictrl_list());
+                       icon_s *wish_remove_icon = NULL;
+                       wish_remove_icon = list_try_to_find_icon_to_remove(INDICATOR_ICON_AREA_MINICTRL,0);
+
+                       if (wish_remove_icon == NULL) {
+                               DBG("icon_reset_list NULL!");
+                               break;
+                       }
+
+                       box_unpack(wish_remove_icon);
+                       minictrl_cnt = box_get_count(MINICTRL_LIST);
+                       SECURE_DBG("minictrl remove %s %d",wish_remove_icon->name,minictrl_cnt);
+               }
+       } else {
+               while (minictrl_cnt < box_get_minictrl_list()) {
+                       icon_s *wish_add_icon = NULL;
+                       wish_add_icon = list_try_to_find_icon_to_show(INDICATOR_ICON_AREA_MINICTRL, 0);
+                       if (wish_add_icon == NULL) {
+                               break;
+                       }
+
+                       if (box_exist_icon(wish_add_icon)) {
+                               break;
+                       }
+
+                       box_pack_append(wish_add_icon);
+                       minictrl_cnt = box_get_count(MINICTRL_LIST);
+                       SECURE_DBG("minictrl insert %s %d",wish_add_icon->name,minictrl_cnt);
+                       if(minictrl_cnt==box_get_minictrl_list()) {
+                               SECURE_DBG("quit adding %d %d", minictrl_cnt, box_get_minictrl_list());
+                               break;
+                       }
+               }
+       }
+
+       int noti_cnt = box_get_count(NOTI_LIST);
+
+       if (noti_cnt > box_get_enabled_noti_count()) {
+               while (noti_cnt > box_get_enabled_noti_count()) {
+                       icon_s *wish_remove_icon = NULL;
+                       wish_remove_icon = list_try_to_find_icon_to_remove(INDICATOR_ICON_AREA_NOTI, 0);
+
+                       if (wish_remove_icon == NULL) {
+                               break;
+                       }
+
+                       box_unpack(wish_remove_icon);
+                       noti_cnt = box_get_count(NOTI_LIST);
+                       SECURE_DBG("remove %s %d",wish_remove_icon->name,noti_cnt);
+               }
+       } else {
+               while (noti_cnt < box_get_enabled_noti_count()) {
+                       icon_s *wish_add_icon = NULL;
+                       wish_add_icon = list_try_to_find_icon_to_show(INDICATOR_ICON_AREA_NOTI, 0);
+                       if (wish_add_icon == NULL) {
+                               break;
+                       }
+
+                       if (box_exist_icon(wish_add_icon)) {
+                               break;
+                       }
+
+                       box_pack_append(wish_add_icon);
+                       noti_cnt = box_get_count(NOTI_LIST);
+                       SECURE_DBG("insert %s %d", wish_add_icon->name, noti_cnt);
+                       if(noti_cnt==box_get_enabled_noti_count()) {
+                               SECURE_DBG("quit adding %d %d", noti_cnt, box_get_enabled_noti_count());
+                               break;
+                       }
+               }
+       }
+}
+
+
+
+static void _show_hide_more_noti(win_info* win,int val)
+{
+       static int bShow = 0;
+
+       if (bShow == val) {
+               return;
+       }
+
+       bShow = val;
+
+       if (val == 1) {
+               preference_set_int(INDICATOR_SHOW_MORE_NOTI_PORT, 1);
+       } else {
+               preference_set_int(INDICATOR_SHOW_MORE_NOTI_PORT, 0);
+       }
+}
+
+
+
+void icon_handle_more_notify_icon(win_info* win)
+{
+       retif(win == NULL, , "Invalid parameter!");
+       DBG("icon_handle_more_notify_icon called !!");
+/*     int system_cnt = box_get_count(SYSTEM_LIST);
+       int minictrl_cnt = box_get_count(MINICTRL_LIST);
+       int noti_cnt = list_get_noti_count();
+
+       DBG("System count : %d, Minictrl count : %d, Notification count : %d", system_cnt, minictrl_cnt, noti_cnt);
+       if(win->type == INDICATOR_WIN_PORT)
+       {
+               DBG("PORT :: %d", (system_cnt + minictrl_cnt + noti_cnt));
+               if((system_cnt + minictrl_cnt + noti_cnt) > MAX_NOTI_ICONS_PORT)
+               {
+                       _show_hide_more_noti(win,1);
+                       DBG("PORT :: handle_more_notify_show");
+               }
+               else
+               {*/
+                       _show_hide_more_noti(win,0);
+                       DBG("PORT :: handle_more_notify_hide");
+               /*}
+       }*/
+}
+
+
+
+void* icon_util_make(void* input)
+{
+       icon_s *icon = (icon_s *)input;
+
+       retif(input == NULL,NULL, "Invalid parameter!");
+
+       icon_s *obj = NULL;
+       obj = calloc(1, sizeof(icon_s));
+
+       if (obj) {
+               memset(obj, 0, sizeof(icon_s));
+               memcpy(obj,input,sizeof(icon_s));
+               obj->name = strdup(icon->name);
+       }
+
+       return obj;
+}
+
+
+
+/* End of file */
diff --git a/daemon/icon.h b/daemon/icon.h
new file mode 100644 (file)
index 0000000..ef34100
--- /dev/null
@@ -0,0 +1,57 @@
+/*
+ *  Indicator
+ *
+ * Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+
+#ifndef __INDICATOR_ICON_UTIL_H__
+#define __INDICATOR_ICON_UTIL_H__
+
+#include <Elementary.h>
+
+#include "indicator.h"
+#include "main.h"
+
+#define MAX_NOTI_ICONS_PORT 5
+#define MAX_NOTI_ICONS_LAND 11
+
+enum {
+       ICON_STATE_HIDDEN = 0,
+       ICON_STATE_SHOWN
+};
+
+enum indicator_view_mode {
+       INDICATOR_KEEP_VIEW = -1,
+       INDICATOR_FULL_VIEW,
+       INDICATOR_CLOCK_VIEW
+};
+
+extern void icon_show(icon_s *obj);
+extern void icon_hide(icon_s *obj);
+extern void icon_ani_set(icon_s *icon, enum indicator_icon_ani type);
+extern char *icon_label_set(const char *buf, char *font_name,
+                                                       char *font_style, int font_size,
+                                                       void *data);
+extern Eina_Bool icon_add(win_info *win,icon_s *icon);
+extern Eina_Bool icon_del(icon_s *icon);
+extern unsigned int icon_get_update_flag(void);
+extern void icon_set_update_flag(unsigned int val);
+extern void icon_reset_list(void);
+extern void icon_handle_more_notify_icon(win_info* win);
+extern void* icon_util_make(void* input);
+
+#endif /*__INDICATOR_ICON_UTIL_H__*/
old mode 100755 (executable)
new mode 100644 (file)
index 684e218..a78fe5b
@@ -1,17 +1,20 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ *  Indicator
  *
- * Licensed under the Flora License, Version 1.1 (the "License");
+ * Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.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/
+ * http://www.apache.org/licenses/LICENSE-2.0
  *
  * 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.
+ *
  */
 
 
 #define __INDICATOR_H__
 
 #include <Elementary.h>
-#include <Ecore_X.h>
+//#include <Ecore_X.h>
+#include <Ecore_File.h>
 #include <Eina.h>
+#include <glib-object.h>
 
-#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 INDICATOR_SHOW_MORE_NOTI_PORT "memory/private/"PACKAGE_NAME"/show_more_noti_port"
+#define VCONFKEY_APPTRAY_STATE "file/private/org.tizen.app-tray/is_top"
 
-#define VCONFKEY_BATTERY_DISP_STATE "memory/private/"PACKAGE_NAME"/battery_disp"
+#define FIXED_COUNT    11
+#define INDICATOR_HEIGHT 36
 
-#define _FIXED_COUNT   5
+#define _INDICATOR_FEATURE_LITE
+#define _INDICATOR_REMOVE_SEARCH
 
+#define DATA_KEY_IMG_ICON "i_i"
+#define DATA_KEY_BASE_RECT "dkbr"
+#define DATA_KEY_TICKER_TEXT "dktt"
 
 enum indicator_win_mode{
        INDICATOR_WIN_PORT = 0,
-       INDICATOR_WIN_LAND,
-       INDICATOR_WIN_MAX
 };
 
 
 enum {
+       /* Value is allocated from Left side in status bar */
        INDICATOR_PRIORITY_FIXED_MIN = 0,
-       INDICATOR_PRIORITY_FIXED1 = INDICATOR_PRIORITY_FIXED_MIN,
-       INDICATOR_PRIORITY_FIXED2,
-       INDICATOR_PRIORITY_FIXED3,
-       INDICATOR_PRIORITY_FIXED4,
-       INDICATOR_PRIORITY_FIXED5,
-       INDICATOR_PRIORITY_FIXED6,
-       INDICATOR_PRIORITY_FIXED_MAX = INDICATOR_PRIORITY_FIXED6,
+       INDICATOR_PRIORITY_FIXED1 = INDICATOR_PRIORITY_FIXED_MIN,/* Always */
+       INDICATOR_PRIORITY_FIXED2,              /* RSSI1 (elm.swallow.fixed1) */
+       INDICATOR_PRIORITY_FIXED3,              /* RSSI2 (elm.swallow.fixed2) */
+       INDICATOR_PRIORITY_FIXED4,              /* SimCard-Icon(DualSim) (elm.swallow.fixed3) */
+       INDICATOR_PRIORITY_FIXED5,              /* Connection (elm.swallow.fixed4) */
+       INDICATOR_PRIORITY_FIXED6,              /* Wifi (elm.swallow.fixed5) */
+       INDICATOR_PRIORITY_FIXED7,              /* CONNECTION1 - BT (elm.swallow.fixed6) */
+       INDICATOR_PRIORITY_FIXED8,              /* CONNECTION2 - WIFI DIRECT (elm.swallow.fixed7)*/
+       INDICATOR_PRIORITY_FIXED9,              /* Battery (elm.swallow.fixed8)*/
+       INDICATOR_PRIORITY_FIXED10,        /* Search*/
+       INDICATOR_PRIORITY_FIXED11,        /* more */
+       INDICATOR_PRIORITY_FIXED_MAX = INDICATOR_PRIORITY_FIXED11,
+
+       /* Right Side */
        INDICATOR_PRIORITY_SYSTEM_MIN,
+       INDICATOR_PRIORITY_SYSTEM_1 = INDICATOR_PRIORITY_SYSTEM_MIN, /* SYSTEM - Alarm */
+       INDICATOR_PRIORITY_SYSTEM_2, /* SYSTEM - Call divert */
+       INDICATOR_PRIORITY_SYSTEM_3, /* SYSTEM - MMC */
+       INDICATOR_PRIORITY_SYSTEM_4,  /* SYSTEM - GPS */
+       INDICATOR_PRIORITY_SYSTEM_5,  /* SYSTEM - Private mode */
+       INDICATOR_PRIORITY_SYSTEM_6,  /* SYSTEM - Sound profile */
+       INDICATOR_PRIORITY_SYSTEM_MAX = INDICATOR_PRIORITY_SYSTEM_6,
+
+       INDICATOR_PRIORITY_MINICTRL_MIN,
+       INDICATOR_PRIORITY_MINICTRL1 = INDICATOR_PRIORITY_MINICTRL_MIN, /* MINICTRL - Voice recorder */
+       INDICATOR_PRIORITY_MINICTRL2, /* MINICTRL - Music/FM Radio */
+       INDICATOR_PRIORITY_MINICTRL3, /* MINICTRL - Call *//* MINICTRL - Voice recorder */
+       INDICATOR_PRIORITY_MINICTRL_MAX = INDICATOR_PRIORITY_MINICTRL3,
 
-       INDICATOR_PRIORITY_SYSTEM_7 = INDICATOR_PRIORITY_SYSTEM_MIN,
-       INDICATOR_PRIORITY_SYSTEM_6,
-       INDICATOR_PRIORITY_SYSTEM_5,
-       INDICATOR_PRIORITY_SYSTEM_4,
-       INDICATOR_PRIORITY_SYSTEM_3,
-       INDICATOR_PRIORITY_SYSTEM_2,
-       INDICATOR_PRIORITY_SYSTEM_1,
-       INDICATOR_PRIORITY_SYSTEM_MAX = INDICATOR_PRIORITY_SYSTEM_1,
        INDICATOR_PRIORITY_NOTI_MIN,
-       INDICATOR_PRIORITY_NOTI_2 = INDICATOR_PRIORITY_NOTI_MIN,
-       INDICATOR_PRIORITY_NOTI_1,
+       INDICATOR_PRIORITY_NOTI_1 = INDICATOR_PRIORITY_NOTI_MIN,
+       INDICATOR_PRIORITY_NOTI_2, /* Ongoing/Normal notification */
        INDICATOR_PRIORITY_NOTI_MAX = INDICATOR_PRIORITY_NOTI_2
 };
 
 enum indicator_icon_type {
        INDICATOR_IMG_ICON = 0,
        INDICATOR_TXT_ICON,
-       INDICATOR_TXT_WITH_IMG_ICON
+       INDICATOR_TXT_WITH_IMG_ICON,
+       INDICATOR_DIGIT_ICON,
 };
 
 enum indicator_icon_area_type {
        INDICATOR_ICON_AREA_FIXED = 0,
        INDICATOR_ICON_AREA_SYSTEM,
-       INDICATOR_ICON_AREA_NOTI
+       INDICATOR_ICON_AREA_MINICTRL,
+       INDICATOR_ICON_AREA_NOTI,
+       INDICATOR_ICON_AREA_ALARM
 };
 
-enum indicator_icon_ani {
+typedef enum indicator_icon_ani {
        ICON_ANI_NONE = 0,
        ICON_ANI_BLINK,
        ICON_ANI_ROTATE,
        ICON_ANI_METRONOME,
+       ICON_ANI_DOWNLOADING,
+       ICON_ANI_UPLOADING,
        ICON_ANI_MAX
+} Icon_Ani_Type;
+
+enum indicator_digit_area {
+       DIGIT_UNITY = 0,
+       DIGIT_DOZENS,
+       DIGIT_DOZENS_UNITY,
+       DIGIT_HUNDREDS
+};
+
+/* Upload/download animation states 0-6 */
+enum ud_indicator_icon_ani_state
+{
+       UD_ICON_ANI_STATE_0 = 0,
+       UD_ICON_ANI_STATE_1,
+       UD_ICON_ANI_STATE_2,
+       UD_ICON_ANI_STATE_3,
+       UD_ICON_ANI_STATE_4,
+       UD_ICON_ANI_STATE_5,
+       UD_ICON_ANI_STATE_6,
+       UD_ICON_ANI_STATE_MAX
+};
+
+enum {
+       TRANSFER_MIN = 0,
+       TRANSFER_NONE = TRANSFER_MIN,
+       TRANSFER_UP,
+       TRANSFER_DOWN,
+       TRANSFER_UPDOWN,
+       TRANSFER_MAX
 };
 
 typedef struct _Text_Icon_Info {
@@ -100,56 +153,68 @@ typedef struct _Img_Icon_Info {
 typedef struct _ind_win_info
 {
        Evas *evas;
-       Evas_Object* win_main;
-       Evas_Object* layout_main;
+       Evas_Object* win;
+       Evas_Object* layout;
        int w;
        int h;
+       int port_w;
+       int land_w;
        int angle;
-       int type;
-       Evas_Object *_fixed_box[_FIXED_COUNT];
+       Evas_Object *_fixed_box[FIXED_COUNT];
        Evas_Object *_non_fixed_box;
+       Evas_Object *_minictrl_box;
        Evas_Object *_noti_box;
+       Evas_Object *_dynamic_box;
+       Evas_Object *_dynamic_box_noti;
+       Evas_Object *_alarm_box;
+       Evas_Object *_digit_box;
 
        struct {
-       Eina_Bool trigger;
-       int x;
-       int y;
+               int x;
+               int y;
        } mouse_event;
 
-#ifdef HOME_KEY_EMULATION
-       Ecore_X_Atom atom_hwkey;
-       Ecore_X_Window win_hwkey;
-#endif /* HOME_KEY_EMULATION */
        void* data;
 }win_info;
 
-
 typedef struct Indicator_Icon {
        char *name;
        enum indicator_icon_type type;
        enum indicator_icon_area_type area;
        int priority;
-       Eina_Bool always_top;
+       Eina_Bool always_top;   /* Only for SOS messsage */
 
+       enum ud_indicator_icon_ani_state animation_state;
+       Eina_Bool animation_in_progress;
+       Ecore_Timer *p_animation_timer;
+       char signal_to_emit_prefix [32];
+       double last_animation_timestamp;
 
+       /* Func */
        int (*init) (void *);
        int (*fini) (void);
-       int (*hib_enter) (void);
-       int (*hib_leave) (void *);
        int (*lang_changed) (void *);
        int (*region_changed) (void *);
        int (*minictrl_control) (int, const char *, void *);
        int (*wake_up) (void *);
 
+       /* do not modify this area */
+       /* internal data */
        void *ad;
        Eina_Bool obj_exist;
-       Text_Icon_Info txt_obj;
        Img_Icon_Info img_obj;
        Eina_Bool wish_to_show;
        Eina_Bool exist_in_view;
-
-       int win_type;
        enum indicator_icon_ani ani;
-} Indicator_Icon_Object;
+
+#ifdef _SUPPORT_SCREEN_READER
+       int (*register_tts) (void*, int);
+       char *(*access_cb)(void *, Evas_Object *);
+       int tts_enable;
+#endif
+       int digit_area;
+} icon_s;
+
+//int rssi_get_sim_number(TapiHandle *handle_obj);
 
 #endif /*__INDICATOR_H__*/
diff --git a/daemon/indicator_box_util.c b/daemon/indicator_box_util.c
deleted file mode 100755 (executable)
index fde43c6..0000000
+++ /dev/null
@@ -1,894 +0,0 @@
-/*
- * Copyright 2012  Samsung Electronics Co., Ltd
- *
- * Licensed under the Flora License, Version 1.1 (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 <Ecore_X.h>
-#include <Eina.h>
-#include "common.h"
-#include "indicator_box_util.h"
-#include "indicator_icon_util.h"
-#include "indicator_icon_list.h"
-#include "indicator_ui.h"
-#include "indicator_gui.h"
-#include "indicator_util.h"
-#include <vconf.h>
-
-#define DEFAULT_SIZE   (CLOCK_WIDTH + (PADDING_WIDTH * 2))
-#define _FIXED_BOX_PART_NAME           "elm.swallow.fixed"
-#define _NON_FIXED_BOX_PART_NAME       "elm.swallow.nonfixed"
-#define _NOTI_BOX_PART_NAME    "elm.swallow.noti"
-
-#define _FIXED_COUNT   5
-#define CORRECTION 10
-
-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[INDICATOR_WIN_MAX];
-
-static Evas_Object *indicator_box_add(Evas_Object * parent)
-{
-       Evas_Object *obj;
-
-       retif(parent == NULL, NULL, "Invalid parameter!");
-
-       obj = elm_box_add(parent);
-       evas_object_size_hint_weight_set(obj, EVAS_HINT_EXPAND,
-                                        EVAS_HINT_EXPAND);
-       evas_object_size_hint_fill_set(obj, EVAS_HINT_FILL, EVAS_HINT_FILL);
-
-       elm_box_horizontal_set(obj, EINA_TRUE);
-       evas_object_show(obj);
-
-       return obj;
-}
-
-static void _update_window(win_info *win)
-{
-
-       int root_w, root_h;
-       Ecore_X_Window xwin, root;
-
-       retif(win == NULL, , "Invalid parameter!");
-
-       INFO("_update_window");
-
-       xwin = elm_win_xwindow_get(win->win_main);
-       if (!xwin)
-               return;
-       root = ecore_x_window_root_get(xwin);
-       if (!root)
-               return;
-       ecore_x_window_size_get(root, &root_w, &root_h);
-
-               if (win->angle == 0 || win->angle == 180)
-                       win->w = root_w;
-               else
-                       win->w = root_h;
-
-       switch (win->angle) {
-       case 0:
-               ecore_x_window_shape_input_rectangle_set(xwin, root_w - win->w,
-                                                        0, win->w, win->h);
-               break;
-       case 90:
-               ecore_x_window_shape_input_rectangle_set(xwin, 0, 0, win->h,
-                                                        win->w);
-               break;
-       case 180:
-               ecore_x_window_shape_input_rectangle_set(xwin, 0, 0, win->w,
-                                                        win->h);
-               break;
-       case 270:
-               ecore_x_window_shape_input_rectangle_set(xwin,
-                                                        0, root_h - win->w,
-                                                        win->h, win->w);
-               break;
-       default:
-               break;
-       }
-
-}
-
-static void _update_display(win_info *win)
-{
-       Indicator_Icon_Object *icon;
-       Eina_List *l;
-       int i = 0;
-
-       retif(win == NULL, , "Invalid parameter!");
-
-       for (i = 0; i < _FIXED_COUNT; ++i)
-               elm_box_unpack_all(win->_fixed_box[i]);
-
-       elm_box_unpack_all(win->_non_fixed_box);
-       elm_box_unpack_all(win->_noti_box);
-
-       DBG("win->type:%d",win->type);
-
-       EINA_LIST_FOREACH(_view_fixed_list[win->type], l, icon) {
-               if (icon->obj_exist == EINA_FALSE) {
-                       if (indicator_util_icon_add(win,icon) == EINA_TRUE)
-                               icon->obj_exist = EINA_TRUE;
-               }
-
-               if (icon->obj_exist == EINA_TRUE) {
-                       if (icon->area == INDICATOR_ICON_AREA_FIXED
-                       && icon->priority < INDICATOR_PRIORITY_FIXED_MAX) {
-
-                               Evas_Coord x, y, h, w;
-
-                               Evas_Object *img_eo =
-                                       evas_object_data_get(icon->img_obj.obj,
-                                       "imgicon");
-                               evas_object_size_hint_min_set(img_eo,
-                                       icon->img_obj.width * elm_config_scale_get(),
-                                       icon->img_obj.height * elm_config_scale_get());
-
-                               indicator_util_handle_animated_gif(icon);
-
-                               switch (icon->type) {
-                               case INDICATOR_IMG_ICON:
-                                       evas_object_show(icon->img_obj.obj);
-                                       elm_box_pack_start(win->_fixed_box
-                                                          [icon->priority],
-                                                          icon->img_obj.obj);
-                                       break;
-                               case INDICATOR_TXT_ICON:
-                                       evas_object_show(icon->txt_obj.obj);
-                                       elm_box_pack_start(win->_fixed_box
-                                                          [icon->priority],
-                                                          icon->txt_obj.obj);
-                                       break;
-                               case INDICATOR_TXT_WITH_IMG_ICON:
-                                       evas_object_show(icon->txt_obj.obj);
-                                       evas_object_show(icon->img_obj.obj);
-                                       elm_box_pack_start(win->_fixed_box
-                                                          [icon->priority],
-                                                          icon->img_obj.obj);
-                                       elm_box_pack_start(win->_fixed_box
-                                                          [icon->priority],
-                                                          icon->txt_obj.obj);
-                                       break;
-                               }
-
-                               evas_object_geometry_get(
-                                               win->_fixed_box[icon->priority],
-                                               &x, &y, &h, &w);
-
-                               INFO("Fixed Icon : %s %d %d %d %d",
-                                               icon->name, x, y, h, w);
-                       }
-               }
-       }
-
-       EINA_LIST_FOREACH(_view_system_list[win->type], l, icon) {
-               if (icon->obj_exist == EINA_FALSE) {
-                       if (indicator_util_icon_add(win,icon) == EINA_TRUE)
-                               icon->obj_exist = EINA_TRUE;
-               }
-               if (icon->obj_exist == EINA_TRUE) {
-                       if (icon->area == INDICATOR_ICON_AREA_SYSTEM
-                       && icon->priority >= INDICATOR_PRIORITY_SYSTEM_MIN
-                       && icon->priority <= INDICATOR_PRIORITY_SYSTEM_MAX) {
-
-                               Evas_Coord x, y, h, w;
-
-                               Evas_Object *img_eo =
-                                       evas_object_data_get(icon->img_obj.obj,
-                                                       "imgicon");
-                               evas_object_size_hint_min_set(img_eo,
-                                       icon->img_obj.width * elm_config_scale_get(),
-                                       icon->img_obj.height * elm_config_scale_get());
-
-                               indicator_util_handle_animated_gif(icon);
-
-                               switch (icon->type) {
-                               case INDICATOR_IMG_ICON:
-                                       evas_object_show(icon->img_obj.obj);
-                                       elm_box_pack_end(win->_non_fixed_box,
-                                                          icon->img_obj.obj);
-                                       break;
-                               case INDICATOR_TXT_ICON:
-                                       evas_object_show(icon->txt_obj.obj);
-                                       elm_box_pack_end(win->_non_fixed_box,
-                                                          icon->txt_obj.obj);
-                                       break;
-                               case INDICATOR_TXT_WITH_IMG_ICON:
-                                       evas_object_show(icon->txt_obj.obj);
-                                       evas_object_show(icon->img_obj.obj);
-                                       elm_box_pack_end(win->_non_fixed_box,
-                                                          icon->txt_obj.obj);
-                                       elm_box_pack_end(win->_non_fixed_box,
-                                                          icon->img_obj.obj);
-                                       break;
-                               }
-                               evas_object_geometry_get(win->_non_fixed_box,
-                                               &x, &y, &h, &w);
-                               INFO("Non-Fixed Icon : %s %d %d %d %d",
-                                               icon->name, x, y, h, w);
-                       }
-
-
-               }
-       }
-
-       EINA_LIST_FOREACH(_view_noti_list[win->type], l, icon) {
-               if (icon->obj_exist == EINA_FALSE) {
-                       if (indicator_util_icon_add(win,icon) == EINA_TRUE)
-                               icon->obj_exist = EINA_TRUE;
-               }
-               if (icon->obj_exist == EINA_TRUE) {
-                       if (icon->area == INDICATOR_ICON_AREA_NOTI) {
-                               Evas_Coord x, y, h, w;
-
-                               Evas_Object *img_eo =
-                                       evas_object_data_get(icon->img_obj.obj,
-                                                       "imgicon");
-                               evas_object_size_hint_min_set(img_eo,
-                                       icon->img_obj.width * elm_config_scale_get(),
-                                       icon->img_obj.height * elm_config_scale_get());
-
-                               indicator_util_handle_animated_gif(icon);
-
-                               switch (icon->type) {
-                               case INDICATOR_IMG_ICON:
-                                       evas_object_show(icon->img_obj.obj);
-                                       elm_box_pack_end(win->_noti_box,
-                                                          icon->img_obj.obj);
-                                       break;
-                               case INDICATOR_TXT_ICON:
-                                       evas_object_show(icon->txt_obj.obj);
-                                       elm_box_pack_end(win->_noti_box,
-                                                          icon->txt_obj.obj);
-                                       break;
-                               case INDICATOR_TXT_WITH_IMG_ICON:
-                                       evas_object_show(icon->txt_obj.obj);
-                                       evas_object_show(icon->img_obj.obj);
-                                       elm_box_pack_end(win->_noti_box,
-                                                          icon->txt_obj.obj);
-                                       elm_box_pack_end(win->_noti_box,
-                                                          icon->img_obj.obj);
-                                       break;
-                               }
-                               evas_object_geometry_get(win->_noti_box,
-                                               &x, &y, &h, &w);
-                               INFO("Non-Fixed Notification Icon : %s %d %d %d %d",
-                                               icon->name, x, y, h, w);
-                       }
-
-
-               }
-       }
-
-       if (win)
-               _update_window(win);
-}
-
-void indicator_util_update_display(win_info *win)
-{
-       retif(win == NULL, , "Invalid parameter!");
-
-       _update_window(win);
-
-       _update_display(win);
-}
-
-int icon_box_pack(Indicator_Icon_Object *icon)
-{
-       retif(icon == NULL, FAIL, "Invalid parameter!");
-
-       if (indicator_util_is_show_icon(icon))
-               return OK;
-
-       INFO("[icon_box_pack] %s %d!",icon->name, icon->win_type);
-
-       if (INDICATOR_ICON_AREA_FIXED == icon->area)
-       {
-               icon->exist_in_view = EINA_TRUE;
-               _view_fixed_list[icon->win_type] = eina_list_append(_view_fixed_list[icon->win_type], icon);
-       }
-       else if(INDICATOR_ICON_AREA_SYSTEM == icon->area)
-       {
-               Indicator_Icon_Object *data;
-               Eina_List *l;
-
-               EINA_LIST_FOREACH(_view_system_list[icon->win_type], l, data) {
-                       if (data->priority <= icon->priority) {
-                               icon->exist_in_view = EINA_TRUE;
-                               _view_system_list[icon->win_type] =
-                                       eina_list_prepend_relative_list(
-                                               _view_system_list[icon->win_type], icon, l);
-                               DBG("System prepend %s",icon->name);
-                               return OK;
-                       }
-               }
-
-               icon->exist_in_view = EINA_TRUE;
-               _view_system_list[icon->win_type] =
-                       eina_list_append(_view_system_list[icon->win_type], icon);
-               DBG("System append %s",icon->name);
-       }
-       else
-       {
-               Indicator_Icon_Object *data;
-               Eina_List *l;
-
-               EINA_LIST_FOREACH(_view_noti_list[icon->win_type], l, data) {
-                       if (data->priority <= icon->priority)
-                       {
-                               icon->exist_in_view = EINA_TRUE;
-                               _view_noti_list[icon->win_type] =
-                                       eina_list_prepend_relative_list(
-                                               _view_noti_list[icon->win_type], icon, l);
-                               DBG("Noti prepend %s",icon->name);
-                               return OK;
-                       }
-               }
-
-               icon->exist_in_view = EINA_TRUE;
-               _view_noti_list[icon->win_type] =
-                       eina_list_append(_view_noti_list[icon->win_type], icon);
-               DBG("Noti append %s",icon->name);
-       }
-
-       return OK;
-}
-
-int icon_box_pack_append(Indicator_Icon_Object *icon)
-{
-       retif(icon == NULL, FAIL, "Invalid parameter!");
-
-       if (indicator_util_is_show_icon(icon))
-               return OK;
-
-       INFO("[icon_box_pack_append] %s!",icon->name);
-
-       if (INDICATOR_ICON_AREA_FIXED == icon->area)
-       {
-               icon->exist_in_view = EINA_TRUE;
-               _view_fixed_list[icon->win_type] = eina_list_append(_view_fixed_list[icon->win_type], icon);
-       }
-       else if(INDICATOR_ICON_AREA_SYSTEM == icon->area)
-       {
-               icon->exist_in_view = EINA_TRUE;
-               _view_system_list[icon->win_type] =
-                       eina_list_append(_view_system_list[icon->win_type], icon);
-       }
-       else
-       {
-               icon->exist_in_view = EINA_TRUE;
-               _view_noti_list[icon->win_type] =
-                       eina_list_append(_view_noti_list[icon->win_type], icon);
-               DBG("Noti append %s",icon->name);
-       }
-
-       return OK;
-}
-
-
-int icon_box_unpack(Indicator_Icon_Object *icon)
-{
-       retif(icon == NULL, FAIL, "Invalid parameter!");
-
-       INFO("[icon_box_unpack] %s!",icon->name);
-
-       if (INDICATOR_ICON_AREA_FIXED == icon->area)
-       {
-               icon->exist_in_view = EINA_FALSE;
-               _view_fixed_list[icon->win_type] = eina_list_remove(_view_fixed_list[icon->win_type], icon);
-       }
-       else if(INDICATOR_ICON_AREA_SYSTEM == icon->area)
-       {
-               icon->exist_in_view = EINA_FALSE;
-               _view_system_list[icon->win_type] =
-                       eina_list_remove(_view_system_list[icon->win_type], icon);
-       }
-       else
-       {
-               icon->exist_in_view = EINA_FALSE;
-               _view_noti_list[icon->win_type] =
-                       eina_list_remove(_view_noti_list[icon->win_type], icon);
-       }
-
-       if (icon->obj_exist == EINA_TRUE) {
-               if (indicator_util_icon_del(icon) == EINA_TRUE) {
-                       icon->obj_exist = EINA_FALSE;
-                       INFO("%s icon object is freed!", icon->name);
-               }
-       }
-
-       return OK;
-}
-
-int icon_box_init(win_info *win)
-{
-       char *str_text = NULL;
-       int i = 0;
-       retif(win == NULL, FAIL, "Invalid parameter!");
-
-       for (i = 0; i < _FIXED_COUNT; ++i) {
-               if (win->_fixed_box[i] == NULL) {
-                       Eina_Bool ret;
-
-                       win->_fixed_box[i] = indicator_box_add(win->layout_main);
-                       retif(win->_fixed_box[i] == NULL, FAIL,
-                               "Failed to add _fixed_box object!");
-
-                       Eina_Strbuf *temp_str = eina_strbuf_new();
-                       eina_strbuf_append_printf(temp_str, "%s%d",
-                               _FIXED_BOX_PART_NAME, i);
-                       str_text = eina_strbuf_string_steal(temp_str);
-
-                       ret = edje_object_part_swallow(elm_layout_edje_get
-                                                (win->layout_main), str_text,
-                                                win->_fixed_box[i]);
-                       INFO("[ICON INIT] : %d %s %d " , i, str_text, ret);
-                       eina_strbuf_free(temp_str);
-                       free(str_text);
-               }
-       }
-
-       win->_non_fixed_box = indicator_box_add(win->layout_main);
-       retif(win->_non_fixed_box == NULL, FAIL,
-               "Failed to create _non_fixed_box object!");
-       evas_object_size_hint_align_set(win->_non_fixed_box,
-                       EVAS_HINT_FILL, EVAS_HINT_FILL);
-
-       edje_object_part_swallow(elm_layout_edje_get
-                                (win->layout_main), _NON_FIXED_BOX_PART_NAME,
-                                win->_non_fixed_box);
-
-       win->_noti_box = indicator_box_add(win->layout_main);
-       retif(win->_noti_box == NULL, FAIL,
-               "Failed to create _non_fixed_box object!");
-       evas_object_size_hint_align_set(win->_noti_box,
-                       EVAS_HINT_FILL, EVAS_HINT_FILL);
-
-       edje_object_part_swallow(elm_layout_edje_get
-                                (win->layout_main), _NOTI_BOX_PART_NAME,
-                                win->_noti_box);
-
-       indicator_util_update_display(win);
-
-       return 0;
-}
-
-int icon_box_fini(win_info *win)
-{
-       int i = 0;
-
-       retif(win == NULL || win->layout_main == NULL,
-               FAIL, "Invalid parameter!");
-
-       if (win->_non_fixed_box != NULL) {
-               edje_object_part_unswallow(elm_layout_edje_get(win->layout_main),
-                                          win->_non_fixed_box);
-               elm_box_unpack_all(win->_non_fixed_box);
-               evas_object_del(win->_non_fixed_box);
-               win->_non_fixed_box = NULL;
-       }
-
-       if (win->_noti_box != NULL) {
-               edje_object_part_unswallow(elm_layout_edje_get(win->layout_main),
-                                          win->_noti_box);
-               elm_box_unpack_all(win->_noti_box);
-               evas_object_del(win->_noti_box);
-               win->_noti_box = NULL;
-       }
-
-       for (i = 0; i < _FIXED_COUNT; ++i) {
-               if (win->_fixed_box[i] != NULL) {
-                       edje_object_part_unswallow(elm_layout_edje_get
-                                                  (win->layout_main),
-                                                  win->_fixed_box[i]);
-                       elm_box_unpack_all(win->_fixed_box[i]);
-                       evas_object_del(win->_fixed_box[i]);
-                       win->_fixed_box[i] = NULL;
-               }
-       }
-       return 0;
-}
-
-unsigned int indicator_get_count_in_fixed_list(int type)
-{
-       int r = eina_list_count(_view_fixed_list[type]);
-       DBG("Fixed Count : %d",r);
-       return r;
-}
-unsigned int indicator_get_count_in_system_list(int type)
-{
-       int r = eina_list_count(_view_system_list[type]);
-       DBG("System Count : %d",r);
-       return r;
-}
-unsigned int indicator_get_count_in_noti_list(int type)
-{
-       int r = eina_list_count(_view_noti_list[type]);
-       DBG("Notification Count : %d",r);
-       return r;
-}
-
-void indicator_set_count_in_non_fixed_list(int angle, int status)
-{
-
-}
-
-int indicator_get_noti_list_index_count(int type)
-{
-       int added_count = 0;
-       int ret = 0;
-       int status = 0;
-
-       ret = vconf_get_bool(VCONFKEY_SETAPPL_BATTERY_PERCENTAGE_BOOL, &status);
-
-       if (ret != OK)
-       {
-               ERR("Fail to get vconfkey : %s",
-                       VCONFKEY_SETAPPL_BATTERY_PERCENTAGE_BOOL);
-       }
-
-       if (status == EINA_TRUE)
-               added_count = BATTERY_TEXT_ON_COUNT;
-       else
-               added_count = BATTERY_TEXT_OFF_COUNT;
-
-       if(type == INDICATOR_WIN_PORT)
-       {
-               ret = PORT_NOTI_ICON_COUNT + added_count;
-       }
-       else
-       {
-               ret = LAND_NOTI_ICON_COUNT + added_count;
-       }
-
-       return ret;
-}
-
-int indicator_get_system_list_index_count(int type)
-{
-       int ret = 0;
-
-       if(type == INDICATOR_WIN_PORT)
-       {
-               ret = PORT_SYSTEM_ICON_COUNT;
-       }
-       else
-       {
-               ret = LAND_SYSTEM_ICON_COUNT;
-       }
-
-       return ret;
-}
-
-int indicator_get_max_count_in_non_fixed_list(int type)
-{
-       int added_count = 0;
-       int ret = 0;
-       int status = 0;
-
-       ret = vconf_get_bool(VCONFKEY_SETAPPL_BATTERY_PERCENTAGE_BOOL, &status);
-
-       if (ret != OK)
-       {
-               ERR("Fail to get vconfkey : %s",
-                       VCONFKEY_SETAPPL_BATTERY_PERCENTAGE_BOOL);
-       }
-
-       if (status == EINA_TRUE)
-               added_count = BATTERY_TEXT_ON_COUNT;
-       else
-               added_count = BATTERY_TEXT_OFF_COUNT;
-
-       if(type == INDICATOR_WIN_PORT)
-       {
-               ret = PORT_NONFIXED_ICON_COUNT + added_count;
-       }
-       else
-       {
-               ret = LAND_NONFIXED_ICON_COUNT + added_count;
-       }
-
-       return ret;
-}
-
-Icon_AddType indicator_is_enable_to_insert_in_non_fixed_list(Indicator_Icon_Object *obj)
-{
-       Indicator_Icon_Object *icon;
-       Eina_List *l;
-
-       int higher_cnt = 0;
-       int same_cnt = 0;
-       int same_top_cnt = 0;
-       int lower_cnt = 0;
-       int system_cnt = indicator_get_count_in_system_list(obj->win_type);
-       int noti_cnt = indicator_get_count_in_noti_list(obj->win_type);
-       int total_cnt = system_cnt + noti_cnt;
-       Eina_List * tmpList = NULL;
-
-       if(obj->area == INDICATOR_ICON_AREA_SYSTEM )
-       {
-               tmpList = _view_system_list[obj->win_type];
-       }
-       else if(obj->area == INDICATOR_ICON_AREA_NOTI)
-       {
-               tmpList = _view_noti_list[obj->win_type];
-       }
-
-       EINA_LIST_FOREACH(tmpList, l, icon) {
-               if (!strcmp(icon->name, obj->name))
-                       return CANNOT_ADD;
-
-               if (icon->priority > obj->priority)
-                       ++higher_cnt;
-
-               else if (icon->priority == obj->priority) {
-                       ++same_cnt;
-                       if (icon->always_top == EINA_TRUE)
-                               ++same_top_cnt;
-               } else
-                       lower_cnt++;
-       }
-
-       INFO("[INSERT ENABLE] : %d %d %d %d %d %d",
-                       higher_cnt, lower_cnt, same_cnt, same_top_cnt,
-                       indicator_get_max_count_in_non_fixed_list(obj->win_type), system_cnt);
-       INFO("[INSERT ENABLE2] : %d %d %d",
-                       obj->area, system_cnt, noti_cnt);
-
-       if(obj->area == INDICATOR_ICON_AREA_SYSTEM )
-       {
-               if (higher_cnt + same_cnt + lower_cnt >= indicator_get_system_list_index_count(obj->win_type))
-               {
-                       if (obj->always_top == EINA_TRUE)
-                       {
-                               if(same_top_cnt>=indicator_get_system_list_index_count(obj->win_type))
-                               {
-                                       DBG("[CANNOT_ADD] %d",same_top_cnt);
-                                       return CANNOT_ADD;
-                               }
-                               else
-                               {
-                                       DBG("[CAN_ADD_WITH_DEL_SYSTEM]");
-                                       return CAN_ADD_WITH_DEL_SYSTEM;
-                               }
-                       }
-                       else
-                       {
-                               if(higher_cnt >= indicator_get_system_list_index_count(obj->win_type))
-                               {
-                                       DBG("[CANNOT_ADD]");
-                                       return CANNOT_ADD;
-                               }
-                               else if(higher_cnt+same_cnt >= indicator_get_system_list_index_count(obj->win_type))
-                               {
-                                       DBG("[CAN_ADD_WITH_DEL_SYSTEM]");
-                                       return CAN_ADD_WITH_DEL_SYSTEM;
-                               }
-                               else
-                               {
-                                       DBG("[CAN_ADD_WITH_DEL_SYSTEM]");
-                                       return CAN_ADD_WITH_DEL_SYSTEM;
-                               }
-                       }
-               }
-               else
-               {
-                       return CAN_ADD_WITHOUT_DEL;
-               }
-       }
-       else
-       {
-               if(noti_cnt>=indicator_get_noti_list_index_count(obj->win_type))
-               {
-
-                       DBG("[CAN_ADD_WITH_DEL_NOTI]");
-                       return CAN_ADD_WITH_DEL_NOTI;
-               }
-               else
-               {
-                       INFO("[CAN_ADD_WITHOUT_DEL]");
-                       return CAN_ADD_WITHOUT_DEL;
-               }
-       }
-
-       return CANNOT_ADD;
-}
-
-int indicator_util_get_priority_in_move_area(win_info *win, Evas_Coord curr_x,
-                                       Evas_Coord curr_y)
-{
-       Evas_Coord x, y, h, w;
-
-       evas_object_geometry_get(win->_fixed_box[INDICATOR_PRIORITY_FIXED1],
-                       &x, &y, &h, &w);
-       INFO("[Current Location] %d %d %d %d %d %d",
-                       x, y, h, w, curr_x, curr_y);
-
-       if (curr_x >= x - CORRECTION && curr_x <= x+h + CORRECTION) {
-               if (curr_y == -1)
-                       return INDICATOR_PRIORITY_FIXED1;
-               else if (curr_y >= y - CORRECTION && curr_y <= y+h + CORRECTION)
-                       return INDICATOR_PRIORITY_FIXED1;
-       }
-
-
-       return -1;
-}
-
-int indicator_util_check_indicator_area(win_info *win, Evas_Coord curr_x, Evas_Coord curr_y)
-{
-       Evas_Coord x, y, w, h;
-
-       evas_object_geometry_get(win->layout_main,
-                       &x, &y, &w, &h);
-
-       INFO("[indicator area] [%d, %d] [wxh][%dx%d], cur[%d, %d]",
-                       x, y, w, h, curr_x, curr_y);
-
-       if (curr_x >= x && curr_x < x + w && curr_y >= y && curr_y < y + h)
-               return 1;
-
-       return 0;
-}
-
-int indicator_util_check_home_icon_area(win_info *win, Evas_Coord curr_x, Evas_Coord curr_y)
-{
-       Evas_Coord x, y, w, h;
-
-       evas_object_geometry_get(win->_fixed_box[INDICATOR_PRIORITY_FIXED5],
-                       &x, &y, &w, &h);
-
-       INFO("[Home icon area] [%d, %d] [wxh][%dx%d], cur[%d, %d]",
-                       x, y, w, h, curr_x, curr_y);
-
-       if (curr_x >= x && curr_x < x + w && curr_y >= y && curr_y < y + h)
-               return 1;
-
-       return 0;
-}
-
-static void indicator_util_icon_state(int win_type, int bShow)
-{
-       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;
-       retif(data == NULL, , "Invalid parameter!");
-
-       if(bShow)
-       {
-               indicator_util_icon_state(win->type,1);
-       }
-       else
-       {
-               indicator_util_icon_state(win->type,0);
-       }
-
-       if(bEffect)
-       {
-               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
-       {
-               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!");
-
-       if (obj->area == INDICATOR_ICON_AREA_FIXED)
-       {
-               if (eina_list_data_find(_view_fixed_list[obj->win_type], obj))
-                       return 1;
-               else
-                       return 0;
-       }
-       else if(obj->area == INDICATOR_ICON_AREA_SYSTEM)
-       {
-               if (eina_list_data_find(_view_system_list[obj->win_type], obj))
-                       return 1;
-               else
-                       return 0;
-       }
-
-       else {
-               if (eina_list_data_find(_view_noti_list[obj->win_type], obj))
-                       return 1;
-               else
-                       return 0;
-       }
-}
-int indicator_util_handle_animated_gif(Indicator_Icon_Object *icon)
-{
-       int bPlay = TRUE;
-       int val = 0;
-
-       retif(icon == NULL, FAIL, "Invalid parameter!");
-       Evas_Object *icon_eo = evas_object_data_get(icon->img_obj.obj, "imgicon");
-
-       if(elm_image_animated_available_get(icon_eo)== EINA_FALSE)
-       {
-               return FALSE;
-       }
-
-       if (vconf_get_int(VCONFKEY_PM_STATE, &val) < 0) {
-               ERR("Cannot get VCONFKEY_PM_STATE");
-               return FALSE;
-       }
-
-       switch(val)
-       {
-               case VCONFKEY_PM_STATE_LCDOFF :
-                       bPlay = FALSE;
-                       break;
-               case VCONFKEY_PM_STATE_NORMAL :
-                       bPlay = TRUE;
-                       break;
-               default:
-                       bPlay = TRUE;
-                       break;
-       }
-
-       if(bPlay == TRUE)
-       {
-               if(elm_image_animated_get(icon_eo)==EINA_FALSE)
-               {
-                       elm_image_animated_set(icon_eo,EINA_TRUE);
-               }
-
-               if(elm_image_animated_play_get(icon_eo) == EINA_FALSE)
-               {
-                       elm_image_animated_play_set(icon_eo, EINA_TRUE);
-                       INFO("PLAY ANIMATED GIF ICON(%s)",icon->name);
-               }
-       }
-       else
-       {
-               if(elm_image_animated_play_get(icon_eo) == EINA_TRUE)
-               {
-                       elm_image_animated_play_set(icon_eo, EINA_FALSE);
-                       INFO("STOP ANIMATED GIF ICON(%s)",icon->name);
-               }
-       }
-
-       return TRUE;
-}
-
diff --git a/daemon/indicator_box_util.h b/daemon/indicator_box_util.h
deleted file mode 100755 (executable)
index 9c7b326..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Copyright 2012  Samsung Electronics Co., Ltd
- *
- * Licensed under the Flora License, Version 1.1 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://floralicense.org/license/
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-#ifndef __INDICATOR_BOX_UTIL_H__
-#define __INDICATOR_BOX_UTIL_H__
-
-#include <Elementary.h>
-#include "indicator.h"
-
-typedef enum _Icon_AddType {
-       CANNOT_ADD = -1,
-       CAN_ADD_WITH_DEL_SYSTEM,
-       CAN_ADD_WITH_DEL_NOTI,
-       CAN_ADD_WITHOUT_DEL,
-} Icon_AddType;
-
-typedef enum _Icon_Display_Count {
-       BATTERY_TEXT_ON_COUNT = 0,
-       BATTERY_TEXT_OFF_COUNT = 0,
-       PORT_NONFIXED_ICON_COUNT = 6,
-       LAND_NONFIXED_ICON_COUNT = 14,
-       PORT_NOTI_ICON_COUNT = 4,
-       LAND_NOTI_ICON_COUNT = 9,
-       PORT_SYSTEM_ICON_COUNT = 2,
-       LAND_SYSTEM_ICON_COUNT = 5,
-} Icon_Display_Count;
-
-extern int icon_box_pack(Indicator_Icon_Object *icon);
-extern int icon_box_pack_append(Indicator_Icon_Object *icon);
-extern int icon_box_unpack(Indicator_Icon_Object *icon);
-extern int icon_box_init(win_info *win);
-extern int icon_box_fini(win_info *win);
-extern void indicator_util_update_display(win_info *win);
-extern unsigned int indicator_get_count_in_fixed_list(int type);
-extern unsigned int indicator_get_count_in_system_list(int type);
-extern unsigned int indicator_get_count_in_noti_list(int type);
-extern void indicator_set_count_in_non_fixed_list(int angle, int status);
-extern int indicator_get_max_count_in_non_fixed_list(int type);
-extern Icon_AddType indicator_is_enable_to_insert_in_non_fixed_list(Indicator_Icon_Object *obj);
-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, int bEffect);
-extern Eina_Bool indicator_util_is_show_icon(Indicator_Icon_Object *obj);
-int indicator_util_handle_animated_gif(Indicator_Icon_Object *icon);
-
-#endif /*__INDICATOR_BOX_UTIL_H__*/
diff --git a/daemon/indicator_icon_list.c b/daemon/indicator_icon_list.c
deleted file mode 100755 (executable)
index 21c9295..0000000
+++ /dev/null
@@ -1,353 +0,0 @@
-/*
- * Copyright 2012  Samsung Electronics Co., Ltd
- *
- * Licensed under the Flora License, Version 1.1 (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 "common.h"
-#include "indicator.h"
-#include "indicator_icon_list.h"
-#include "indicator_icon_util.h"
-
-static Eina_List *fixed_icon_list[INDICATOR_WIN_MAX] = {NULL,};
-static Eina_List *system_icon_list[INDICATOR_WIN_MAX] = {NULL,};
-static Eina_List *noti_icon_list[INDICATOR_WIN_MAX] = {NULL,};
-
-
-void indicator_icon_object_free(Indicator_Icon_Object *icon)
-{
-       if (icon) {
-               DBG("%s!",icon->name);
-               if (icon->obj_exist == EINA_TRUE) {
-                       if (indicator_util_icon_del(icon) == EINA_TRUE) {
-                               icon->obj_exist = EINA_FALSE;
-                               icon->txt_obj.obj = NULL;
-                               icon->img_obj.obj = NULL;
-                       }
-               }
-       }
-}
-
-static int indicator_icon_list_free(Eina_List *list)
-{
-       Eina_List *l;
-       Eina_List *l_next;
-       Indicator_Icon_Object *data;
-
-       retif(list == NULL, OK, "Empty List!");
-
-       EINA_LIST_FOREACH_SAFE(list, l, l_next, data) {
-               indicator_icon_object_free(data);
-               list = eina_list_remove_list(list, l);
-               if (eina_error_get())
-                       return FAIL;
-       }
-       eina_list_free(list);
-       list = NULL;
-       return eina_error_get();
-}
-
-int indicator_icon_all_list_free(void)
-{
-       int i = 0;
-       for(i=0;i<INDICATOR_WIN_MAX;i++)
-       {
-               indicator_icon_list_free(fixed_icon_list[i]);
-               indicator_icon_list_free(system_icon_list[i]);
-               indicator_icon_list_free(noti_icon_list[i]);
-       }
-
-       return TRUE;
-}
-
-int indicator_icon_list_update(Indicator_Icon_Object *obj)
-{
-       Eina_List *l;
-
-       Indicator_Icon_Object *data;
-
-       retif(obj == NULL, FAIL, "Invalid parameter!");
-
-       DBG("%s",obj->name);
-
-       if (obj->area == INDICATOR_ICON_AREA_FIXED)
-       {
-               fixed_icon_list[obj->win_type] = eina_list_remove(fixed_icon_list[obj->win_type], obj);
-
-               EINA_LIST_REVERSE_FOREACH(fixed_icon_list[obj->win_type], l, data) {
-                       if (data->priority == obj->priority
-                               &&data->always_top == EINA_TRUE)
-                               continue;
-
-                       if (data->priority <= obj->priority) {
-                               fixed_icon_list[obj->win_type] = eina_list_append_relative_list(
-                                               fixed_icon_list[obj->win_type], obj, l);
-                               return eina_error_get();
-                       }
-               }
-
-               fixed_icon_list[obj->win_type] = eina_list_prepend(fixed_icon_list[obj->win_type], obj);
-       }
-       else if(obj->area == INDICATOR_ICON_AREA_SYSTEM)
-       {
-               system_icon_list[obj->win_type] = eina_list_remove(system_icon_list[obj->win_type], obj);
-
-               EINA_LIST_REVERSE_FOREACH(system_icon_list[obj->win_type], l, data) {
-                       if (data->priority == obj->priority
-                               &&data->always_top == EINA_TRUE) {
-                               continue;
-                       }
-                       if (data->priority <= obj->priority) {
-                               system_icon_list[obj->win_type] =
-                                       eina_list_append_relative_list(
-                                               system_icon_list[obj->win_type], obj, l);
-                               return eina_error_get();
-                       }
-               }
-
-               system_icon_list[obj->win_type] = eina_list_prepend(system_icon_list[obj->win_type], obj);
-       }
-       else
-       {
-               noti_icon_list[obj->win_type] = eina_list_remove(noti_icon_list[obj->win_type], obj);
-
-               EINA_LIST_REVERSE_FOREACH(noti_icon_list[obj->win_type], l, data) {
-                       if (data->priority == obj->priority
-                               &&data->always_top == EINA_TRUE) {
-                               continue;
-                       }
-                       if (data->priority >= obj->priority) {
-                               noti_icon_list[obj->win_type] =
-                                       eina_list_append_relative_list(
-                                               noti_icon_list[obj->win_type], obj, l);
-                               return eina_error_get();
-                       }
-               }
-
-               noti_icon_list[obj->win_type] = eina_list_prepend(noti_icon_list[obj->win_type], obj);
-       }
-
-       return eina_error_get();
-}
-
-int indicator_icon_list_insert(Indicator_Icon_Object *obj)
-{
-       Eina_List *l;
-       Indicator_Icon_Object *data;
-
-       retif(obj == NULL || obj->name == NULL, FAIL, "Invalid parameter!");
-
-       DBG("%s!",obj->name);
-
-       if (obj->area == INDICATOR_ICON_AREA_FIXED)
-       {
-               EINA_LIST_REVERSE_FOREACH(fixed_icon_list[obj->win_type], l, data) {
-                       retif(data->name == obj->name, FAIL,
-                             "%s is already exist in the list!", obj->name);
-               }
-
-               obj->wish_to_show = EINA_FALSE;
-
-               EINA_LIST_REVERSE_FOREACH(fixed_icon_list[obj->win_type], l, data) {
-                       if (data->priority == obj->priority
-                               && data->always_top == EINA_TRUE)
-                               continue;
-
-                       if (data->priority <= obj->priority) {
-                               fixed_icon_list[obj->win_type] = eina_list_append_relative_list(
-                                                       fixed_icon_list[obj->win_type], obj, l);
-                                       return eina_error_get();
-                       }
-               }
-               fixed_icon_list[obj->win_type] = eina_list_prepend(fixed_icon_list[obj->win_type], obj);
-       }
-       else if(obj->area == INDICATOR_ICON_AREA_SYSTEM)
-       {
-               EINA_LIST_REVERSE_FOREACH(system_icon_list[obj->win_type], l, data) {
-                       retif(data->name == obj->name, FAIL,
-                             "%s is already exist in the list!", obj->name);
-               }
-
-               obj->wish_to_show = EINA_FALSE;
-
-               EINA_LIST_REVERSE_FOREACH(system_icon_list[obj->win_type], l, data) {
-                       if (data->priority == obj->priority &&
-                               data->always_top == EINA_TRUE)
-                               continue;
-
-                       if (data->priority <= obj->priority) {
-                               system_icon_list[obj->win_type] =
-                                       eina_list_append_relative_list(
-                                               system_icon_list[obj->win_type], obj, l);
-                               return eina_error_get();
-                       }
-               }
-
-               system_icon_list[obj->win_type] = eina_list_prepend(system_icon_list[obj->win_type], obj);
-       }
-       else
-       {
-               EINA_LIST_REVERSE_FOREACH(noti_icon_list[obj->win_type], l, data) {
-                       retif(data->name == obj->name, FAIL,
-                             "%s is already exist in the list!", obj->name);
-               }
-
-               obj->wish_to_show = EINA_FALSE;
-
-               EINA_LIST_REVERSE_FOREACH(noti_icon_list[obj->win_type], l, data) {
-                       if (data->priority == obj->priority &&
-                               data->always_top == EINA_TRUE)
-                               continue;
-
-                       if (data->priority >= obj->priority) {
-                               noti_icon_list[obj->win_type] =
-                                       eina_list_append_relative_list(
-                                               noti_icon_list[obj->win_type], obj, l);
-                               DBG("Append");
-                               return eina_error_get();
-                       }
-               }
-               noti_icon_list[obj->win_type] = eina_list_prepend(noti_icon_list[obj->win_type], obj);
-               DBG("Prepend");
-       }
-
-       return eina_error_get();
-}
-
-int indicator_icon_list_remove(Indicator_Icon_Object *obj)
-{
-       DBG("%s!",obj->name);
-
-       if (obj->area == INDICATOR_ICON_AREA_FIXED)
-       {
-               retif(fixed_icon_list[obj->win_type] == NULL
-                       || obj == NULL, FAIL, "Invalid parameter!");
-               fixed_icon_list[obj->win_type] = eina_list_remove(fixed_icon_list[obj->win_type], obj);
-       }
-       else if(obj->area == INDICATOR_ICON_AREA_SYSTEM)
-       {
-               retif(system_icon_list[obj->win_type] == NULL
-                       || obj == NULL, FAIL, "Invalid parameter!");
-               system_icon_list[obj->win_type] = eina_list_remove(system_icon_list[obj->win_type], obj);
-       }
-       else
-       {
-               retif(noti_icon_list[obj->win_type] == NULL
-                       || obj == NULL, FAIL, "Invalid parameter!");
-               noti_icon_list[obj->win_type] = eina_list_remove(noti_icon_list[obj->win_type], obj);
-       }
-
-       return eina_error_get();
-}
-
-Indicator_Icon_Object
-*indicator_get_wish_to_show_icon(int win_type, int area, int priority)
-{
-       Eina_List *l;
-       Indicator_Icon_Object *data = NULL;
-       Indicator_Icon_Object *ret = NULL;
-
-       if (area == INDICATOR_ICON_AREA_FIXED)
-       {
-               EINA_LIST_REVERSE_FOREACH(fixed_icon_list[win_type], l, data) {
-                       if (data->priority == priority
-                               && data->wish_to_show == EINA_TRUE
-                               && data->exist_in_view == EINA_FALSE)
-                       {
-                               ret = data;
-                               break;
-                       }
-               }
-
-       }
-       else if(area == INDICATOR_ICON_AREA_SYSTEM)
-       {
-               EINA_LIST_REVERSE_FOREACH(system_icon_list[win_type], l, data) {
-                       if (data->wish_to_show == EINA_TRUE
-                               && data->exist_in_view == EINA_FALSE)
-                       {
-                               ret = data;
-                               break;
-                       }
-               }
-
-       }
-       else
-       {
-               EINA_LIST_REVERSE_FOREACH(noti_icon_list[win_type], l, data) {
-                       if (data->wish_to_show == EINA_TRUE
-                               && data->exist_in_view == EINA_FALSE)
-                       {
-                               ret = data;
-                               break;
-                       }
-               }
-
-       }
-
-       if(ret != NULL)
-               DBG("%d,%s",area, ret->name);
-       else
-               ret = NULL;
-
-       return ret;
-}
-
-Indicator_Icon_Object
-*indicator_get_wish_to_remove_icon(int win_type, int area, int priority)
-{
-       Eina_List *l;
-       Indicator_Icon_Object *data = NULL;
-       Indicator_Icon_Object *ret = NULL;
-
-       if (area == INDICATOR_ICON_AREA_FIXED)
-       {
-               EINA_LIST_REVERSE_FOREACH(fixed_icon_list[win_type], l, data) {
-                       if (data->priority == priority
-                               && data->wish_to_show == EINA_TRUE)
-                       {
-                               ret = data;
-                               break;
-                       }
-               }
-       }
-       else if (area == INDICATOR_ICON_AREA_SYSTEM)
-       {
-               EINA_LIST_FOREACH(system_icon_list[win_type], l, data) {
-                       if (data->wish_to_show == EINA_TRUE
-                               && data->always_top == EINA_FALSE
-                               && data->exist_in_view == EINA_TRUE)
-                       {
-                               ret = data;
-                               break;
-                       }
-               }
-       }
-       else
-       {
-               EINA_LIST_FOREACH(noti_icon_list[win_type], l, data) {
-                       if (data->wish_to_show == EINA_TRUE
-                               && data->always_top == EINA_FALSE
-                               && data->exist_in_view == EINA_TRUE)
-                       {
-                               ret = data;
-                               break;
-                       }
-               }
-       }
-
-
-       return ret;
-}
-
diff --git a/daemon/indicator_icon_list.h b/daemon/indicator_icon_list.h
deleted file mode 100755 (executable)
index 8179098..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Copyright 2012  Samsung Electronics Co., Ltd
- *
- * Licensed under the Flora License, Version 1.1 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://floralicense.org/license/
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-#ifndef __INDICATOR_ICON_LIST_H__
-#define __INDICATOR_ICON_LIST_H__
-
-#include "indicator.h"
-extern void indicator_icon_object_free(Indicator_Icon_Object *icon);
-extern int indicator_icon_all_list_free(void);
-extern int indicator_icon_list_insert(Indicator_Icon_Object *obj);
-extern int indicator_icon_list_remove(Indicator_Icon_Object *obj);
-extern int indicator_icon_list_update(Indicator_Icon_Object *obj);
-extern Indicator_Icon_Object
-*indicator_get_wish_to_show_icon(int win_type, int area, int priority);
-extern Indicator_Icon_Object
-*indicator_get_wish_to_remove_icon(int win_type, int area, int priority);
-extern Indicator_Icon_Object
-*indicator_get_lowest_priority_icon_in_non_fixed_list(int area);
-#endif /*__INDICATOR_ICON_LIST_H__*/
diff --git a/daemon/indicator_icon_util.c b/daemon/indicator_icon_util.c
deleted file mode 100755 (executable)
index 425b5af..0000000
+++ /dev/null
@@ -1,524 +0,0 @@
-/*
- * Copyright 2012  Samsung Electronics Co., Ltd
- *
- * Licensed under the Flora License, Version 1.1 (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 <Eina.h>
-#include "common.h"
-#include "indicator_box_util.h"
-#include "indicator_icon_util.h"
-#include "indicator_icon_list.h"
-#include "indicator_ui.h"
-#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;
-
-       retif(icon == NULL, , "Invalid parameter!");
-
-       const char *BLINK_SIGNAL = "icon,state,blink";
-       const char *ROATATE_SIGNAL = "icon,state,roate";
-       const char *METRONOME_SIGNAL = "icon,state,metronome";
-       const char *DEFAULT = "icon,state,default";
-
-       const char *send_signal = DEFAULT;
-
-       switch (type) {
-       case ICON_ANI_BLINK:
-               send_signal = BLINK_SIGNAL;
-               break;
-       case ICON_ANI_ROTATE:
-               send_signal = ROATATE_SIGNAL;
-               break;
-       case ICON_ANI_METRONOME:
-               send_signal = METRONOME_SIGNAL;
-               break;
-       default:
-               break;
-       }
-
-       switch (icon->type) {
-       case INDICATOR_IMG_ICON:
-               img_edje = elm_layout_edje_get(icon->img_obj.obj);
-               edje_object_signal_emit(img_edje, send_signal,
-                                       "elm.swallow.icon");
-               break;
-       case INDICATOR_TXT_ICON:
-               txt_edje = elm_layout_edje_get(icon->txt_obj.obj);
-               edje_object_signal_emit(txt_edje, send_signal,
-                                       "elm.swallow.icon");
-               break;
-       case INDICATOR_TXT_WITH_IMG_ICON:
-               txt_edje = elm_layout_edje_get(icon->txt_obj.obj);
-               img_edje = elm_layout_edje_get(icon->img_obj.obj);
-               edje_object_signal_emit(txt_edje, send_signal,
-                                       "elm.swallow.lefticon");
-               edje_object_signal_emit(img_edje, send_signal,
-                                       "elm.swallow.righticon");
-               break;
-       default:
-               break;
-       }
-}
-
-void indicator_util_icon_animation_set(Indicator_Icon_Object *icon,
-                                      enum indicator_icon_ani type)
-{
-       retif(icon == NULL, , "Invalid parameter!");
-
-       icon->ani = type;
-       if (icon->obj_exist)
-       {
-               _animation_set(icon, type);
-       }
-}
-
-static Evas_Object *_img_icon_add(win_info *win, Indicator_Icon_Object *icon)
-{
-       struct appdata *ad = NULL;
-       char path[PATH_MAX];
-       Evas_Object *evas_icon;
-       Evas_Object *ly;
-       int area = 0;
-       char *imgpath = NULL;
-       int width = 0;
-       int height = 0;
-
-       retif(icon == NULL , NULL, "Invalid parameter!");
-       retif(icon->ad == NULL || icon->img_obj.data == NULL,   NULL, "Invalid parameter!");
-       retif(win == NULL || win->layout_main == NULL, NULL, "Invalid parameter!");
-
-       ad = icon->ad;
-       area = icon->area;
-       imgpath = icon->img_obj.data;
-
-       if (icon->img_obj.width <= 0)
-               width = icon->img_obj.width = DEFAULT_ICON_WIDTH;
-       if (icon->img_obj.height<= 0)
-               height = icon->img_obj.height = DEFAULT_ICON_HEIGHT;
-
-       memset(path, 0x00, sizeof(path));
-
-       ly = elm_layout_add(win->layout_main);
-       retif(ly == NULL, NULL, "Cannot create layout object!");
-
-       if (area == INDICATOR_ICON_AREA_FIXED)
-               elm_layout_file_set(ly, ICON_THEME_FILE,
-                               "elm/indicator/icon/base");
-       else
-               elm_layout_file_set(ly, ICON_NONFIXED_THEME_FILE,
-                               "elm/indicator/icon/base");
-
-       evas_icon = elm_image_add(ly);
-       retif(evas_icon == NULL, NULL, "Cannot create elm icon object!");
-
-       if (strncmp(imgpath, "/", 1) != 0) {
-               snprintf(path, sizeof(path), "%s/%s", get_icon_dir(), imgpath);
-       } else {
-               strncpy(path,imgpath,sizeof(path)-1);
-       }
-
-       if (!ecore_file_exists(path))
-       {
-               ERR("icon file does not exist!!: %s",path);
-       }
-
-       elm_image_file_set(evas_icon, path, NULL);
-
-       evas_object_size_hint_min_set(evas_icon, width * elm_config_scale_get(),
-                                     height * elm_config_scale_get());
-
-       elm_object_part_content_set(ly, "elm.swallow.icon", evas_icon);
-
-       evas_object_data_set(ly, "imgicon", evas_icon);
-       evas_object_size_hint_min_set(ly, width * elm_config_scale_get(),
-                                     height * elm_config_scale_get());
-       evas_object_hide(ly);
-       return ly;
-}
-
-static Evas_Object *_txt_icon_add(win_info *win, Indicator_Icon_Object *icon)
-{
-       struct appdata *ad = NULL;
-       char *color_added_str = NULL;
-       Evas_Object *evas_icon;
-       Evas_Object *ly;
-       char *txt = NULL;
-
-       retif(icon == NULL , NULL, "Invalid parameter!");
-       retif(icon->ad == NULL || icon->txt_obj.data == NULL,   NULL, "Invalid parameter!");
-       retif(win == NULL || win->layout_main == NULL, NULL, "Invalid parameter!");
-
-       ad = icon->ad;
-       txt = icon->txt_obj.data;
-
-       ly = elm_layout_add(win->layout_main);
-       elm_layout_file_set(ly, ICON_THEME_FILE, "elm/indicator/icon/base");
-
-       evas_icon = elm_label_add(ly);
-       color_added_str = (char *)set_label_text_color(txt);
-
-       elm_object_text_set(evas_icon, color_added_str);
-       evas_object_size_hint_align_set(evas_icon, 0.5, 0.5);
-
-       elm_object_part_content_set(ly, "elm.swallow.icon", evas_icon);
-
-       evas_object_data_set(ly, "txticon", evas_icon);
-       evas_object_hide(ly);
-
-       return ly;
-}
-
-char *indicator_util_icon_label_set(const char *buf, char *font_name,
-                                   char *font_style, int font_size, void *data)
-{
-       Eina_Strbuf *temp_buf = NULL;
-       char *ret_str = NULL;
-       char *label_font = ICON_FONT_NAME;
-       char *label_font_style = ICON_FONT_STYLE;
-       int label_font_size = ICON_FONT_SIZE;
-       Eina_Bool buf_result = EINA_FALSE;
-
-       retif(data == NULL || buf == NULL, NULL, "Invalid parameter!");
-
-       temp_buf = eina_strbuf_new();
-       if (font_name != NULL)
-               label_font = font_name;
-       if (font_style != NULL)
-               label_font_style = font_style;
-       if (font_size > 0)
-               label_font_size = font_size;
-
-       buf_result = eina_strbuf_append_printf(temp_buf, CUSTOM_LABEL_STRING,
-                                              label_font, label_font_style,
-                                              label_font_size, buf);
-
-       if (buf_result != EINA_FALSE)
-               ret_str = eina_strbuf_string_steal(temp_buf);
-
-       eina_strbuf_free(temp_buf);
-
-       return ret_str;
-}
-
-Eina_Bool indicator_util_icon_add(win_info *win, Indicator_Icon_Object *icon)
-{
-       retif(icon == NULL, EINA_FALSE, "Invalid parameter!");
-
-       switch (icon->type) {
-       case INDICATOR_TXT_ICON:
-               icon->txt_obj.obj = _txt_icon_add(win, icon);
-               break;
-       case INDICATOR_IMG_ICON:
-               icon->img_obj.obj = _img_icon_add(win, icon);
-               break;
-       case INDICATOR_TXT_WITH_IMG_ICON:
-               icon->txt_obj.obj = _txt_icon_add(win, icon);
-               icon->img_obj.obj = _img_icon_add(win, icon);
-               break;
-
-       default:
-               ERR("Icon type check error!");
-               return EINA_FALSE;
-       }
-       _animation_set(icon, icon->ani);
-       return EINA_TRUE;
-}
-
-Eina_Bool indicator_util_icon_del(Indicator_Icon_Object *icon)
-{
-       Evas_Object *icon_obj;
-       retif(icon == NULL, EINA_FALSE, "Invalid parameter!");
-
-       if (icon->obj_exist != EINA_FALSE) {
-               if (icon->txt_obj.obj) {
-                       icon_obj =
-                           evas_object_data_get(icon->txt_obj.obj, "txticon");
-                       evas_object_del(icon_obj);
-                       evas_object_del(icon->txt_obj.obj);
-                       icon->txt_obj.obj = NULL;
-               }
-               if (icon->img_obj.obj) {
-                       icon_obj =
-                           evas_object_data_get(icon->img_obj.obj, "imgicon");
-                       evas_object_del(icon_obj);
-                       evas_object_del(icon->img_obj.obj);
-                       icon->img_obj.obj = NULL;
-               }
-       }
-       return EINA_TRUE;
-}
-
-
-static int show_other_icon_in_same_priority(Indicator_Icon_Object *icon)
-{
-       Indicator_Icon_Object *wish_add_icon;
-       int area = icon->area;
-       retif(icon == NULL, FAIL, "Invalid parameter!");
-
-       wish_add_icon = indicator_get_wish_to_show_icon(icon->win_type, icon->area,icon->priority);
-       if (wish_add_icon == NULL)
-       {
-               DBG("wish_add_icon NULL!");
-               return OK;
-       }
-
-       if (indicator_util_is_show_icon(wish_add_icon))
-       {
-               DBG("Wish Icon is alreay shown!");
-               return OK;
-       }
-
-       if(wish_add_icon!=NULL)
-       {
-               DBG("%s icon is shown!", wish_add_icon->name);
-       }
-
-       if(area ==INDICATOR_ICON_AREA_NOTI)
-       {
-               icon_box_pack_append(wish_add_icon);
-       }
-       else
-       {
-               icon_box_pack(wish_add_icon);
-       }
-
-       return OK;
-}
-
-static int hide_other_icons_in_view_list(Indicator_Icon_Object *icon)
-{
-       Indicator_Icon_Object *wish_remove_icon = NULL;
-       retif(icon == NULL, FAIL, "Invalid parameter!");
-
-       if (INDICATOR_ICON_AREA_SYSTEM == icon->area || INDICATOR_ICON_AREA_NOTI == icon->area)
-       {
-               Icon_AddType ret;
-               Eina_Error err;
-
-               ret = indicator_is_enable_to_insert_in_non_fixed_list(icon);
-               icon->wish_to_show = EINA_TRUE;
-               err = indicator_icon_list_update(icon);
-
-               switch (ret) {
-               case CAN_ADD_WITH_DEL_NOTI:
-                       wish_remove_icon = indicator_get_wish_to_remove_icon(icon->win_type, INDICATOR_ICON_AREA_NOTI,0);
-
-                       icon_box_unpack(wish_remove_icon);
-
-                       retif(wish_remove_icon == NULL, FAIL, "Unexpected Error : CAN_ADD_WITH_DEL_NOTI");
-                       break;
-               case CAN_ADD_WITH_DEL_SYSTEM:
-                       wish_remove_icon = indicator_get_wish_to_remove_icon(icon->win_type, INDICATOR_ICON_AREA_SYSTEM,0);
-
-                       icon_box_unpack(wish_remove_icon);
-                       retif(wish_remove_icon == NULL, FAIL, "Unexpected Error : CAN_ADD_WITH_DEL_SYSTEM");
-                       break;
-               case CAN_ADD_WITHOUT_DEL:
-                       break;
-               case CANNOT_ADD:
-                       DBG("[ICON UTIL SYSTEM] %s icon CANNOT_ADD!",icon->name);
-                       return FAIL;
-                       break;
-               }
-
-               return OK;
-       }
-       else if (INDICATOR_ICON_AREA_FIXED == icon->area)
-       {
-               wish_remove_icon = indicator_get_wish_to_remove_icon(icon->win_type, INDICATOR_ICON_AREA_FIXED,icon->priority);
-
-               if (wish_remove_icon == NULL)
-               {
-                       DBG("[ICON UTIL FIXED] NULL!");
-                       return OK;
-               }
-
-               if (wish_remove_icon == icon)
-               {
-                       return FAIL;
-               }
-
-               icon->wish_to_show = EINA_TRUE;
-               indicator_icon_list_update(icon);
-
-               if (wish_remove_icon->always_top)
-               {
-                       DBG("[ICON UTIL FIXED] %s!", wish_remove_icon->name);
-                       return FAIL;
-               }
-
-               DBG("[ICON UTIL FIXED] %s icon is hidden!",
-                                       wish_remove_icon->name);
-               icon_box_unpack(wish_remove_icon);
-       }
-       return OK;
-}
-
-int indicator_util_layout_del(win_info *win)
-{
-       return icon_box_fini(win);
-}
-
-int indicator_util_layout_add(win_info *win)
-{
-       retif(win == NULL
-             || win->layout_main == NULL, FAIL, "Invalid parameter!");
-       indicator_util_layout_del(win);
-       return icon_box_init(win);
-}
-
-
-int indicator_util_icon_width_set(Indicator_Icon_Object *icon)
-{
-       return 0;
-}
-
-static int _icon_update(Indicator_Icon_Object *icon)
-{
-       struct appdata *ad = NULL;
-       Evas_Object *txt_eo, *img_eo;
-       char buf[PATH_MAX];
-
-       retif(icon == NULL || icon->ad == NULL, FAIL, "Invalid parameter!");
-       ad = icon->ad;
-
-       memset(buf, 0x00, sizeof(buf));
-
-       if (icon->type == INDICATOR_IMG_ICON
-           || icon->type == INDICATOR_TXT_WITH_IMG_ICON) {
-               img_eo = evas_object_data_get(icon->img_obj.obj, "imgicon");
-
-               if (strncmp(icon->img_obj.data, "/", 1) != 0) {
-                       snprintf(buf, sizeof(buf), "%s/%s", get_icon_dir(),
-                                icon->img_obj.data);
-                       elm_image_file_set(img_eo, buf, NULL);
-               } else {
-                       retif(icon->img_obj.data[0] == '\0', FAIL,
-                             "Invalid parameter!");
-                       elm_image_file_set(img_eo, icon->img_obj.data, NULL);
-               }
-
-               if (icon->img_obj.width >= 0 && icon->img_obj.height>=0) {
-                       evas_object_size_hint_min_set(img_eo,
-                               icon->img_obj.width * elm_config_scale_get(),
-                               icon->img_obj.height * elm_config_scale_get());
-               } else {
-                       evas_object_size_hint_min_set(img_eo,
-                               DEFAULT_ICON_WIDTH * elm_config_scale_get(),
-                               DEFAULT_ICON_HEIGHT * elm_config_scale_get());
-       }
-       }
-
-       if (icon->type == INDICATOR_TXT_ICON
-           || icon->type == INDICATOR_TXT_WITH_IMG_ICON) {
-               char *color_added_str = NULL;
-               txt_eo = evas_object_data_get(icon->txt_obj.obj, "txticon");
-               color_added_str =
-                   (char *)set_label_text_color(icon->txt_obj.data);
-               elm_object_text_set(txt_eo, color_added_str);
-               free(color_added_str);
-       }
-       return OK;
-}
-
-void indicator_util_icon_show(Indicator_Icon_Object *icon)
-{
-       struct appdata *ad = (struct appdata *)icon->ad;
-
-       retif(icon == NULL, , "Invalid parameter!");
-
-       if (icon->obj_exist != EINA_FALSE)
-       {
-               _icon_update(icon);
-       }
-
-       if (hide_other_icons_in_view_list(icon) == FAIL)
-       {
-               return;
-       }
-
-       icon->wish_to_show = EINA_TRUE;
-       DBG("[ICON UTIL] %s %d icon is shown!", icon->name, icon->win_type);
-
-       icon_box_pack(icon);
-
-       indicator_util_update_display(&(ad->win[icon->win_type]));
-}
-
-void indicator_util_icon_hide(Indicator_Icon_Object *icon)
-{
-       int ret;
-
-       retif(icon == NULL, , "Invalid parameter!");
-
-       icon->wish_to_show = EINA_FALSE;
-
-       DBG("%s icon is hidden!", icon->name);
-
-       if (icon->exist_in_view == EINA_TRUE) {
-               ret = icon_box_unpack(icon);
-
-               if (ret == FAIL)
-                       ERR("Failed to unpack %s!", icon->name);
-
-               show_other_icon_in_same_priority(icon);
-       }
-
-       struct appdata *ad = (struct appdata *)icon->ad;
-
-       indicator_util_update_display(&(ad->win[icon->win_type]));
-}
-
-void indicator_util_event_count_set(int count, void *data)
-{
-       static int _cnt = -1;
-       char buf[1024];
-
-       retif(data == NULL, , "Cannot get layout!");
-
-       if (_cnt != count) {
-               memset(buf, 0x00, sizeof(buf));
-               if (count) {
-                       snprintf(buf, sizeof(buf), "%d", count);
-                       indicator_signal_emit(data,"badge,show,1","elm.image.badge");
-               } else {
-                       indicator_signal_emit(data,"badge,hide,1","elm.image.badge");
-               }
-
-               indicator_part_text_emit(data,"elm.text.badge", buf);
-               _cnt = count;
-       }
-}
-
-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
deleted file mode 100755 (executable)
index aba3e50..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Copyright 2012  Samsung Electronics Co., Ltd
- *
- * Licensed under the Flora License, Version 1.1 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://floralicense.org/license/
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef __INDICATOR_ICON_UTIL_H__
-#define __INDICATOR_ICON_UTIL_H__
-
-#include <Elementary.h>
-#include "indicator.h"
-#include "indicator_ui.h"
-
-enum {
-       ICON_STATE_HIDDEN = 0,
-       ICON_STATE_SHOWN
-};
-
-enum indicator_view_mode {
-       INDICATOR_KEEP_VIEW = -1,
-       INDICATOR_FULL_VIEW,
-       INDICATOR_CLOCK_VIEW
-};
-
-extern int indicator_util_layout_add(win_info *win);
-extern int indicator_util_layout_del(win_info *win);
-
-extern void indicator_util_icon_show(Indicator_Icon_Object *obj);
-extern void indicator_util_icon_hide(Indicator_Icon_Object *obj);
-extern void indicator_util_icon_animation_set(Indicator_Icon_Object *icon,
-                                             enum indicator_icon_ani type);
-extern int indicator_util_icon_width_set(Indicator_Icon_Object *icon);
-extern char *indicator_util_icon_label_set(const char *buf, char *font_name,
-                                          char *font_style, int font_size,
-                                          void *data);
-extern Eina_Bool indicator_util_icon_add(win_info *win,Indicator_Icon_Object *icon);
-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
deleted file mode 100755 (executable)
index 7f1b430..0000000
+++ /dev/null
@@ -1,1588 +0,0 @@
-/*
- * Copyright 2012  Samsung Electronics Co., Ltd
- *
- * Licensed under the Flora License, Version 1.1 (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 <stdio.h>
-#include <app.h>
-#include <Ecore_X.h>
-#include <vconf.h>
-#include <unistd.h>
-#include <privilege-control.h>
-#include <app_manager.h>
-#include <signal.h>
-#include <minicontrol-monitor.h>
-#include <feedback.h>
-
-#include "common.h"
-#include "indicator_box_util.h"
-#include "indicator_icon_util.h"
-#include "indicator_ui.h"
-#include "indicator_gui.h"
-#include "modules.h"
-#include "indicator_util.h"
-
-#define GRP_MAIN "indicator"
-
-#define WIN_TITLE "Illume Indicator"
-
-#define VCONF_PHONE_STATUS "memory/startapps/sequence"
-
-#define UNLOCK_ENABLED 0
-#define TIMEOUT                        5
-
-#ifdef HOME_KEY_EMULATION
-
-#define PROP_HWKEY_EMULATION "_HWKEY_EMULATION"
-#define KEY_MSG_PREFIX_PRESS "P:"
-#define KEY_MSG_PREFIX_RELEASE "R:"
-#define KEY_MSG_PREFIX_PRESS_C "PC"
-#define KEY_MSG_PREFIX_RELEASE_C "RC"
-
-#ifndef KEY_HOME
-#define KEY_HOME "XF86Phone"
-#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[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,};
-
-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);
-static void _change_max_nonfixed_icon_count(void *data,
-                                       Eina_Bool status, int angle);
-static Eina_Bool _change_view(Ecore_X_Window win, void *data);
-static int check_system_status(void);
-
-static int indicator_window_new(void *data);
-static int indicator_window_del(void *data);
-
-static void _indicator_check_battery_percent_on_cb(keynode_t *node, void *data);
-static void _indicator_low_bat_cb(void *data);
-static void _indicator_lang_changed_cb(void *data);
-static void _indicator_region_changed_cb(void *data);
-static void _indicator_window_delete_cb(void *data, Evas_Object * obj,
-                                       void *event);
-static Eina_Bool _indicator_client_message_cb(void *data, int type,
-                                             void *event);
-static void _indicator_mouse_down_cb(void *data, Evas * e, Evas_Object * obj,
-                                    void *event);
-static void _indicator_mouse_move_cb(void *data, Evas * e, Evas_Object * obj,
-                                    void *event);
-static void _indicator_mouse_up_cb(void *data, Evas * e, Evas_Object * obj,
-                                  void *event);
-
-
-
-static void _change_nonfixed_icon_padding(void *data, Eina_Bool status)
-{
-       retif(data == NULL, , "Invalid parameter!");
-
-       if (status == EINA_TRUE)
-               indicator_signal_emit(data, "change,padding,1", "elm.rect.*");
-       else
-               indicator_signal_emit(data, "change,padding,2", "elm.rect.*");
-}
-
-
-static void _change_max_nonfixed_icon_count(void *data,
-                                       Eina_Bool status, int angle)
-{
-       struct appdata *ad = (struct appdata *)data;
-
-       retif(data == NULL, , "Invalid parameter!");
-
-       DBG("Current angle : %d", ad->angle);
-
-       indicator_set_count_in_non_fixed_list(ad->angle, status);
-}
-
-static int check_system_status(void)
-{
-       int ret, value = -1;
-
-       ret = vconf_get_int(VCONFKEY_PWLOCK_STATE, &value);
-       if (ret == OK &&
-           (value == VCONFKEY_PWLOCK_BOOTING_LOCK ||
-            value == VCONFKEY_PWLOCK_RUNNING_LOCK))
-               return FAIL;
-
-       return OK;
-}
-
-static void _change_top_win(enum _win_type type, void *data)
-{
-       struct appdata *ad = data;
-       int i = 0;
-       retif(data == NULL, , "Invalid parameter!");
-
-       DBG("Current Top Window : %d", type);
-       ad->top_win = type;
-       for(i=0;i<INDICATOR_WIN_MAX;i++)
-       {
-               indicator_util_update_display(&(ad->win[i]));
-       }
-}
-
-static char *_get_top_window_name(void *data)
-{
-       Ecore_X_Window topwin = ecore_x_window_root_first_get();
-       Ecore_X_Window active;
-       static Eina_Strbuf *temp_buf = NULL;
-
-       char *pkgname = NULL;
-       char *win_name = NULL;
-       char *ret_name = NULL;
-
-       int pid;
-
-       retif(data == NULL, NULL, "Invalid parameter!");
-
-       if (ecore_x_window_prop_xid_get(topwin, ECORE_X_ATOM_NET_ACTIVE_WINDOW,
-                                       ECORE_X_ATOM_WINDOW, &active,
-                                       1) == FAIL)
-               return NULL;
-
-       if (ecore_x_netwm_pid_get(active, &pid) == EINA_FALSE) {
-               Ecore_X_Atom atom;
-               unsigned char *in_pid;
-               int num;
-
-               atom = ecore_x_atom_get("X_CLIENT_PID");
-               if (ecore_x_window_prop_property_get(topwin,
-                               atom, ECORE_X_ATOM_CARDINAL,
-                               sizeof(int), &in_pid, &num) == EINA_FALSE) {
-                       DBG("Failed to get PID from a window 0x%X", topwin);
-
-                       if(in_pid != NULL)
-                               free(in_pid);
-
-                       return NULL;
-               }
-               pid = *(int *)in_pid;
-               free(in_pid);
-       }
-
-       DBG("Window (0x%X) PID is %d", topwin, pid);
-
-       if (app_manager_get_package(pid,&pkgname) != APP_MANAGER_ERROR_NONE)
-       {
-               if (ecore_x_netwm_name_get(active, &win_name) == EINA_FALSE)
-                       return NULL;
-               else
-                       return win_name;
-       }
-
-       DBG("Pkgname : %s", pkgname);
-
-       temp_buf = eina_strbuf_new();
-       eina_strbuf_append_printf(temp_buf, "%s", pkgname);
-       ret_name = eina_strbuf_string_steal(temp_buf);
-       eina_strbuf_free(temp_buf);
-
-       if(pkgname != NULL)
-               free(pkgname);
-
-       return ret_name;
-}
-
-static Eina_Bool _change_view(Ecore_X_Window win, void *data)
-{
-       char *top_win_name = NULL;
-       enum _win_type type;
-
-       if (data == NULL)
-               return EINA_FALSE;
-
-       top_win_name = _get_top_window_name(data);
-
-       if (top_win_name != NULL) {
-               Eina_Bool ret = EINA_TRUE;
-
-               INFO("TOP WINDOW NAME = %s", top_win_name);
-
-               if (!strncmp(top_win_name, QUICKPANEL_NAME,
-                                       strlen(top_win_name))) {
-                       type = TOP_WIN_QUICKPANEL;
-                       ret = EINA_FALSE;
-               } else if (!strncmp(top_win_name, HOME_SCREEN_NAME,
-                                               strlen(top_win_name)))
-                       type = TOP_WIN_HOME_SCREEN;
-               else if (!strncmp(top_win_name, LOCK_SCREEN_NAME,
-                                               strlen(top_win_name)))
-                       type = TOP_WIN_LOCK_SCREEN;
-               else if (!strncmp(top_win_name, MENU_SCREEN_NAME,
-                                               strlen(top_win_name)))
-                       type = TOP_WIN_MENU_SCREEN;
-               else if (!strncmp(top_win_name, CALL_NAME,
-                                               strlen(top_win_name)))
-                       type = TOP_WIN_CALL;
-               else if (!strncmp(top_win_name, VTCALL_NAME,
-                                               strlen(top_win_name)))
-                       type = TOP_WIN_CALL;
-               else
-                       type = TOP_WIN_NORMAL;
-
-               free(top_win_name);
-               _change_top_win(type, data);
-
-               return ret;
-       } else {
-               type = TOP_WIN_NORMAL;
-       }
-       _change_top_win(type, data);
-       return EINA_TRUE;
-}
-
-static void _indicator_check_battery_percent_on_cb(keynode_t *node, void *data)
-{
-       struct appdata *ad = (struct appdata *)data;
-       int ret = FAIL;
-       int status = 0;
-       retif(data == NULL, , "Invalid parameter!");
-
-       ret = vconf_get_bool(VCONFKEY_SETAPPL_BATTERY_PERCENTAGE_BOOL, &status);
-
-       if (ret == OK) {
-               _change_nonfixed_icon_padding(data, status);
-               _change_max_nonfixed_icon_count(data, status, ad->angle);
-       } else
-               ERR("Fail to get vconfkey : %s",
-                       VCONFKEY_SETAPPL_BATTERY_PERCENTAGE_BOOL);
-}
-
-static void _indicator_low_bat_cb(void *data)
-{
-       INFO("LOW_BATTERY!");
-}
-
-static void _indicator_lang_changed_cb(void *data)
-{
-       INFO("CHANGE LANGUAGE!");
-       indicator_lang_changed_modules(data);
-}
-
-static void _indicator_region_changed_cb(void *data)
-{
-       INFO("CHANGE REGION!");
-       indicator_region_changed_modules(data);
-}
-
-static void _indicator_window_delete_cb(void *data, Evas_Object * obj,
-                                       void *event)
-{
-       struct appdata *ad = (struct appdata *)data;
-       retif(data == NULL, , "Invalid parameter!");
-
-       indicator_window_del(ad);
-}
-
-static void _indicator_notify_pm_state_cb(keynode_t * node, void *data)
-{
-
-       int val = -1;
-
-       if (data == NULL) {
-               ERR("lockd is NULL");
-               return;
-       }
-
-       if (vconf_get_int(VCONFKEY_PM_STATE, &val) < 0) {
-               ERR("Cannot get VCONFKEY_PM_STATE");
-               return;
-       }
-
-       DBG("PM state Notification!!(%d)",val);
-
-       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,1);
-                       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 _indicator_power_off_status_cb(keynode_t * node, void *data)
-{
-
-       struct appdata *ad = (struct appdata *)data;
-       int val = -1;
-
-       if (data == NULL) {
-               ERR("data is NULL");
-               return;
-       }
-
-       if (vconf_get_int(VCONFKEY_SYSMAN_POWER_OFF_STATUS, &val) < 0) {
-               ERR("Cannot get VCONFKEY_SYSMAN_POWER_OFF_STATUS");
-               return;
-       }
-
-       DBG("_indicator_power_off_status_cb!!(%d)",val);
-
-       switch(val)
-       {
-               case VCONFKEY_SYSMAN_POWER_OFF_DIRECT:
-               case VCONFKEY_SYSMAN_POWER_OFF_RESTART:
-                       DBG("_indicator_power_off_status_cb : Terminated...");
-                       app_efl_exit();
-                       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:
-                       {
-                               if (hide_timer != NULL)
-                               {
-                                       ecore_timer_del(hide_timer);
-                                       hide_timer = NULL;
-                               }
-                               indicator_util_show_hide_icons(&(ad->win[INDICATOR_WIN_LAND]),0,0);
-
-                               if(is_quickpanel_opened == 1)
-                               {
-                                       indicator_util_show_hide_icons(&(ad->win[INDICATOR_WIN_PORT]),1,0);
-                               }
-
-                               indicator_send_evas_ecore_message(&(ad->win[INDICATOR_WIN_PORT]),0,1);
-                       }
-                       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);
-                               indicator_send_evas_ecore_message(&(ad->win[INDICATOR_WIN_LAND]),1,2);
-                               if (hide_timer != NULL)
-                               {
-                                       ecore_timer_del(hide_timer);
-                                       hide_timer = NULL;
-                               }
-                       }
-                       else
-                       {
-                               indicator_util_show_hide_icons(&(ad->win[INDICATOR_WIN_LAND]),1,0);
-                               indicator_send_evas_ecore_message(&(ad->win[INDICATOR_WIN_LAND]),0,1);
-                       }
-                       break;
-               default:
-                       break;
-       }
-}
-
-#ifdef INDICATOR_SUPPORT_OPACITY_MODE
-static void _change_opacity(void *data, enum indicator_opacity_mode mode)
-{
-       struct appdata *ad = NULL;
-       const char *signal = NULL;
-       retif(data == NULL, , "Invalid parameter!");
-
-       ad = data;
-
-       switch (mode) {
-       case INDICATOR_OPACITY_OPAQUE:
-               signal = "bg.opaque";
-               ad->opacity_mode = mode;
-               break;
-       case INDICATOR_OPACITY_TRANSLUCENT:
-               signal = "bg.translucent";
-               ad->opacity_mode = mode;
-               break;
-       case INDICATOR_OPACITY_TRANSPARENT:
-               signal = "bg.transparent";
-               ad->opacity_mode = mode;
-               break;
-       default:
-               ERR("unknown mode : %d", mode);
-               signal = "bg.opaque";
-               ad->opacity_mode = INDICATOR_OPACITY_OPAQUE;
-               break;
-
-       }
-       ad->opacity_mode = mode;
-
-       indicator_signal_emit(data,signal, "indicator.prog");
-
-       DBG("send signal [%s] to indicator layout", signal);
-}
-
-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)
-       {
-               if(is_quickpanel_opened==0)
-               {
-                       is_quickpanel_opened = 1;
-
-                       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);
-                               }
-                       }
-                       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
-       {
-               if(is_quickpanel_opened==1)
-               {
-                       is_quickpanel_opened = 0;
-
-                       if( current_angle==0 || current_angle == 180)
-                       {
-                               indicator_util_show_hide_icons(&(ad->win[INDICATOR_WIN_LAND]),0,0);
-
-                               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);
-                       }
-                       else
-                       {
-                               indicator_util_show_hide_icons(&(ad->win[INDICATOR_WIN_LAND]),0,1);
-                               indicator_send_evas_ecore_message(&(ad->win[INDICATOR_WIN_LAND]),1,2);
-                       }
-               }
-       }
-}
-#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;
-
-       retif(data == NULL
-             || event == NULL, ECORE_CALLBACK_RENEW, "Invalid parameter!");
-
-
-       if (ev->message_type == ECORE_X_ATOM_E_ILLUME_QUICKPANEL_STATE) {
-               if (ev->data.l[0] == ECORE_X_ATOM_E_ILLUME_QUICKPANEL_ON)
-                       _indicator_quickpanel_changed(data, 1);
-               else if (ev->data.l[0] == ECORE_X_ATOM_E_ILLUME_QUICKPANEL_OFF)
-                       _indicator_quickpanel_changed(data, 0);
-
-       }
-
-       return ECORE_CALLBACK_RENEW;
-}
-
-
-static Eina_Bool _property_changed_cb(void *data, int type, void *event)
-{
-       Ecore_X_Event_Window_Property *ev = event;
-
-       if (ev == NULL || ev->atom != ECORE_X_ATOM_NET_ACTIVE_WINDOW)
-               return EINA_FALSE;
-
-       return EINA_TRUE;
-}
-
-static void _mctrl_monitor_cb(minicontrol_action_e action,
-                               const char *name, unsigned int width,
-                               unsigned int height,
-                               minicontrol_priority_e priority,
-                               void *data)
-{
-       retif(!data, , "data is NULL");
-       retif(!name, , "name is NULL");
-
-       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);
-       evas_object_event_callback_add(win->layout_main,
-                                      EVAS_CALLBACK_MOUSE_DOWN,
-                                      _indicator_mouse_down_cb, win);
-
-       evas_object_event_callback_add(win->layout_main,
-                                      EVAS_CALLBACK_MOUSE_MOVE,
-                                      _indicator_mouse_move_cb, win);
-
-       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);
-
-}
-
-static void register_event_handler(void *data)
-{
-       int ret;
-       int i = 0;
-       struct appdata *ad = data;
-       Ecore_Event_Handler *hdl = NULL;
-       retif(data == NULL, , "Invalid parameter!");
-
-       for(i=0;i<INDICATOR_WIN_MAX;i++)
-       {
-               _register_event_handler_both(&(ad->win[i]),data);
-       }
-       hdl = ecore_event_handler_add(ECORE_X_EVENT_CLIENT_MESSAGE,
-                                     _indicator_client_message_cb, (void *)ad);
-       retif(hdl == NULL, , "Failed to register ecore_event_handler!");
-       ad->evt_handlers = eina_list_append(ad->evt_handlers, hdl);
-
-       hdl = ecore_event_handler_add(ECORE_X_EVENT_WINDOW_PROPERTY,
-                                     _property_changed_cb, data);
-       retif(hdl == NULL, , "Failed to register ecore_event_handler!");
-       ad->evt_handlers = eina_list_append(ad->evt_handlers, hdl);
-
-       ret = vconf_notify_key_changed(VCONFKEY_SETAPPL_BATTERY_PERCENTAGE_BOOL,
-                      _indicator_check_battery_percent_on_cb, (void *)ad);
-
-       if (ret == -1) {
-               ERR("noti start is failed\n");
-               return;
-       }
-
-       if (vconf_notify_key_changed
-           (VCONFKEY_PM_STATE, _indicator_notify_pm_state_cb, (void *)ad) != 0) {
-               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;
-       }
-
-       ret = vconf_notify_key_changed(VCONFKEY_SYSMAN_POWER_OFF_STATUS,
-                      _indicator_power_off_status_cb, (void *)ad);
-
-       if (ret == -1) {
-               ERR("VCONFKEY_SYSMAN_POWER_OFF_STATUS is failed\n");
-               return;
-       }
-
-       ret = minicontrol_monitor_start(_mctrl_monitor_cb, data);
-       if (ret != MINICONTROL_ERROR_NONE) {
-               ERR("fail to minicontrol_monitor_start()- %d", ret);
-               return;
-       }
-
-}
-
-static void _unregister_event_handler_both(win_info *win)
-{
-       retif(win == NULL, , "Invalid parameter!");
-
-       evas_object_smart_callback_del(win->win_main,
-                                      "delete-request",
-                                      _indicator_window_delete_cb);
-
-       evas_object_event_callback_del(win->layout_main,
-                                      EVAS_CALLBACK_MOUSE_DOWN,
-                                      _indicator_mouse_down_cb);
-
-       evas_object_event_callback_del(win->layout_main,
-                                      EVAS_CALLBACK_MOUSE_MOVE,
-                                      _indicator_mouse_move_cb);
-
-       evas_object_event_callback_del(win->layout_main,
-                                      EVAS_CALLBACK_MOUSE_UP,
-                                      _indicator_mouse_up_cb);
-
-}
-
-static int unregister_event_handler(void *data)
-{
-       struct appdata *ad = (struct appdata *)data;
-       int i = 0;
-
-       retif(data == NULL, FAIL, "Invalid parameter!");
-
-       for(i=0;i<INDICATOR_WIN_MAX;i++)
-       {
-               _unregister_event_handler_both(&(ad->win[i]));
-       }
-
-       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);
-
-       vconf_ignore_key_changed(VCONFKEY_SYSMAN_POWER_OFF_STATUS,
-                               _indicator_power_off_status_cb);
-
-       Ecore_Event_Handler *hdl = NULL;
-       EINA_LIST_FREE(ad->evt_handlers, hdl) {
-               if (hdl)
-                       ecore_event_handler_del(hdl);
-       }
-
-       minicontrol_monitor_stop();
-
-       return OK;
-}
-
-static Evas_Object *load_edj(Evas_Object * parent, const char *file,
-                            const char *group)
-{
-       Evas_Object *eo;
-       int r;
-
-       eo = elm_layout_add(parent);
-       if (eo) {
-               r = elm_layout_file_set(eo, file, group);
-               if (!r) {
-                       evas_object_del(eo);
-                       return NULL;
-               }
-
-               evas_object_size_hint_weight_set(eo,
-                                                EVAS_HINT_EXPAND,
-                                                EVAS_HINT_EXPAND);
-               elm_win_resize_object_add(parent, eo);
-       }
-
-       return eo;
-}
-
-static void create_win(void* data,int type)
-{
-       char *indi_name = NULL;
-
-       struct appdata *ad = data;
-       Ecore_X_Window xwin;
-       Ecore_X_Window zone;
-       Ecore_X_Window_State states[2];
-       int root_w;
-       int root_h;
-       Ecore_X_Window root;
-
-       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";
-               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, , "elm_win_add failed!");
-
-       if (!elm_win_socket_listen(ad->win[type].win_main , indi_name, 0, EINA_FALSE))
-       {
-               printf("fail to elm_win_socket_listen():port \n");
-               evas_object_del(ad->win[type].win_main);
-               return;
-       }
-       elm_win_alpha_set(ad->win[type].win_main , EINA_TRUE);
-
-       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,
-                                      EVAS_HINT_EXPAND);
-       evas_object_size_hint_align_set(ad->win[type].win_main , 1.0, 0.5);
-
-       xwin = elm_win_xwindow_get(ad->win[type].win_main );
-       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);
-
-       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 );
-
-       switch(type)
-       {
-       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);
-       INFO("win_size = %d, %d", ad->win[type].w, ad->win[type].h);
-
-       ad->win[type].type = type;
-
-#ifdef HOME_KEY_EMULATION
-       int ret = 0;
-       ad->win[type].atom_hwkey = ecore_x_atom_get(PROP_HWKEY_EMULATION);
-       ret = ecore_x_window_prop_window_get(root, ad->win[type].atom_hwkey,
-                                       &ad->win[type].win_hwkey, 1);
-       if (ret <= 0)
-               ERR("Failed to get window property ! (ret=%d)", ret);
-#endif
-
-       indicator_util_layout_add(&(ad->win[type]));
-
-       ad->win[type].data = data;
-
-       evas_object_show(ad->win[type].layout_main);
-       evas_object_show(ad->win[type].win_main);
-       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, , "Invalid parameter!");
-
-       for(i=0;i<INDICATOR_WIN_MAX;i++)
-       {
-               memset(&(ad->win[i]),0x00,sizeof(win_info));
-       }
-
-       ad->win_overlay = NULL;
-}
-
-static int indicator_window_new(void *data)
-{
-       int i = 0;
-       struct appdata *ad = data;
-
-       retif(data == NULL, FAIL, "Invalid parameter!");
-
-       _indicator_init_wininfo(data);
-
-       for(i=0;i<INDICATOR_WIN_MAX;i++)
-       {
-               create_win(data,i);
-               indicator_util_show_hide_icons(&(ad->win[i]),0,0);
-       }
-
-       create_overlay_win(data);
-       register_event_handler(ad);
-
-       return OK;
-}
-
-static int indicator_window_del(void *data)
-{
-       int i = 0;
-       struct appdata *ad = (struct appdata *)data;
-
-       retif(data == NULL, FAIL, "Invalid parameter!");
-
-       indicator_fini_modules(data);
-       unregister_event_handler(ad);
-
-       for(i=0;i<INDICATOR_WIN_MAX;i++)
-       {
-               indicator_util_layout_del(&(ad->win[i]));
-               evas_image_cache_flush(ad->win[i].evas);
-               evas_object_del(ad->win[i].layout_main);
-               ad->win[i].layout_main = NULL;
-               evas_object_del(ad->win[i].win_main);
-               ad->win[i].win_main = NULL;
-       }
-
-       evas_object_del(ad->win_overlay);
-       ad->win_overlay = NULL;
-
-       if (ad)
-               free(ad);
-
-       elm_exit();
-       return OK;
-}
-
-static inline int _indicator_home_icon_action(void *data, int press)
-{
-       return OK;
-}
-
-#ifdef HOME_KEY_EMULATION
-static Eina_Bool _indicator_hw_home_key_press(void *data)
-{
-       win_info *win = NULL;
-       char message[20] = {'\0', };
-
-       retif(!data, EINA_FALSE, "data is NULL");
-
-       win = (win_info *)data;
-
-       retif(!win->win_hwkey, EINA_FALSE, "window for hw emulation is NULL");
-
-       snprintf(message, sizeof(message), "%s%s",
-                       KEY_MSG_PREFIX_PRESS, KEY_HOME);
-
-       return ecore_x_client_message8_send(win->win_hwkey, win->atom_hwkey,
-               message, strlen(message));
-}
-
-static Eina_Bool _indicator_hw_home_key_release(void *data)
-{
-       char message[20] = {'\0', };
-       win_info *win = (win_info*)data;
-
-       retif(!data, EINA_FALSE, "data is NULL");
-
-       retif(!win->win_hwkey, EINA_FALSE, "window for hw emulation is NULL");
-
-
-       snprintf(message, sizeof(message), "%s%s",
-                       KEY_MSG_PREFIX_RELEASE, KEY_HOME);
-
-       return ecore_x_client_message8_send(win->win_hwkey, win->atom_hwkey,
-               message, strlen(message));
-}
-static Eina_Bool _indicator_hw_home_key_press_cancel(void *data)
-{
-       win_info *win = (win_info*)data;
-       char message[20] = {'\0', };
-
-       retif(!data, EINA_FALSE, "data is NULL");
-
-       retif(!win->win_hwkey, EINA_FALSE, "window for hw emulation is NULL");
-
-       snprintf(message, sizeof(message), "%s%s",
-                       KEY_MSG_PREFIX_PRESS_C, KEY_HOME);
-
-       return ecore_x_client_message8_send(win->win_hwkey, win->atom_hwkey,
-               message, strlen(message));
-}
-
-static Eina_Bool _indicator_hw_home_key_release_cancel(void *data)
-{
-       win_info *win = (win_info*)data;
-       char message[20] = {'\0', };
-
-       retif(!data, EINA_FALSE, "data is NULL");
-
-       retif(!win->win_hwkey, EINA_FALSE, "window for hw emulation is NULL");
-
-
-       snprintf(message, sizeof(message), "%s%s",
-                       KEY_MSG_PREFIX_RELEASE_C, KEY_HOME);
-
-       return ecore_x_client_message8_send(win->win_hwkey, win->atom_hwkey,
-               message, strlen(message));
-}
-
-#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);
-       indicator_send_evas_ecore_message(data,1,2);
-
-}
-
-static void _indicator_mouse_down_cb(void *data, Evas * e, Evas_Object * obj,
-                                    void *event)
-{
-       win_info *win = (win_info*)data;
-       Evas_Event_Mouse_Down *ev = NULL;
-
-       retif(data == NULL || event == NULL, , "Invalid parameter!");
-       ev = event;
-
-       win->mouse_event.x = ev->canvas.x;
-       win->mouse_event.y = ev->canvas.y;
-
-       DBG("_indicator_mouse_down_cb : %d %d", ev->canvas.x, ev->canvas.y);
-
-#ifdef HOME_KEY_EMULATION
-       if(indicator_util_check_indicator_area(win, ev->canvas.x, ev->canvas.y))
-       {
-               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
-       int mouse_down_prio = -1;
-       mouse_down_prio =
-               indicator_util_get_priority_in_move_area(win, win->mouse_event.x,
-                                                       win->mouse_event.y);
-
-       if (mouse_down_prio > -1) {
-               switch (mouse_down_prio) {
-               case INDICATOR_PRIORITY_FIXED1:
-               {
-                       int lock_state = VCONFKEY_IDLE_UNLOCK;
-                       int lock_ret = -1;
-
-                       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_UNLOCK) {
-                               if (!_indicator_home_icon_action(win, 1))
-                                       home_button_pressed = EINA_TRUE;
-                       }
-               }
-               break;
-               }
-       }
-#endif
-}
-
-static void _indicator_mouse_move_cb(void *data, Evas * e, Evas_Object * obj,
-                                    void *event)
-{
-       Evas_Event_Mouse_Move *ev = NULL;
-       win_info* win = (win_info*)data;
-
-       retif(data == NULL || event == NULL, , "Invalid parameter!");
-
-       ev = event;
-
-       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);
-                                       indicator_send_evas_ecore_message(win,0,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;
-                               }
-                       }
-               }
-       }
-}
-
-static void _indicator_mouse_up_cb(void *data, Evas * e, Evas_Object * obj,
-                                  void *event)
-{
-
-       Evas_Event_Mouse_Up *ev = NULL;
-       win_info *win = (win_info *)data;
-
-       retif(data == NULL || event == NULL, , "Invalid parameter!");
-
-       ev = event;
-
-       DBG("_indicator_mouse_up_cb : %d %d", ev->canvas.x, ev->canvas.y);
-
-#ifdef HOME_KEY_EMULATION
-       if(indicator_util_check_indicator_area(win, ev->canvas.x, ev->canvas.y))
-       {
-
-               if(win->type == INDICATOR_WIN_PORT)
-               {
-                       if(show_hide_pressed[win->type] == EINA_TRUE)
-                       {
-                               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);
-                               }
-
-                               vconf_set_int(VCONFKEY_BATTERY_DISP_STATE,win->type);
-                               feedback_play_type(FEEDBACK_TYPE_SOUND, FEEDBACK_PATTERN_TAP);
-                       }
-               }
-
-       }
-
-       home_button_pressed = EINA_FALSE;
-       show_hide_pressed[win->type] = EINA_FALSE;
-#else
-       int mouse_up_prio = -1;
-       int mouse_down_prio = -1;
-
-       if (home_button_pressed == EINA_TRUE) {
-               _indicator_home_icon_action(data, 0);
-               home_button_pressed = EINA_FALSE;
-       }
-
-       mouse_down_prio =
-               indicator_util_get_priority_in_move_area(win,win->mouse_event.x,
-                                                       win->mouse_event.y);
-       mouse_up_prio = indicator_util_get_priority_in_move_area(win,ev->canvas.x,
-                                                       ev->canvas.y);
-
-       if (mouse_down_prio > -1 && mouse_up_prio > -1
-               && mouse_down_prio == mouse_up_prio) {
-               switch (mouse_down_prio) {
-               case INDICATOR_PRIORITY_FIXED1:
-               {
-                       int lock_state = VCONFKEY_IDLE_UNLOCK;
-                       int lock_ret = -1;
-
-                       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)
-                               break;
-
-                       char *package = NULL;
-                       char *top_win_name = NULL;
-
-                       INFO("[Home Button Released]");
-
-                       if (check_system_status() == FAIL)
-                               break;
-
-                       package = vconf_get_str("db/menuscreen/pkgname");
-                       if (package) {
-                               service_h service;
-                               int ret = SERVICE_ERROR_NONE;
-
-                               service_create(&service);
-
-                               service_set_operation(service, SERVICE_OPERATION_DEFAULT);
-
-                               service_set_package(service, package);
-
-                               top_win_name = _get_top_window_name(data);
-
-                               if (top_win_name != NULL
-                                       && !strncmp(top_win_name, package,
-                                       strlen(package)))
-                               {
-
-                                       DBG("service_send_launch_request : %s",
-                                               top_win_name);
-
-                                       ret = service_send_launch_request(service, NULL, NULL);
-
-                                       if(ret != SERVICE_ERROR_NONE)
-                                       {
-                                               ERR("Cannot launch app");
-                                       }
-
-                               }
-                               else
-                               {
-                                       DBG("app_manager_resume_app : %s",
-                                               top_win_name);
-
-                                       ret = app_manager_resume_app(service);
-                                       if(ret != APP_MANAGER_ERROR_NONE)
-                                       {
-                                               ERR("Cannot resume app");
-                                       }
-                               }
-
-                               if (top_win_name)
-                                       free(top_win_name);
-
-                               free(package);
-
-                               service_destroy(service);
-
-                       } else
-                               ERR("Cannot get vconf");
-               }
-               break;
-               }
-       }
-#endif
-       win->mouse_event.x = 0;
-       win->mouse_event.y = 0;
-}
-
-static int register_indicator_modules(void *data)
-{
-       indicator_init_modules(data);
-       return OK;
-}
-
-static void _signal_handler(int signum, siginfo_t *info, void *unused)
-{
-    DBG("_signal_handler : Terminated...");
-    app_efl_exit();
-}
-
-static bool app_create(void *data)
-{
-       pid_t pid;
-       int ret;
-
-       struct sigaction act;
-       memset(&act,0x00,sizeof(struct sigaction));
-       act.sa_sigaction = _signal_handler;
-       act.sa_flags = SA_SIGINFO;
-
-       ret = sigemptyset(&act.sa_mask);
-       if (ret < 0) {
-               ERR("Failed to sigemptyset[%s]", strerror(errno));
-       }
-       ret = sigaddset(&act.sa_mask, SIGTERM);
-       if (ret < 0) {
-               ERR("Failed to sigaddset[%s]", strerror(errno));
-       }
-       ret = sigaction(SIGTERM, &act, NULL);
-       if (ret < 0) {
-               ERR("Failed to sigaction[%s]", strerror(errno));
-       }
-
-       pid = setsid();
-       if (pid < 0)
-               fprintf(stderr, "[INDICATOR] Failed to set session id!");
-
-       ret = nice(2);
-       if (ret == -1)
-               ERR("Failed to set nice value!");
-       return true;
-}
-
-static void app_terminate(void *data)
-{
-       int i = 0;
-       struct appdata *ad = data;
-       indicator_fini_modules(data);
-       unregister_event_handler(ad);
-
-       feedback_deinitialize();
-
-       for(i=0;i<INDICATOR_WIN_MAX;i++)
-       {
-               indicator_util_layout_del(&(ad->win[i]));
-               evas_image_cache_flush(ad->win[i].evas);
-               evas_object_del(ad->win[i].layout_main);
-               evas_object_del(ad->win[i].win_main);
-       }
-
-       INFO(" >>>>>>>>>>>>> INDICATOR IS TERMINATED!! <<<<<<<<<<<<<< ");
-
-}
-
-static void app_pause(void *data)
-{
-
-}
-
-static void app_resume(void *data)
-{
-
-}
-
-static void app_service(service_h service, void *data)
-{
-       struct appdata *ad = data;
-       int ret;
-       int i = 0;
-
-       INFO("[INDICATOR IS STARTED]");
-       ret = indicator_window_new(data);
-       retif(ret != OK, , "Failed to create a new window!");
-
-       _change_view(ecore_x_window_root_first_get(), data);
-
-       _indicator_check_battery_percent_on_cb(NULL, data);
-       register_indicator_modules(data);
-
-       feedback_initialize();
-
-       for(i=0;i<INDICATOR_WIN_MAX;i++)
-       {
-               if (ad->win[i].win_main)
-                       elm_win_activate(ad->win[i].win_main);
-       }
-
-}
-
-int main(int argc, char *argv[])
-{
-
-       struct appdata ad;
-
-       app_event_callback_s event_callback;
-
-       int ret = 0;
-
-       DBG("Start indicator");
-
-       ret = control_privilege();
-       if (ret != 0) {
-               ERR("[INDICATOR] Failed to control privilege!");
-       }
-
-       event_callback.create = app_create;
-       event_callback.terminate = app_terminate;
-       event_callback.pause = app_pause;
-       event_callback.resume = app_resume;
-       event_callback.service = app_service;
-       event_callback.low_memory = NULL;
-       event_callback.low_battery = _indicator_low_bat_cb;
-       event_callback.device_orientation = NULL;
-       event_callback.language_changed = _indicator_lang_changed_cb;
-       event_callback.region_format_changed = _indicator_region_changed_cb;
-
-       memset(&ad, 0x0, sizeof(struct appdata));
-
-       return app_efl_main(&argc, &argv, &event_callback, &ad);
-
-}
diff --git a/daemon/indicator_ui.h b/daemon/indicator_ui.h
deleted file mode 100755 (executable)
index 5518a82..0000000
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * Copyright 2012  Samsung Electronics Co., Ltd
- *
- * Licensed under the Flora License, Version 1.1 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://floralicense.org/license/
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-#ifndef __DEF_indicator_H_
-#define __DEF_indicator_H_
-
-#include <Elementary.h>
-#include <Ecore_X.h>
-#include "indicator.h"
-
-#if !defined(PACKAGE)
-#  define PACKAGE "indicator"
-#endif
-
-#if !defined(LOCALEDIR)
-#  define LOCALEDIR "/usr/apps/com.samsung.indicator/res/locale"
-#endif
-
-#if !defined(EDJDIR)
-#  define EDJDIR "/usr/apps/com.samsung.indicator/res/edje"
-#endif
-
-#if !defined(ICONDIR)
-#  define ICONDIR "/usr/apps/com.samsung.indicator/res/icons"
-#endif
-
-#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"
-
-#define _S(str)        dgettext("sys_string", str)
-#define _(str) gettext(str)
-
-#define HOME_SCREEN_NAME               "com.samsung.live-magazine"
-#define MENU_SCREEN_NAME               "com.samsung.menu-screen"
-#define LOCK_SCREEN_NAME               "com.samsung.idle-lock"
-#define QUICKPANEL_NAME                        "E Popup"
-#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,
-       TOP_WIN_CALL,
-       TOP_WIN_MENU_SCREEN,
-       TOP_WIN_HOME_SCREEN,
-       TOP_WIN_QUICKPANEL
-};
-
-enum indicator_opacity_mode{
-       INDICATOR_OPACITY_OPAQUE = 0,
-       INDICATOR_OPACITY_TRANSLUCENT,
-       INDICATOR_OPACITY_TRANSPARENT,
-};
-
-struct appdata {
-
-       win_info win[INDICATOR_WIN_MAX];
-       Evas_Object* win_overlay;
-
-       double xscale;
-       double yscale;
-       double scale;
-       int angle;
-
-       Eina_Bool lock;
-       Eina_Bool menu;
-       Eina_Bool quickpanel;
-
-       Eina_List *evt_handlers;
-
-       enum indicator_opacity_mode opacity_mode;
-
-       enum _win_type top_win;
-
-       void (*update_display) (int);
-};
-
-#endif
diff --git a/daemon/indicator_util.c b/daemon/indicator_util.c
deleted file mode 100755 (executable)
index 322630f..0000000
+++ /dev/null
@@ -1,148 +0,0 @@
-/*
- * Copyright 2012  Samsung Electronics Co., Ltd
- *
- * Licensed under the Flora License, Version 1.1 (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 <Ecore.h>
-#include <Ecore_X.h>
-#include "common.h"
-#include "indicator.h"
-#include "indicator_ui.h"
-#include "indicator_gui.h"
-#include "indicator_util.h"
-#include "indicator_icon_util.h"
-#include "indicator_box_util.h"
-#include <vconf.h>
-
-#define DEFAULT_DIR    ICONDIR
-#define DIR_PREFIX     "Theme_%02d_"
-#define LABEL_STRING   "<color=#%02x%02x%02x%02x>%s</color>"
-
-static char *_icondir;
-
-char *set_label_text_color(const char *txt)
-{
-       Eina_Strbuf *temp_buf = NULL;
-       Eina_Bool buf_result = EINA_FALSE;
-       char *ret_str = NULL;
-
-       retif(txt == NULL, NULL, "Invalid parameter!");
-
-       temp_buf = eina_strbuf_new();
-       buf_result = eina_strbuf_append_printf(temp_buf,
-                               LABEL_STRING, FONT_COLOR, txt);
-
-       if (buf_result == EINA_FALSE)
-               INFO("Failed to make label string!");
-       else
-               ret_str = eina_strbuf_string_steal(temp_buf);
-
-       eina_strbuf_free(temp_buf);
-       return ret_str;
-}
-
-const char *get_icon_dir(void)
-{
-       if (_icondir == NULL)
-               _icondir = DEFAULT_DIR;
-
-       return (const char *)_icondir;
-}
-
-static int _set_icon_dir(char *newdir)
-{
-       char *new_icon_dir = NULL;
-
-       char dirname[PATH_MAX];
-       int r;
-
-       retif(!newdir, FAIL, "Invalid parameter!");
-       memset(dirname, 0x00, sizeof(dirname));
-       r = snprintf(dirname, sizeof(dirname), ICONDIR "/%s", newdir);
-       if (r < 0) {
-               ERR("Failed to set new dir name!");
-               return FAIL;
-       }
-
-       new_icon_dir = strdup(dirname);
-       _icondir = new_icon_dir;
-
-       return 0;
-}
-
-void indicator_signal_emit(void* data, const char *emission, const char *source)
-{
-       struct appdata *ad = (struct appdata *)data;
-       retif(data == NULL, , "Invalid parameter!");
-       Evas_Object *edje;
-       int i = 0;
-
-       for(i=0;i<INDICATOR_WIN_MAX;i++)
-       {
-               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);
-       }
-}
-
-void indicator_part_text_emit(void* data, const char *part, const char *text)
-{
-       struct appdata *ad = (struct appdata *)data;
-       retif(data == NULL, , "Invalid parameter!");
-       Evas_Object *edje;
-       int i = 0;
-
-       for(i=0;i<INDICATOR_WIN_MAX;i++)
-       {
-               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);
-}
-
-void indicator_send_evas_ecore_message(void* data, int bRepeat, int bType)
-{
-       Ecore_Evas *ee_port;
-       win_info* win = (win_info*)data;
-       retif(data == NULL, , "Invalid parameter!");
-
-       DBG("win(%d),bRepeat(%d),bType(%d)",win->type, bRepeat, bType);
-       ee_port = ecore_evas_ecore_evas_get(evas_object_evas_get(win->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, &bType, sizeof(int));
-
-}
diff --git a/daemon/indicator_util.h b/daemon/indicator_util.h
deleted file mode 100755 (executable)
index e56402c..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Copyright 2012  Samsung Electronics Co., Ltd
- *
- * Licensed under the Flora License, Version 1.1 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://floralicense.org/license/
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef __INDICATOR_UTIL_H__
-#define __INDICATOR_UTIL_H__
-
-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);
-void indicator_send_evas_ecore_message(void* data, int bRepeat, int bType);
-
-#endif
diff --git a/daemon/list.c b/daemon/list.c
new file mode 100644 (file)
index 0000000..d7d0af9
--- /dev/null
@@ -0,0 +1,359 @@
+/*
+ *  Indicator
+ *
+ * Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * 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.h"
+#include "log.h"
+#include "util.h"
+#include "list.h"
+#include "icon.h"
+
+static Eina_List *fixed_icon_list = NULL;
+static Eina_List *system_icon_list = NULL;
+static Eina_List *noti_icon_list = NULL;
+static Eina_List *alarm_icon_list = NULL;
+
+
+
+extern void icon_free(icon_s *icon)
+{
+       if (icon) {
+               if (icon->obj_exist == EINA_TRUE) {
+                       if (icon_del(icon) == EINA_TRUE) {
+                               icon->obj_exist = EINA_FALSE;
+                               icon->img_obj.obj = NULL;
+                       }
+               }
+       }
+}
+
+
+
+static void _list_free(Eina_List *list)
+{
+       Eina_List *l;
+       Eina_List *l_next;
+       icon_s *data;
+
+       ret_if(!list);
+
+       EINA_LIST_FOREACH_SAFE(list, l, l_next, data) {
+               icon_free(data);
+               list = eina_list_remove_list(list, l);
+       }
+       eina_list_free(list);
+       list = NULL;
+
+       return;
+}
+
+
+
+extern int list_free_all(void)
+{
+       _list_free(fixed_icon_list);
+       _list_free(system_icon_list);
+       _list_free(noti_icon_list);
+       _list_free(alarm_icon_list);
+
+       return TRUE;
+}
+
+
+
+static Eina_List *_insert_icon_to_list(Eina_List *list, icon_s *icon)
+{
+       Eina_List *l;
+       icon_s *data;
+
+       retv_if(!list, NULL);
+       retv_if(!icon, NULL);
+
+       /* Insert icon to list */
+       EINA_LIST_REVERSE_FOREACH(list, l, data) {
+               if (data->priority == icon->priority
+                       && data->always_top == EINA_TRUE)
+                       continue;
+
+               if (data->priority <= icon->priority) {
+                       list = eina_list_append_relative_list(list, icon, l);
+                       return list;
+               }
+       }
+
+       /* If finding condition is failed, append it at tail */
+       list = eina_list_prepend(list, icon);
+       return list;
+}
+
+
+
+extern void list_update(icon_s *icon)
+{
+       ret_if(!icon);
+
+       switch (icon->area) {
+       case INDICATOR_ICON_AREA_FIXED:
+               fixed_icon_list = eina_list_remove(fixed_icon_list, icon);
+               fixed_icon_list = _insert_icon_to_list(fixed_icon_list, icon);
+               break;
+       case INDICATOR_ICON_AREA_SYSTEM:
+               system_icon_list = eina_list_remove(system_icon_list, icon);
+               system_icon_list = _insert_icon_to_list(system_icon_list, icon);
+               break;
+       case INDICATOR_ICON_AREA_NOTI:
+               noti_icon_list = eina_list_remove(noti_icon_list, icon);
+               noti_icon_list = _insert_icon_to_list(noti_icon_list, icon);
+               break;
+       case INDICATOR_ICON_AREA_ALARM:
+               alarm_icon_list = eina_list_remove(alarm_icon_list, icon);
+               alarm_icon_list = _insert_icon_to_list(alarm_icon_list, icon);
+               break;
+       default:
+               break;
+       }
+
+       return;
+}
+
+
+
+static indicator_error_e _icon_exist_in_list(Eina_List *list, icon_s *icon)
+{
+       Eina_List *l;
+       icon_s *data;
+
+       /* Check name */
+       EINA_LIST_REVERSE_FOREACH(fixed_icon_list, l, data) {
+               if (data->name == icon->name) {
+                       _D("[%s] is already exist in the list", icon->name);
+                       return INDICATOR_ERROR_FAIL;
+               }
+       }
+       return INDICATOR_ERROR_NONE;
+}
+
+
+extern void list_insert_icon(icon_s *icon)
+{
+       ret_if(!icon);
+       ret_if(!icon->name);
+
+       switch (icon->area) {
+       case INDICATOR_ICON_AREA_FIXED:
+               if (INDICATOR_ERROR_NONE != _icon_exist_in_list(fixed_icon_list, icon)) return;
+
+               /* Set internal data */
+               icon->wish_to_show = EINA_FALSE;
+               fixed_icon_list = _insert_icon_to_list(fixed_icon_list, icon);
+               break;
+       case INDICATOR_ICON_AREA_SYSTEM:
+               if (INDICATOR_ERROR_NONE != _icon_exist_in_list(system_icon_list, icon)) return;
+
+               /* Set internal data */
+               icon->wish_to_show = EINA_FALSE;
+               system_icon_list = _insert_icon_to_list(system_icon_list, icon);
+               break;
+       case INDICATOR_ICON_AREA_NOTI:
+               if (INDICATOR_ERROR_NONE != _icon_exist_in_list(noti_icon_list, icon)) return;
+
+               /* Set internal data */
+               icon->wish_to_show = EINA_FALSE;
+               noti_icon_list = _insert_icon_to_list(noti_icon_list, icon);
+               break;
+       case INDICATOR_ICON_AREA_ALARM:
+               if (INDICATOR_ERROR_NONE != _icon_exist_in_list(alarm_icon_list, icon)) return;
+
+               /* Set internal data */
+               icon->wish_to_show = EINA_FALSE;
+               alarm_icon_list = eina_list_append(alarm_icon_list, icon);
+               break;
+       default:
+               break;
+       }
+
+       return;
+}
+
+
+extern void list_remove_icon(icon_s *icon)
+{
+       ret_if(!icon);
+
+       switch (icon->area) {
+       case INDICATOR_ICON_AREA_FIXED:
+               ret_if(!fixed_icon_list);
+               fixed_icon_list = eina_list_remove(fixed_icon_list, icon);
+               break;
+       case INDICATOR_ICON_AREA_SYSTEM:
+               ret_if(!system_icon_list);
+               system_icon_list = eina_list_remove(system_icon_list, icon);
+               break;
+       case INDICATOR_ICON_AREA_NOTI:
+               ret_if(!noti_icon_list);
+               noti_icon_list = eina_list_remove(noti_icon_list, icon);
+               break;
+       case INDICATOR_ICON_AREA_ALARM:
+               ret_if(!alarm_icon_list);
+               alarm_icon_list = eina_list_remove(alarm_icon_list, icon);
+               break;
+       default:
+               _E("default");
+               break;
+       }
+}
+
+
+extern icon_s *list_try_to_find_icon_to_show(int area, int priority)
+{
+       Eina_List *l;
+       icon_s *data = NULL;
+       icon_s *icon = NULL;
+
+       switch (area) {
+       case INDICATOR_ICON_AREA_FIXED:
+               EINA_LIST_REVERSE_FOREACH(fixed_icon_list, l, data) {
+                       if (data->priority == priority
+                               && data->wish_to_show == EINA_TRUE
+                               && data->exist_in_view == EINA_FALSE) {
+                               icon = data;
+                               break;
+                       }
+               }
+               break;
+       case INDICATOR_ICON_AREA_SYSTEM:
+               EINA_LIST_REVERSE_FOREACH(system_icon_list, l, data) {
+                       if (data->wish_to_show == EINA_TRUE
+                               && data->exist_in_view == EINA_FALSE) {
+                               icon = data;
+                               break;
+                       }
+               }
+               break;
+       case INDICATOR_ICON_AREA_NOTI:
+               EINA_LIST_REVERSE_FOREACH(noti_icon_list, l, data) {
+                       if (data->wish_to_show == EINA_TRUE
+                               && data->exist_in_view == EINA_FALSE) {
+                               icon = data;
+                               break;
+                       }
+               }
+               break;
+       case INDICATOR_ICON_AREA_ALARM:
+               EINA_LIST_REVERSE_FOREACH(alarm_icon_list, l, data) {
+                       if (data->wish_to_show == EINA_TRUE
+                               && data->exist_in_view == EINA_FALSE) {
+                               icon = data;
+                               break;
+                       }
+               }
+               break;
+       default:
+               _E("default");
+               break;
+       }
+
+       retv_if(!icon, NULL);
+
+       return icon;
+}
+
+
+
+extern icon_s *list_try_to_find_icon_to_remove(int area, int priority)
+{
+       Eina_List *l;
+       icon_s *data = NULL;
+       icon_s *icon = NULL;
+
+
+       switch (area) {
+       case INDICATOR_ICON_AREA_FIXED:
+               EINA_LIST_REVERSE_FOREACH(fixed_icon_list, l, data) {
+                       if (data->priority == priority
+                               && data->wish_to_show == EINA_TRUE) {
+                               icon = data;
+                               break;
+                       }
+               }
+               break;
+       case INDICATOR_ICON_AREA_SYSTEM:
+               /* Find lowest priority of icon */
+               EINA_LIST_FOREACH(system_icon_list, l, data) {
+                       if (data->wish_to_show == EINA_TRUE
+                               && data->always_top == EINA_FALSE
+                               && data->exist_in_view == EINA_TRUE) {
+                               icon = data;
+                               break;
+                       }
+               }
+               break;
+       case INDICATOR_ICON_AREA_NOTI:
+               /* Find lowest priority of icon */
+               EINA_LIST_REVERSE_FOREACH(noti_icon_list, l, data) {
+                       if (data->wish_to_show == EINA_TRUE
+                               && data->always_top == EINA_FALSE
+                               && data->exist_in_view == EINA_TRUE) {
+                               icon = data;
+                               break;
+                       }
+               }
+               break;
+       case INDICATOR_ICON_AREA_ALARM:
+               /* Find lowest priority of icon */
+               EINA_LIST_FOREACH(alarm_icon_list, l, data) {
+                       if (data->wish_to_show == EINA_TRUE
+                               && data->always_top == EINA_FALSE
+                               && data->exist_in_view == EINA_TRUE) {
+                               icon = data;
+                               break;
+                       }
+               }
+               break;
+       default:
+               _E("default");
+               break;
+       }
+
+       retv_if(!icon, NULL);
+
+       return icon;
+}
+
+
+
+extern unsigned int list_get_noti_count(void)
+{
+       Eina_List *l;
+       icon_s *data = NULL;
+       int cnt = 0;
+
+       EINA_LIST_FOREACH(noti_icon_list, l, data) {
+               if (data->wish_to_show == EINA_TRUE
+                       || data->exist_in_view == EINA_TRUE) {
+                       if (!strcmp(data->name, "more_notify")) continue; // Except more noti
+                       cnt++;
+               }
+       }
+
+       return cnt;
+}
+
+/* End of file */
diff --git a/daemon/list.h b/daemon/list.h
new file mode 100644 (file)
index 0000000..95f2e6c
--- /dev/null
@@ -0,0 +1,34 @@
+/*
+ *  Indicator
+ *
+ * Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+
+
+#ifndef __INDICATOR_ICON_LIST_H__
+#define __INDICATOR_ICON_LIST_H__
+
+extern void icon_free(icon_s *icon);
+extern int list_free_all(void);
+extern void list_update(icon_s *obj);
+extern void list_insert_icon(icon_s *obj);
+extern void list_remove_icon(icon_s *obj);
+extern icon_s *list_try_to_find_icon_to_show(int area, int priority);
+extern icon_s *list_try_to_find_icon_to_remove(int area, int priority);
+extern unsigned int list_get_noti_count(void);
+
+#endif /*__INDICATOR_ICON_LIST_H__*/
diff --git a/daemon/log.h b/daemon/log.h
new file mode 100755 (executable)
index 0000000..0745ded
--- /dev/null
@@ -0,0 +1,90 @@
+/*
+ * Samsung API
+ * Copyright (c) 2009-2015 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __SAMPLE_APP_LOG_H__
+#define __SAMPLE_APP_LOG_H__
+
+#include <unistd.h>
+#include <dlog.h>
+
+#undef LOG_TAG
+#define LOG_TAG "INDICATOR"
+
+#if !defined(_D)
+#define _D(fmt, arg...) LOGD(fmt"\n", ##arg)
+#endif
+
+#if !defined(_W)
+#define _W(fmt, arg...) LOGW(fmt"\n", ##arg)
+#endif
+
+#if !defined(_E)
+#define _E(fmt, arg...) LOGE(fmt"\n", ##arg)
+#endif
+
+#define retvm_if(expr, val, fmt, arg...) do { \
+       if(expr) { \
+               _E(fmt, ##arg); \
+               _E("(%s) -> %s() return", #expr, __FUNCTION__); \
+               return val; \
+       } \
+} while (0)
+
+#define retv_if(expr, val) do { \
+       if(expr) { \
+               _E("(%s) -> %s() return", #expr, __FUNCTION__); \
+               return (val); \
+       } \
+} while (0)
+
+#define retm_if(expr, fmt, arg...) do { \
+       if(expr) { \
+               _E(fmt, ##arg); \
+               _E("(%s) -> %s() return", #expr, __FUNCTION__); \
+               return; \
+       } \
+} while (0)
+
+#define ret_if(expr) do { \
+       if(expr) { \
+               _E("(%s) -> %s() return", #expr, __FUNCTION__); \
+               return; \
+       } \
+} while (0)
+
+#define goto_if(expr, val) do { \
+       if(expr) { \
+               _E("(%s) -> goto", #expr); \
+               goto val; \
+       } \
+} while (0)
+
+#define break_if(expr) { \
+       if(expr) { \
+               _E("(%s) -> break", #expr); \
+               break; \
+       } \
+}
+
+#define continue_if(expr) { \
+       if(expr) { \
+               _E("(%s) -> continue", #expr); \
+               continue; \
+       } \
+}
+
+#endif /* __SAMPLE_APP_LOG_H__ */
diff --git a/daemon/main.c b/daemon/main.c
new file mode 100644 (file)
index 0000000..3846d29
--- /dev/null
@@ -0,0 +1,1201 @@
+/*
+ *  Indicator
+ *
+ * Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * 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 <stdio.h>
+#include <app.h>
+//#include <Ecore_X.h>
+#include <vconf.h>
+#include <unistd.h>
+#include <privilege-control.h>
+#include <app_manager.h>
+#include <signal.h>
+#include <minicontrol-monitor.h>
+#include <feedback.h>
+#include <notification.h>
+//#include <notification_internal.h>
+#include <app_preference.h>
+#include <wifi.h>
+#if 0
+#include <app_manager_product.h>
+#endif
+
+#include "common.h"
+#include "box.h"
+#include "icon.h"
+#include "main.h"
+#include "indicator_gui.h"
+#include "modules.h"
+#include "util.h"
+#include "plmn.h"
+#include "message.h"
+#include "tts.h"
+#include "log.h"
+#include "indicator.h"
+#include "ticker.h"
+
+#define GRP_MAIN "indicator"
+#define WIN_TITLE "Illume Indicator"
+#define VCONF_PHONE_STATUS "memory/startapps/sequence"
+
+#define BUS_NAME       "org.tizen.system.deviced"
+#define PATH_NAME    "/Org/Tizen/System/DeviceD/Display"
+#define INTERFACE_NAME BUS_NAME".display"
+#define MEMBER_NAME    "LCDOn"
+
+#define MP_APP_ID "org.tizen.music-player-lite"
+#define FMRADIO_APP_ID "org.tizen.fm-radio-lite"
+#define VR_APP_ID "org.tizen.voicerecorder-lite"
+
+#define STR_ATOM_MV_INDICATOR_GEOMETRY          "_E_MOVE_INDICATOR_GEOMETRY"
+
+#define HIBERNATION_ENTER_NOTI "HIBERNATION_ENTER"
+#define HIBERNATION_LEAVE_NOTI "HIBERNATION_LEAVE"
+
+#define UNLOCK_ENABLED 0
+#define TIMEOUT                        5
+
+#ifdef HOME_KEY_EMULATION
+/* Predefine string */
+#define PROP_HWKEY_EMULATION "_HWKEY_EMULATION"
+#define KEY_MSG_PREFIX_PRESS "P:"
+#define KEY_MSG_PREFIX_RELEASE "R:"
+#define KEY_MSG_PREFIX_PRESS_C "PC"
+#define KEY_MSG_PREFIX_RELEASE_C "RC"
+
+#ifndef KEY_HOME
+#define KEY_HOME "XF86Phone"
+#endif /* KEY_HOME */
+#endif /* HOME_KEY_EMULATION */
+
+//static E_DBus_Connection *edbus_conn=NULL;
+//static E_DBus_Signal_Handler *edbus_handler=NULL;
+static Eina_Bool home_button_pressed = EINA_FALSE;
+static Eina_Bool show_hide_pressed = EINA_FALSE;
+Evas_Coord_Point indicator_press_coord = {0,0};
+Ecore_Timer *clock_timer;
+static Ecore_Timer *listen_timer = NULL;
+int is_transparent = 0;
+int current_angle = 0;
+int current_state = 0;
+static int bFirst_opacity = 1;
+
+static int _window_new(void *data);
+static int _window_del(void *data);
+static void _indicator_low_bat_cb(app_event_info_h event_info, void *data);
+static void _indicator_lang_changed_cb(app_event_info_h event_info, void *data);
+static void _indicator_region_changed_cb(app_event_info_h event_info, void *data);
+static void _indicator_window_delete_cb(void *data, Evas_Object * obj, void *event);
+//static Eina_Bool _indicator_client_message_cb(void *data, int type, void *event);
+static void _indicator_mouse_down_cb(void *data, Evas * e, Evas_Object * obj, void *event);
+static void _indicator_mouse_move_cb(void *data, Evas * e, Evas_Object * obj, void *event);
+static void _indicator_mouse_up_cb(void *data, Evas * e, Evas_Object * obj, void *event);
+
+
+static void _indicator_low_bat_cb(app_event_info_h event_info, void *data)
+{
+}
+
+static void _indicator_lang_changed_cb(app_event_info_h event_info, void *data)
+{
+       modules_lang_changed(data);
+}
+
+static void _indicator_region_changed_cb(app_event_info_h event_info, void *data)
+{
+       modules_region_changed(data);
+}
+
+static void _indicator_window_delete_cb(void *data, Evas_Object * obj, void *event)
+{
+       ret_if(!data);
+
+       _window_del((struct appdata *)data);
+}
+
+static void _indicator_notify_pm_state_cb(keynode_t * node, void *data)
+{
+       static int nMove = 0;
+       static int nIndex = 1;
+       int val = -1;
+
+       ret_if(!data);
+
+       if (vconf_get_int(VCONFKEY_PM_STATE, &val) < 0) return;
+
+       switch (val) {
+       case VCONFKEY_PM_STATE_LCDOFF:
+               if (clock_timer != NULL) {
+                       ecore_timer_del(clock_timer);
+                       clock_timer = NULL;
+               }
+       case VCONFKEY_PM_STATE_SLEEP: // lcd off 2
+               /* FIXME */
+               nMove = nMove+nIndex;
+               if(nMove>=4)
+                       nIndex = -1;
+               else if(nMove<=0)
+                       nIndex = 1;
+               {
+                       char temp[30] = {0,};
+                       sprintf(temp,"indicator.padding.resize.%d",nMove);
+                       util_signal_emit(data,temp,"indicator.prog");
+               }
+               icon_set_update_flag(0);
+               box_noti_ani_handle(0);
+               break;
+       case VCONFKEY_PM_STATE_NORMAL:
+               if (!icon_get_update_flag()) {
+                       icon_set_update_flag(1);
+                       box_noti_ani_handle(1);
+                       modules_wake_up(data);
+               }
+               break;
+       case VCONFKEY_PM_STATE_LCDDIM:
+       default:
+               break;
+       }
+}
+
+static void _indicator_power_off_status_cb(keynode_t * node, void *data)
+{
+       int val = -1;
+
+       ret_if(!data);
+
+       if (vconf_get_int(VCONFKEY_SYSMAN_POWER_OFF_STATUS, &val) < 0) return;
+
+       switch (val) {
+       case VCONFKEY_SYSMAN_POWER_OFF_DIRECT:
+       case VCONFKEY_SYSMAN_POWER_OFF_RESTART:
+               ui_app_exit();
+               break;
+       default:
+               break;
+       }
+
+}
+
+static void _indicator_lock_status_cb(keynode_t * node, void *data)
+{
+       static int lockstate = 0;
+       extern int clock_mode;
+       int val = -1;
+
+       ret_if(!data);
+
+       if (vconf_get_int(VCONFKEY_IDLE_LOCK_STATE, &val) < 0) return;
+       if (val == lockstate) return;
+
+       lockstate = val;
+
+       switch (val) {
+       case VCONFKEY_IDLE_UNLOCK:
+               if (!clock_mode) util_signal_emit(data,"clock.font.12","indicator.prog");
+               else util_signal_emit(data,"clock.font.24","indicator.prog");
+               break;
+       case VCONFKEY_IDLE_LOCK:
+       /*case VCONFKEY_IDLE_LAUNCHING_LOCK:
+               util_signal_emit(data,"clock.invisible","indicator.prog");
+               break;*/
+       default:
+               break;
+       }
+
+}
+
+static void _rotate_window(struct appdata *ad, int new_angle)
+{
+       ret_if(!ad);
+
+       _D("Indicator angle is %d degree", new_angle);
+
+       current_angle = new_angle;
+
+       switch (new_angle) {
+               case 0:
+               case 180:
+                       evas_object_resize(ad->win.win, ad->win.port_w, ad->win.h);
+                       break;
+               case 90:
+               case 270:
+                       evas_object_resize(ad->win.win, ad->win.land_w, ad->win.h);
+                       break;
+               default:
+                       break;
+       }
+}
+
+#ifdef INDICATOR_SUPPORT_OPACITY_MODE
+static void _change_opacity(void *data, enum indicator_opacity_mode mode)
+{
+       struct appdata *ad = NULL;
+       const char *signal = NULL;
+       retif(data == NULL, , "Invalid parameter!");
+
+       ad = data;
+
+       if (bFirst_opacity==1) bFirst_opacity = 0;
+
+       switch (mode) {
+       case INDICATOR_OPACITY_OPAQUE:
+               signal = "bg.opaque";
+               ad->opacity_mode = mode;
+               break;
+       case INDICATOR_OPACITY_TRANSLUCENT:
+               signal = "bg.translucent";
+               ad->opacity_mode = mode;
+               break;
+       case INDICATOR_OPACITY_TRANSPARENT:
+               signal = "bg.transparent";
+               ad->opacity_mode = mode;
+               break;
+       default:
+               _E("unknown mode : %d", mode);
+               signal = "bg.opaque";
+               ad->opacity_mode = INDICATOR_OPACITY_OPAQUE;
+               break;
+
+       }
+       util_signal_emit_by_win(&(ad->win),signal, "indicator.prog");
+}
+#if 0
+static void _indicator_quickpanel_changed(void *data, int is_open)
+{
+       int val = 0;
+
+       ret_if(!data);
+
+       if (vconf_get_int(VCONFKEY_IDLE_LOCK_STATE, &val) < 0) return;
+       if (val == VCONFKEY_IDLE_LOCK) return;
+}
+#endif
+#endif /* INDICATOR_SUPPORT_OPACITY_MODE */
+
+#if 0
+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;
+       struct appdata *ad = NULL;
+       ad = data;
+
+       retv_if(data == NULL || event == NULL, ECORE_CALLBACK_RENEW);
+       if (ev->message_type == ECORE_X_ATOM_E_ILLUME_QUICKPANEL_STATE) {
+               if (ev->data.l[0] == ECORE_X_ATOM_E_ILLUME_QUICKPANEL_ON) {
+                       _indicator_quickpanel_changed(data, 1);
+               } else if (ev->data.l[0] == ECORE_X_ATOM_E_ILLUME_QUICKPANEL_OFF) {
+                       _indicator_quickpanel_changed(data, 0);
+               }
+       }
+
+       if (ev->message_type == ECORE_X_ATOM_E_ILLUME_ROTATE_WINDOW_ANGLE) {
+               int new_angle = 0;
+               if(ev->win != ad->active_indi_win) {
+                       return ECORE_CALLBACK_RENEW;
+               }
+               new_angle = ev->data.l[0];
+               _rotate_window(ad, new_angle);
+       }
+       return EINA_TRUE;
+}
+#endif
+
+static Eina_Bool _active_indicator_handle(void* data,int type)
+{
+       int trans_mode = 0;
+       int angle = 0;
+//     Ecore_X_Illume_Indicator_Opacity_Mode illume_opacity = 0;
+
+       retv_if(!data, EINA_FALSE);
+
+       struct appdata *ad = (struct appdata *)data;
+       switch (type) {
+       /* Opacity */
+       case 1:
+#if 0
+               illume_opacity = ecore_x_e_illume_indicator_opacity_get(ad->active_indi_win);
+
+               switch(illume_opacity) {
+               case ECORE_X_ILLUME_INDICATOR_OPAQUE:
+                       trans_mode = INDICATOR_OPACITY_OPAQUE;
+                       break;
+               case ECORE_X_ILLUME_INDICATOR_TRANSLUCENT:
+                       trans_mode = INDICATOR_OPACITY_TRANSLUCENT;
+                       break;
+               case ECORE_X_ILLUME_INDICATOR_TRANSPARENT:
+                       trans_mode = INDICATOR_OPACITY_TRANSPARENT;
+                       break;
+               default:
+                       trans_mode = INDICATOR_OPACITY_OPAQUE;
+                       break;
+               }
+#endif
+               _change_opacity(ad, trans_mode);
+               break;
+       /* Rotate */
+       case 2:
+               util_win_prop_angle_get(ad->active_indi_win, &angle);
+               _rotate_window(ad, angle);
+               break;
+       default :
+               break;
+       }
+
+       return EINA_TRUE;
+}
+
+static Eina_Bool _property_changed_cb(void *data, int type, void *event)
+{
+#if 0
+//     Ecore_X_Event_Window_Property *ev = event;
+       struct appdata *ad = NULL;
+
+       ad = data;
+       retv_if(!data, EINA_FALSE);
+//     retv_if(!ev, EINA_FALSE);
+       if (ev->atom == ECORE_X_ATOM_E_ILLUME_ROTATE_WINDOW_ANGLE) {
+               if (ev->win == ad->active_indi_win) {
+                       _active_indicator_handle(data, 2);
+               }
+       } else if (ev->atom == ECORE_X_ATOM_E_ILLUME_INDICATOR_OPACITY_MODE) {
+               if (ev->win == ad->active_indi_win) {
+                       _active_indicator_handle(data, 1);
+               }
+       } else if (ev->atom == ad->atom_active) {
+               int ret = 0;
+
+               Ecore_X_Window active_win;
+
+               ret = ecore_x_window_prop_window_get(elm_win_xwindow_get(ad->win_overlay), ad->atom_active, &(active_win), 1);
+               if (ret == -1) return EINA_FALSE;
+
+               if (active_win != ad->active_indi_win) {
+                       if (ad->active_indi_win != -1) {
+                               ecore_x_window_unsniff(ad->active_indi_win);
+                               _D("UNSNIFF API %x", ad->active_indi_win);
+                       }
+                       ad->active_indi_win = active_win;
+
+                       ecore_x_window_sniff(ad->active_indi_win);
+                       if (indicator_message_retry_check()) {
+                               indicator_message_display_trigger();
+                       }
+               }
+
+               _active_indicator_handle(data, 1);
+               _active_indicator_handle(data, 2);
+       }
+#endif
+       return EINA_TRUE;
+}
+
+#if 0
+static void _mctrl_monitor_cb(minicontrol_action_e action, const char *name, unsigned int width, unsigned int height, minicontrol_priority_e priority, void *data)
+{
+       ret_if(!data);
+       ret_if(!name);
+
+       modules_minictrl_control(action,name,data);
+}
+#endif
+
+static void _indicator_ecore_evas_msg_parent_handle(Ecore_Evas *ee, int msg_domain, int msg_id, void *data, int size)
+{
+       ret_if(!data);
+
+#ifdef _SUPPORT_SCREEN_READER
+       if (msg_domain == MSG_DOMAIN_CONTROL_ACCESS) {
+               struct appdata *ad = (struct appdata *)ecore_evas_data_get(ee,"indicator_app_data");
+
+               ret_if(!ad);
+
+               Elm_Access_Action_Info *action_info;
+               Evas_Object* win = NULL;
+               action_info = data;
+
+               win = ad->win.win;
+
+               if (msg_id == ELM_ACCESS_ACTION_ACTIVATE) {
+                       elm_access_action(win, action_info->action_type,action_info);
+               } else if (msg_id == ELM_ACCESS_ACTION_HIGHLIGHT_NEXT) {
+                       action_info->highlight_cycle = EINA_TRUE;
+                       elm_access_action(win,action_info->action_type,action_info);
+               } else if (msg_id == ELM_ACCESS_ACTION_HIGHLIGHT_PREV) {
+                       action_info->highlight_cycle = EINA_TRUE;
+                       elm_access_action(win,action_info->action_type,action_info);
+               } else if (msg_id == ELM_ACCESS_ACTION_UNHIGHLIGHT) {
+                       elm_access_action(win,action_info->action_type,action_info);
+               } else if (msg_id == ELM_ACCESS_ACTION_READ) {
+                       elm_access_action(win,action_info->action_type,action_info);
+               }
+       }
+#endif /* _SUPPORT_SCREEN_READER */
+}
+
+#if 0
+static void on_changed_receive(void *data, DBusMessage *msg)
+{
+       int r;
+
+       r = dbus_message_is_signal(msg, INTERFACE_NAME, MEMBER_NAME);
+       ret_if(!r);
+
+       _D("LCD On handling");
+
+       if (!icon_get_update_flag()) {
+               icon_set_update_flag(1);
+               box_noti_ani_handle(1);
+               modules_wake_up(data);
+       }
+}
+
+static void edbus_cleaner(void)
+{
+       if (!edbus_conn) {
+               _D("already unregistered");
+               return;
+       }
+
+       if (edbus_handler) {
+               e_dbus_signal_handler_del(edbus_conn, edbus_handler);
+               edbus_handler = NULL;
+       }
+
+       if (edbus_conn) {
+               e_dbus_connection_close(edbus_conn);
+               edbus_conn = NULL;
+       }
+
+       e_dbus_shutdown();
+}
+
+static int edbus_listener(void* data)
+{
+       if (edbus_conn != NULL) {
+               _D("alreay exist");
+               return -1;
+       }
+
+       e_dbus_init();
+
+       edbus_conn = e_dbus_bus_get(DBUS_BUS_SYSTEM);
+       if (!edbus_conn) {
+               _E("e_dbus_bus_get error");
+               return -1;
+       }
+
+       edbus_handler = e_dbus_signal_handler_add(edbus_conn, NULL, PATH_NAME, INTERFACE_NAME, MEMBER_NAME, on_changed_receive, data);
+       if (!edbus_handler) {
+               _E("e_dbus_signal_handler_add error");
+               return -1;
+       }
+
+       return 0;
+}
+#endif
+
+static void _register_event_handler_both(win_info *win, void *data)
+{
+       Ecore_Evas *ee;
+
+       ret_if(!win);
+
+       ee = ecore_evas_ecore_evas_get(evas_object_evas_get(win->win));
+
+       evas_object_smart_callback_add(win->win,"delete,request", _indicator_window_delete_cb, data);
+       evas_object_event_callback_add(win->layout, EVAS_CALLBACK_MOUSE_DOWN, _indicator_mouse_down_cb, win);
+       evas_object_event_callback_add(win->layout, EVAS_CALLBACK_MOUSE_MOVE, _indicator_mouse_move_cb, win);
+       evas_object_event_callback_add(win->layout, EVAS_CALLBACK_MOUSE_UP,_indicator_mouse_up_cb, win);
+       ecore_evas_callback_msg_parent_handle_set(ee, _indicator_ecore_evas_msg_parent_handle);
+       ecore_evas_data_set(ee,"indicator_app_data",data);
+}
+
+static void register_event_handler(void *data)
+{
+       struct appdata *ad = data;
+//     Ecore_Event_Handler *hdl = NULL;
+       ret_if(!data);
+
+       _register_event_handler_both(&(ad->win),data);
+
+#if 0
+       hdl = ecore_event_handler_add(ECORE_X_EVENT_CLIENT_MESSAGE, _indicator_client_message_cb, (void *)ad);
+       ret_if(!hdl);
+       ad->evt_handlers = eina_list_append(ad->evt_handlers, hdl);
+
+       hdl = ecore_event_handler_add(ECORE_X_EVENT_WINDOW_PROPERTY, _property_changed_cb, data);
+       ret_if(!hdl);
+       ad->evt_handlers = eina_list_append(ad->evt_handlers, hdl);
+#endif
+       if (vconf_notify_key_changed(VCONFKEY_PM_STATE, _indicator_notify_pm_state_cb, (void *)ad) != 0) {
+               _E("Fail to set callback for VCONFKEY_PM_STATE");
+       }
+
+       if (vconf_notify_key_changed(VCONFKEY_SYSMAN_POWER_OFF_STATUS, _indicator_power_off_status_cb, (void *)ad) < 0) {
+               _E("Failed to set callback for VCONFKEY_SYSMAN_POWER_OFF_STATUS");
+       }
+
+       if (vconf_notify_key_changed(VCONFKEY_IDLE_LOCK_STATE, _indicator_lock_status_cb, (void *)ad) < 0) {
+               _E("Failed to set callback for VCONFKEY_IDLE_LOCK_STATE");
+       }
+
+//     edbus_listener(data);
+}
+
+static void _unregister_event_handler_both(win_info *win)
+{
+       ret_if(!win);
+
+       evas_object_smart_callback_del(win->win, "delete-request", _indicator_window_delete_cb);
+       evas_object_event_callback_del(win->layout, EVAS_CALLBACK_MOUSE_DOWN, _indicator_mouse_down_cb);
+       evas_object_event_callback_del(win->layout, EVAS_CALLBACK_MOUSE_MOVE, _indicator_mouse_move_cb);
+       evas_object_event_callback_del(win->layout, EVAS_CALLBACK_MOUSE_UP, _indicator_mouse_up_cb);
+}
+
+static int unregister_event_handler(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+
+       retv_if(!data, 0);
+
+       _unregister_event_handler_both(&(ad->win));
+
+       vconf_ignore_key_changed(VCONFKEY_PM_STATE, _indicator_notify_pm_state_cb);
+       vconf_ignore_key_changed(VCONFKEY_SYSMAN_POWER_OFF_STATUS, _indicator_power_off_status_cb);
+       vconf_ignore_key_changed(VCONFKEY_IDLE_LOCK_STATE, _indicator_lock_status_cb);
+
+       Ecore_Event_Handler *hdl = NULL;
+       EINA_LIST_FREE(ad->evt_handlers, hdl) {
+               if (hdl) ecore_event_handler_del(hdl);
+       }
+
+//     edbus_cleaner();
+
+       return OK;
+}
+
+static Evas_Object *_create_layout(Evas_Object * parent, const char *file, const char *group)
+{
+       Evas_Object *layout = NULL;
+       int ret;
+
+       layout = elm_layout_add(parent);
+       if (layout) {
+               ret = elm_layout_file_set(layout, file, group);
+               if (!ret) {
+                       evas_object_del(layout);
+                       return NULL;
+               }
+               evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+               elm_win_resize_object_add(parent, layout);
+       }
+
+       return layout;
+}
+
+static void _indicator_listen_timer_cb(void* data)
+{
+       char *indi_name = NULL;
+       win_info *win = NULL;
+
+       ret_if(!data);
+
+       win = (win_info*)data;
+       indi_name = "elm_indicator";
+
+       if (listen_timer != NULL) {
+               ecore_timer_del(listen_timer);
+               listen_timer = NULL;
+       }
+
+       if (!elm_win_socket_listen(win->win , indi_name, 0, EINA_FALSE)) {
+               _E("faile to elm_win_socket_listen() %x", win->win);
+               listen_timer =  ecore_timer_add(3, (void *)_indicator_listen_timer_cb, win);
+       } else {
+               _D("listen success");
+       }
+}
+
+static void _create_box(win_info *win)
+{
+       ret_if(!win);
+
+       /* First, clear layout */
+       box_fini(win);
+
+       box_init(win);
+
+       return;
+}
+
+#define qHD_RESOLUTION_WIDTH 540
+#define INDICATOR_HEIGHT_HD 48
+#define INDICATOR_HEIGHT_qHD 38
+#define INDICATOR_HEIGHT_WVGA 36
+static void _create_win(void* data)
+{
+       char *indi_name = NULL;
+       struct appdata *ad = NULL;
+       Ecore_X_Window xwin;
+//     Ecore_X_Window zone;
+//     Ecore_X_Window_State states[2];
+       int root_w;
+       int root_h;
+//     Ecore_X_Window root;
+
+       ret_if(!data);
+
+       _D("Window created");
+
+       ad = data;
+
+//     root = ecore_x_window_root_first_get();
+//     ecore_x_window_size_get(root, &root_w, &root_h);
+
+       if (root_w > qHD_RESOLUTION_WIDTH) { // HD
+               _D("Window w, h (%d,%d)", root_w, root_h);
+               ad->win.port_w = root_w;
+               ad->win.land_w = root_h;
+               ad->win.h = INDICATOR_HEIGHT_HD;
+       } else if (root_w < qHD_RESOLUTION_WIDTH) { // WVGA
+               _D("Window w, h (%d,%d)", root_w, root_h);
+               ad->win.port_w = root_w;
+               ad->win.land_w = root_h;
+               ad->win.h = INDICATOR_HEIGHT_WVGA;
+       } else { // qHD
+               _D("Window w, h (%d,%d)", root_w, root_h);
+               ad->win.port_w = root_w;
+               ad->win.land_w = root_h;
+               ad->win.h = INDICATOR_HEIGHT_qHD;
+       }
+
+       /* Create socket window */
+       ad->win.win = elm_win_add(NULL, "portrait_indicator", ELM_WIN_SOCKET_IMAGE);
+       indi_name = "elm_indicator";
+       elm_win_title_set(ad->win.win, "win sock test:port");
+       ad->win.w = root_w;
+
+       ret_if(!(ad->win.win));
+
+       if (!elm_win_socket_listen(ad->win.win , indi_name, 0, EINA_FALSE)) {
+               _E("failed 1st to elm_win_socket_listen() %x", ad->win.win);
+               /* Start timer */
+               if (listen_timer != NULL) {
+                       ecore_timer_del(listen_timer);
+                       listen_timer = NULL;
+               }
+               listen_timer =  ecore_timer_add(3, (void *)_indicator_listen_timer_cb, &(ad->win));
+       }
+       elm_win_alpha_set(ad->win.win , EINA_TRUE);
+       elm_win_borderless_set(ad->win.win , EINA_TRUE);
+       evas_object_size_hint_fill_set(ad->win.win , EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(ad->win.win , 1.0, 0.5);
+
+       /* make illume2 recognize indicator window */
+       xwin = elm_win_xwindow_get(ad->win.win );
+//     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);
+
+//     zone = ecore_x_e_illume_zone_get(xwin);
+//     ecore_x_event_mask_set(zone, ECORE_X_EVENT_MASK_WINDOW_CONFIGURE);
+       ad->win.evas = evas_object_evas_get(ad->win.win);
+
+       ad->win.layout = _create_layout(ad->win.win, EDJ_FILE0, GRP_MAIN);
+       ret_if(!(ad->win.layout));
+
+       _D("win_size = Original(%d, %d), Scaled(%lf, %lf)", ad->win.port_w, ad->win.h, ELM_SCALE_SIZE(ad->win.port_w), ELM_SCALE_SIZE(ad->win.h));
+
+       evas_object_resize(ad->win.win, ad->win.port_w, ad->win.h);
+       evas_object_move(ad->win.win, 0, 0);
+
+       _create_box(&(ad->win));
+
+       ad->win.data = data;
+
+       evas_object_show(ad->win.layout);
+       evas_object_show(ad->win.win);
+
+       return;
+}
+
+
+
+static void create_overlay_win(void* data)
+{
+       struct appdata *ad = data;
+
+       Evas_Object *eo;
+       int w, h;
+       int indi_h;
+//     int id = -1;
+       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)ELM_SCALE_SIZE(INDICATOR_HEIGHT);
+
+       ad->active_indi_win = -1;
+
+       eo = elm_win_add(NULL, "INDICATOR", ELM_WIN_BASIC);
+       /*id = elm_win_aux_hint_add(eo, "wm.policy.win.user.geometry", "1");
+       if(id == -1) {
+               _E("Cannot add user.geometry");
+               return;
+       }*/
+       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);
+
+       _D("win_size = Original(%d, %d), Scaled(%lf, %lf)", 2,2, ELM_SCALE_SIZE(2), ELM_SCALE_SIZE(2));
+       evas_object_resize(eo, ELM_SCALE_SIZE(2), ELM_SCALE_SIZE(2));
+
+       evas_object_move(eo , 0, 0);
+       elm_win_alpha_set(eo, EINA_TRUE);
+
+       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,    /* angle 0 (x,y,w,h) */
+                                                                               0, 0, indi_h, h,   /* angle 90 (x,y,w,h) */
+                                                                               0, h-indi_h, w, indi_h, /* angle 180 (x,y,w,h) */
+                                                                               w-indi_h, 0, indi_h, h /* angle 270 (x,y,w,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;
+//     ad->atom_active = ecore_x_atom_get("_E_ACTIVE_INDICATOR_WIN");
+
+       return ;
+}
+
+
+
+static void _init_win_info(void * data)
+{
+       struct appdata *ad = data;
+       retif(data == NULL, , "Invalid parameter!");
+
+       memset(&(ad->win),0x00,sizeof(win_info));
+
+       ad->win_overlay = NULL;
+}
+
+
+
+static void _init_tel_info(void * data)
+{
+       int i = 0;
+       struct appdata *ad = data;
+       retif(data == NULL, , "Invalid parameter!");
+
+       for(i = 0; i < SIM_CNT_MAX; i++) {
+               memset(&(ad->tel_info[i]),0x00,sizeof(telephony_info));
+       }
+}
+
+
+
+static int _window_new(void *data)
+{
+       retif(data == NULL, FAIL, "Invalid parameter!");
+
+       _init_win_info(data);
+       _init_tel_info(data);
+
+       /* Create indicator window */
+       _create_win(data);
+
+       return INDICATOR_ERROR_NONE;
+}
+
+
+
+static int _window_del(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+
+       retif(data == NULL, FAIL, "Invalid parameter!");
+
+       modules_fini(data);
+       unregister_event_handler(ad);
+
+       box_fini(&(ad->win));
+       evas_image_cache_flush(ad->win.evas);
+       evas_object_del(ad->win.layout);
+       ad->win.layout = NULL;
+
+       evas_object_del(ad->win.win);
+       ad->win.win = NULL;
+
+       evas_object_del(ad->win_overlay);
+       ad->win_overlay = NULL;
+
+       if (ad) free(ad);
+
+       elm_exit();
+       return OK;
+}
+
+static void __indicator_set_showhide_press(int value, int line)
+{
+       show_hide_pressed = value;
+}
+
+static void _indicator_mouse_down_cb(void *data, Evas * e, Evas_Object * obj, void *event)
+{
+       win_info *win = (win_info*)data;
+       Evas_Event_Mouse_Down *ev = NULL;
+
+       retif(data == NULL || event == NULL, , "Invalid parameter!");
+       ev = event;
+
+       win->mouse_event.x = ev->canvas.x;
+       win->mouse_event.y = ev->canvas.y;
+
+       if (ev->button != 1) {
+               return;
+       }
+
+#ifdef HOME_KEY_EMULATION
+       if (box_check_indicator_area(win, ev->canvas.x, ev->canvas.y)) {
+               int lock_state = VCONFKEY_IDLE_UNLOCK;
+               int ps_state = -1;
+               int ret = -1;
+
+       /*      if (indicator_message_disp_check(win->type) == 1) {
+                       return;
+               }*/
+               ret = vconf_get_int(VCONFKEY_IDLE_LOCK_STATE,&lock_state);
+
+               if (ret != 0 || lock_state == VCONFKEY_IDLE_LOCK) {
+                       return;
+               }
+               ret = vconf_get_int(VCONFKEY_SETAPPL_PSMODE,&ps_state);
+
+               if (ret != 0 || ps_state == SETTING_PSMODE_EMERGENCY) {
+                       return;
+               }
+
+               if (box_check_home_icon_area(win, ev->canvas.x, ev->canvas.y)) {
+
+                       if (util_check_system_status() == FAIL) {
+                               _D("util_check_system_status failed");
+                               return;
+                       }
+                       home_button_pressed = EINA_TRUE;
+               }
+               indicator_press_coord.x = ev->canvas.x;
+               indicator_press_coord.y = ev->canvas.y;
+       }
+#endif
+}
+
+
+
+static void _indicator_mouse_move_cb(void *data, Evas * e, Evas_Object * obj, void *event)
+{
+       Evas_Event_Mouse_Move *ev = NULL;
+       win_info* win = (win_info*)data;
+
+       retif(data == NULL || event == NULL, , "Invalid parameter!");
+
+       ev = event;
+
+       if (home_button_pressed) {
+               if (!box_check_home_icon_area(win,ev->cur.canvas.x,ev->cur.canvas.y)) {
+                       home_button_pressed = FALSE;
+               }
+
+       }
+       if (show_hide_pressed == 1) {
+                       if (!box_check_more_icon_area(win,ev->cur.canvas.x,ev->cur.canvas.y)) {
+                               __indicator_set_showhide_press(EINA_FALSE, __LINE__);
+                       }
+       }
+}
+
+static void _indicator_mouse_up_cb(void *data, Evas * e, Evas_Object * obj, void *event)
+{
+       Evas_Event_Mouse_Up *ev = NULL;
+       win_info *win = (win_info *)data;
+
+       retif(data == NULL || event == NULL, , "Invalid parameter!");
+
+       ev = event;
+
+#ifdef HOME_KEY_EMULATION
+       if (box_check_indicator_area(win, ev->canvas.x, ev->canvas.y)) {
+
+               if (box_check_home_icon_area(win, ev->canvas.x, ev->canvas.y)) {
+                       if (home_button_pressed == EINA_TRUE) {
+                               util_launch_search(win->data);
+                               feedback_play_type(FEEDBACK_TYPE_SOUND, FEEDBACK_PATTERN_TAP);
+                       }
+
+               } else if (box_check_more_icon_area(win, ev->canvas.x, ev->canvas.y)) {
+                       if(show_hide_pressed == EINA_TRUE) {
+                               DBG("pressed area");
+                               feedback_play_type(FEEDBACK_TYPE_SOUND, FEEDBACK_PATTERN_TAP);
+                       }
+               }
+       }
+
+       home_button_pressed = EINA_FALSE;
+       __indicator_set_showhide_press(EINA_FALSE, __LINE__);
+
+#else /* HOME_REMOVE_LONGPRESS */
+       int mouse_up_prio = -1;
+       int mouse_down_prio = -1;
+
+       if (home_button_pressed == EINA_TRUE) {
+               home_button_pressed = EINA_FALSE;
+       }
+
+       mouse_down_prio =
+               box_get_priority_in_move_area(win,win->mouse_event.x,
+                                                       win->mouse_event.y);
+       mouse_up_prio = box_get_priority_in_move_area(win,ev->canvas.x,
+                                                       ev->canvas.y);
+
+       if (mouse_down_prio > -1 && mouse_up_prio > -1
+               && mouse_down_prio == mouse_up_prio) {
+               switch (mouse_down_prio) {
+               case INDICATOR_PRIORITY_FIXED1:
+                       int lock_state = VCONFKEY_IDLE_UNLOCK;
+                       int lock_ret = -1;
+
+                       lock_ret = vconf_get_int(VCONFKEY_IDLE_LOCK_STATE,
+                                       &lock_state);
+
+                       /* In Lock Screen, home button don't have to do */
+                       if (lock_ret == 0 && lock_state == VCONFKEY_IDLE_LOCK)
+                               break;
+
+                       char *top_win_name = NULL;
+
+                       if (util_check_system_status() == FAIL)
+                               break;
+               break;
+               }
+       }
+#endif /* HOME_KEY_EMULATION */
+       win->mouse_event.x = 0;
+       win->mouse_event.y = 0;
+}
+
+#if 0
+static void _app_terminate_cb(app_context_h app_context, app_context_status_e status, void *data)
+{
+       retif(data == NULL, , "Invalid parameter!");
+       DBG("_app_terminate_cb");
+       char *app_id = NULL;
+       app_context_get_app_id(app_context, &app_id);
+       if (app_id == NULL) {
+               ERR("app_id is null!!");
+               return;
+       } else {
+               DBG("_app_terminate_cb %s",app_id);
+       }
+
+       if (status == APP_CONTEXT_STATUS_TERMINATED) {
+               if (strcmp(MP_APP_ID,app_id) == 0) {
+                       DBG("hide music icon");
+                       hide_mp_icon();
+               } else if(strcmp(FMRADIO_APP_ID,app_id) == 0) {
+                       DBG("hide fm radio icon");
+                       hide_fm_radio_icon();
+               } else if(strcmp(VR_APP_ID,app_id) == 0) {
+                       DBG("hide voice recorder icon");
+                       hide_voice_recorder_icon();
+               }
+       }
+       if (app_id!=NULL) {
+               free(app_id);
+               app_id = NULL;
+       }
+}
+
+static void register_app_terminate_cb(void* data)
+{
+       retif(data == NULL, , "Invalid parameter!");
+       app_manager_set_app_context_status_cb(_app_terminate_cb, MP_APP_ID, data);
+       app_manager_set_app_context_status_cb(_app_terminate_cb, FMRADIO_APP_ID, data);
+       app_manager_set_app_context_status_cb(_app_terminate_cb, VR_APP_ID, data);
+}
+#endif
+
+static void _signal_handler(int signum, siginfo_t *info, void *unused)
+{
+    ui_app_exit();
+}
+
+static bool app_create(void *data)
+{
+       struct appdata *ad = NULL;
+       int ret;
+
+       ad = data;
+       elm_app_base_scale_set(1.7);
+
+       /* Signal handler */
+       struct sigaction act;
+       memset(&act,0x00,sizeof(struct sigaction));
+       act.sa_sigaction = _signal_handler;
+       act.sa_flags = SA_SIGINFO;
+
+       ret = sigemptyset(&act.sa_mask);
+       if (ret < 0) {
+               ERR("Failed to sigemptyset[%s]", strerror(errno));
+       }
+       ret = sigaddset(&act.sa_mask, SIGTERM);
+       if (ret < 0) {
+               ERR("Failed to sigaddset[%s]", strerror(errno));
+       }
+       ret = sigaction(SIGTERM, &act, NULL);
+       if (ret < 0) {
+               ERR("Failed to sigaction[%s]", strerror(errno));
+       }
+
+       ret = _window_new(ad);
+       if (ret != INDICATOR_ERROR_NONE) {
+               _D("Failed to create a new window!");
+       }
+
+       /* Set nonfixed-list size for display */
+       modules_init_first(ad);
+
+       if (ad->win.win) {
+               elm_win_activate(ad->win.win);
+       }
+       evas_object_show(ad->win.layout);
+       evas_object_show(ad->win.win);
+
+       return true;
+}
+
+static void app_terminate(void *data)
+{
+       struct appdata *ad = data;
+       modules_fini(data);
+       ticker_fini(ad);
+       indicator_message_fini();
+#ifdef _SUPPORT_SCREEN_READER2
+       indicator_service_tts_fini(data);
+#endif
+
+       unregister_event_handler(ad);
+
+       feedback_deinitialize();
+
+       box_fini(&(ad->win));
+       evas_image_cache_flush(ad->win.evas);
+       evas_object_del(ad->win.layout);
+       evas_object_del(ad->win.win);
+
+       _D("INDICATOR IS TERMINATED");
+}
+
+static void app_pause(void *data)
+{
+}
+
+static void app_resume(void *data)
+{
+}
+
+static void app_service(app_control_h service, void *data)
+{
+       struct appdata *ad = data;
+
+       _D("INDICATOR IS STARTED");
+
+       create_overlay_win(data);
+       register_event_handler(ad);
+       modules_init(data);
+#ifdef _SUPPORT_SCREEN_READER
+       modules_register_tts(data);
+#endif
+       feedback_initialize();
+       indicator_message_init(data);
+       if (INDICATOR_ERROR_NONE != ticker_init(ad)) {
+               _E("Ticker cannot initialize");
+       }
+#ifdef _SUPPORT_SCREEN_READER2
+       indicator_service_tts_init(data);
+#endif
+       _indicator_lock_status_cb(NULL,data);
+#if 0
+       register_app_terminate_cb(data);
+#endif
+}
+
+int main(int argc, char *argv[])
+{
+       struct appdata ad;
+
+       ui_app_lifecycle_callback_s event_callback = {0,};
+       app_event_handler_h handlers[5] = {NULL, };
+
+       int ret = 0;
+
+       _D("Start indicator");
+
+       ret = perm_app_set_privilege("org.tizen.", NULL, NULL);
+       if (ret != PC_OPERATION_SUCCESS) {
+               _E("[INDICATOR] Failed to set privilege (%d)", ret);
+       }
+
+       event_callback.create = app_create;
+       event_callback.terminate = app_terminate;
+       event_callback.pause = app_pause;
+       event_callback.resume = app_resume;
+       event_callback.app_control = app_service;
+
+       ui_app_add_event_handler(&handlers[APP_EVENT_LOW_MEMORY], APP_EVENT_LOW_MEMORY, NULL, NULL);
+       ui_app_add_event_handler(&handlers[APP_EVENT_LOW_BATTERY], APP_EVENT_LOW_BATTERY, _indicator_low_bat_cb, NULL);
+       ui_app_add_event_handler(&handlers[APP_EVENT_DEVICE_ORIENTATION_CHANGED], APP_EVENT_DEVICE_ORIENTATION_CHANGED, NULL, NULL);
+       ui_app_add_event_handler(&handlers[APP_EVENT_LANGUAGE_CHANGED], APP_EVENT_LANGUAGE_CHANGED, _indicator_lang_changed_cb, &ad);
+       ui_app_add_event_handler(&handlers[APP_EVENT_REGION_FORMAT_CHANGED], APP_EVENT_REGION_FORMAT_CHANGED, _indicator_region_changed_cb, NULL);
+
+       memset(&ad, 0x0, sizeof(struct appdata));
+
+       ret = ui_app_main(argc, argv, &event_callback, &ad);
+       if (ret != APP_ERROR_NONE) {
+               _E("app_main() is failed. err = %d", ret);
+       }
+
+       return ret;
+}
+
+/* End of file */
diff --git a/daemon/main.h b/daemon/main.h
new file mode 100644 (file)
index 0000000..1a06ff1
--- /dev/null
@@ -0,0 +1,150 @@
+/*
+ *  Indicator
+ *
+ * Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+
+#ifndef __DEF_indicator_H_
+#define __DEF_indicator_H_
+
+#include <Elementary.h>
+//#include <Ecore_X.h>
+#include <efl_assist.h>
+#include "indicator.h"
+
+#if !defined(PACKAGE)
+#  define PACKAGE "indicator"
+#endif
+
+#if !defined(PACKAGEID)
+#  define PACKAGEID "org.tizen.indicator"
+#endif
+
+#if !defined(LOCALEDIR)
+#  define LOCALEDIR "/usr/apps/org.tizen.indicator/res/locale"
+#endif
+
+#if !defined(EDJDIR)
+#  define EDJDIR "/usr/apps/org.tizen.indicator/res/edje"
+#endif
+
+#if !defined(ICONDIR)
+#  define ICONDIR "/usr/apps/org.tizen.indicator/res/icons"
+#endif
+
+#if !defined(CHANGEABLEDIR)
+#  define CHANGEABLEDIR "/usr/apps/org.tizen.indicator/shared/res/tables"
+#endif
+
+#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"
+#define ICON_NONFIXED_THEME_ANI_FILE EDJDIR"/"PACKAGE"_icon_animation.edj"
+#define ICON_NONFIXED_THEME_SYNC_FILE EDJDIR"/"PACKAGE"_icon_activesync.edj"
+
+#define CHANGEABLE_COLOR_FILE CHANGEABLEDIR"/"PACKAGEID"_ChangeableColorInfo.xml"
+#define CHANGEABLE_FONT_FILE CHANGEABLEDIR"/"PACKAGEID"_ChangeableFontInfo.xml"
+
+
+#define _S(str)        dgettext("sys_string", str)
+
+#define HOME_SCREEN_NAME               "org.tizen.live-magazine"
+#define MENU_SCREEN_NAME               "org.tizen.menu-screen"
+#define LOCK_SCREEN_NAME               "org.tizen.idle-lock"
+#define QUICKPANEL_NAME                        "E Popup"
+#define CALL_NAME                      "org.tizen.call-ui"
+#define VTCALL_NAME                    "org.tizen.vtmain"
+
+#define MENUSCREEN_PKG_NAME "org.tizen.menuscreen"
+#define APP_TRAY_PKG_NAME "org.tizen.app-tray"
+#define SEARCH_PKG_NAME "org.tizen.sfinder"
+
+#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
+#define MSG_ID_INDICATOR_OPACITY_OSP 0X10061
+#define MSG_ID_INDICATOR_ANI_START 0x10006
+
+#define MSG_DOMAIN_CONTROL_ACCESS (int)ECORE_X_ATOM_E_ILLUME_ACCESS_CONTROL
+
+#define SIM_CNT_MAX 2
+
+enum _win_type {
+       /* Clock view */
+       TOP_WIN_NORMAL = 0,
+       TOP_WIN_LOCK_SCREEN,
+       /* Full line of indicator */
+       /* CAUTION: Don't change order! */
+       TOP_WIN_CALL,
+       TOP_WIN_MENU_SCREEN,
+       TOP_WIN_HOME_SCREEN,
+       TOP_WIN_QUICKPANEL
+};
+
+enum indicator_opacity_mode{
+       INDICATOR_OPACITY_OPAQUE = 0,
+       INDICATOR_OPACITY_TRANSLUCENT,
+       INDICATOR_OPACITY_TRANSPARENT,
+};
+
+typedef struct _telephony_info
+{
+       int network_service_type;
+       int network_ps_type;
+       int roaming_status;
+       int signal_level;
+       int prefered_data;
+       int prefered_voice;
+       int default_network;
+       int sim_status;
+       int call_forward;
+
+       void* data;
+}telephony_info;
+
+struct appdata {
+
+       win_info win;
+       telephony_info tel_info[SIM_CNT_MAX];
+       int prefered_data;      // Data prefered
+       Evas_Object* win_overlay;
+
+       double scale;
+       int angle;
+
+       Eina_List *evt_handlers;
+
+       enum indicator_opacity_mode opacity_mode;
+
+       Ecore_X_Atom atom_active;
+       Ecore_X_Window active_indi_win;
+       //Ea_Theme_Color_Table *color_table;
+       Eina_List *font_table;
+
+       void (*update_display) (int);
+};
+
+int isSimShowing;      // For Simcard Icon
+int isRSSI1Showing;    // For RSSI1 Icon
+int isRSSI2Showing;    // For RSSI2 Icon
+int isSilentShowing;           // For Silent Icon
+int isWifiDirectShowing;       // For WiFi Direct Icon
+
+#endif                         /* __DEF_indicator_H__ */
diff --git a/daemon/message.c b/daemon/message.c
new file mode 100644 (file)
index 0000000..1eb5d7d
--- /dev/null
@@ -0,0 +1,677 @@
+/*
+ *  Indicator
+ *
+ * Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * 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 <notification.h>
+//#include <notification_status_internal.h>
+
+#include "main.h"
+#include "common.h"
+#include "util.h"
+#include "tts.h"
+#include "box.h"
+
+
+#define MSG_TIMEOUT 3
+#define STR_BUF_SIZE 256
+#define QUEUE_TIMEOUT 1
+#define QUEUE_TIMEOUT2 5
+#define QUEUE_SIZE 5
+
+#define MESSAGE_LINE1 "message.text"
+#define MESSAGE_LINE2 "message.text2"
+
+
+typedef struct _str_buf {
+       char *data;
+       int index;
+       double timer_val;
+} MsgBuf;
+
+
+static int msg_type = 0;
+static Ecore_Timer *msg_timer = NULL;
+static Ecore_Timer *ani_temp_timer = NULL;
+
+extern int current_angle;
+static int block_width = 0;
+static int string_width = 0;
+static char* message_buf = NULL;
+static Ecore_Timer *retry_timer=NULL;
+static int msg_retry = 0;
+static struct appdata *app_data = NULL;
+static Ecore_Timer *queue_timer=NULL;
+static int current_buf_index = 0;
+static int current_buf_cnt = 0;
+static MsgBuf msg_queue[QUEUE_SIZE];
+
+
+
+static Eina_Bool _ani_temp_timeout_cb(void *data)
+{
+       retif(data == NULL, ECORE_CALLBACK_CANCEL, "Invalid parameter!");
+
+       if (ani_temp_timer)
+       {
+               ecore_timer_del(ani_temp_timer);
+               ani_temp_timer = NULL;
+       }
+
+       return ECORE_CALLBACK_CANCEL;
+}
+
+
+
+void start_temp_ani_timer(void* data)
+{
+       retif(data == NULL, , "Invalid parameter!");
+       win_info* win = (win_info*)data;
+
+       if(ani_temp_timer != NULL)
+       {
+               ecore_timer_del(ani_temp_timer);
+               ani_temp_timer = NULL;
+       }
+       ani_temp_timer = ecore_timer_add(0.3, (Ecore_Task_Cb)_ani_temp_timeout_cb, (void*)win);
+
+}
+
+
+
+static void _hide_message(void* data)
+{
+       retif(data == NULL, , "Invalid parameter!");
+       win_info* win = NULL;
+       win = (win_info*)data;
+
+       box_update_display(win);
+
+       start_temp_ani_timer(data);
+       util_signal_emit_by_win(win,"message.hide", "indicator.prog");
+}
+
+
+
+static void _hide_message_all(void* data)
+{
+       retif(data == NULL, , "Invalid parameter!");
+
+       util_signal_emit(data,"message.line2.hide.noeffect","indicator.prog");
+}
+
+
+
+static void _show_message(void* data)
+{
+       retif(data == NULL, , "Invalid parameter!");
+       win_info* win = NULL;
+       win = (win_info*)data;
+       struct appdata* ad = (struct appdata*)win->data;
+
+       start_temp_ani_timer(data);
+       if(ad->opacity_mode==INDICATOR_OPACITY_TRANSPARENT)
+       {
+               DBG("Transparent");
+               util_signal_emit_by_win(win,"message.show.noeffect", "indicator.prog");
+               evas_object_show(win->win);
+       }
+       else
+       {
+               util_signal_emit_by_win(win,"message.show", "indicator.prog");
+       }
+}
+
+
+
+static void _show_message_line2(void* data)
+{
+       retif(data == NULL, , "Invalid parameter!");
+       win_info* win = NULL;
+       win = (win_info*)data;
+
+       if (win)
+       {
+               util_signal_emit_by_win(win,"message.line2.show", "indicator.prog");
+       }
+}
+
+
+
+static Eina_Bool _msg_timeout_cb(void *data)
+{
+       retif(data == NULL, ECORE_CALLBACK_CANCEL, "Invalid parameter!");
+
+       win_info* win = (win_info*)data;
+
+       if(msg_type == 1)
+       {
+               msg_timer = NULL;
+               _hide_message(win);
+               return ECORE_CALLBACK_CANCEL;
+       }
+       else if(msg_type == 2)
+       {
+
+               msg_type = 0;
+               if (msg_timer)
+               {
+                       ecore_timer_del(msg_timer);
+               }
+               msg_timer = ecore_timer_add(3, (Ecore_Task_Cb)_msg_timeout_cb, (void*)win);
+               _show_message_line2(win);
+               return ECORE_CALLBACK_CANCEL;
+       }
+       else
+       {
+               msg_type = 0;
+               msg_timer = NULL;
+               _hide_message(win);
+               return ECORE_CALLBACK_CANCEL;
+       }
+}
+
+
+
+static Eina_Bool _retry_timeout_cb(void *data)
+{
+       retif(data == NULL,TRUE , "Invalid parameter!");
+
+       if(message_buf!=NULL)
+       {
+               free(message_buf);
+               message_buf = NULL;
+       }
+
+       if (retry_timer!=NULL)
+       {
+               ecore_timer_del(retry_timer);
+               retry_timer = NULL;
+       }
+       return TRUE;
+
+}
+
+
+
+static int __get_block_width(void* data, const char* part)
+{
+       Evas_Object * eo = NULL;
+       int geo_dx = 0;
+       int geo_dy = 0;
+       retif(data == NULL,-1, "Invalid parameter!");
+       retif(part == NULL,-1, "Invalid parameter!");
+
+       win_info* win = (win_info*)data;
+
+       eo = (Evas_Object *) edje_object_part_object_get(elm_layout_edje_get(win->layout), part);
+
+       evas_object_geometry_get(eo, NULL, NULL, &geo_dx, &geo_dy);
+
+       return geo_dx;
+}
+
+
+
+static int __get_string_width(void* data, const char* part)
+{
+       Evas_Object * eo = NULL;
+       int text_dx = 0;
+       int text_dy = 0;
+       retif(data == NULL,-1, "Invalid parameter!");
+       retif(part == NULL,-1, "Invalid parameter!");
+
+       win_info* win = (win_info*)data;
+
+       eo = (Evas_Object *) edje_object_part_object_get(elm_layout_edje_get(win->layout), part);
+
+       evas_object_textblock_size_formatted_get(eo, &text_dx, &text_dy);
+
+       return text_dx;
+}
+
+
+
+static void __handle_2line(win_info* win,char* origin, char* part1, char* part2)
+{
+       retif(origin == NULL, , "Invalid parameter!");
+       retif(part1 == NULL, , "Invalid parameter!");
+       retif(part2 == NULL, , "Invalid parameter!");
+       int index = 0;
+       Eina_Unicode *uni_out = NULL;
+       Eina_Unicode buf[STR_BUF_SIZE] = {0,};
+       int len = 0;
+       int len2 = 0;
+       Eina_Unicode temp1[STR_BUF_SIZE] = {0,};
+       Eina_Unicode temp2[STR_BUF_SIZE] = {0,};
+       char* out1 = NULL;
+       char* out2 = NULL;
+       int char_len1 = 0;
+       int char_len2 = 0;
+
+       uni_out = eina_unicode_utf8_to_unicode(origin, &len);
+
+       if(len >= STR_BUF_SIZE)
+       {
+               len2 = STR_BUF_SIZE-1;
+       }
+       else
+       {
+               len2 = len;
+       }
+
+       eina_unicode_strncpy(buf,uni_out,len2);
+
+       int exceed_index = len2 * block_width / string_width;
+       {
+               int i = 0;
+               for(i=0;i<100;i++)
+               {
+                       Eina_Unicode temp1[STR_BUF_SIZE] = {0,};
+                       int char_len1 = 0;
+                       char* out1 = NULL;
+                       int width = 0;
+                       eina_unicode_strncpy(temp1,buf,exceed_index);
+                       out1 = eina_unicode_unicode_to_utf8(temp1,&char_len1);
+                       util_part_text_emit_by_win(win,"message.text.compare", out1);
+
+                       width = __get_string_width(win,"message.text.compare");
+
+                       if(width > block_width)
+                       {
+                               exceed_index = exceed_index -1;
+                               DBG("reduce exceed index(%d)",exceed_index,width);
+                       }
+                       else
+                       {
+                               if(out1!=NULL)
+                                       free(out1);
+                               break;
+                       }
+
+                       if(out1!=NULL)
+                               free(out1);
+               }
+               for(i=0;i<100;i++)
+               {
+                       Eina_Unicode temp1[STR_BUF_SIZE] = {0,};
+                       int char_len1 = 0;
+                       char* out1 = NULL;
+                       int width = 0;
+                       eina_unicode_strncpy(temp1,buf,exceed_index);
+                       out1 = eina_unicode_unicode_to_utf8(temp1,&char_len1);
+                       util_part_text_emit_by_win(win,"message.text.compare", out1);
+
+                       width = __get_string_width(win,"message.text.compare");
+
+                       if(width < block_width)
+                       {
+                               exceed_index = exceed_index +1;
+                               DBG("increase exceed index(%d)",exceed_index,width);
+                       }
+                       else
+                       {
+                               exceed_index = exceed_index -1;
+                               if(out1)
+                                       free(out1);
+                               break;
+                       }
+
+                       if(out1)
+                               free(out1);
+               }
+
+       }
+
+       if(exceed_index<0)
+       {
+               ERR("INDEX %d",exceed_index);
+               goto __CATCH;
+       }
+
+       int i = exceed_index;
+
+       while(i>0)
+       {
+               if(buf[i-1]==' ')
+               {
+                       index = i-1;
+                       break;
+               }
+               i--;
+       }
+
+       if(index>0)
+       {
+               Eina_Unicode *temp3 = NULL;
+               eina_unicode_strncpy(temp1,buf,index);
+               temp3 = &(buf[index]);
+               eina_unicode_strncpy(temp2,temp3,len2-index);
+       }
+       else
+       {
+               Eina_Unicode *temp3 = NULL;
+               eina_unicode_strncpy(temp1,buf,exceed_index);
+               temp3 = &(buf[exceed_index]);
+               eina_unicode_strncpy(temp2,temp3,len2-exceed_index);
+       }
+
+       out1 = eina_unicode_unicode_to_utf8(temp1,&char_len1);
+       out2 = eina_unicode_unicode_to_utf8(temp2,&char_len2);
+
+       if(char_len1>=STR_BUF_SIZE)
+               char_len1 = STR_BUF_SIZE-1;
+       if(char_len2>=STR_BUF_SIZE)
+               char_len2 = STR_BUF_SIZE-1;
+       strncpy(part1,out1,char_len1);
+       strncpy(part2,out2,char_len2);
+
+__CATCH:
+       if(uni_out!=NULL)
+               free(uni_out);
+       if(out1!=NULL)
+               free(out1);
+       if(out2!=NULL)
+               free(out2);
+}
+
+
+
+static void _handle_message_by_win(char *message, void *data)
+{
+       win_info* win = NULL;
+       char part1[256] = {0,};
+       char part2[256] = {0,};
+       char *text = NULL;
+       double time_clk = 0;
+       char* temp = NULL;
+       retif(message == NULL, , "Invalid parameter!");
+       retif(data == NULL, , "Invalid parameter!");
+
+       win = data;
+
+       if (msg_timer)
+       {
+               ecore_timer_del(msg_timer);
+       }
+       msg_type = 0;
+
+       SECURE_DBG("message %s", message);
+
+       temp = strdup(message);
+
+       util_char_replace(temp,'\n',' ');
+
+       text = evas_textblock_text_utf8_to_markup(NULL, temp);
+       if (!text)
+       {
+               if(temp)
+                       free(temp);
+
+               return;
+       }
+       block_width = __get_block_width(win,"message.text");
+       util_part_text_emit_by_win(win,"message.text.compare", text);
+       string_width = __get_string_width(win,"message.text.compare");
+
+       if(block_width > string_width)
+       {
+               msg_type = 1;
+       }
+       else
+       {
+               msg_type = 2;
+       }
+
+       DBG("msg_type %d",  msg_type);
+
+       _show_message(win);
+
+       if(msg_type == 1)
+       {
+               time_clk = 3;
+               util_part_text_emit_by_win(win,"message.text", text);
+               util_send_status_message_start(win,2.5);
+       }
+       else
+       {
+               time_clk = 2.5;
+               __handle_2line(win,text,part1,part2);
+               util_part_text_emit_by_win(win,"message.text", part1);
+               util_part_text_emit_by_win(win,"message.line2.text", part2);
+               util_send_status_message_start(win,5);
+       }
+
+       if(text!=NULL)
+               free(text);
+
+       msg_timer = ecore_timer_add(time_clk, (Ecore_Task_Cb)_msg_timeout_cb, (void*)win);
+
+       if(temp!=NULL)
+               free(temp);
+}
+
+
+
+static void __message_callback(const char *message, void *data)
+{
+       struct appdata *ad = NULL;
+       win_info* win = NULL;
+
+       if (!data)
+               return;
+
+       ad = data;
+
+       char buf[256] = {0,};
+       strncpy(buf,message,256-1);
+#ifdef _SUPPORT_SCREEN_READER2
+       indicator_service_tts_play(buf);
+#endif
+
+       if(message_buf!=NULL)
+       {
+               free(message_buf);
+               message_buf = NULL;
+       }
+
+       message_buf = strdup(message);
+       msg_retry = 0;
+
+       _hide_message_all(data);
+
+       win = &(ad->win);
+       _handle_message_by_win(message_buf,win);
+
+       if(retry_timer!=NULL)
+       {
+               ecore_timer_del(retry_timer);
+       }
+       retry_timer = ecore_timer_add(0.5, (Ecore_Task_Cb)_retry_timeout_cb, (void*)win);
+
+}
+
+
+
+static void _buf_timeout_callback(void* data)
+{
+
+       if(current_buf_index<QUEUE_SIZE)
+       if(msg_queue[current_buf_index].data!=NULL)
+       {
+               DBG("index %d,%s",current_buf_index,msg_queue[current_buf_index].data);
+               __message_callback(msg_queue[current_buf_index].data,data);
+               if(msg_queue[current_buf_index].data!=NULL)
+               {
+                       free(msg_queue[current_buf_index].data);
+                       msg_queue[current_buf_index].data = NULL;
+               }
+               if(current_buf_index+1<QUEUE_SIZE)
+               {
+                       if(msg_queue[current_buf_index+1].data!=NULL)
+                       {
+                               if(queue_timer!=NULL)
+                               {
+                                       ecore_timer_del(queue_timer);
+                                       queue_timer = NULL;
+                               }
+                               current_buf_index = current_buf_index+1;
+                               queue_timer = ecore_timer_add(msg_queue[current_buf_index].timer_val, (Ecore_Task_Cb)_buf_timeout_callback, data);
+                               return;
+                       }
+               }
+       }
+
+       if(queue_timer!=NULL)
+       {
+               ecore_timer_del(queue_timer);
+               queue_timer = NULL;
+       }
+       current_buf_cnt = 0;
+       current_buf_index = 0;
+       DBG("quit buffering..");
+}
+
+
+
+static void __buffer_msg_callback(const char *message, void *data)
+{
+       struct appdata *ad = NULL;
+       retif(data == NULL, , "Invalid parameter!");
+       ad = data;
+
+       win_info *win = NULL;
+       double timer_val;
+
+       win = &(ad->win);
+
+       block_width = __get_block_width(win,"message.text");
+       util_part_text_emit_by_win(win,"message.text.compare", message);
+       string_width = __get_string_width(win,"message.text.compare");
+
+       if(block_width > string_width)
+       {
+               timer_val = QUEUE_TIMEOUT;
+       }
+       else
+       {
+               timer_val = QUEUE_TIMEOUT2;
+       }
+
+       if(queue_timer!=NULL)
+       {
+               if(current_buf_cnt>=QUEUE_SIZE)
+               {
+                       ERR("QUEUE FULL");
+                       return;
+               }
+               SECURE_DBG("buffering... %d,%s",current_buf_cnt,message);
+               if(msg_queue[current_buf_cnt].data!=NULL)
+               {
+                       free(msg_queue[current_buf_cnt].data);
+                       msg_queue[current_buf_cnt].data = NULL;
+               }
+               msg_queue[current_buf_cnt].data = strdup(message);
+               msg_queue[current_buf_cnt].index = current_buf_cnt;
+               msg_queue[current_buf_cnt].timer_val = timer_val;
+               current_buf_cnt++;
+               return;
+       }
+
+       queue_timer = ecore_timer_add(timer_val, (Ecore_Task_Cb)_buf_timeout_callback, data);
+       __message_callback(message,data);
+}
+
+
+
+int indicator_message_disp_check(void)
+{
+       if (msg_timer != NULL)
+               return 1;
+       else
+               return 0;
+}
+
+
+
+int message_ani_playing_check(void)
+{
+       if(ani_temp_timer != NULL)
+               return 1;
+       else
+               return 0;
+}
+
+
+
+int indicator_message_retry_check(void)
+{
+       if(retry_timer!=NULL)
+               return 1;
+       else
+               return 0;
+}
+
+
+
+void indicator_message_display_trigger(void)
+{
+       win_info* win = NULL;
+
+       if(msg_retry==1)
+       {
+               return;
+       }
+
+       DBG("retry message");
+
+       msg_retry = 1;
+
+       win = &(app_data->win);
+       _handle_message_by_win(message_buf,win);
+
+}
+
+
+
+int indicator_message_init(void *data)
+{
+       int ret = 0;
+       int i =0;
+       for(i=0;i<QUEUE_SIZE;i++)
+       {
+               memset(&msg_queue[i],0x00,sizeof(MsgBuf));
+       }
+       ret = notification_status_monitor_message_cb_set(__buffer_msg_callback, data);
+       app_data = data;
+
+
+       return ret;
+}
+
+
+
+int indicator_message_fini(void)
+{
+       int ret = 0;
+
+       ret = notification_status_monitor_message_cb_unset();
+
+       return ret;
+}
diff --git a/daemon/message.h b/daemon/message.h
new file mode 100644 (file)
index 0000000..ae18f43
--- /dev/null
@@ -0,0 +1,32 @@
+/*
+ *  Indicator
+ *
+ * Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+
+#ifndef __INDICATOR_MESSAGE_H_DEF__
+#define __INDICATOR_MESSAGE_H_DEF__
+
+int indicator_message_init(void *data);
+int indicator_message_fini(void);
+int indicator_message_disp_check(void);
+int indicator_message_retry_check(void);
+void indicator_message_display_trigger(void);
+int message_ani_playing_check(void);
+
+
+#endif /* __INDICATOR_MESSAGE_H_DEF__ */
diff --git a/daemon/noti_win.c b/daemon/noti_win.c
new file mode 100644 (file)
index 0000000..4c253cf
--- /dev/null
@@ -0,0 +1,215 @@
+/*
+ * Copyright (c) 2009-2015 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#include <Elementary.h>
+//#include <Ecore_X.h>
+//#include <utilX.h>
+#include <unicode/uloc.h>
+#include <unicode/udat.h>
+#include <unicode/udatpg.h>
+#include <unicode/ustring.h>
+#include <runtime_info.h>
+#include <system_settings.h>
+#include <efl_util.h>
+
+#include "log.h"
+#include "indicator.h"
+#include "common.h"
+#include "main.h"
+#include "noti_win.h"
+
+/* Using this macro to emphasize that some portion like stacking and
+rotation handling are implemented for X based platform */
+#ifndef __UNUSED__
+#define __UNUSED__ __attribute__((unused))
+#endif
+
+struct Internal_Data {
+       Evas_Object *content;
+       Ecore_Event_Handler *rotation_event_handler;
+       Evas_Coord w;
+       Evas_Coord h;
+       int angle;
+};
+
+#define PRIVATE_DATA_KEY_DATA "pdk_data"
+
+static void _content_changed_size_hints(void *data, Evas *e __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__)
+{
+       Evas_Coord h;
+       struct Internal_Data *wd = evas_object_data_get(data, PRIVATE_DATA_KEY_DATA);
+
+       ret_if(!wd);
+
+       evas_object_size_hint_min_get(obj, NULL, &h);
+       if ((h > 0)) {
+               wd->h = h;
+               evas_object_size_hint_min_set(obj, wd->w, wd->h);
+               evas_object_size_hint_min_set(data, wd->w, wd->h);
+       }
+}
+
+static void _sub_del(void *data __UNUSED__, Evas_Object *obj, void *event_info)
+{
+       struct Internal_Data *wd = evas_object_data_get(obj, PRIVATE_DATA_KEY_DATA);
+       Evas_Object *sub = event_info;
+
+       ret_if(!wd);
+
+       if (sub == wd->content) {
+               evas_object_event_callback_del(wd->content, EVAS_CALLBACK_CHANGED_SIZE_HINTS, _content_changed_size_hints);
+               wd->content = NULL;
+       }
+}
+
+static void _noti_win_destroy(void *data __UNUSED__, Evas *e __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__)
+{
+       Evas_Object *win = NULL;
+       struct Internal_Data *wd = NULL;
+
+       ret_if(!obj);
+
+       win = obj;
+
+       wd = evas_object_data_del(win, PRIVATE_DATA_KEY_DATA);
+       ret_if(!wd);
+
+       if (wd->rotation_event_handler) {
+               ecore_event_handler_del(wd->rotation_event_handler);
+       }
+       free(wd);
+#if 0
+       quickpanel_dbus_ticker_visibility_send(0);
+#endif
+}
+
+static void _rotate_cb(void *data, Evas_Object *obj, void *event)
+{
+       struct appdata *ad = data;
+       struct Internal_Data *wd = NULL;
+       Evas_Object *base = NULL;
+       int angle = 0;
+
+       ret_if(!obj);
+
+       wd =  evas_object_data_get(obj, PRIVATE_DATA_KEY_DATA);
+       ret_if(!wd);
+
+       base = evas_object_data_get(obj, DATA_KEY_BASE_RECT);
+       ret_if(!base);
+
+       angle = elm_win_rotation_get(obj);
+       angle %= 360;
+       if (angle < 0) {
+               angle += 360;
+       }
+       _D("Ticker angle is %d degree", angle);
+
+       switch (angle) {
+       case 0:
+       case 180:
+               evas_object_resize(base, ad->win.port_w, wd->h);
+               evas_object_size_hint_min_set(base, ad->win.port_w, wd->h);
+               evas_object_resize(obj, ad->win.port_w, wd->h);
+               evas_object_move(obj, 0, 0);
+               break;
+       case 90:
+               evas_object_resize(base, ad->win.land_w, wd->h);
+               evas_object_size_hint_min_set(base, ad->win.land_w, wd->h);
+               evas_object_resize(obj, ad->win.land_w, wd->h);
+               evas_object_move(obj, 0, 0);
+               break;
+       case 270:
+               evas_object_resize(base, ad->win.land_w, wd->h);
+               evas_object_size_hint_min_set(base, ad->win.land_w, wd->h);
+               evas_object_resize(obj, ad->win.land_w, wd->h);
+               evas_object_move(obj, ad->win.port_w - wd->h, 0);
+               break;
+       default:
+               _E("cannot reach here");
+       }
+
+       wd->angle = angle;
+}
+
+Evas_Object *noti_win_add(Evas_Object *parent, struct appdata *ad)
+{
+       Evas_Object *win = NULL;
+       struct Internal_Data *wd = NULL;
+
+       _D("A window is created for ticker notifications");
+       win = elm_win_add (NULL, "noti_win", ELM_WIN_NOTIFICATION);
+       retv_if(!win, NULL);
+
+       elm_win_alpha_set(win, EINA_FALSE);
+       elm_win_title_set(win, "noti_win");
+       elm_win_borderless_set(win, EINA_TRUE);
+       elm_win_autodel_set(win, EINA_TRUE);
+       //efl_util_set_notification_window_level(win, EFL_UTIL_NOTIFICATION_LEVEL_HIGH);
+       elm_win_prop_focus_skip_set(win, EINA_TRUE);
+       /* you can use evas_object_resize() and evas_object_move() by using elm_win_aux_hint_add().
+          elm_win_aux_hint_add() makes it possible to set the size and location of the notification window freely.
+          if you do not use elm_win_aux_hint_add(), notification window is displayed full screen. */
+//     elm_win_aux_hint_add(win, "wm.policy.win.user.geometry", "1");
+       evas_object_resize(win, ad->win.w, ad->win.h);
+       evas_object_move(win, 0, 0);
+       evas_object_show(win);
+
+       if (elm_win_wm_rotation_supported_get(win)) {
+               int rots[4] = { 0, 90, 180, 270 };
+               elm_win_wm_rotation_available_rotations_set(win, rots, 4);
+       }
+       evas_object_smart_callback_add(win, "wm,rotation,changed", _rotate_cb, ad);
+
+       wd = (struct Internal_Data *) calloc(1, sizeof(struct Internal_Data));
+       if (!wd) {
+               if (win) evas_object_del(win);
+               return NULL;
+       }
+       evas_object_data_set(win, PRIVATE_DATA_KEY_DATA, wd);
+
+       wd->angle = 0;
+       wd->w = ad->win.w;
+       wd->h = ad->win.h;
+
+       evas_object_smart_callback_add(win, "sub-object-del", _sub_del, NULL);
+       evas_object_event_callback_add(win, EVAS_CALLBACK_DEL, _noti_win_destroy, NULL);
+
+       return win;
+}
+
+void noti_win_content_set(Evas_Object *obj, Evas_Object *content)
+{
+       struct Internal_Data *wd;
+
+       ret_if (!obj);
+
+       wd = evas_object_data_get(obj, PRIVATE_DATA_KEY_DATA);
+       ret_if (!wd);
+
+       if (wd->content && content != NULL) {
+               evas_object_del(content);
+               content = NULL;
+       }
+
+       wd->content = content;
+       if (content) {
+               evas_object_show(wd->content);
+               evas_object_event_callback_add(wd->content, EVAS_CALLBACK_CHANGED_SIZE_HINTS, _content_changed_size_hints, obj);
+       }
+}
+/*End of file */
diff --git a/daemon/noti_win.h b/daemon/noti_win.h
new file mode 100644 (file)
index 0000000..94bdd30
--- /dev/null
@@ -0,0 +1,57 @@
+/*
+ * Copyright (c) 2009-2015 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+
+#ifndef __NOTI_WIN_H__
+#define __NOTI_WIN_H__
+
+#include <Evas.h>
+
+typedef enum _indicator_animated_icon_type {
+       INDICATOR_ANIMATED_ICON_NONE = -1,
+       INDICATOR_ANIMATED_ICON_DOWNLOAD = 1,
+       INDICATOR_ANIMATED_ICON_UPLOAD,
+       INDICATOR_ANIMATED_ICON_INSTALL,
+} indicator_animated_icon_type;
+
+typedef struct _QP_Module {
+       char *name;
+       /* func */
+       int (*init) (void *);
+       void (*init_job_cb) (void *);
+       int (*fini) (void *);
+       int (*suspend) (void *);
+       int (*resume) (void *);
+       int (*hib_enter) (void *);
+       int (*hib_leave) (void *);
+       void (*lang_changed) (void *);
+       void (*refresh) (void *);
+       unsigned int (*get_height) (void *);
+       void (*qp_opened) (void *);
+       void (*qp_closed) (void *);
+       void (*mw_enabled) (void *);
+       void (*mw_disabled) (void *);
+
+       /* do not modify this area */
+       /* internal data */
+       Eina_Bool state;
+} QP_Module;
+
+extern Evas_Object *noti_win_add(Evas_Object *parent, struct appdata *ad);
+extern void noti_win_content_set(Evas_Object *obj, Evas_Object *content);
+
+#endif
diff --git a/daemon/plmn.c b/daemon/plmn.c
new file mode 100644 (file)
index 0000000..4a94d5f
--- /dev/null
@@ -0,0 +1,232 @@
+/*
+ *  Indicator
+ *
+ * Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * 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 <vconf.h>
+
+#include "main.h"
+#include "common.h"
+#include "util.h"
+#include "icon.h"
+#include "box.h"
+#include "log.h"
+
+
+#define MSG_TIMEOUT 3.0
+
+int plmn_disp_type = 0;
+
+
+
+static void disp_handle(void *data,int status)
+{
+       struct appdata *ad = NULL;
+
+       ret_if(!data);
+
+       ad = (struct appdata *)data;
+
+       if(status == 1)
+       {
+               if(util_dynamic_state_get()==1)
+               {
+                       util_signal_emit(ad,"indicator.plmn2.show","indicator.prog");
+                       util_signal_emit(ad,"indicator.plmn.hide","indicator.prog");
+               }
+               else
+               {
+                       util_signal_emit(ad,"indicator.plmn.show","indicator.prog");
+                       util_signal_emit(ad,"indicator.plmn2.hide","indicator.prog");
+               }
+
+               if(plmn_disp_type==1)
+               {
+                       return;
+               }
+               plmn_disp_type = 1;
+
+               box_update_display(&(ad->win));
+
+       }
+       else
+       {
+               if(plmn_disp_type==0)
+               {
+                       return;
+               }
+               plmn_disp_type = 0;
+               if(util_dynamic_state_get()==1)
+                       util_signal_emit(ad,"indicator.plmn2.hide","indicator.prog");
+               else
+                       util_signal_emit(ad,"indicator.plmn.hide","indicator.prog");
+               box_update_display(&(ad->win));
+
+       }
+}
+
+
+
+static void disp_plmn(const char *plmn, void *data)
+{
+       if(!util_is_orf())
+       {
+               disp_handle(data,0);
+               return;
+       }
+
+       int disp = 0;
+       int plmn_val = 0;
+
+       retif(plmn == NULL, , "invalid plmn!");
+       retif(data == NULL, , "invalid plmn!");
+
+       vconf_get_int(VCONFKEY_TELEPHONY_SPN_DISP_CONDITION, &disp);
+
+       if(disp == VCONFKEY_TELEPHONY_DISP_INVALID || disp == VCONFKEY_TELEPHONY_DISP_SPN)
+       {
+               disp_handle(data,0);
+               return;
+       }
+
+       vconf_get_int(VCONFKEY_TELEPHONY_PLMN,&plmn_val);
+
+       if(plmn_val!=20801 && plmn_val!=20802)
+       {
+               disp_handle(data,0);
+               return;
+       }
+
+       if(strcmp(plmn,"OrangeF")!=0)
+       {
+               return;
+       }
+
+       disp_handle(data,1);
+}
+
+
+
+void indicator_plmn_display(void *data)
+{
+       char* text = NULL;
+       text = vconf_get_str(VCONFKEY_TELEPHONY_NWNAME);
+       if(text!=NULL)
+       {
+       }
+
+       disp_plmn(text,data);
+}
+
+
+
+static void indicator_plmn_nwname_cb(keynode_t *node, void *data)
+{
+       char* text = NULL;
+       text = vconf_get_str(VCONFKEY_TELEPHONY_NWNAME);
+       if(text!=NULL)
+       {
+               SECURE_DBG("indicator_plmn_nwname_cb %s",text);
+       }
+
+       disp_plmn(text,data);
+}
+
+
+
+static void indicator_plmn_disp_cond_cb(keynode_t *node, void *data)
+{
+       int ret = 0;
+       int status = 0;
+       ret = vconf_get_int(VCONFKEY_TELEPHONY_SPN_DISP_CONDITION,&status);
+       if(ret == -1)
+       {
+               return;
+       }
+
+       SECURE_DBG("indicator_plmn_disp_cond_cb %d",status);
+
+       indicator_plmn_display(data);
+}
+
+
+
+static void indicator_plmn_cb(keynode_t *node, void *data)
+{
+       int ret = 0;
+       int status = 0;
+       ret = vconf_get_int(VCONFKEY_TELEPHONY_PLMN,&status);
+       if(ret == -1)
+       {
+               return;
+       }
+
+       SECURE_DBG("indicator_plmn_cb %d",status);
+
+       indicator_plmn_display(data);
+}
+
+
+
+int indicator_plmn_init(void *data)
+{
+       int r = 0, ret = -1;
+
+       retif(data == NULL, FAIL, "Invalid parameter!");
+
+       ret = vconf_notify_key_changed(VCONFKEY_TELEPHONY_NWNAME,
+                                      indicator_plmn_nwname_cb, data);
+       if (ret != OK) {
+               r = ret;
+       }
+
+       ret = vconf_notify_key_changed(VCONFKEY_TELEPHONY_PLMN,
+                                      indicator_plmn_cb, data);
+       if (ret != OK) {
+               r = ret;
+       }
+
+       ret = vconf_notify_key_changed(VCONFKEY_TELEPHONY_SPN_DISP_CONDITION,
+                                      indicator_plmn_disp_cond_cb, data);
+       if (ret != OK) {
+               r = r | ret;
+       }
+
+       indicator_plmn_display(data);
+
+       return ret;
+}
+
+
+
+int indicator_plmn_fini(void)
+{
+       int ret;
+
+       ret = vconf_ignore_key_changed(VCONFKEY_TELEPHONY_NWNAME,
+                                      indicator_plmn_nwname_cb);
+
+       ret = vconf_ignore_key_changed(VCONFKEY_TELEPHONY_PLMN,
+                                              indicator_plmn_cb);
+
+       ret = vconf_ignore_key_changed(VCONFKEY_TELEPHONY_SPN_DISP_CONDITION,
+                                      indicator_plmn_disp_cond_cb);
+
+       return ret;
+}
diff --git a/daemon/plmn.h b/daemon/plmn.h
new file mode 100644 (file)
index 0000000..b9e37a7
--- /dev/null
@@ -0,0 +1,29 @@
+/*
+ *  Indicator
+ *
+ * Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+
+#ifndef __INDICATOR_PLMN_H_DEF__
+#define __INDICATOR_PLMN_H_DEF__
+
+int indicator_plmn_init(void *data);
+
+int indicator_plmn_fini(void);
+void indicator_plmn_display(void *data);
+
+#endif /* __INDICATOR_PLMN_H_DEF__ */
diff --git a/daemon/ticker.c b/daemon/ticker.c
new file mode 100644 (file)
index 0000000..25c09ce
--- /dev/null
@@ -0,0 +1,1167 @@
+/*
+ * Copyright (c) 2009-2015 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#include <Elementary.h>
+//#include <Ecore_X.h>
+#include <appcore-common.h>
+#include <vconf.h>
+#include <app_control.h>
+//#include <notification_internal.h>
+#include <feedback.h>
+#include <system_settings.h>
+#include <player.h>
+#include <sound_manager.h>
+#include <metadata_extractor.h>
+#include <notification.h>
+//#include <notification_text_domain.h>
+#include <pkgmgr-info.h>
+
+#include "common.h"
+#include "main.h"
+#include "noti_win.h"
+#include "util.h"
+#include "log.h"
+#include "indicator.h"
+#include "ticker.h"
+
+#define _SPACE ' '
+#define TICKERNOTI_DURATION    3
+#define QP_TICKER_DETAIL_DURATION 6
+#define QP_PLAY_DURATION_LIMIT 15
+#define TICKER_MSG_LEN                         1024
+#define TICKER_PHONE_NUMBER_MAX_LEN 40
+
+#define DEFAULT_ICON ICONDIR           "/quickpanel_icon_default.png"
+
+#define FORMAT_1LINE "<font_size=29><color=#F4F4F4FF>%s</color></font_size>"
+#define FORMAT_2LINE "<font_size=26><color=#BABABAFF>%s</color></font_size><br/><font_size=29><color=#F4F4F4FF>%s</color></font_size>"
+
+#define PRIVATE_DATA_KEY_APPDATA "pdka"
+#define PRIVATE_DATA_KEY_DETAIL "pdkd"
+#define PRIVATE_DATA_KEY_TICKERNOTI_EXECUTED "pdkte"
+#define PRIVATE_DATA_KEY_ANI_ICON_TYPE "pdkait"
+#define PRIVATE_DATA_KEY_ICON "pdki"
+#define PRIVATE_DATA_KEY_BOX "pdkb"
+#define PRIVATE_DATA_KEY_TICKER_INFO "pdkti"
+#define PRIVATE_DATA_KEY_NOTI "pdkn"
+
+#define PATH_DOWNLOAD "reserved://quickpanel/ani/downloading"
+#define PATH_UPLOAD "reserved://quickpanel/ani/uploading"
+#define PATH_INSTALL "reserved://quickpanel/ani/install"
+
+static void _create_tickernoti(notification_h noti, struct appdata *ad, ticker_info_s *ticker_info);
+static void _destroy_tickernoti(ticker_info_s *ticker_info);
+
+static inline int _is_text_exist(const char *text)
+{
+       if (text != NULL) {
+               if (strlen(text) > 0) {
+                       if (strcmp(text, "") != 0) {
+                               return 1;
+                       }
+               }
+       }
+
+       return 0;
+}
+
+static int _is_security_lockscreen_launched(void)
+{
+       int ret = 0;
+       int is_lock_launched = 0;
+
+       if ((ret = vconf_get_int(VCONFKEY_IDLE_LOCK_STATE, &is_lock_launched)) == 0) {
+               if (is_lock_launched == VCONFKEY_IDLE_LOCK && (ret = vconf_get_int(VCONFKEY_SETAPPL_SCREEN_LOCK_TYPE_INT, &is_lock_launched)) == 0) {
+               /*      if (is_lock_launched != SETTING_SCREEN_LOCK_TYPE_NONE && is_lock_launched != SETTING_SCREEN_LOCK_TYPE_SWIPE) {
+                               return 1;
+                       }*/
+               }
+       }
+
+       return 0;
+}
+
+static int _check_is_noti_from_email(char *pkgname)
+{
+       retv_if(!pkgname, 0);
+
+       if (strcmp(pkgname, VENDOR".email") == 0 || strcmp(pkgname, "/usr/bin/eas-engine") == 0) {
+               return 1;
+       } else {
+               return 0;
+       }
+}
+
+static int _check_is_noti_from_message(char *pkgname)
+{
+       retv_if(!pkgname, 0);
+
+       if (strcmp(pkgname, VENDOR".message") == 0 || strcmp(pkgname, "/usr/bin/msg-server") == 0) {
+               return 1;
+       } else {
+               return 0;
+       }
+}
+
+static int _check_is_noti_from_im(char *pkgname)
+{
+       retv_if(!pkgname, 0);
+
+       if (strcmp(pkgname, "xnq5eh9vop.ChatON") == 0) {
+               return 1;
+       } else {
+               return 0;
+       }
+}
+
+static notification_h _get_instant_latest_message_from_list(ticker_info_s *ticker_info)
+{
+       int count = 0;
+       notification_h noti = NULL;
+
+       count = eina_list_count(ticker_info->ticker_list);
+       if (count > 1) {
+               noti = eina_list_nth(ticker_info->ticker_list, count-1);
+       }
+       eina_list_free(ticker_info->ticker_list);
+       ticker_info->ticker_list = NULL;
+
+       return noti;
+}
+
+static int _ticker_check_ticker_off(notification_h noti)
+{
+       char *pkgname = NULL;
+
+       notification_get_pkgname(noti, &pkgname);
+
+       if (pkgname == NULL) return 1;  /* Ticker is not displaying. */
+
+       return 0;
+}
+
+static int _ticker_check_displaying_contents_off(notification_h noti)
+{
+       char *pkgname = NULL;
+       int ret = 0;
+       int boolval = 0;
+
+       notification_get_pkgname(noti, &pkgname);
+
+       if (pkgname == NULL) return 0;  /* Ticker is not displaying. */
+
+       /* FIXME : we have to confirm architecture for communiating with message or email */
+       if (_check_is_noti_from_message(pkgname) == 1) {
+               ret = vconf_get_bool(VCONFKEY_TICKER_NOTI_DISPLAY_CONTENT_MESSASGES, &boolval);
+               if (ret == 0 && boolval == 0) return 1;
+
+       } else if (_check_is_noti_from_email(pkgname) == 1) {
+               ret = vconf_get_bool(VCONFKEY_TICKER_NOTI_DISPLAY_CONTENT_EMAIL, &boolval);
+               if (ret == 0 && boolval == 0) return 1;
+
+       } else if (_check_is_noti_from_im(pkgname) == 1) {
+               ret = vconf_get_bool(VCONFKEY_TICKER_NOTI_DISPLAY_CONTENT_IM, &boolval);
+               if (ret == 0 && boolval == 0) return 1;
+
+       }
+
+       return 0;
+}
+
+static inline void __ticker_only_noti_del(notification_h noti)
+{
+       int applist = NOTIFICATION_DISPLAY_APP_ALL;
+
+       ret_if(!noti);
+
+       notification_get_display_applist(noti, &applist);
+       if ((applist & NOTIFICATION_DISPLAY_APP_TICKER) || (applist & NOTIFICATION_DISPLAY_APP_INDICATOR)) {
+               char *pkgname = NULL;
+               int priv_id = 0;
+
+               notification_get_pkgname(noti, &pkgname);
+               notification_get_id(noti, NULL, &priv_id);
+               notification_delete_by_priv_id(pkgname, NOTIFICATION_TYPE_NONE, priv_id);
+       }
+}
+
+static Eina_Bool _timeout_cb(void *data)
+{
+       ticker_info_s *ticker_info = NULL;
+       int h_page = 0;
+       int v_page = 0;
+       int h_last_page = 0;
+       int v_last_page = 0;
+
+       retv_if(!data, EINA_FALSE);
+
+       _D("message is timeout");
+
+       ticker_info = data;
+
+       /* If count is 1, self*/
+       if (ticker_info->ticker_list && eina_list_count(ticker_info->ticker_list) > 1) {
+               if (ticker_info->timer) {
+                       ecore_timer_del(ticker_info->timer);
+                       ticker_info->timer = NULL;
+               }
+               _destroy_tickernoti(ticker_info);
+
+               return ECORE_CALLBACK_CANCEL;
+       }
+
+       elm_scroller_last_page_get(ticker_info->scroller, &h_last_page, &v_last_page);
+       elm_scroller_current_page_get(ticker_info->scroller, &h_page, &v_page);
+
+       if (v_last_page > v_page) {
+               elm_scroller_page_bring_in(ticker_info->scroller, h_page, v_page + 1);
+
+               return ECORE_CALLBACK_RENEW;
+       }
+
+       if (ticker_info->timer) {
+               ecore_timer_del(ticker_info->timer);
+               ticker_info->timer = NULL;
+       }
+       _destroy_tickernoti(ticker_info);
+
+       return ECORE_CALLBACK_CANCEL;
+}
+
+static indicator_animated_icon_type _animated_type_get(const char *path)
+{
+       retv_if(path == NULL, INDICATOR_ANIMATED_ICON_NONE);
+
+       if (strncasecmp(path, PATH_DOWNLOAD, MIN(strlen(PATH_DOWNLOAD), strlen(path))) == 0) {
+               return INDICATOR_ANIMATED_ICON_DOWNLOAD;
+       } else if (strncasecmp(path, PATH_UPLOAD, MIN(strlen(PATH_UPLOAD), strlen(path))) == 0) {
+               return INDICATOR_ANIMATED_ICON_UPLOAD;
+       } else if (strncasecmp(path, PATH_INSTALL, MIN(strlen(PATH_INSTALL), strlen(path))) == 0) {
+               return INDICATOR_ANIMATED_ICON_INSTALL;
+       }
+
+       return INDICATOR_ANIMATED_ICON_NONE;
+}
+
+#define DEFAULT_EDJ EDJDIR"/ticker_default.edj"
+/* FIXME : evas_object_del(icon), we have to unset PRIVATE_DATA_KEY_ANI_ICON_TYPE) */
+static Evas_Object *_animated_icon_get(Evas_Object *parent, const char *path)
+{
+       indicator_animated_icon_type type = INDICATOR_ANIMATED_ICON_NONE;
+
+       const char *layout_icon = NULL;
+       Evas_Object *layout = NULL;
+
+       retv_if(!parent, NULL);
+       retv_if(!path, NULL);
+
+       type = _animated_type_get(path);
+
+       if (type == INDICATOR_ANIMATED_ICON_DOWNLOAD) {
+               layout_icon = "quickpanel/animated_icon_download";
+       } else if (type == INDICATOR_ANIMATED_ICON_UPLOAD) {
+               layout_icon = "quickpanel/animated_icon_upload";
+       } else if (type == INDICATOR_ANIMATED_ICON_INSTALL) {
+               layout_icon = "quickpanel/animated_icon_install";
+       } else {
+               return NULL;
+       }
+
+       layout = elm_layout_add(parent);
+       if (layout != NULL) {
+               elm_layout_file_set(layout, DEFAULT_EDJ, layout_icon);
+               evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+               evas_object_size_hint_align_set(layout, EVAS_HINT_FILL, EVAS_HINT_FILL);
+               evas_object_data_set(layout, PRIVATE_DATA_KEY_ANI_ICON_TYPE, (void *)type);
+               evas_object_show(layout);
+       }
+
+       return layout;
+}
+
+static char *_get_pkginfo_icon(const char *pkgid)
+{
+       int ret = 0;
+       char *icon_path = NULL;
+       char *icon_ret = NULL;
+       retif(pkgid == NULL, NULL, "invalid parameter");
+
+       pkgmgrinfo_appinfo_h appinfo_h = NULL;
+
+       ret = pkgmgrinfo_appinfo_get_appinfo(pkgid, &appinfo_h);
+       if (ret < 0) {
+               _E("pkgmgrinfo_appinfo_get_appinfo is failed %d", ret);
+               return NULL;
+       }
+
+       ret = pkgmgrinfo_appinfo_get_icon(appinfo_h, &icon_path);
+       if (ret < 0) {
+               _E("pkgmgrinfo_appinfo_get_icon is failed %d", ret);
+       }
+       if (icon_path) {
+               icon_ret = (char*)strdup(icon_path);
+       }
+       if (appinfo_h) {
+               pkgmgrinfo_appinfo_destroy_appinfo(appinfo_h);
+       }
+
+       return icon_ret;
+}
+
+static Evas_Object *_ticker_create_icon(Evas_Object *parent, notification_h noti)
+{
+       char *pkgname = NULL;
+       char *icon_path = NULL;
+       char *icon_default = NULL;
+       Evas_Object *icon = NULL;
+
+       retif(noti == NULL || parent == NULL, NULL, "Invalid parameter!");
+
+       notification_get_pkgname(noti, &pkgname);
+       if (NOTIFICATION_ERROR_NONE != notification_get_image(noti, NOTIFICATION_IMAGE_TYPE_ICON, &icon_path)) {
+               _E("Cannot get image path");
+               return NULL;
+       }
+       if (icon_path) {
+               icon = _animated_icon_get(parent, icon_path);
+               if (icon == NULL) {
+                       icon = elm_image_add(parent);
+                       if (icon_path == NULL
+                                       || (elm_image_file_set(icon, icon_path, NULL) == EINA_FALSE)) {
+                               icon_default = _get_pkginfo_icon(pkgname);
+                               if (icon_default != NULL) {
+                                       elm_image_file_set(icon, icon_default, NULL);
+                                       elm_image_resizable_set(icon, EINA_TRUE, EINA_TRUE);
+                                       free(icon_default);
+                               } else {
+                                       elm_image_file_set(icon, DEFAULT_ICON, NULL);
+                                       elm_image_resizable_set(icon, EINA_TRUE, EINA_TRUE);
+                               }
+                       }
+               }
+       }
+
+       return icon;
+}
+
+static inline char *_get_text(notification_h noti, notification_text_type_e text_type)
+{
+       char *text = NULL;
+
+       notification_get_text(noti, text_type, &text);
+       if (text) {
+               return elm_entry_utf8_to_markup(text);
+       }
+
+       return NULL;
+}
+
+static inline void _strbuf_add(Eina_Strbuf *str_buf, char *text, const char *delimiter)
+{
+       if (text != NULL) {
+               if (strlen(text) > 0) {
+                       if (delimiter != NULL) {
+                               eina_strbuf_append(str_buf, delimiter);
+                       }
+                       eina_strbuf_append(str_buf, text);
+               }
+       }
+}
+
+static int _is_phone_number(const char *address)
+{
+       int digit_count = 0;
+       retif(address == NULL, 0, "address is NULL");
+
+       int addr_len = 0;
+       addr_len = strlen(address);
+
+       if (addr_len == 0) {
+               return 0;
+       }
+
+       /*  length check phone address should be longer than 2 and shorter than 40 */
+       if (addr_len > 2 && addr_len <= TICKER_PHONE_NUMBER_MAX_LEN) {
+               const char *pszOneChar = address;
+
+               while (*pszOneChar) {
+                       if (isdigit(*pszOneChar)) {
+                               digit_count++;
+                       }
+
+                       ++pszOneChar;
+               }
+
+               pszOneChar = address;
+
+               if (*pszOneChar == '+') {
+                       ++pszOneChar;
+               }
+
+               while (*pszOneChar) {
+                       if (!isdigit(*pszOneChar)
+                                       && (*pszOneChar != '*') && (*pszOneChar != '#')
+                                       && (*pszOneChar != ' ')
+                                       && !((*pszOneChar == '-') && digit_count >= 7)) {
+                               return 0;
+                       }
+
+                       ++pszOneChar;
+               }
+
+               return 1;
+       } else {
+               DBG("invalid address length [%d]", addr_len);
+               return 0;
+       }
+}
+
+static void _char_set(char *dst, char s, int index, int size)
+{
+       if (index < size) {
+               *(dst + index) = s;
+       }
+}
+
+static void _make_phone_number_tts(char *dst, const char *src, int size)
+{
+       retif(dst == NULL, , "invalid argument");
+       retif(src == NULL, , "invalid argument");
+
+       int no_op = 0;
+       int i = 0, j = 0, text_len = 0;
+
+       text_len = strlen(src);
+
+       for (i = 0, j= 0; i < text_len; i++) {
+               if (no_op == 1) {
+                       _char_set(dst, *(src + i), j++, size);
+               } else {
+                       if (isdigit(*(src + i))) {
+                               if (i + 1 < text_len) {
+                                       if (*(src + i + 1) == '-' || *(src + i + 1) == _SPACE) {
+                                               _char_set(dst, *(src + i), j++, size);
+                                       } else {
+                                               _char_set(dst, *(src + i), j++, size);
+                                               _char_set(dst, _SPACE, j++, size);
+                                       }
+                               } else {
+                                       _char_set(dst, *(src + i), j++, size);
+                                       _char_set(dst, _SPACE, j++, size);
+                               }
+                       } else if (*(src + i) == '-') {
+                               no_op = 1;
+                               _char_set(dst, *(src + i), j++, size);
+                       } else {
+                               _char_set(dst, *(src + i), j++, size);
+                       }
+               }
+       }
+}
+
+static inline void _check_and_add_to_buffer(Eina_Strbuf *str_buf, char *text, int is_check_phonenumber)
+{
+       char buf_number[TICKER_PHONE_NUMBER_MAX_LEN * 2] = { 0, };
+
+       if (text != NULL) {
+               if (strlen(text) > 0) {
+                       if (_is_phone_number(text) && is_check_phonenumber) {
+                               _make_phone_number_tts(buf_number, text,
+                                               (TICKER_PHONE_NUMBER_MAX_LEN * 2) - 1);
+                               eina_strbuf_append(str_buf, buf_number);
+                       } else {
+                               eina_strbuf_append(str_buf, text);
+                       }
+                       eina_strbuf_append_char(str_buf, '\n');
+               }
+       }
+}
+
+static char *_ticker_get_label_layout_default(notification_h noti, int is_screenreader, char **str_line1, char **str_line2)
+{
+       int len = 0;
+       int num_line = 0;
+       char *domain = NULL;
+       char *dir = NULL;
+       char *title_utf8 = NULL;
+       char *content_utf8 = NULL;
+       char *info1_utf8 = NULL;
+       char *info1_sub_utf8 = NULL;
+       char *info2_utf8 = NULL;
+       char *info2_sub_utf8 = NULL;
+       char *event_count_utf8 = NULL;
+       const char *tmp = NULL;
+       Eina_Strbuf *line1 = NULL;
+       Eina_Strbuf *line2 = NULL;
+       char buf[TICKER_MSG_LEN] = { 0, };
+
+       retif(noti == NULL, NULL, "Invalid parameter!");
+
+       notification_get_text_domain(noti, &domain, &dir);
+       if (domain != NULL && dir != NULL) {
+               bindtextdomain(domain, dir);
+       }
+
+       title_utf8 = _get_text(noti, NOTIFICATION_TEXT_TYPE_TITLE);
+       if (_ticker_check_displaying_contents_off(noti) == 1) {
+               content_utf8 = _get_text(noti, NOTIFICATION_TEXT_TYPE_CONTENT_FOR_DISPLAY_OPTION_IS_OFF);
+       } else {
+               content_utf8 = _get_text(noti, NOTIFICATION_TEXT_TYPE_CONTENT);
+       }
+       info1_utf8 = _get_text(noti, NOTIFICATION_TEXT_TYPE_INFO_1);
+       info1_sub_utf8 = _get_text(noti, NOTIFICATION_TEXT_TYPE_INFO_SUB_1);
+       info2_utf8 = _get_text(noti, NOTIFICATION_TEXT_TYPE_INFO_2);
+       info2_sub_utf8 = _get_text(noti, NOTIFICATION_TEXT_TYPE_INFO_SUB_2);
+
+       if (is_screenreader == 0) {
+               line1 = eina_strbuf_new();
+               line2 = eina_strbuf_new();
+
+               if (line1 != NULL && line2 != NULL) {
+                       if (_is_text_exist(title_utf8) && (_is_text_exist(content_utf8)
+                                       || _is_text_exist(event_count_utf8))) {
+                               _strbuf_add(line1, title_utf8, NULL);
+                               _strbuf_add(line2, content_utf8, NULL);
+                               if (_is_text_exist(content_utf8)) {
+                                       _strbuf_add(line2, event_count_utf8, " ");
+                               } else {
+                                       _strbuf_add(line2, event_count_utf8, "");
+                               }
+                               num_line = 2;
+                       } else if (_is_text_exist(info1_utf8) && (_is_text_exist(content_utf8)
+                                       || _is_text_exist(event_count_utf8))) {
+                               _strbuf_add(line1, content_utf8, NULL);
+                               _strbuf_add(line1, event_count_utf8, " ");
+                               _strbuf_add(line2, info1_utf8, NULL);
+                               _strbuf_add(line2, info1_sub_utf8, " ");
+                               num_line = 2;
+                       } else if (_is_text_exist(info1_utf8) && _is_text_exist(info2_utf8)) {
+                               _strbuf_add(line1, info1_utf8, NULL);
+                               _strbuf_add(line1, info1_sub_utf8, " ");
+                               _strbuf_add(line2, info2_utf8, NULL);
+                               _strbuf_add(line2, info2_sub_utf8, " ");
+                               num_line = 2;
+                       } else if (_is_text_exist(title_utf8)) {
+                               _strbuf_add(line1, title_utf8, NULL);
+                               num_line = 1;
+                       } else if (_is_text_exist(content_utf8)) {
+                               _strbuf_add(line1, content_utf8, NULL);
+                               num_line = 1;
+                       }
+
+                       if (num_line == 2) {
+                               tmp = eina_strbuf_string_get(line1);
+                               if (str_line1 != NULL && tmp != NULL) {
+                                       *str_line1 = strdup(tmp);
+                               }
+
+                               tmp = eina_strbuf_string_get(line2);
+                               if (str_line2 != NULL && tmp != NULL) {
+                                       *str_line2 = strdup(tmp);
+                               }
+                       } else {
+                               tmp = eina_strbuf_string_get(line1);
+                               if (str_line1 != NULL && tmp != NULL) {
+                                       *str_line1 = strdup(tmp);
+                               }
+                       }
+
+                       eina_strbuf_free(line1);
+                       eina_strbuf_free(line2);
+               } else {
+                       _E("failed to allocate string buffer");
+               }
+       } else {
+               if (title_utf8 == NULL
+                               && event_count_utf8 == NULL
+                               && content_utf8 == NULL
+                               && info1_utf8 == NULL
+                               && info1_sub_utf8 == NULL
+                               && info2_utf8 == NULL
+                               && info2_sub_utf8 == NULL) {
+                       len = 0;
+               } else {
+                       Eina_Strbuf *strbuf = eina_strbuf_new();
+                       if (strbuf != NULL) {
+                               eina_strbuf_append(strbuf, _("IDS_QP_BUTTON_NOTIFICATION"));
+                               eina_strbuf_append_char(strbuf, '\n');
+                               _check_and_add_to_buffer(strbuf, title_utf8, 1);
+                               _check_and_add_to_buffer(strbuf, event_count_utf8, 0);
+                               _check_and_add_to_buffer(strbuf, content_utf8, 1);
+                               _check_and_add_to_buffer(strbuf, info1_utf8, 1);
+                               _check_and_add_to_buffer(strbuf, info1_sub_utf8, 1);
+                               _check_and_add_to_buffer(strbuf, info2_utf8, 1);
+                               _check_and_add_to_buffer(strbuf, info2_sub_utf8, 1);
+
+                               if (eina_strbuf_length_get(strbuf) > 0) {
+                                       len = snprintf(buf, sizeof(buf) - 1, "%s", eina_strbuf_string_get(strbuf));
+                               }
+                               eina_strbuf_free(strbuf);
+                       }
+               }
+       }
+
+       if (title_utf8) {
+               free(title_utf8);
+       }
+
+       if (content_utf8) {
+               free(content_utf8);
+       }
+
+//     if (event_count_utf8) {
+//             free(event_count_utf8);
+//     }
+
+       if (info1_utf8) {
+               free(info1_utf8);
+       }
+       if (info1_sub_utf8) {
+               free(info1_sub_utf8);
+       }
+       if (info2_utf8) {
+               free(info2_utf8);
+       }
+       if (info2_sub_utf8) {
+               free(info2_sub_utf8);
+       }
+       if (len > 0) {
+               return strdup(buf);
+       }
+       return NULL;
+}
+
+static char *_ticker_get_label_layout_single(notification_h noti, int is_screenreader, char **str_line1, char **str_line2)
+{
+       int num_line = 0;
+       int len = 0;
+       char *domain = NULL;
+       char *dir = NULL;
+       char *title_utf8 = NULL;
+       char *content_utf8 = NULL;
+       char *info1_utf8 = NULL;
+       char *info1_sub_utf8 = NULL;
+       char *info2_utf8 = NULL;
+       char *info2_sub_utf8 = NULL;
+       Eina_Strbuf *line1 = NULL;
+       Eina_Strbuf *line2 = NULL;
+       const char *tmp = NULL;
+       char buf[TICKER_MSG_LEN] = { 0, };
+
+       retif(noti == NULL, NULL, "Invalid parameter!");
+
+       notification_get_text_domain(noti, &domain, &dir);
+       if (domain != NULL && dir != NULL)
+               bindtextdomain(domain, dir);
+
+       title_utf8 = _get_text(noti, NOTIFICATION_TEXT_TYPE_TITLE);
+       if (_ticker_check_displaying_contents_off(noti) == 1) {
+               content_utf8 = _get_text(noti, NOTIFICATION_TEXT_TYPE_CONTENT_FOR_DISPLAY_OPTION_IS_OFF);
+       } else {
+               content_utf8 = _get_text(noti, NOTIFICATION_TEXT_TYPE_CONTENT);
+       }
+       info1_utf8 = _get_text(noti, NOTIFICATION_TEXT_TYPE_INFO_1);
+       info1_sub_utf8 = _get_text(noti, NOTIFICATION_TEXT_TYPE_INFO_SUB_1);
+       info2_utf8 = _get_text(noti, NOTIFICATION_TEXT_TYPE_INFO_2);
+       info2_sub_utf8 = _get_text(noti, NOTIFICATION_TEXT_TYPE_INFO_SUB_2);
+
+       if (is_screenreader == 0) {
+               line1 = eina_strbuf_new();
+               line2 = eina_strbuf_new();
+
+               if (line1 != NULL && line2 != NULL) {
+                       if (_is_text_exist(info1_utf8) && _is_text_exist(content_utf8)) {
+                               _strbuf_add(line1, content_utf8, NULL);
+                               _strbuf_add(line2, info1_utf8, NULL);
+                               _strbuf_add(line2, info1_sub_utf8, " ");
+                               num_line = 2;
+                       } else if (_is_text_exist(title_utf8) && _is_text_exist(content_utf8)) {
+                               _strbuf_add(line1, title_utf8, NULL);
+                               _strbuf_add(line2, content_utf8, NULL);
+                               num_line = 2;
+                       } else if (_is_text_exist(title_utf8)) {
+                               _strbuf_add(line1, title_utf8, NULL);
+                               num_line = 1;
+                       } else if (_is_text_exist(content_utf8)) {
+                               _strbuf_add(line1, content_utf8, NULL);
+                               num_line = 1;
+                       }
+
+                       if (num_line == 2) {
+                               tmp = eina_strbuf_string_get(line1);
+                               if (str_line1 != NULL && tmp != NULL) {
+                                       *str_line1 = strdup(tmp);
+                               }
+
+                               tmp = eina_strbuf_string_get(line2);
+                               if (str_line2 != NULL && tmp != NULL) {
+                                       *str_line2 = strdup(tmp);
+                               }
+                       } else {
+                               tmp = eina_strbuf_string_get(line1);
+                               if (str_line1 != NULL && tmp != NULL) {
+                                       *str_line1 = strdup(tmp);
+                               }
+                       }
+
+                       eina_strbuf_free(line1);
+                       eina_strbuf_free(line2);
+               } else {
+                       _E("failed to allocate string buffer");
+               }
+       } else {
+               if (title_utf8 == NULL
+                               && content_utf8 == NULL
+                               && info1_utf8 == NULL
+                               && info1_sub_utf8 == NULL) {
+                       len = 0;
+               } else {
+                       Eina_Strbuf *strbuf = eina_strbuf_new();
+                       if (strbuf != NULL) {
+                               eina_strbuf_append(strbuf, _("IDS_QP_BUTTON_NOTIFICATION"));
+                               eina_strbuf_append_char(strbuf, '\n');
+                               if (info1_utf8 == NULL) {
+                                       _check_and_add_to_buffer(strbuf, title_utf8, 1);
+                                       _check_and_add_to_buffer(strbuf, content_utf8, 1);
+                               } else {
+                                       if (content_utf8 == NULL) {
+                                               _check_and_add_to_buffer(strbuf, title_utf8, 1);
+                                       }
+                                       _check_and_add_to_buffer(strbuf, content_utf8, 1);
+                                       _check_and_add_to_buffer(strbuf, info1_utf8, 1);
+                                       _check_and_add_to_buffer(strbuf, info1_sub_utf8, 1);
+                               }
+
+                               if (eina_strbuf_length_get(strbuf) > 0) {
+                                       len = snprintf(buf, sizeof(buf) - 1, "%s", eina_strbuf_string_get(strbuf));
+                               }
+                               eina_strbuf_free(strbuf);
+                       }
+               }
+       }
+
+       if (title_utf8) {
+               free(title_utf8);
+       }
+       if (content_utf8) {
+               free(content_utf8);
+       }
+       if (info1_utf8) {
+               free(info1_utf8);
+       }
+       if (info1_sub_utf8) {
+               free(info1_sub_utf8);
+       }
+       if (info2_utf8) {
+               free(info2_utf8);
+       }
+       if (info2_sub_utf8) {
+               free(info2_sub_utf8);
+       }
+       if (len > 0) {
+               return strdup(buf);
+       }
+       return NULL;
+}
+
+static char *_ticker_get_text(notification_h noti, int is_screenreader, char **line1, char **line2)
+{
+       char *result = NULL;
+       notification_ly_type_e layout;
+
+       retif(noti == NULL, NULL, "Invalid parameter!");
+
+       notification_get_layout(noti, &layout);
+
+       if (_ticker_check_displaying_contents_off(noti) == 1) {
+               result = _ticker_get_label_layout_default(noti, is_screenreader, line1, line2);
+       } else if (layout == NOTIFICATION_LY_NOTI_EVENT_SINGLE) {
+               result = _ticker_get_label_layout_single(noti, is_screenreader, line1, line2);
+       } else {
+               result = _ticker_get_label_layout_default(noti, is_screenreader, line1, line2);
+       }
+
+       return result;
+}
+
+static void _noti_hide_cb(void *data, Evas_Object *obj, const char *emission, const char *source)
+{
+       ticker_info_s *ticker_info = NULL;
+
+       ret_if(!data);
+
+       ticker_info = data;
+
+       if (ticker_info->timer) {
+               ecore_timer_del(ticker_info->timer);
+               ticker_info->timer = NULL;
+       }
+
+       _destroy_tickernoti(ticker_info);
+}
+
+static void _mouse_down_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+       _noti_hide_cb(data, NULL, NULL, NULL);
+}
+
+#define TICKER_EDJ EDJDIR"/ticker.edj"
+static void _create_tickernoti(notification_h noti, struct appdata *ad, ticker_info_s *ticker_info)
+{
+       Eina_Bool ret = EINA_FALSE;
+       Evas_Object *detail = NULL;
+       Evas_Object *base = NULL;
+       Evas_Object *icon = NULL;
+       Evas_Object *box = NULL;
+       Evas_Object *textblock = NULL;
+       char *line1 = NULL;
+       char *line2 = NULL;
+       int noti_height = 0;
+       int *is_ticker_executed = NULL;
+
+       ret_if(!ad);
+       ret_if(!ticker_info);
+
+       if (ticker_info->win != NULL) {
+               _E("ticker notification exists");
+               return;
+       }
+
+       _D("create ticker notification");
+
+       /* create window */
+       ticker_info->win = noti_win_add(NULL, ad);
+       ret_if(!ticker_info->win);
+       evas_object_data_set(ticker_info->win, PRIVATE_DATA_KEY_APPDATA, ad);
+       evas_object_data_set(ticker_info->win, PRIVATE_DATA_KEY_NOTI, noti);
+
+       /* create layout */
+       detail = elm_layout_add(ticker_info->win);
+       goto_if(!detail, ERROR);
+
+       ret = elm_layout_file_set(detail, TICKER_EDJ, "quickpanel/tickernoti/normal");
+       goto_if(ret == EINA_FALSE, ERROR);
+
+       elm_object_signal_callback_add(detail, "request,hide", "", _noti_hide_cb, ticker_info);
+       evas_object_event_callback_add(detail, EVAS_CALLBACK_MOUSE_DOWN, _mouse_down_cb, ticker_info);
+       evas_object_size_hint_min_set(detail, 1, noti_height);
+       noti_win_content_set(ticker_info->win, detail);
+       evas_object_data_set(ticker_info->win, PRIVATE_DATA_KEY_DETAIL, detail);
+
+       /* create base rectangle */
+       base = evas_object_rectangle_add(evas_object_evas_get(detail));
+       goto_if(!base, ERROR);
+       /* FIXME */
+       evas_object_color_set(base, 0, 0, 0, 0);
+       evas_object_resize(base, ad->win.w, ad->win.h);
+       evas_object_size_hint_min_set(base, ad->win.w, ad->win.h);
+       evas_object_show(base);
+       elm_object_part_content_set(detail, "base", base);
+       evas_object_data_set(ticker_info->win, DATA_KEY_BASE_RECT, base);
+
+       /* create icon */
+       icon = _ticker_create_icon(detail, noti);
+       if (icon) elm_object_part_content_set(detail, "icon", icon);
+       evas_object_data_set(ticker_info->win, PRIVATE_DATA_KEY_ICON, icon);
+
+       /* create scroller */
+       ticker_info->scroller = elm_scroller_add(detail);
+       goto_if(!ticker_info->scroller, ERROR);
+
+       elm_scroller_policy_set(ticker_info->scroller, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_OFF);
+       elm_scroller_page_size_set(ticker_info->scroller, 434, INDICATOR_HEIGHT - 5);
+       elm_scroller_movement_block_set(ticker_info->scroller, ELM_SCROLLER_MOVEMENT_BLOCK_VERTICAL|ELM_SCROLLER_MOVEMENT_BLOCK_HORIZONTAL);
+       elm_object_part_content_set(detail, "text_rect", ticker_info->scroller);
+
+       /* create box */
+       box = elm_box_add(ticker_info->scroller);
+       goto_if(!box, ERROR);
+
+       elm_object_content_set(ticker_info->scroller, box);
+       evas_object_show(box);
+       evas_object_data_set(ticker_info->win, PRIVATE_DATA_KEY_BOX, box);
+
+       /* create textblock */
+       textblock = elm_layout_add(box);
+       goto_if(!textblock, ERROR);
+
+       ret = elm_layout_file_set(textblock, TICKER_EDJ, "quickpanel/tickernoti/text");
+       goto_if(ret == EINA_FALSE, ERROR);
+
+       evas_object_show(textblock);
+
+       elm_box_pack_end(box, textblock);
+
+       /* get noti text */
+       _ticker_get_text(noti, 0, &line1, &line2);
+
+       if (line1 == NULL) {
+               if (line2 != NULL) {
+                       elm_object_part_text_set(textblock, "elm.text", line2);
+                       free(line2);
+               }
+       } else if (line2 == NULL) {
+               elm_object_part_text_set(textblock, "elm.text", line1);
+               free(line1);
+       } else {
+               Eina_Strbuf *buffer = eina_strbuf_new();
+
+               eina_strbuf_append(buffer, line1);
+               eina_strbuf_append(buffer, "<br/>");
+               eina_strbuf_append(buffer, line2);
+
+               elm_object_part_text_set(textblock, "elm.text", eina_strbuf_string_get(buffer));
+
+               free(line1);
+               free(line2);
+               eina_strbuf_free(buffer);
+       }
+       evas_object_data_set(ticker_info->win, DATA_KEY_TICKER_TEXT, textblock);
+
+       is_ticker_executed = (int *)malloc(sizeof(int));
+       if (is_ticker_executed != NULL) {
+               *is_ticker_executed = 0;
+               evas_object_data_set(detail, PRIVATE_DATA_KEY_TICKERNOTI_EXECUTED, is_ticker_executed);
+       }
+
+       /* When ticker noti is displayed, indicator window has to be hidden. */
+       if (ad) util_signal_emit_by_win(&ad->win, "message.show.noeffect", "indicator.prog");
+
+       ticker_info->timer = ecore_timer_add(TICKERNOTI_DURATION, _timeout_cb, ticker_info);
+
+       evas_object_data_set(ad->win.win, PRIVATE_DATA_KEY_TICKER_INFO, ticker_info);
+
+       return;
+
+ERROR:
+       if (ticker_info->win) _destroy_tickernoti(ticker_info);
+
+       return;
+}
+
+static void _destroy_tickernoti(ticker_info_s *ticker_info)
+{
+       struct appdata *ad = NULL;
+       Evas_Object *textblock = NULL;
+       Evas_Object *box = NULL;
+       Evas_Object *icon = NULL;
+       Evas_Object *detail = NULL;
+       Evas_Object *base = NULL;
+       int *is_ticker_executed = NULL;
+       notification_h noti;
+
+       ret_if(!ticker_info);
+       ret_if(!ticker_info->win);
+
+       _D("destroy ticker notification");
+
+       ad = evas_object_data_del(ticker_info->win, PRIVATE_DATA_KEY_APPDATA);
+       /* When ticker noti is hidden, indicator window has to be displayed. */
+       if (ad) util_signal_emit_by_win(&ad->win, "message.hide", "indicator.prog");
+
+       if (ticker_info->timer) {
+               ecore_timer_del(ticker_info->timer);
+               ticker_info->timer = NULL;
+       }
+
+       textblock = evas_object_data_del(ticker_info->win, DATA_KEY_TICKER_TEXT);
+       if (textblock) evas_object_del(textblock);
+
+       box = evas_object_data_del(ticker_info->win, PRIVATE_DATA_KEY_BOX);
+       if (box) evas_object_del(box);
+
+       if (ticker_info->scroller) ticker_info->scroller = NULL;
+
+       icon = evas_object_data_del(ticker_info->win, PRIVATE_DATA_KEY_ICON);
+       if (icon) evas_object_del(icon);
+
+       base = evas_object_data_del(ticker_info->win, DATA_KEY_BASE_RECT);
+       if (base) evas_object_del(base);
+
+       detail = evas_object_data_del(ticker_info->win, PRIVATE_DATA_KEY_DETAIL);
+       if (detail) {
+               is_ticker_executed = evas_object_data_del(detail, PRIVATE_DATA_KEY_TICKERNOTI_EXECUTED);
+               if (is_ticker_executed != NULL) {
+                       free(is_ticker_executed);
+               }
+               evas_object_del(detail);
+       }
+
+       evas_object_del(ticker_info->win);
+       ticker_info->win = NULL;
+
+       noti = evas_object_data_del(ticker_info->win, PRIVATE_DATA_KEY_NOTI);
+       if (noti) {
+               __ticker_only_noti_del(noti);
+               notification_free(noti);
+       }
+
+       if (ticker_info->ticker_list) {
+               noti = _get_instant_latest_message_from_list(ticker_info);
+               if (noti) {
+                       _create_tickernoti(noti, ad, ticker_info);
+               }
+       }
+}
+
+static void _ticker_noti_detailed_changed_cb(void *data, notification_type_e type, notification_op *op_list, int num_op)
+{
+       notification_h noti = NULL;
+       notification_h noti_from_master = NULL;
+       ticker_info_s *ticker_info = NULL;
+       int flags = 0;
+       int applist = NOTIFICATION_DISPLAY_APP_ALL;
+       int ret = 0;
+       int op_type = 0;
+       int priv_id = 0;
+
+       ret_if(!op_list);
+
+       _D("_ticker_noti_changed_cb");
+
+       ticker_info = calloc(1, sizeof(ticker_info_s));
+       ret_if(!ticker_info);
+
+       if (num_op == 1) {
+               notification_op_get_data(op_list, NOTIFICATION_OP_DATA_TYPE, &op_type);
+               notification_op_get_data(op_list, NOTIFICATION_OP_DATA_PRIV_ID, &priv_id);
+               notification_op_get_data(op_list, NOTIFICATION_OP_DATA_NOTI, &noti_from_master);
+               DBG("op_type:%d", op_type);
+               DBG("op_priv_id:%d", priv_id);
+               DBG("noti:%p", noti_from_master);
+
+               if (op_type != NOTIFICATION_OP_INSERT &&
+                               op_type != NOTIFICATION_OP_UPDATE) {
+                       return;
+               }
+               if (noti_from_master == NULL) {
+                       _E("failed to get a notification from master");
+                       return;
+               }
+               if (notification_clone(noti_from_master, &noti) != NOTIFICATION_ERROR_NONE) {
+                       _E("failed to create a cloned notification");
+                       return;
+               }
+#ifdef QP_EMERGENCY_MODE_ENABLE
+               if (quickpanel_emergency_mode_is_on()) {
+                       if (quickpanel_emergency_mode_notification_filter(noti, 1)) {
+                               DBG("notification filtered");
+                               notification_free(noti);
+                               return;
+                       }
+               }
+#endif
+       }
+
+       ret_if(!noti);
+
+       notification_get_display_applist(noti, &applist);
+       if (!(applist & NOTIFICATION_DISPLAY_APP_TICKER
+                               || applist & NOTIFICATION_DISPLAY_APP_INDICATOR)) {
+               DBG("displaying ticker option is off");
+               notification_free(noti);
+               return;
+       }
+
+       /* Check setting's event notification */
+       ret = _ticker_check_ticker_off(noti);
+       if (ret == 1) {
+               DBG("Disabled tickernoti ret : %d", ret);
+               /* delete temporary here only ticker noti display item */
+               __ticker_only_noti_del(noti);
+               notification_free(noti);
+
+               return;
+       }
+
+       /* Skip if previous ticker is still shown */
+/*
+       if (ticker_info->win != NULL) {
+               DBG("delete ticker noti");
+               _destroy_tickernoti();
+               ticker_info->win = NULL;
+       }
+*/
+
+       /* Check tickernoti flag */
+       notification_get_property(noti, &flags);
+
+       if (flags & NOTIFICATION_PROP_DISABLE_TICKERNOTI) {
+               DBG("NOTIFICATION_PROP_DISABLE_TICKERNOTI");
+               __ticker_only_noti_del(noti);
+               notification_free(noti);
+       } else if (applist & NOTIFICATION_DISPLAY_APP_TICKER
+                       || applist & NOTIFICATION_DISPLAY_APP_INDICATOR) {
+               if (_is_security_lockscreen_launched()) {
+                       _E("lockscreen or sview launched, creating a ticker canceled");
+                       notification_free(noti);
+                       return;
+               }
+
+               ticker_info->ticker_list = eina_list_append(ticker_info->ticker_list, noti);
+               /* wait when win is not NULL */
+               if (ticker_info->win == NULL) {
+                       _create_tickernoti(noti, data, ticker_info);
+               }
+               if (ticker_info->win == NULL) {
+                       _E("Fail to create tickernoti");
+                       __ticker_only_noti_del(noti);
+                       notification_free(noti);
+                       return;
+               }
+       }
+}
+
+static Eina_Bool _tickernoti_callback_register_idler_cb(void *data)
+{
+       retv_if(!data, EINA_FALSE);
+
+       notification_register_detailed_changed_cb(_ticker_noti_detailed_changed_cb, data);
+
+       return EINA_FALSE;
+}
+
+int ticker_init(void *data)
+{
+       /* data is ad */
+       /* Register notification changed cb */
+       ecore_idler_add(_tickernoti_callback_register_idler_cb, data);
+
+       return INDICATOR_ERROR_NONE;
+}
+
+int ticker_fini(void *data)
+{
+       struct appdata *ad = NULL;
+       ticker_info_s *ticker_info = NULL;
+
+       retv_if(!data, 0);
+
+       ad = data;
+
+       ticker_info = evas_object_data_del(ad->win.win, PRIVATE_DATA_KEY_TICKER_INFO);
+       retv_if(!ticker_info, 0);
+
+       if (ticker_info->timer) {
+               ecore_timer_del(ticker_info->timer);
+               ticker_info->timer = NULL;
+       }
+
+       return INDICATOR_ERROR_NONE;
+}
+
+/* End of file */
diff --git a/daemon/ticker.h b/daemon/ticker.h
new file mode 100644 (file)
index 0000000..7a2da2a
--- /dev/null
@@ -0,0 +1,34 @@
+/*
+ *  Indicator
+ *
+ * Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+
+#ifndef __INDICATOR_TICKER_H__
+#define __INDICATOR_TICKER_H__
+
+typedef struct ticker {
+       Evas_Object *win;
+       Evas_Object *scroller;
+       Ecore_Timer *timer;
+       Eina_List *ticker_list;
+} ticker_info_s;
+
+extern int ticker_init(void *data);
+extern int ticker_fini(void *data);
+
+#endif
diff --git a/daemon/tts.c b/daemon/tts.c
new file mode 100644 (file)
index 0000000..7ee88c0
--- /dev/null
@@ -0,0 +1,375 @@
+/*
+ *  Indicator
+ *
+ * Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * 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.
+ *
+ */
+
+
+
+#ifdef _SUPPORT_SCREEN_READER2
+
+#include <tts.h>
+#include <tts_setting.h>
+#include <vconf.h>
+#include <vconf-keys.h>
+#include "main.h"
+#include "common.h"
+#include "tts.h"
+
+static void _tts_init(void);
+static void _tts_fini(void);
+
+static struct _s_info {
+       tts_h tts_handler;
+       Eina_List *list;
+} s_info = {
+       .tts_handler = NULL,
+       .list = NULL,
+};
+
+typedef struct _QP_TTS {
+       int id;
+       int done;
+       char *message;
+} QP_TTS_T;
+
+
+
+static QP_TTS_T * _tts_entry_new(int id, char *message)
+{
+       QP_TTS_T *entry = NULL;
+       retif(message == NULL, NULL, "NULL message");
+
+       entry = (QP_TTS_T *)calloc(1, sizeof(QP_TTS_T));
+       retif(entry == NULL, NULL, "failed to memory allocation");
+
+       entry->id = id;
+       entry->message = strdup(message);
+
+       return entry;
+}
+
+
+
+static void  _tts_entry_del(QP_TTS_T *entry)
+{
+       retif(entry == NULL, ,"invalid parameter");
+
+       if (entry->message != NULL) {
+               free(entry->message);
+       }
+
+       free(entry);
+}
+
+
+
+static QP_TTS_T *_tts_list_get_first(void)
+{
+       return eina_list_nth(s_info.list, 0);
+}
+
+
+
+static void _tts_list_add(QP_TTS_T *entry)
+{
+       retif(entry == NULL, ,"invalid parameter");
+
+       s_info.list = eina_list_prepend(s_info.list, entry);
+}
+
+
+
+static void _tts_list_del(QP_TTS_T *entry)
+{
+       retif(entry == NULL, ,"invalid parameter");
+
+       s_info.list = eina_list_remove(s_info.list, entry);
+}
+
+
+
+static void _tts_list_clean(void)
+{
+       QP_TTS_T *entry = NULL;
+
+       while ((entry = _tts_list_get_first()) != NULL) {
+                _tts_list_del(entry);
+                _tts_entry_del(entry);
+       }
+}
+
+
+
+static int _is_screenreader_on(void)
+{
+       int ret = -1, status = 0;
+
+       ret = vconf_get_bool(VCONFKEY_SETAPPL_ACCESSIBILITY_TTS, &status);
+       retif(ret != 0, 0, "failed to read VCONFKEY_SETAPPL_ACCESSIBILITY_TTS %d", ret);
+
+       return status;
+}
+
+
+
+static tts_state_e _tts_state_get(void)
+{
+       int ret = TTS_ERROR_NONE;
+       tts_state_e state = TTS_STATE_READY;
+
+       if (s_info.tts_handler != NULL) {
+               ret = tts_get_state(s_info.tts_handler, &state);
+               if (TTS_ERROR_NONE != ret){
+                       ERR("get state error(%d)", ret);
+                       return -1;
+               }
+
+               return state;
+       }
+
+       return -1;
+}
+
+
+
+static void _tts_play(const char *message)
+{
+       int utt = 0;
+       int ret = TTS_ERROR_NONE;
+
+       if (s_info.tts_handler == NULL) {
+               ERR("critical, TTS handler isn't initialized");
+               return;
+       }
+
+       DBG("adding %s", message);
+
+       ret = tts_add_text(s_info.tts_handler, message, NULL, TTS_VOICE_TYPE_AUTO, TTS_SPEED_AUTO, &utt);
+       if (TTS_ERROR_NONE != ret){
+               ERR("add text error!");
+               return;
+       }
+
+       ret = tts_play(s_info.tts_handler);
+       if(ret != TTS_ERROR_NONE) {
+               ERR("play error(%d) state(%d)", ret);
+       }
+}
+
+
+
+static void _tts_stop(void)
+{
+       int ret = TTS_ERROR_NONE;
+
+       if (s_info.tts_handler == NULL) {
+               ERR("critical, TTS handler isn't initialized");
+               return;
+       }
+
+       ret = tts_stop(s_info.tts_handler);
+       if (TTS_ERROR_NONE != ret){
+               ERR("failed to stop play:%d", ret);
+               return;
+       }
+}
+
+
+
+static void _tts_state_changed_cb(tts_h tts, tts_state_e previous, tts_state_e current, void* user_data)
+{
+       QP_TTS_T *entry = NULL;
+
+       DBG("_tts_state_changed_cb(%d => %d)", previous, current);
+
+       if(previous == TTS_STATE_CREATED && current == TTS_STATE_READY) {
+               entry = _tts_list_get_first();
+               if (entry != NULL) {
+                        _tts_play(entry->message);
+                        _tts_list_del(entry);
+                        _tts_entry_del(entry);
+               }
+               _tts_list_clean();
+       }
+}
+
+
+
+static void _tts_utt_started_cb(tts_h tts, int utt_id, void *user_data)
+{
+       DBG("_tts_utt_started_cb");
+}
+
+
+
+static void _tts_utt_completed_cb(tts_h tts, int utt_id, void *user_data)
+{
+       DBG("_tts_utt_completed_cb");
+}
+
+
+
+static void _tts_error_cb(tts_h tts, int utt_id, tts_error_e reason, void* user_data)
+{
+       DBG("_tts_error_cb");
+}
+
+
+
+static int _tts_callback_set(tts_h tts, void* data)
+{
+       int ret = 0;
+
+       if (TTS_ERROR_NONE != (ret = tts_set_state_changed_cb(tts, _tts_state_changed_cb, tts))){
+               ERR("set interrupted callback error !!:%d", ret);
+               ret = -1;
+       }
+
+       if (TTS_ERROR_NONE != (ret = tts_set_utterance_started_cb(tts, _tts_utt_started_cb, data))) {
+               ERR("set utterance started callback error !!:%d", ret);
+               ret = -1;
+       }
+
+       if (TTS_ERROR_NONE != (ret = tts_set_utterance_completed_cb(tts, _tts_utt_completed_cb, data))) {
+               ERR("set utterance completed callback error !!:%d", ret);
+               ret = -1;
+       }
+
+       if (TTS_ERROR_NONE != (ret = tts_set_error_cb(tts, _tts_error_cb, data))) {
+               ERR("set error callback error !!:%d", ret);
+               ret = -1;
+       }
+
+       return ret;
+}
+
+
+
+static void _tts_init()
+{
+       tts_h tts = NULL;
+       int ret = TTS_ERROR_NONE;
+
+       if (s_info.tts_handler == NULL) {
+               ret = tts_create(&tts);
+               if(ret != TTS_ERROR_NONE) {
+                       ERR("tts_create() failed");
+                       return ;
+               }
+
+               ret = tts_set_mode(tts, TTS_MODE_NOTIFICATION);
+               if(ret != TTS_ERROR_NONE) {
+                       ERR("tts_create() failed");
+                       tts_destroy(s_info.tts_handler);
+                       s_info.tts_handler = NULL;
+                       return ;
+               }
+
+               if(_tts_callback_set(tts, NULL) != 0) {
+                       ERR("_tts_callback_set() failed");
+                       tts_destroy(s_info.tts_handler);
+                       s_info.tts_handler = NULL;
+                       return ;
+               }
+
+               ret = tts_prepare(tts);
+               if(ret != TTS_ERROR_NONE) {
+                       ERR("tts_create() failed");
+                       tts_destroy(s_info.tts_handler);
+                       s_info.tts_handler = NULL;
+                       return ;
+               }
+
+               s_info.tts_handler = tts;
+       }
+}
+
+
+
+static void _tts_fini(void)
+{
+       int ret = TTS_ERROR_NONE;
+
+       if (s_info.tts_handler != NULL) {
+               ret = tts_destroy(s_info.tts_handler);
+               if(ret != TTS_ERROR_NONE) {
+                       ERR("tts_destroy() failed");
+               }
+               s_info.tts_handler = NULL;
+       }
+}
+
+
+
+static void _tts_vconf_cb(keynode_t *key, void *data){
+       if(_is_screenreader_on() == 0) {
+               DBG("TTS turned off");
+               _tts_fini();
+       }
+
+       _tts_list_clean();
+}
+
+
+
+void indicator_service_tts_init(void *data) {
+       int ret = 0;
+
+    ret = vconf_notify_key_changed(VCONFKEY_SETAPPL_ACCESSIBILITY_TTS,
+               _tts_vconf_cb, data);
+}
+
+
+
+void indicator_service_tts_fini(void *data) {
+       int ret = 0;
+
+    ret = vconf_notify_key_changed(VCONFKEY_SETAPPL_ACCESSIBILITY_TTS,
+               _tts_vconf_cb, data);
+
+    _tts_list_clean();
+}
+
+
+
+void indicator_service_tts_play(char *message) {
+       tts_state_e state = 0;
+       QP_TTS_T *entry = NULL;
+       retif(message == NULL, ,"invalid parameter");
+
+       if (_is_screenreader_on() == 1) {
+               _tts_init();
+
+               state = _tts_state_get();
+
+               if (state == TTS_STATE_CREATED) {
+                       _tts_list_clean();
+                       entry = _tts_entry_new(-1, message);
+                       if (entry != NULL) {
+                                _tts_list_add(entry);
+                       }
+               } else if (state == TTS_STATE_PLAYING || state == TTS_STATE_PAUSED) {
+                       _tts_stop();
+                       _tts_play(message);
+               } else if (state == TTS_STATE_READY) {
+                       _tts_play(message);
+               } else {
+                       ERR("invalid status: %d", state);
+               }
+       }
+}
+#endif /* _SUPPORT_SCREEN_READER2 */
diff --git a/daemon/tts.h b/daemon/tts.h
new file mode 100644 (file)
index 0000000..589704c
--- /dev/null
@@ -0,0 +1,32 @@
+/*
+ *  Indicator
+ *
+ * Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * 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.
+ *
+ */
+
+
+#ifdef _SUPPORT_SCREEN_READER2
+
+#ifndef __SERVICE_TTS_H__
+#define __SERVICE_TTS_H__
+
+void indicator_service_tts_init(void *data);
+void indicator_service_tts_fini(void *data);
+void indicator_service_tts_play(char *message);
+
+#endif
+#endif
+
diff --git a/daemon/util.c b/daemon/util.c
new file mode 100644 (file)
index 0000000..628ad84
--- /dev/null
@@ -0,0 +1,581 @@
+/*
+ *  Indicator
+ *
+ * Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * 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 <vconf.h>
+#include <app.h>
+
+#include "common.h"
+#include "indicator.h"
+#include "main.h"
+#include "indicator_gui.h"
+#include "util.h"
+#include "icon.h"
+#include "box.h"
+#include "log.h"
+
+#define APP_CONTROL_OPERATION_POPUP_SEARCH "http://samsung.com/appcontrol/operation/search"
+
+#define DEFAULT_DIR    ICONDIR
+#define DIR_PREFIX     "Theme_%02d_"
+#define LABEL_STRING   "<color=#%02x%02x%02x%02x>%s</color>"
+
+static char *_icondir;
+
+
+
+char *util_set_label_text_color(const char *txt)
+{
+       Eina_Strbuf *temp_buf = NULL;
+       Eina_Bool buf_result = EINA_FALSE;
+       char *ret_str = NULL;
+
+       retif(txt == NULL, NULL, "Invalid parameter!");
+
+       temp_buf = eina_strbuf_new();
+       buf_result = eina_strbuf_append_printf(temp_buf,
+                               LABEL_STRING, FONT_COLOR, txt);
+
+       if (buf_result == EINA_FALSE)
+               DBG("Failed to make label string!");
+       else
+               ret_str = eina_strbuf_string_steal(temp_buf);
+
+       eina_strbuf_free(temp_buf);
+       return ret_str;
+}
+
+const char *util_get_icon_dir(void)
+{
+       if (_icondir == NULL)
+               _icondir = DEFAULT_DIR;
+
+       return (const char *)_icondir;
+}
+
+
+
+void util_signal_emit(void* data, const char *emission, const char *source)
+{
+       struct appdata *ad = NULL;
+       Evas_Object *edje = NULL;
+
+       ret_if(!data);
+
+       ad = (struct appdata *)data;
+
+       char *filter1 = "indicator.connection.updown";
+       char *filter2 = "indicator.wifi.updown";
+       if (strncmp(filter1, emission, strlen(filter1)) != 0
+                       && strncmp(filter2, emission, strlen(filter2)) != 0) {
+               SECURE_DBG("emission %s",emission);
+       }
+
+       edje = elm_layout_edje_get(ad->win.layout);
+       ret_if(!edje);
+       edje_object_signal_emit(edje, emission, source);
+}
+
+
+
+void util_part_text_emit(void* data, const char *part, const char *text)
+{
+       struct appdata *ad = (struct appdata *)data;
+       retif(data == NULL, , "Invalid parameter!");
+       Evas_Object *edje;
+
+       retif(ad->win.layout == NULL, , "Invalid parameter!");
+       edje = elm_layout_edje_get(ad->win.layout);
+       edje_object_part_text_set(edje, part, text);
+}
+
+
+
+void util_signal_emit_by_win(void* data, const char *emission, const char *source)
+{
+       win_info *win = NULL;
+       Evas_Object *edje = NULL;
+
+       ret_if(!data);
+
+       win = (win_info*)data;
+       ret_if(!win->layout);
+
+       _D("emission %s", emission);
+
+       edje = elm_layout_edje_get(win->layout);
+       edje_object_signal_emit(edje, emission, source);
+}
+
+
+
+void util_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 == NULL, , "Invalid parameter!");
+       edje = elm_layout_edje_get(win->layout);
+       edje_object_part_text_set(edje, part, text);
+}
+
+
+
+void util_battery_percentage_part_content_set(void* data, const char *part, const char *img_path)
+{
+       struct appdata *ad = (struct appdata *)data;
+       retif(data == NULL, , "Invalid parameter!");
+       Evas_Object *icon = NULL;
+       char path[PATH_MAX];
+
+       retif(ad->win.layout == NULL, , "Invalid parameter!");
+
+       icon = elm_image_add(ad->win.layout);
+       retif(!icon, , "Cannot create elm icon object!");
+
+       if (strncmp(img_path, "/", 1) != 0)
+       {
+               snprintf(path, sizeof(path), "%s/%s", util_get_icon_dir(), img_path);
+       }
+       else
+       {
+               strncpy(path, img_path, sizeof(path)-1);
+       }
+
+       if (!ecore_file_exists(path))
+       {
+               ERR("icon file does not exist!!: %s",path);
+               return;
+       }
+       elm_image_file_set(icon, path, NULL);
+       evas_object_size_hint_weight_set(icon, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       elm_object_part_content_set(ad->win.layout, part, icon);
+}
+
+
+
+void util_send_status_message_start(void* data,double duration)
+{
+       Ecore_Evas *ee_port;
+       win_info* win = (win_info*)data;
+       retif(data == NULL, , "Invalid parameter!");
+       struct appdata *ad = win->data;
+       Indicator_Data_Animation msg = {0,};
+
+       msg.xwin = ad->active_indi_win;
+       msg.duration = duration;
+
+       DBG("status start %x, %f",ad->active_indi_win,duration);
+       ee_port = ecore_evas_ecore_evas_get(evas_object_evas_get(win->win));
+       ecore_evas_msg_send(ee_port, MSG_DOMAIN_CONTROL_INDICATOR, MSG_ID_INDICATOR_ANI_START, &(msg), sizeof(Indicator_Data_Animation));
+
+}
+
+
+
+void util_launch_search(void* data)
+{
+       int lock_state = VCONFKEY_IDLE_UNLOCK;
+       int lock_ret = -1;
+       app_control_h service;
+       int ret = APP_CONTROL_ERROR_NONE;
+
+       lock_ret = vconf_get_int(VCONFKEY_IDLE_LOCK_STATE,
+                       &lock_state);
+
+       /* In Lock Screen, home button don't have to do */
+       if (lock_ret == 0 && lock_state == VCONFKEY_IDLE_LOCK)
+       {
+               return;
+       }
+
+       if (util_check_system_status() == FAIL)
+       {
+               DBG("util_check_system_status failed");
+               return;
+       }
+
+       app_control_create(&service);
+       app_control_set_operation(service, APP_CONTROL_OPERATION_MAIN);
+       app_control_set_app_id(service, SEARCH_PKG_NAME);
+
+       ret = app_control_send_launch_request(service, NULL, NULL);
+
+       if(ret != APP_CONTROL_ERROR_NONE)
+       {
+               ERR("Cannot launch app");
+       }
+
+       app_control_destroy(service);
+
+}
+
+
+
+int util_check_system_status(void)
+{
+       int ret, value = -1;
+
+       ret = vconf_get_int(VCONFKEY_PWLOCK_STATE, &value);
+       if (ret == OK &&
+           (value == VCONFKEY_PWLOCK_BOOTING_LOCK ||
+            value == VCONFKEY_PWLOCK_RUNNING_LOCK))
+               return FAIL;
+
+       return OK;
+}
+
+
+
+#ifdef _SUPPORT_SCREEN_READER
+Evas_Object *util_access_object_register(Evas_Object *object, Evas_Object *layout)
+{
+       if ((object == NULL) || (layout == NULL)) {
+               ERR("Access object doesn't exist!!! %x %x",object,layout);
+               return NULL;
+       }
+
+       return elm_access_object_register(object, layout);
+}
+
+
+
+void util_access_object_unregister(Evas_Object *object)
+{
+       if (object == NULL) {
+               ERR("Access object doesn't exist!!! %x",object);
+               return NULL;
+       }
+
+       elm_access_object_unregister(object);
+}
+
+
+
+void util_access_object_info_set(Evas_Object *object, int info_type, char *info_text)
+{
+       if ((object == NULL) || (info_text == NULL)) {
+               ERR("Access info set fails %x, %x!!!",object,info_text);
+               return;
+       }
+
+       elm_access_info_set(object, info_type, (const char *)info_text);
+}
+
+
+
+void util_access_object_activate_cb_set(Evas_Object *object, Elm_Access_Activate_Cb activate_cb, void *cb_data)
+{
+       if ((object == NULL) || (activate_cb == NULL)) {
+               ERR("Access activated cb set fails %x %x!!!",object,activate_cb);
+               return;
+       }
+
+       elm_access_activate_cb_set(object, activate_cb, cb_data);
+}
+
+
+
+void util_access_object_info_cb_set(Evas_Object *object, int type, Elm_Access_Info_Cb info_cb, void *cb_data)
+{
+       if ((object == NULL) || (info_cb == NULL)) {
+               ERR("Access info cb set fails  %x %x!!!",object,info_cb);
+               return;
+       }
+
+       elm_access_info_cb_set(object, type, info_cb, cb_data);
+}
+
+
+
+void util_icon_access_register(icon_s *icon)
+{
+
+       if(icon == NULL)
+       {
+               ERR("ICON NULL");
+               return;
+       }
+
+       if(icon->tts_enable == EINA_TRUE && icon->ao==NULL)
+       {
+               Evas_Object *to = NULL;
+
+               to = (Evas_Object *) edje_object_part_object_get(elm_layout_edje_get(icon->img_obj.obj), "elm.rect.icon.access");
+               icon->ao = util_access_object_register(to, icon->img_obj.obj);
+
+               if(icon->access_cb!=NULL)
+               {
+                       util_access_object_info_cb_set(icon->ao,ELM_ACCESS_INFO,icon->access_cb,icon->ad);
+               }
+       }
+}
+
+
+
+void util_icon_access_unregister(icon_s *icon)
+{
+       if(icon == NULL)
+       {
+               ERR("ICON NULL");
+               return;
+       }
+
+       if(icon->tts_enable == EINA_TRUE&&icon->ao!=NULL)
+       {
+               util_access_object_unregister(icon->ao);
+               icon->ao = NULL;
+       }
+}
+#endif /* _SUPPORT_SCREEN_READER */
+
+
+
+static char* _get_timezone_from_vconf(void)
+{
+       char *szTimezone = NULL;
+       szTimezone = vconf_get_str(VCONFKEY_SETAPPL_TIMEZONE_ID);
+       if(szTimezone == NULL)
+       {
+               ERR("Cannot get time zone.");
+               return strdup("N/A");
+       }
+
+       return szTimezone;
+}
+
+
+
+char* util_get_timezone_str(void)
+{
+       enum { BUFFERSIZE = 1024 };
+       char buf[BUFFERSIZE];
+       ssize_t len = readlink("/opt/etc/localtime", buf, sizeof(buf)-1);
+
+       if (len != -1)
+       {
+               buf[len] = '\0';
+       }
+       else
+       {
+               ERR("NO TIMEZONEINFO");
+               return _get_timezone_from_vconf();
+       }
+       return (char*)g_strdup(buf+20); // Asia/Seoul
+}
+
+
+
+Eina_Bool util_win_prop_angle_get(Ecore_X_Window win, int *req)
+{
+       Eina_Bool res = EINA_FALSE;
+#if 0
+       int ret, count;
+       int angle[2] = {-1, -1};
+       unsigned char* prop_data = NULL;
+       ret = ecore_x_window_prop_property_get(win, ECORE_X_ATOM_E_ILLUME_ROTATE_WINDOW_ANGLE, ECORE_X_ATOM_CARDINAL, 32, &prop_data, &count);
+       if (ret <= 0) {
+               if (prop_data) free(prop_data);
+               return res;
+       }
+
+       if (ret && prop_data) {
+               memcpy (&angle, prop_data, sizeof (int)*count);
+               if (count == 2) res = EINA_TRUE;
+       }
+
+       if (prop_data) free(prop_data);
+       *req  = angle[0]; //current angle
+
+       if (angle[0] == -1 && angle[1] == -1) res = EINA_FALSE;
+#endif
+
+       return res;
+}
+
+
+#if 0
+int util_get_block_width(void* data, const char* part)
+{
+       Evas_Object * eo = NULL;
+       int geo_dx = 0;
+       int geo_dy = 0;
+       retif(data == NULL,-1, "Invalid parameter!");
+       retif(part == NULL,-1, "Invalid parameter!");
+
+       win_info* win = (win_info*)data;
+
+       eo = (Evas_Object *) edje_object_part_object_get(elm_layout_edje_get(win->layout), part);
+
+       evas_object_geometry_get(eo, NULL, NULL, &geo_dx, &geo_dy);
+
+       return geo_dx;
+}
+
+
+
+int util_get_string_width(void* data, const char* part)
+{
+       Evas_Object * eo = NULL;
+       int text_dx = 0;
+       int text_dy = 0;
+       retif(data == NULL,-1, "Invalid parameter!");
+       retif(part == NULL,-1, "Invalid parameter!");
+
+       win_info* win = (win_info*)data;
+
+       eo = (Evas_Object *) edje_object_part_object_get(elm_layout_edje_get(win->layout), part);
+
+       evas_object_textblock_size_formatted_get(eo, &text_dx, &text_dy);
+
+       return text_dx;
+}
+#endif
+
+
+int util_is_orf(void)
+{
+       return 1;
+}
+
+
+
+int util_check_noti_ani(const char* path)
+{
+       retv_if(!path, 0);
+       if (!strcmp(path,"reserved://indicator/ani/downloading")
+               || !strcmp(path,"reserved://indicator/ani/uploading")) {
+               return 1;
+       }
+       return 0;
+}
+
+
+
+void util_start_noti_ani(void* data)
+{
+       icon_s *icon = (icon_s *)data;
+       retif(data == NULL, , "Invalid parameter!");
+
+       if(util_check_noti_ani(icon->img_obj.data))
+       {
+               DBG("%s",icon->name);
+               if(!strcmp(icon->img_obj.data,"reserved://indicator/ani/downloading"))
+               {
+                       icon_ani_set(icon,ICON_ANI_DOWNLOADING);
+               }
+               else
+               {
+                       icon_ani_set(icon,ICON_ANI_UPLOADING);
+               }
+       }
+}
+
+
+
+void util_stop_noti_ani(void* data)
+{
+       icon_s *icon = (icon_s *)data;
+       retif(data == NULL, , "Invalid parameter!");
+
+       if(util_check_noti_ani(icon->img_obj.data))
+       {
+               Evas_Object *img_edje;
+               img_edje = elm_layout_edje_get(icon->img_obj.obj);
+               DBG("%s",icon->name);
+               if(!strcmp(icon->img_obj.data,"reserved://indicator/ani/downloading"))
+               {
+                       edje_object_signal_emit(img_edje, "indicator.ani.downloading.stop","elm.swallow.icon");
+               }
+               else
+               {
+                       edje_object_signal_emit(img_edje, "indicator.ani.uploading.stop","elm.swallow.icon");
+               }
+       }
+}
+
+
+
+void util_char_replace(char *text, char s, char t)
+{
+       retif(text == NULL, , "invalid argument");
+
+       int i = 0, text_len = 0;
+
+       text_len = strlen(text);
+
+       for (i = 0; i < text_len; i++) {
+               if (*(text + i) == s) {
+                       *(text + i) = t;
+               }
+       }
+}
+
+
+
+static bool _is_empty_str(const char *str)
+{
+       if (NULL == str || '\0' == str[0])
+               return TRUE;
+       return FALSE;
+}
+
+
+
+char *util_safe_str(const char *str, const char *strSearch)
+{
+       if (_is_empty_str(str))
+               return NULL;
+
+       return strstr(str, strSearch);
+}
+
+
+
+int util_dynamic_state_get(void)
+{
+       int val = 0;
+       //vconf_get_bool(VCONFKEY_SETAPPL_DYNAMIC_STATUS_BAR, &val);
+       return val;
+}
+
+
+
+Ecore_File_Monitor* util_file_monitor_add(const char* file_path, Ecore_File_Monitor_Cb callback_func, void *ad)
+{
+       SECURE_DBG("File path : %s", file_path);
+       Ecore_File_Monitor* pFileMonitor = NULL;
+       pFileMonitor = ecore_file_monitor_add(file_path, callback_func, ad);
+       if(pFileMonitor == NULL) SECURE_DBG("ecore_file_monitor_add return NULL !!");
+
+       return pFileMonitor;
+}
+
+
+
+void util_file_monitor_remove(Ecore_File_Monitor* pFileMonitor)
+{
+       if(pFileMonitor == NULL) return;
+
+       ecore_file_monitor_del(pFileMonitor);
+       pFileMonitor = NULL;
+}
+/* End of file */
diff --git a/daemon/util.h b/daemon/util.h
new file mode 100644 (file)
index 0000000..bb69022
--- /dev/null
@@ -0,0 +1,75 @@
+/*
+ *  Indicator
+ *
+ * Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+
+
+#ifndef __INDICATOR_UTIL_H__
+#define __INDICATOR_UTIL_H__
+#include <Ecore.h>
+//#include <Ecore_X.h>
+
+typedef enum {
+       INDICATOR_ERROR_NONE = 0,
+       INDICATOR_ERROR_FAIL = -1,
+       INDICATOR_ERROR_DB_FAILED = -2,
+       INDICATOR_ERROR_OUT_OF_MEMORY = -3,
+       INDICATOR_ERROR_INVALID_PARAMETER = -4,
+       INDICATOR_ERROR_NO_DATA = -5,
+} indicator_error_e;
+
+typedef struct _Indicator_Data_Animation Indicator_Data_Animation;
+
+struct _Indicator_Data_Animation
+{
+   Ecore_X_Window xwin;
+   double         duration;
+};
+
+extern char *util_set_label_text_color(const char *txt);
+extern const char *util_get_icon_dir(void);
+extern void util_signal_emit(void* data, const char *emission, const char *source);
+extern void util_part_text_emit(void* data, const char *part, const char *text);
+extern void util_signal_emit_by_win(void* data, const char *emission, const char *source);
+extern void util_part_text_emit_by_win(void* data, const char *part, const char *text);
+extern void util_battery_percentage_part_content_set(void* data, const char *part, const char *img_path);
+extern void util_launch_search(void* data);
+extern int util_check_system_status(void);
+extern char* util_get_timezone_str(void);
+extern Eina_Bool util_win_prop_angle_get(Ecore_X_Window win, int *curr);
+extern int util_is_orf(void);
+extern int util_check_noti_ani(const char* path);
+extern void util_start_noti_ani(void* data);
+extern void util_stop_noti_ani(void* data);
+extern void util_send_status_message_start(void* data,double duration);
+extern void util_char_replace(char *text, char s, char t);
+extern int util_dynamic_state_get(void);
+
+extern Ecore_File_Monitor* util_file_monitor_add(const char* file_path, Ecore_File_Monitor_Cb callback_func, void *ad);
+extern void util_file_monitor_remove(Ecore_File_Monitor* pFileMonitor);
+extern char *util_safe_str(const char *str, const char *strSearch);
+
+#ifdef _SUPPORT_SCREEN_READER
+extern Evas_Object *util_access_object_register(Evas_Object *object, Evas_Object *layout);
+extern void util_access_object_unregister(Evas_Object *object);
+extern void util_access_object_info_set(Evas_Object *object, int info_type, char *info_text);
+extern void util_icon_access_register(icon_s *icon);
+extern void util_icon_access_unregister(icon_s *icon);
+#endif /* _SUPPORT_SCREEN_READER */
+
+#endif /* __INDICATOR_UTIL_H__ */
index ef3e011..5e1403a 100644 (file)
@@ -1,4 +1,10 @@
 CONFIGURE_FILE(${PROJECT_NAME}.xml.in ${CMAKE_CURRENT_BINARY_DIR}/org.tizen.${PROJECT_NAME}.xml)
 INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/org.tizen.${PROJECT_NAME}.xml DESTINATION ${MANIFESTXMLDIR})
 
+INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/org.tizen.${PROJECT_NAME}_ChangeableColorInfo.xml DESTINATION ${CHANGEABLEDIR})
+INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/org.tizen.${PROJECT_NAME}_ChangeableFontInfo.xml DESTINATION ${CHANGEABLEDIR})
+
+CONFIGURE_FILE(${PROJECT_NAME}.sh.in ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME})
+INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME} DESTINATION /etc/init.d/)
+
 ADD_SUBDIRECTORY(resource)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
diff --git a/data/indicator.sh.in b/data/indicator.sh.in
new file mode 100644 (file)
index 0000000..8e5236e
--- /dev/null
@@ -0,0 +1,2 @@
+@BINDIR@/@PROJECT_NAME@ &\r
+sleep 2\r
old mode 100755 (executable)
new mode 100644 (file)
index 5ac31d1..b089523
@@ -1,12 +1,12 @@
 <?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns="http://tizen.org/ns/packages" package="@PKGNAME@" version="0.1.72-1" install-location="internal-only">
-       <label>@PROJECT_NAME@</label>
+<manifest xmlns="http://tizen.org/ns/packages" api-version="2.3.1" package="org.tizen.indicator" version="0.2.53-1" install-location="internal-only">
+       <label>Indicator</label>
        <author email="yjoo93.park@samsung.com" href="www.samsung.com">Youngjoo Park</author>
        <author email="seungtaek.chung@samsung.com" href="www.samsung.com">seungtaek chung</author>
        <author email="sung1103.park@samsung.com" href="www.samsung.com">Sung Park</author>
-       <description>@PROJECT_NAME@</description>
+       <description>Indicator</description>
        <ui-application appid="@PKGNAME@" exec="@BINDIR@/@PROJECT_NAME@" nodisplay="true" multiple="false" type="capp" taskmanage="false">
                <icon>@PKGNAME@.png</icon>
-               <label>@PROJECT_NAME@</label>
+               <label>Indicator</label>
        </ui-application>
-</manifest>
\ No newline at end of file
+</manifest>
diff --git a/data/org.tizen.indicator_ChangeableColorInfo.xml b/data/org.tizen.indicator_ChangeableColorInfo.xml
new file mode 100644 (file)
index 0000000..ebd1aef
--- /dev/null
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ChangeableColorTables>
+       <ChangeableColorTable num="1">
+               <Theme style="Dark">
+               </Theme>
+               <Theme style="Light">
+                       <ChangeableColorInfo id="AO001" inputColor="-" hue="0" saturation="0" value="12" alpha="100" />
+                       <ChangeableColorInfo id="AO002" inputColor="1" hue="0" saturation="0" value="0" alpha="100" />
+                       <ChangeableColorInfo id="AO003" inputColor="-" hue="0" saturation="0" value="100" alpha="100" fixedHue="true" fixedSaturation="true" fixedValue="true" />
+                       <ChangeableColorInfo id="AO004" inputColor="-" hue="0" saturation="0" value="100" alpha="100" fixedHue="true" fixedSaturation="true" fixedValue="true" />
+                       <ChangeableColorInfo id="AO004D" inputColor="-" hue="0" saturation="0" value="100" alpha="50" fixedHue="true" fixedSaturation="true" fixedValue="true" />
+                       <ChangeableColorInfo id="AO005" inputColor="-" hue="116" saturation="100" value="68" alpha="100" fixedHue="true" fixedSaturation="true" fixedValue="true" />
+                       <ChangeableColorInfo id="AO006" inputColor="-" hue="0" saturation="100" value="80" alpha="100" fixedHue="true" fixedSaturation="true" fixedValue="true" />
+                       <ChangeableColorInfo id="AO007" inputColor="-" hue="0" saturation="0" value="25" alpha="100" fixedHue="true" fixedSaturation="true" fixedValue="true" />
+                       <ChangeableColorInfo id="ATO001" inputColor="-" hue="0" saturation="0" value="100" alpha="100" fixedHue="true" fixedSaturation="true" fixedValue="true" />
+                       <ChangeableColorInfo id="ATO002" inputColor="-" hue="0" saturation="0" value="100" alpha="100" fixedHue="true" fixedSaturation="true" fixedValue="true" />
+                       <ChangeableColorInfo id="ATO003" inputColor="-" hue="0" saturation="0" value="100" alpha="100" fixedHue="true" fixedSaturation="true" fixedValue="true" />
+                       <ChangeableColorInfo id="ATO004" inputColor="-" hue="0" saturation="0" value="0" alpha="100" fixedHue="true" fixedSaturation="true" fixedValue="true" />
+                       <ChangeableColorInfo id="ATO005" inputColor="-" hue="0" saturation="0" value="30" alpha="100" fixedHue="true" fixedSaturation="true" fixedValue="true" />
+               </Theme>
+       </ChangeableColorTable>
+       <ChangeableColorTable num="2">
+               <Theme style="Dark">
+               </Theme>
+               <Theme style="Light">
+                       <ChangeableColorInfo id="AO001" inputColor="-" hue="0" saturation="0" value="12" alpha="100" />
+                       <ChangeableColorInfo id="AO002" inputColor="1" hue="0" saturation="0" value="0" alpha="100" />
+                       <ChangeableColorInfo id="AO003" inputColor="-" hue="0" saturation="0" value="100" alpha="100" fixedHue="true" fixedSaturation="true" fixedValue="true" />
+                       <ChangeableColorInfo id="AO004" inputColor="-" hue="0" saturation="0" value="100" alpha="100" fixedHue="true" fixedSaturation="true" fixedValue="true" />
+                       <ChangeableColorInfo id="AO004D" inputColor="-" hue="0" saturation="0" value="100" alpha="50" fixedHue="true" fixedSaturation="true" fixedValue="true" />
+                       <ChangeableColorInfo id="AO005" inputColor="-" hue="116" saturation="100" value="68" alpha="100" fixedHue="true" fixedSaturation="true" fixedValue="true" />
+                       <ChangeableColorInfo id="AO006" inputColor="-" hue="0" saturation="100" value="80" alpha="100" fixedHue="true" fixedSaturation="true" fixedValue="true" />
+                       <ChangeableColorInfo id="AO007" inputColor="-" hue="0" saturation="0" value="25" alpha="100" fixedHue="true" fixedSaturation="true" fixedValue="true" />
+                       <ChangeableColorInfo id="ATO001" inputColor="-" hue="0" saturation="0" value="100" alpha="100" fixedHue="true" fixedSaturation="true" fixedValue="true" />
+                       <ChangeableColorInfo id="ATO002" inputColor="-" hue="0" saturation="0" value="100" alpha="100" fixedHue="true" fixedSaturation="true" fixedValue="true" />
+                       <ChangeableColorInfo id="ATO003" inputColor="-" hue="0" saturation="0" value="0" alpha="100" fixedHue="true" fixedSaturation="true" fixedValue="true" />
+                       <ChangeableColorInfo id="ATO004" inputColor="-" hue="0" saturation="0" value="0" alpha="100" fixedHue="true" fixedSaturation="true" fixedValue="true" />
+                       <ChangeableColorInfo id="ATO005" inputColor="-" hue="0" saturation="0" value="30" alpha="100" fixedHue="true" fixedSaturation="true" fixedValue="true" />
+               </Theme>
+       </ChangeableColorTable>
+       <ChangeableColorTable num="3">
+               <Theme style="Dark">
+               </Theme>
+               <Theme style="Light">
+                       <ChangeableColorInfo id="AO001" inputColor="-" hue="0" saturation="0" value="12" alpha="100" />
+                       <ChangeableColorInfo id="AO002" inputColor="1" hue="0" saturation="0" value="0" alpha="100" />
+                       <ChangeableColorInfo id="AO003" inputColor="-" hue="0" saturation="0" value="100" alpha="100" fixedHue="true" fixedSaturation="true" fixedValue="true" />
+                       <ChangeableColorInfo id="AO004" inputColor="-" hue="0" saturation="0" value="100" alpha="100" fixedHue="true" fixedSaturation="true" fixedValue="true" />
+                       <ChangeableColorInfo id="AO004D" inputColor="-" hue="0" saturation="0" value="100" alpha="50" fixedHue="true" fixedSaturation="true" fixedValue="true" />
+                       <ChangeableColorInfo id="AO005" inputColor="-" hue="116" saturation="100" value="68" alpha="100" fixedHue="true" fixedSaturation="true" fixedValue="true" />
+                       <ChangeableColorInfo id="AO006" inputColor="-" hue="0" saturation="100" value="80" alpha="100" fixedHue="true" fixedSaturation="true" fixedValue="true" />
+                       <ChangeableColorInfo id="AO007" inputColor="-" hue="0" saturation="0" value="25" alpha="100" fixedHue="true" fixedSaturation="true" fixedValue="true" />
+                       <ChangeableColorInfo id="ATO001" inputColor="-" hue="0" saturation="0" value="100" alpha="100" fixedHue="true" fixedSaturation="true" fixedValue="true" />
+                       <ChangeableColorInfo id="ATO002" inputColor="-" hue="0" saturation="0" value="100" alpha="100" fixedHue="true" fixedSaturation="true" fixedValue="true" />
+                       <ChangeableColorInfo id="ATO003" inputColor="-" hue="0" saturation="0" value="0" alpha="100" fixedHue="true" fixedSaturation="true" fixedValue="true" />
+                       <ChangeableColorInfo id="ATO004" inputColor="-" hue="0" saturation="0" value="0" alpha="100" fixedHue="true" fixedSaturation="true" fixedValue="true" />
+                       <ChangeableColorInfo id="ATO005" inputColor="-" hue="0" saturation="0" value="30" alpha="100" fixedHue="true" fixedSaturation="true" fixedValue="true" />
+               </Theme>
+       </ChangeableColorTable>
+</ChangeableColorTables>
diff --git a/data/org.tizen.indicator_ChangeableFontInfo.xml b/data/org.tizen.indicator_ChangeableFontInfo.xml
new file mode 100644 (file)
index 0000000..0e58cb9
--- /dev/null
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<FontInfoTable>
+       <FontInfo id="ATO001" style="R" size="26" />
+       <FontInfo id="ATO002" style="R" size="25" />
+       <FontInfo id="ATO003" style="R" size="24" />
+       <FontInfo id="ATO004" style="R" size="30" />
+       <FontInfo id="ATO005" style="R" size="24" />
+</FontInfoTable>
old mode 100755 (executable)
new mode 100644 (file)
index 2cb55a8..96e32a7
@@ -1,21 +1,39 @@
+MESSAGE("EDJE_CC CUSTOM FLAG : ${EDJEFLAGS}")
+
 ADD_CUSTOM_TARGET(indicator_port.edj
-               COMMAND edje_cc -id ${CMAKE_CURRENT_SOURCE_DIR}/icons_edc
+               COMMAND edje_cc -id ${CMAKE_CURRENT_SOURCE_DIR}/icons_edc "${EDJEFLAGS}"
                ${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_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_CUSTOM_TARGET(ticker.edj
+               COMMAND edje_cc -id ${CMAKE_CURRENT_SOURCE_DIR}/icons_edc "${EDJEFLAGS}"
+               ${CMAKE_CURRENT_SOURCE_DIR}/ticker.edc
+               ${CMAKE_CURRENT_BINARY_DIR}/ticker.edj
+               DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/ticker.edc
+)
+ADD_DEPENDENCIES(${PROJECT_NAME} ticker.edj)
+
+ADD_CUSTOM_TARGET(ticker_default.edj
+               COMMAND edje_cc -id ${CMAKE_CURRENT_SOURCE_DIR}/icons_edc "${EDJEFLAGS}"
+               ${CMAKE_CURRENT_SOURCE_DIR}/ticker_default.edc
+               ${CMAKE_CURRENT_BINARY_DIR}/ticker_default.edj
+               DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/ticker_default.edc
 )
-ADD_DEPENDENCIES(${PROJECT_NAME} indicator_land.edj)
+ADD_DEPENDENCIES(${PROJECT_NAME} ticker_default.edj)
+
+ADD_CUSTOM_TARGET(ticker_animated_icon.edj
+               COMMAND edje_cc -id ${CMAKE_CURRENT_SOURCE_DIR}/animated_icon "${EDJEFLAGS}"
+               ${CMAKE_CURRENT_SOURCE_DIR}/ticker_animated_icon.edc
+               ${CMAKE_CURRENT_BINARY_DIR}/ticker_animated_icon.edj
+               DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/ticker_animated_icon.edc
+)
+ADD_DEPENDENCIES(${PROJECT_NAME} ticker_animated_icon.edj)
 
 ADD_CUSTOM_TARGET(indicator_icon_theme.edj
-               COMMAND edje_cc
+               COMMAND edje_cc "${EDJEFLAGS}"
                ${CMAKE_CURRENT_SOURCE_DIR}/indicator_icon_theme.edc
                ${CMAKE_CURRENT_BINARY_DIR}/indicator_icon_theme.edj
                DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/indicator_icon_theme.edc
@@ -23,17 +41,28 @@ ADD_CUSTOM_TARGET(indicator_icon_theme.edj
 ADD_DEPENDENCIES(${PROJECT_NAME} indicator_icon_theme.edj)
 
 ADD_CUSTOM_TARGET(indicator_icon_nonfixed_theme.edj
-               COMMAND edje_cc
+               COMMAND edje_cc "${EDJEFLAGS}"
                ${CMAKE_CURRENT_SOURCE_DIR}/indicator_icon_nonfixed_theme.edc
                ${CMAKE_CURRENT_BINARY_DIR}/indicator_icon_nonfixed_theme.edj
                DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/indicator_icon_nonfixed_theme.edc
 )
 ADD_DEPENDENCIES(${PROJECT_NAME} indicator_icon_nonfixed_theme.edj)
 
+ADD_CUSTOM_TARGET(indicator_icon_animation.edj
+               COMMAND edje_cc -id ${CMAKE_CURRENT_SOURCE_DIR}/icons_edc "${EDJEFLAGS}"
+               ${CMAKE_CURRENT_SOURCE_DIR}/indicator_icon_animation.edc
+               ${CMAKE_CURRENT_BINARY_DIR}/indicator_icon_animation.edj
+               DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/indicator_icon_animation.edc
+)
+ADD_DEPENDENCIES(${PROJECT_NAME} indicator_icon_animation.edj)
+
 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}/ticker.edj DESTINATION ${EDJDIR})
+INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/ticker_default.edj DESTINATION ${EDJDIR})
+INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/ticker_animated_icon.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})
+INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/indicator_icon_animation.edj DESTINATION ${EDJDIR})
 
 INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/icons DESTINATION ${RESDIR} FILES_MATCHING PATTERN "*.png")
 INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/icons DESTINATION ${RESDIR} FILES_MATCHING PATTERN "*.PNG")
diff --git a/data/resource/animated_icon/noti_download_01.png b/data/resource/animated_icon/noti_download_01.png
new file mode 100755 (executable)
index 0000000..1347662
Binary files /dev/null and b/data/resource/animated_icon/noti_download_01.png differ
diff --git a/data/resource/animated_icon/noti_download_02.png b/data/resource/animated_icon/noti_download_02.png
new file mode 100755 (executable)
index 0000000..52848ca
Binary files /dev/null and b/data/resource/animated_icon/noti_download_02.png differ
diff --git a/data/resource/animated_icon/noti_download_03.png b/data/resource/animated_icon/noti_download_03.png
new file mode 100755 (executable)
index 0000000..ef20442
Binary files /dev/null and b/data/resource/animated_icon/noti_download_03.png differ
diff --git a/data/resource/animated_icon/noti_download_04.png b/data/resource/animated_icon/noti_download_04.png
new file mode 100755 (executable)
index 0000000..b609329
Binary files /dev/null and b/data/resource/animated_icon/noti_download_04.png differ
diff --git a/data/resource/animated_icon/noti_download_05.png b/data/resource/animated_icon/noti_download_05.png
new file mode 100755 (executable)
index 0000000..bab9835
Binary files /dev/null and b/data/resource/animated_icon/noti_download_05.png differ
diff --git a/data/resource/animated_icon/noti_download_complete.png b/data/resource/animated_icon/noti_download_complete.png
new file mode 100755 (executable)
index 0000000..9e35143
Binary files /dev/null and b/data/resource/animated_icon/noti_download_complete.png differ
diff --git a/data/resource/animated_icon/noti_install_01.png b/data/resource/animated_icon/noti_install_01.png
new file mode 100755 (executable)
index 0000000..ced3bdd
Binary files /dev/null and b/data/resource/animated_icon/noti_install_01.png differ
diff --git a/data/resource/animated_icon/noti_install_02.png b/data/resource/animated_icon/noti_install_02.png
new file mode 100755 (executable)
index 0000000..481ff3f
Binary files /dev/null and b/data/resource/animated_icon/noti_install_02.png differ
diff --git a/data/resource/animated_icon/noti_install_03.png b/data/resource/animated_icon/noti_install_03.png
new file mode 100755 (executable)
index 0000000..2d04ca0
Binary files /dev/null and b/data/resource/animated_icon/noti_install_03.png differ
diff --git a/data/resource/animated_icon/noti_install_04.png b/data/resource/animated_icon/noti_install_04.png
new file mode 100755 (executable)
index 0000000..16fa161
Binary files /dev/null and b/data/resource/animated_icon/noti_install_04.png differ
diff --git a/data/resource/animated_icon/noti_install_05.png b/data/resource/animated_icon/noti_install_05.png
new file mode 100755 (executable)
index 0000000..a33c76c
Binary files /dev/null and b/data/resource/animated_icon/noti_install_05.png differ
diff --git a/data/resource/animated_icon/noti_install_complete.png b/data/resource/animated_icon/noti_install_complete.png
new file mode 100755 (executable)
index 0000000..b9bd97c
Binary files /dev/null and b/data/resource/animated_icon/noti_install_complete.png differ
diff --git a/data/resource/animated_icon/noti_upload_01.png b/data/resource/animated_icon/noti_upload_01.png
new file mode 100755 (executable)
index 0000000..6445da8
Binary files /dev/null and b/data/resource/animated_icon/noti_upload_01.png differ
diff --git a/data/resource/animated_icon/noti_upload_02.png b/data/resource/animated_icon/noti_upload_02.png
new file mode 100755 (executable)
index 0000000..bf230fd
Binary files /dev/null and b/data/resource/animated_icon/noti_upload_02.png differ
diff --git a/data/resource/animated_icon/noti_upload_03.png b/data/resource/animated_icon/noti_upload_03.png
new file mode 100755 (executable)
index 0000000..306a258
Binary files /dev/null and b/data/resource/animated_icon/noti_upload_03.png differ
diff --git a/data/resource/animated_icon/noti_upload_04.png b/data/resource/animated_icon/noti_upload_04.png
new file mode 100755 (executable)
index 0000000..50c0e9d
Binary files /dev/null and b/data/resource/animated_icon/noti_upload_04.png differ
diff --git a/data/resource/animated_icon/noti_upload_05.png b/data/resource/animated_icon/noti_upload_05.png
new file mode 100755 (executable)
index 0000000..fb49ad8
Binary files /dev/null and b/data/resource/animated_icon/noti_upload_05.png differ
diff --git a/data/resource/animated_icon/noti_upload_complete.png b/data/resource/animated_icon/noti_upload_complete.png
new file mode 100755 (executable)
index 0000000..2ee11d8
Binary files /dev/null and b/data/resource/animated_icon/noti_upload_complete.png differ
diff --git a/data/resource/color_classes.edc b/data/resource/color_classes.edc
new file mode 100644 (file)
index 0000000..ba1a676
--- /dev/null
@@ -0,0 +1,71 @@
+/*
+* Samsung API
+* Copyright (c) 2009-2015 Samsung Electronics Co., Ltd.
+*
+* Licensed under the Apache License, Version 2.0 (the License);
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.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.
+*/
+
+color_classes {
+       color_class {
+               name: "AO001";
+               color: 30 30 30 255;
+       }
+       color_class {
+               name: "AO002";
+               color: 20 107 147 255;
+       }
+       color_class {
+               name: "AO003";
+               color: 255 255 255 255;
+       }
+       color_class {
+               name: "AO004";
+               color: 255 255 255 255;
+       }
+       color_class {
+               name: "AO004D";
+               color: 255 255 255 127;
+       }
+       color_class {
+               name: "AO005";
+               color: 11 173 0 255;
+       }
+       color_class {
+               name: "AO006";
+               color: 204 0 0 255;
+       }
+       color_class {
+               name: "AO007";
+               color: 63 63 63 255;
+       }
+       color_class {
+               name: "ATO001";
+               color: 255 255 255 255;
+       }
+       color_class {
+               name: "ATO002";
+               color: 255 255 255 255;
+       }
+       color_class {
+               name: "ATO003";
+               color: 255 255 255 255;
+       }
+       color_class {
+               name: "ATO004";
+               color: 0 0 0 255;
+       }
+       color_class {
+               name: "ATO005";
+               color: 76 76 76 255;
+       }
+}
diff --git a/data/resource/icons/Account/B03_samsung_account.png b/data/resource/icons/Account/B03_samsung_account.png
new file mode 100755 (executable)
index 0000000..59ff0ed
Binary files /dev/null and b/data/resource/icons/Account/B03_samsung_account.png differ
diff --git a/data/resource/icons/Account/B03_tizen_account.png b/data/resource/icons/Account/B03_tizen_account.png
new file mode 100755 (executable)
index 0000000..4c0d6f8
Binary files /dev/null and b/data/resource/icons/Account/B03_tizen_account.png differ
index cbe66f9..714718b 100755 (executable)
Binary files a/data/resource/icons/Alarm/B03_Alarm.png and b/data/resource/icons/Alarm/B03_Alarm.png differ
diff --git a/data/resource/icons/Alarm/B03_snooze.png b/data/resource/icons/Alarm/B03_snooze.png
new file mode 100755 (executable)
index 0000000..6a88b3d
Binary files /dev/null and b/data/resource/icons/Alarm/B03_snooze.png differ
diff --git a/data/resource/icons/App tray/B03_always.PNG b/data/resource/icons/App tray/B03_always.PNG
deleted file mode 100755 (executable)
index ccbc016..0000000
Binary files a/data/resource/icons/App tray/B03_always.PNG and /dev/null differ
diff --git a/data/resource/icons/App tray/B03_always_dim.PNG b/data/resource/icons/App tray/B03_always_dim.PNG
deleted file mode 100755 (executable)
index 1d876a7..0000000
Binary files a/data/resource/icons/App tray/B03_always_dim.PNG and /dev/null differ
diff --git a/data/resource/icons/App tray/B03_always_press.PNG b/data/resource/icons/App tray/B03_always_press.PNG
deleted file mode 100755 (executable)
index d2cead2..0000000
Binary files a/data/resource/icons/App tray/B03_always_press.PNG and /dev/null differ
diff --git a/data/resource/icons/App tray/B03_app_tray.PNG b/data/resource/icons/App tray/B03_app_tray.PNG
deleted file mode 100755 (executable)
index c6d7730..0000000
Binary files a/data/resource/icons/App tray/B03_app_tray.PNG and /dev/null differ
diff --git a/data/resource/icons/App tray/B03_app_tray_dim.PNG b/data/resource/icons/App tray/B03_app_tray_dim.PNG
deleted file mode 100755 (executable)
index fae219a..0000000
Binary files a/data/resource/icons/App tray/B03_app_tray_dim.PNG and /dev/null differ
diff --git a/data/resource/icons/App tray/B03_app_tray_press.PNG b/data/resource/icons/App tray/B03_app_tray_press.PNG
deleted file mode 100755 (executable)
index a7eb18c..0000000
Binary files a/data/resource/icons/App tray/B03_app_tray_press.PNG and /dev/null differ
diff --git a/data/resource/icons/B03_notification.png b/data/resource/icons/B03_notification.png
new file mode 100644 (file)
index 0000000..be68c32
Binary files /dev/null and b/data/resource/icons/B03_notification.png differ
diff --git a/data/resource/icons/B03_notification_press.png b/data/resource/icons/B03_notification_press.png
new file mode 100644 (file)
index 0000000..2900e89
Binary files /dev/null and b/data/resource/icons/B03_notification_press.png differ
diff --git a/data/resource/icons/B03_search.png b/data/resource/icons/B03_search.png
new file mode 100644 (file)
index 0000000..e08a0f1
Binary files /dev/null and b/data/resource/icons/B03_search.png differ
diff --git a/data/resource/icons/B03_search_press.png b/data/resource/icons/B03_search_press.png
new file mode 100644 (file)
index 0000000..ae9bdaf
Binary files /dev/null and b/data/resource/icons/B03_search_press.png differ
old mode 100755 (executable)
new mode 100644 (file)
index 9af7f3f..554f4ef
Binary files a/data/resource/icons/Background playing/B03_Backgroundplaying_FMradio.png and b/data/resource/icons/Background playing/B03_Backgroundplaying_FMradio.png differ
diff --git a/data/resource/icons/Background playing/B03_Backgroundplaying_Voicerecorder.png b/data/resource/icons/Background playing/B03_Backgroundplaying_Voicerecorder.png
new file mode 100644 (file)
index 0000000..f1e4e76
Binary files /dev/null and b/data/resource/icons/Background playing/B03_Backgroundplaying_Voicerecorder.png differ
diff --git a/data/resource/icons/Background playing/B03_Backgroundplaying_music_paused.png b/data/resource/icons/Background playing/B03_Backgroundplaying_music_paused.png
new file mode 100644 (file)
index 0000000..5359a8c
Binary files /dev/null and b/data/resource/icons/Background playing/B03_Backgroundplaying_music_paused.png differ
diff --git a/data/resource/icons/Background playing/B03_Backgroundplaying_music_playing.png b/data/resource/icons/Background playing/B03_Backgroundplaying_music_playing.png
new file mode 100644 (file)
index 0000000..ed072ce
Binary files /dev/null and b/data/resource/icons/Background playing/B03_Backgroundplaying_music_playing.png differ
diff --git a/data/resource/icons/Background playing/B03_Backgroundplaying_voicerecorder_Recording.png b/data/resource/icons/Background playing/B03_Backgroundplaying_voicerecorder_Recording.png
deleted file mode 100755 (executable)
index 5f36853..0000000
Binary files a/data/resource/icons/Background playing/B03_Backgroundplaying_voicerecorder_Recording.png and /dev/null differ
diff --git a/data/resource/icons/Background playing/B03_Backgroundplaying_voicerecorder_paused.png b/data/resource/icons/Background playing/B03_Backgroundplaying_voicerecorder_paused.png
deleted file mode 100755 (executable)
index b373ad0..0000000
Binary files a/data/resource/icons/Background playing/B03_Backgroundplaying_voicerecorder_paused.png and /dev/null differ
diff --git a/data/resource/icons/Background playing/B03_Backgroundplaying_voicerecorder_player_pause.png b/data/resource/icons/Background playing/B03_Backgroundplaying_voicerecorder_player_pause.png
new file mode 100644 (file)
index 0000000..b43ba73
Binary files /dev/null and b/data/resource/icons/Background playing/B03_Backgroundplaying_voicerecorder_player_pause.png differ
diff --git a/data/resource/icons/Background playing/B03_Backgroundplaying_voicerecorder_player_play.png b/data/resource/icons/Background playing/B03_Backgroundplaying_voicerecorder_player_play.png
new file mode 100644 (file)
index 0000000..fd10688
Binary files /dev/null and b/data/resource/icons/Background playing/B03_Backgroundplaying_voicerecorder_player_play.png differ
diff --git a/data/resource/icons/Bluetooth, NFC, GPS/B03-4_BT_activated.png b/data/resource/icons/Bluetooth, NFC, GPS/B03-4_BT_activated.png
deleted file mode 100755 (executable)
index 6b9b3da..0000000
Binary files a/data/resource/icons/Bluetooth, NFC, GPS/B03-4_BT_activated.png and /dev/null differ
old mode 100755 (executable)
new mode 100644 (file)
index 7dca8e4..e9f2fba
Binary files a/data/resource/icons/Bluetooth, NFC, GPS/B03-4_BT_activated_on.png and b/data/resource/icons/Bluetooth, NFC, GPS/B03-4_BT_activated_on.png differ
index c4a2e1c..f819cb7 100755 (executable)
Binary files a/data/resource/icons/Bluetooth, NFC, GPS/B03_BT_On&Connected&headset.png and b/data/resource/icons/Bluetooth, NFC, GPS/B03_BT_On&Connected&headset.png differ
index c526535..e74982d 100755 (executable)
Binary files a/data/resource/icons/Bluetooth, NFC, GPS/B03_BT_On&Connected.png and b/data/resource/icons/Bluetooth, NFC, GPS/B03_BT_On&Connected.png differ
index cba2fd5..64c8fe9 100755 (executable)
Binary files a/data/resource/icons/Bluetooth, NFC, GPS/B03_BT_On&Notconnected.png and b/data/resource/icons/Bluetooth, NFC, GPS/B03_BT_On&Notconnected.png differ
diff --git a/data/resource/icons/Bluetooth, NFC, GPS/B03_BT_activated.png b/data/resource/icons/Bluetooth, NFC, GPS/B03_BT_activated.png
new file mode 100755 (executable)
index 0000000..1b3270e
Binary files /dev/null and b/data/resource/icons/Bluetooth, NFC, GPS/B03_BT_activated.png differ
diff --git a/data/resource/icons/Bluetooth, NFC, GPS/B03_BT_activated_on.png b/data/resource/icons/Bluetooth, NFC, GPS/B03_BT_activated_on.png
new file mode 100755 (executable)
index 0000000..ea2950c
Binary files /dev/null and b/data/resource/icons/Bluetooth, NFC, GPS/B03_BT_activated_on.png differ
diff --git a/data/resource/icons/Bluetooth, NFC, GPS/B03_BT_tethering-network.png b/data/resource/icons/Bluetooth, NFC, GPS/B03_BT_tethering-network.png
new file mode 100755 (executable)
index 0000000..b0531d0
Binary files /dev/null and b/data/resource/icons/Bluetooth, NFC, GPS/B03_BT_tethering-network.png differ
diff --git a/data/resource/icons/Bluetooth, NFC, GPS/B03_BT_tethering_network.png b/data/resource/icons/Bluetooth, NFC, GPS/B03_BT_tethering_network.png
new file mode 100755 (executable)
index 0000000..a900d10
Binary files /dev/null and b/data/resource/icons/Bluetooth, NFC, GPS/B03_BT_tethering_network.png differ
index 399ce4e..45f7077 100755 (executable)
Binary files a/data/resource/icons/Bluetooth, NFC, GPS/B03_GPS_On.png and b/data/resource/icons/Bluetooth, NFC, GPS/B03_GPS_On.png differ
old mode 100755 (executable)
new mode 100644 (file)
index 963fe13..561ff6d
Binary files a/data/resource/icons/Bluetooth, NFC, GPS/B03_GPS_Searching.png and b/data/resource/icons/Bluetooth, NFC, GPS/B03_GPS_Searching.png differ
index 7e72747..bd48aa6 100755 (executable)
Binary files a/data/resource/icons/Bluetooth, NFC, GPS/B03_NFC_On.png and b/data/resource/icons/Bluetooth, NFC, GPS/B03_NFC_On.png differ
diff --git a/data/resource/icons/Bluetooth, NFC, GPS/B03_Wi-fi_direct On_connected.png b/data/resource/icons/Bluetooth, NFC, GPS/B03_Wi-fi_direct On_connected.png
deleted file mode 100755 (executable)
index 68b7fbb..0000000
Binary files a/data/resource/icons/Bluetooth, NFC, GPS/B03_Wi-fi_direct On_connected.png and /dev/null differ
diff --git a/data/resource/icons/Bluetooth, NFC, GPS/B03_Wi-fi_direct On_not connected.png b/data/resource/icons/Bluetooth, NFC, GPS/B03_Wi-fi_direct On_not connected.png
deleted file mode 100755 (executable)
index 6690c8c..0000000
Binary files a/data/resource/icons/Bluetooth, NFC, GPS/B03_Wi-fi_direct On_not connected.png and /dev/null differ
diff --git a/data/resource/icons/Bluetooth, NFC, GPS/B03_Wi-fi_direct-On_connected.png b/data/resource/icons/Bluetooth, NFC, GPS/B03_Wi-fi_direct-On_connected.png
new file mode 100755 (executable)
index 0000000..fbaa717
Binary files /dev/null and b/data/resource/icons/Bluetooth, NFC, GPS/B03_Wi-fi_direct-On_connected.png differ
diff --git a/data/resource/icons/Bluetooth, NFC, GPS/B03_Wi-fi_direct-On_not-connected.png b/data/resource/icons/Bluetooth, NFC, GPS/B03_Wi-fi_direct-On_not-connected.png
new file mode 100755 (executable)
index 0000000..0f0e341
Binary files /dev/null and b/data/resource/icons/Bluetooth, NFC, GPS/B03_Wi-fi_direct-On_not-connected.png differ
diff --git a/data/resource/icons/Bluetooth, NFC, GPS/B03_bt_headset.png b/data/resource/icons/Bluetooth, NFC, GPS/B03_bt_headset.png
new file mode 100755 (executable)
index 0000000..6922add
Binary files /dev/null and b/data/resource/icons/Bluetooth, NFC, GPS/B03_bt_headset.png differ
diff --git a/data/resource/icons/Call divert/B03_Call_divert_Sim_1.png b/data/resource/icons/Call divert/B03_Call_divert_Sim_1.png
new file mode 100755 (executable)
index 0000000..3c6a89d
Binary files /dev/null and b/data/resource/icons/Call divert/B03_Call_divert_Sim_1.png differ
diff --git a/data/resource/icons/Call divert/B03_Call_divert_Sim_2.png b/data/resource/icons/Call divert/B03_Call_divert_Sim_2.png
new file mode 100755 (executable)
index 0000000..c9639d2
Binary files /dev/null and b/data/resource/icons/Call divert/B03_Call_divert_Sim_2.png differ
diff --git a/data/resource/icons/Call divert/B03_Call_divert_Sim_MMS.png b/data/resource/icons/Call divert/B03_Call_divert_Sim_MMS.png
new file mode 100755 (executable)
index 0000000..98788c3
Binary files /dev/null and b/data/resource/icons/Call divert/B03_Call_divert_Sim_MMS.png differ
diff --git a/data/resource/icons/Call divert/B03_Call_divert_Sim_SMS.png b/data/resource/icons/Call divert/B03_Call_divert_Sim_SMS.png
new file mode 100755 (executable)
index 0000000..2b2d9df
Binary files /dev/null and b/data/resource/icons/Call divert/B03_Call_divert_Sim_SMS.png differ
diff --git a/data/resource/icons/Call divert/B03_Call_divert_Sim_data.png b/data/resource/icons/Call divert/B03_Call_divert_Sim_data.png
new file mode 100755 (executable)
index 0000000..cca076d
Binary files /dev/null and b/data/resource/icons/Call divert/B03_Call_divert_Sim_data.png differ
diff --git a/data/resource/icons/Call divert/B03_Call_divert_Sim_global.png b/data/resource/icons/Call divert/B03_Call_divert_Sim_global.png
new file mode 100755 (executable)
index 0000000..34d05f1
Binary files /dev/null and b/data/resource/icons/Call divert/B03_Call_divert_Sim_global.png differ
diff --git a/data/resource/icons/Call divert/B03_Call_divert_Sim_heart.png b/data/resource/icons/Call divert/B03_Call_divert_Sim_heart.png
new file mode 100755 (executable)
index 0000000..4722860
Binary files /dev/null and b/data/resource/icons/Call divert/B03_Call_divert_Sim_heart.png differ
diff --git a/data/resource/icons/Call divert/B03_Call_divert_Sim_home.png b/data/resource/icons/Call divert/B03_Call_divert_Sim_home.png
new file mode 100755 (executable)
index 0000000..461d6ef
Binary files /dev/null and b/data/resource/icons/Call divert/B03_Call_divert_Sim_home.png differ
diff --git a/data/resource/icons/Call divert/B03_Call_divert_Sim_messages.png b/data/resource/icons/Call divert/B03_Call_divert_Sim_messages.png
new file mode 100755 (executable)
index 0000000..2b2d9df
Binary files /dev/null and b/data/resource/icons/Call divert/B03_Call_divert_Sim_messages.png differ
diff --git a/data/resource/icons/Call divert/B03_Call_divert_Sim_office.png b/data/resource/icons/Call divert/B03_Call_divert_Sim_office.png
new file mode 100755 (executable)
index 0000000..f4a04dc
Binary files /dev/null and b/data/resource/icons/Call divert/B03_Call_divert_Sim_office.png differ
diff --git a/data/resource/icons/Call divert/B03_Call_divert_Sim_phone.png b/data/resource/icons/Call divert/B03_Call_divert_Sim_phone.png
new file mode 100755 (executable)
index 0000000..dab08ee
Binary files /dev/null and b/data/resource/icons/Call divert/B03_Call_divert_Sim_phone.png differ
diff --git a/data/resource/icons/Call divert/B03_Call_divert_default.png b/data/resource/icons/Call divert/B03_Call_divert_default.png
new file mode 100755 (executable)
index 0000000..966751e
Binary files /dev/null and b/data/resource/icons/Call divert/B03_Call_divert_default.png differ
index 879fa06..fae1635 100755 (executable)
Binary files a/data/resource/icons/Call/B03_Call_Duringcall.png and b/data/resource/icons/Call/B03_Call_Duringcall.png differ
index f1107f1..fa746dd 100755 (executable)
Binary files a/data/resource/icons/Call/B03_Call_Missedcall.png and b/data/resource/icons/Call/B03_Call_Missedcall.png differ
diff --git a/data/resource/icons/Call/B03_Call_Mute.png b/data/resource/icons/Call/B03_Call_Mute.png
new file mode 100755 (executable)
index 0000000..ec07401
Binary files /dev/null and b/data/resource/icons/Call/B03_Call_Mute.png differ
index e3f1f42..ec35dc9 100755 (executable)
Binary files a/data/resource/icons/Call/B03_Call_SOSmessge_active.png and b/data/resource/icons/Call/B03_Call_SOSmessge_active.png differ
diff --git a/data/resource/icons/Call/B03_Call_Speaker_on.png b/data/resource/icons/Call/B03_Call_Speaker_on.png
new file mode 100755 (executable)
index 0000000..e61b95b
Binary files /dev/null and b/data/resource/icons/Call/B03_Call_Speaker_on.png differ
diff --git a/data/resource/icons/Call/B03_Call_bluetooth.png b/data/resource/icons/Call/B03_Call_bluetooth.png
new file mode 100755 (executable)
index 0000000..d87780d
Binary files /dev/null and b/data/resource/icons/Call/B03_Call_bluetooth.png differ
diff --git a/data/resource/icons/Cloud/B03_cloud.png b/data/resource/icons/Cloud/B03_cloud.png
new file mode 100755 (executable)
index 0000000..13aee48
Binary files /dev/null and b/data/resource/icons/Cloud/B03_cloud.png differ
diff --git a/data/resource/icons/Connection Latin/B03_conection_latin_UPdownload.png b/data/resource/icons/Connection Latin/B03_conection_latin_UPdownload.png
new file mode 100755 (executable)
index 0000000..bab94e9
Binary files /dev/null and b/data/resource/icons/Connection Latin/B03_conection_latin_UPdownload.png differ
diff --git a/data/resource/icons/Connection Latin/B03_connection_latin_3G.png b/data/resource/icons/Connection Latin/B03_connection_latin_3G.png
new file mode 100755 (executable)
index 0000000..d49e60b
Binary files /dev/null and b/data/resource/icons/Connection Latin/B03_connection_latin_3G.png differ
diff --git a/data/resource/icons/Connection Latin/B03_connection_latin_4G.png b/data/resource/icons/Connection Latin/B03_connection_latin_4G.png
new file mode 100755 (executable)
index 0000000..e0776ed
Binary files /dev/null and b/data/resource/icons/Connection Latin/B03_connection_latin_4G.png differ
diff --git a/data/resource/icons/Connection Latin/B03_connection_latin_E.png b/data/resource/icons/Connection Latin/B03_connection_latin_E.png
new file mode 100755 (executable)
index 0000000..e098f6b
Binary files /dev/null and b/data/resource/icons/Connection Latin/B03_connection_latin_E.png differ
diff --git a/data/resource/icons/Connection Latin/B03_connection_latin_GSM.png b/data/resource/icons/Connection Latin/B03_connection_latin_GSM.png
new file mode 100755 (executable)
index 0000000..a9c0a6a
Binary files /dev/null and b/data/resource/icons/Connection Latin/B03_connection_latin_GSM.png differ
diff --git a/data/resource/icons/Connection Latin/B03_connection_latin_H+.png b/data/resource/icons/Connection Latin/B03_connection_latin_H+.png
new file mode 100755 (executable)
index 0000000..12fcd4d
Binary files /dev/null and b/data/resource/icons/Connection Latin/B03_connection_latin_H+.png differ
diff --git a/data/resource/icons/Connection Latin/B03_connection_latin_H.png b/data/resource/icons/Connection Latin/B03_connection_latin_H.png
new file mode 100755 (executable)
index 0000000..8e9c7ed
Binary files /dev/null and b/data/resource/icons/Connection Latin/B03_connection_latin_H.png differ
diff --git a/data/resource/icons/Connection Latin/B03_connection_latin_LimitedService.png b/data/resource/icons/Connection Latin/B03_connection_latin_LimitedService.png
new file mode 100755 (executable)
index 0000000..c165fb0
Binary files /dev/null and b/data/resource/icons/Connection Latin/B03_connection_latin_LimitedService.png differ
diff --git a/data/resource/icons/Connection Latin/B03_latin_3G.png b/data/resource/icons/Connection Latin/B03_latin_3G.png
new file mode 100755 (executable)
index 0000000..4e526e5
Binary files /dev/null and b/data/resource/icons/Connection Latin/B03_latin_3G.png differ
diff --git a/data/resource/icons/Connection Latin/B03_latin_4G.png b/data/resource/icons/Connection Latin/B03_latin_4G.png
new file mode 100755 (executable)
index 0000000..257835e
Binary files /dev/null and b/data/resource/icons/Connection Latin/B03_latin_4G.png differ
diff --git a/data/resource/icons/Connection Latin/B03_latin_E.png b/data/resource/icons/Connection Latin/B03_latin_E.png
new file mode 100755 (executable)
index 0000000..3b508a8
Binary files /dev/null and b/data/resource/icons/Connection Latin/B03_latin_E.png differ
diff --git a/data/resource/icons/Connection Latin/B03_latin_GSM.png b/data/resource/icons/Connection Latin/B03_latin_GSM.png
new file mode 100755 (executable)
index 0000000..936329e
Binary files /dev/null and b/data/resource/icons/Connection Latin/B03_latin_GSM.png differ
diff --git a/data/resource/icons/Connection Latin/B03_latin_H+.png b/data/resource/icons/Connection Latin/B03_latin_H+.png
new file mode 100755 (executable)
index 0000000..f25f272
Binary files /dev/null and b/data/resource/icons/Connection Latin/B03_latin_H+.png differ
diff --git a/data/resource/icons/Connection Latin/B03_latin_H.png b/data/resource/icons/Connection Latin/B03_latin_H.png
new file mode 100755 (executable)
index 0000000..4412e72
Binary files /dev/null and b/data/resource/icons/Connection Latin/B03_latin_H.png differ
diff --git a/data/resource/icons/Connection Latin/B03_latin_LimitedService.png b/data/resource/icons/Connection Latin/B03_latin_LimitedService.png
new file mode 100755 (executable)
index 0000000..8e62682
Binary files /dev/null and b/data/resource/icons/Connection Latin/B03_latin_LimitedService.png differ
diff --git a/data/resource/icons/Connection/B03_1x.png b/data/resource/icons/Connection/B03_1x.png
new file mode 100755 (executable)
index 0000000..8a82ba4
Binary files /dev/null and b/data/resource/icons/Connection/B03_1x.png differ
diff --git a/data/resource/icons/Connection/B03_3G+.png b/data/resource/icons/Connection/B03_3G+.png
new file mode 100755 (executable)
index 0000000..cb863e3
Binary files /dev/null and b/data/resource/icons/Connection/B03_3G+.png differ
diff --git a/data/resource/icons/Connection/B03_3G.png b/data/resource/icons/Connection/B03_3G.png
new file mode 100755 (executable)
index 0000000..c86b292
Binary files /dev/null and b/data/resource/icons/Connection/B03_3G.png differ
diff --git a/data/resource/icons/Connection/B03_4G.png b/data/resource/icons/Connection/B03_4G.png
new file mode 100755 (executable)
index 0000000..a446899
Binary files /dev/null and b/data/resource/icons/Connection/B03_4G.png differ
diff --git a/data/resource/icons/Connection/B03_CDMA.png b/data/resource/icons/Connection/B03_CDMA.png
new file mode 100755 (executable)
index 0000000..fa6fc1d
Binary files /dev/null and b/data/resource/icons/Connection/B03_CDMA.png differ
diff --git a/data/resource/icons/Connection/B03_E.png b/data/resource/icons/Connection/B03_E.png
new file mode 100755 (executable)
index 0000000..435a9bc
Binary files /dev/null and b/data/resource/icons/Connection/B03_E.png differ
diff --git a/data/resource/icons/Connection/B03_EVDO.png b/data/resource/icons/Connection/B03_EVDO.png
new file mode 100755 (executable)
index 0000000..1724437
Binary files /dev/null and b/data/resource/icons/Connection/B03_EVDO.png differ
diff --git a/data/resource/icons/Connection/B03_GPRS.png b/data/resource/icons/Connection/B03_GPRS.png
new file mode 100755 (executable)
index 0000000..ac01a40
Binary files /dev/null and b/data/resource/icons/Connection/B03_GPRS.png differ
diff --git a/data/resource/icons/Connection/B03_GSM.png b/data/resource/icons/Connection/B03_GSM.png
new file mode 100755 (executable)
index 0000000..746f89d
Binary files /dev/null and b/data/resource/icons/Connection/B03_GSM.png differ
diff --git a/data/resource/icons/Connection/B03_H+.png b/data/resource/icons/Connection/B03_H+.png
new file mode 100755 (executable)
index 0000000..1287fbb
Binary files /dev/null and b/data/resource/icons/Connection/B03_H+.png differ
diff --git a/data/resource/icons/Connection/B03_H.png b/data/resource/icons/Connection/B03_H.png
new file mode 100755 (executable)
index 0000000..0522c46
Binary files /dev/null and b/data/resource/icons/Connection/B03_H.png differ
diff --git a/data/resource/icons/Connection/B03_Highspeed.png b/data/resource/icons/Connection/B03_Highspeed.png
new file mode 100755 (executable)
index 0000000..242558e
Binary files /dev/null and b/data/resource/icons/Connection/B03_Highspeed.png differ
diff --git a/data/resource/icons/Connection/B03_LTE.png b/data/resource/icons/Connection/B03_LTE.png
new file mode 100755 (executable)
index 0000000..9ad63fe
Binary files /dev/null and b/data/resource/icons/Connection/B03_LTE.png differ
index df606e9..b113d4f 100755 (executable)
Binary files a/data/resource/icons/Connection/B03_MobileAP_connected.png and b/data/resource/icons/Connection/B03_MobileAP_connected.png differ
index 3501020..3bc2bb4 100755 (executable)
Binary files a/data/resource/icons/Connection/B03_MobileAP_connected_01.png and b/data/resource/icons/Connection/B03_MobileAP_connected_01.png differ
index 94e2e49..079124f 100755 (executable)
Binary files a/data/resource/icons/Connection/B03_MobileAP_connected_02.png and b/data/resource/icons/Connection/B03_MobileAP_connected_02.png differ
index 86af438..3ba43cb 100755 (executable)
Binary files a/data/resource/icons/Connection/B03_MobileAP_connected_03.png and b/data/resource/icons/Connection/B03_MobileAP_connected_03.png differ
index fd26ab6..f5c06b2 100755 (executable)
Binary files a/data/resource/icons/Connection/B03_MobileAP_connected_04.png and b/data/resource/icons/Connection/B03_MobileAP_connected_04.png differ
index 21751d9..0fe3b7b 100755 (executable)
Binary files a/data/resource/icons/Connection/B03_MobileAP_connected_05.png and b/data/resource/icons/Connection/B03_MobileAP_connected_05.png differ
index 6552957..7327588 100755 (executable)
Binary files a/data/resource/icons/Connection/B03_MobileAP_connected_06.png and b/data/resource/icons/Connection/B03_MobileAP_connected_06.png differ
index 9314ba2..cf308f1 100755 (executable)
Binary files a/data/resource/icons/Connection/B03_MobileAP_connected_07.png and b/data/resource/icons/Connection/B03_MobileAP_connected_07.png differ
index a2f0db5..625d7de 100755 (executable)
Binary files a/data/resource/icons/Connection/B03_MobileAP_connected_08.png and b/data/resource/icons/Connection/B03_MobileAP_connected_08.png differ
index 2a592a1..5260860 100755 (executable)
Binary files a/data/resource/icons/Connection/B03_MobileAP_connected_09.png and b/data/resource/icons/Connection/B03_MobileAP_connected_09.png differ
diff --git a/data/resource/icons/Connection/B03_MobileAP_connected_10.png b/data/resource/icons/Connection/B03_MobileAP_connected_10.png
new file mode 100755 (executable)
index 0000000..1a4a1b8
Binary files /dev/null and b/data/resource/icons/Connection/B03_MobileAP_connected_10.png differ
diff --git a/data/resource/icons/Connection/B03_MobileAP_connected_11.png b/data/resource/icons/Connection/B03_MobileAP_connected_11.png
new file mode 100755 (executable)
index 0000000..2d9eef4
Binary files /dev/null and b/data/resource/icons/Connection/B03_MobileAP_connected_11.png differ
diff --git a/data/resource/icons/Connection/B03_MobileAP_connected_12.png b/data/resource/icons/Connection/B03_MobileAP_connected_12.png
new file mode 100755 (executable)
index 0000000..7973326
Binary files /dev/null and b/data/resource/icons/Connection/B03_MobileAP_connected_12.png differ
diff --git a/data/resource/icons/Connection/B03_MobileAP_connected_13.png b/data/resource/icons/Connection/B03_MobileAP_connected_13.png
new file mode 100755 (executable)
index 0000000..e6027a7
Binary files /dev/null and b/data/resource/icons/Connection/B03_MobileAP_connected_13.png differ
diff --git a/data/resource/icons/Connection/B03_MobileAP_connected_14.png b/data/resource/icons/Connection/B03_MobileAP_connected_14.png
new file mode 100755 (executable)
index 0000000..f2652d0
Binary files /dev/null and b/data/resource/icons/Connection/B03_MobileAP_connected_14.png differ
diff --git a/data/resource/icons/Connection/B03_MobileAP_connected_15.png b/data/resource/icons/Connection/B03_MobileAP_connected_15.png
new file mode 100755 (executable)
index 0000000..206afc5
Binary files /dev/null and b/data/resource/icons/Connection/B03_MobileAP_connected_15.png differ
diff --git a/data/resource/icons/Connection/B03_MobileAP_connected_16.png b/data/resource/icons/Connection/B03_MobileAP_connected_16.png
new file mode 100755 (executable)
index 0000000..5f8208f
Binary files /dev/null and b/data/resource/icons/Connection/B03_MobileAP_connected_16.png differ
diff --git a/data/resource/icons/Connection/B03_MobileAP_connected_17.png b/data/resource/icons/Connection/B03_MobileAP_connected_17.png
new file mode 100755 (executable)
index 0000000..0e44791
Binary files /dev/null and b/data/resource/icons/Connection/B03_MobileAP_connected_17.png differ
diff --git a/data/resource/icons/Connection/B03_MobileAP_connected_18.png b/data/resource/icons/Connection/B03_MobileAP_connected_18.png
new file mode 100755 (executable)
index 0000000..596905e
Binary files /dev/null and b/data/resource/icons/Connection/B03_MobileAP_connected_18.png differ
diff --git a/data/resource/icons/Connection/B03_MobileAP_in_range.png b/data/resource/icons/Connection/B03_MobileAP_in_range.png
new file mode 100755 (executable)
index 0000000..7cd3ed7
Binary files /dev/null and b/data/resource/icons/Connection/B03_MobileAP_in_range.png differ
diff --git a/data/resource/icons/Connection/B03_MobileAP_on&not connected.png b/data/resource/icons/Connection/B03_MobileAP_on&not connected.png
deleted file mode 100755 (executable)
index a2c7955..0000000
Binary files a/data/resource/icons/Connection/B03_MobileAP_on¬ connected.png and /dev/null differ
diff --git a/data/resource/icons/Connection/B03_MobileAP_on&not-connected.png b/data/resource/icons/Connection/B03_MobileAP_on&not-connected.png
new file mode 100755 (executable)
index 0000000..f302bc0
Binary files /dev/null and b/data/resource/icons/Connection/B03_MobileAP_on¬-connected.png differ
diff --git a/data/resource/icons/Connection/B03_USB.png b/data/resource/icons/Connection/B03_USB.png
new file mode 100755 (executable)
index 0000000..db88c71
Binary files /dev/null and b/data/resource/icons/Connection/B03_USB.png differ
diff --git a/data/resource/icons/Connection/B03_conection_UPdownload.png b/data/resource/icons/Connection/B03_conection_UPdownload.png
new file mode 100755 (executable)
index 0000000..d59226c
Binary files /dev/null and b/data/resource/icons/Connection/B03_conection_UPdownload.png differ
diff --git a/data/resource/icons/Connection/B03_conection_not_UPdownload.png b/data/resource/icons/Connection/B03_conection_not_UPdownload.png
new file mode 100755 (executable)
index 0000000..bbb6e47
Binary files /dev/null and b/data/resource/icons/Connection/B03_conection_not_UPdownload.png differ
index 222a342..a2aa278 100755 (executable)
Binary files a/data/resource/icons/Connection/B03_connection_1x.png and b/data/resource/icons/Connection/B03_connection_1x.png differ
index eb18fb8..77cabfd 100755 (executable)
Binary files a/data/resource/icons/Connection/B03_connection_3G+.png and b/data/resource/icons/Connection/B03_connection_3G+.png differ
index f403c1d..9401b0d 100755 (executable)
Binary files a/data/resource/icons/Connection/B03_connection_3G.png and b/data/resource/icons/Connection/B03_connection_3G.png differ
index 17010eb..e15a7e5 100755 (executable)
Binary files a/data/resource/icons/Connection/B03_connection_4G.png and b/data/resource/icons/Connection/B03_connection_4G.png differ
diff --git a/data/resource/icons/Connection/B03_connection_C.png b/data/resource/icons/Connection/B03_connection_C.png
new file mode 100755 (executable)
index 0000000..af7e868
Binary files /dev/null and b/data/resource/icons/Connection/B03_connection_C.png differ
diff --git a/data/resource/icons/Connection/B03_connection_E.png b/data/resource/icons/Connection/B03_connection_E.png
new file mode 100755 (executable)
index 0000000..5b8f297
Binary files /dev/null and b/data/resource/icons/Connection/B03_connection_E.png differ
diff --git a/data/resource/icons/Connection/B03_connection_EV.png b/data/resource/icons/Connection/B03_connection_EV.png
new file mode 100755 (executable)
index 0000000..6cc469f
Binary files /dev/null and b/data/resource/icons/Connection/B03_connection_EV.png differ
diff --git a/data/resource/icons/Connection/B03_connection_EVDO.png b/data/resource/icons/Connection/B03_connection_EVDO.png
deleted file mode 100755 (executable)
index 81ef17b..0000000
Binary files a/data/resource/icons/Connection/B03_connection_EVDO.png and /dev/null differ
diff --git a/data/resource/icons/Connection/B03_connection_G.png b/data/resource/icons/Connection/B03_connection_G.png
new file mode 100755 (executable)
index 0000000..3a1f7d9
Binary files /dev/null and b/data/resource/icons/Connection/B03_connection_G.png differ
index 977a5c4..cad407d 100755 (executable)
Binary files a/data/resource/icons/Connection/B03_connection_GPRS.png and b/data/resource/icons/Connection/B03_connection_GPRS.png differ
diff --git a/data/resource/icons/Connection/B03_connection_GSM.png b/data/resource/icons/Connection/B03_connection_GSM.png
deleted file mode 100755 (executable)
index 5d890e9..0000000
Binary files a/data/resource/icons/Connection/B03_connection_GSM.png and /dev/null differ
diff --git a/data/resource/icons/Connection/B03_connection_H+.png b/data/resource/icons/Connection/B03_connection_H+.png
new file mode 100755 (executable)
index 0000000..a381212
Binary files /dev/null and b/data/resource/icons/Connection/B03_connection_H+.png differ
diff --git a/data/resource/icons/Connection/B03_connection_H.png b/data/resource/icons/Connection/B03_connection_H.png
new file mode 100755 (executable)
index 0000000..bb0eaf8
Binary files /dev/null and b/data/resource/icons/Connection/B03_connection_H.png differ
diff --git a/data/resource/icons/Connection/B03_connection_HS.png b/data/resource/icons/Connection/B03_connection_HS.png
new file mode 100755 (executable)
index 0000000..4715279
Binary files /dev/null and b/data/resource/icons/Connection/B03_connection_HS.png differ
diff --git a/data/resource/icons/Connection/B03_connection_Highspeed.png b/data/resource/icons/Connection/B03_connection_Highspeed.png
deleted file mode 100755 (executable)
index 95e650c..0000000
Binary files a/data/resource/icons/Connection/B03_connection_Highspeed.png and /dev/null differ
index b8173da..a8ae66e 100755 (executable)
Binary files a/data/resource/icons/Connection/B03_connection_LTE.png and b/data/resource/icons/Connection/B03_connection_LTE.png differ
diff --git a/data/resource/icons/Connection/B03_connection_UPload.png b/data/resource/icons/Connection/B03_connection_UPload.png
new file mode 100755 (executable)
index 0000000..48f4806
Binary files /dev/null and b/data/resource/icons/Connection/B03_connection_UPload.png differ
diff --git a/data/resource/icons/Connection/B03_connection_USB.png b/data/resource/icons/Connection/B03_connection_USB.png
deleted file mode 100755 (executable)
index 0dc9cc1..0000000
Binary files a/data/resource/icons/Connection/B03_connection_USB.png and /dev/null differ
index d3bcded..d47b337 100755 (executable)
Binary files a/data/resource/icons/Connection/B03_connection_Wifi_01.png and b/data/resource/icons/Connection/B03_connection_Wifi_01.png differ
index 4b3a6af..94bce58 100755 (executable)
Binary files a/data/resource/icons/Connection/B03_connection_Wifi_02.png and b/data/resource/icons/Connection/B03_connection_Wifi_02.png differ
index 9b41ab6..7249778 100755 (executable)
Binary files a/data/resource/icons/Connection/B03_connection_Wifi_03.png and b/data/resource/icons/Connection/B03_connection_Wifi_03.png differ
index 084b0ae..c9bde1f 100755 (executable)
Binary files a/data/resource/icons/Connection/B03_connection_Wifi_04.png and b/data/resource/icons/Connection/B03_connection_Wifi_04.png differ
diff --git a/data/resource/icons/Connection/B03_connection_download.png b/data/resource/icons/Connection/B03_connection_download.png
new file mode 100755 (executable)
index 0000000..25802b0
Binary files /dev/null and b/data/resource/icons/Connection/B03_connection_download.png differ
diff --git a/data/resource/icons/Connection/B03_connection_download_3G.png b/data/resource/icons/Connection/B03_connection_download_3G.png
new file mode 100755 (executable)
index 0000000..01aa2c4
Binary files /dev/null and b/data/resource/icons/Connection/B03_connection_download_3G.png differ
diff --git a/data/resource/icons/Connection/B03_connection_download_LTE.png b/data/resource/icons/Connection/B03_connection_download_LTE.png
new file mode 100755 (executable)
index 0000000..8b1a1d1
Binary files /dev/null and b/data/resource/icons/Connection/B03_connection_download_LTE.png differ
diff --git a/data/resource/icons/Connection/B03_data_downloading_Wifi_01.png b/data/resource/icons/Connection/B03_data_downloading_Wifi_01.png
new file mode 100755 (executable)
index 0000000..2ec44ee
Binary files /dev/null and b/data/resource/icons/Connection/B03_data_downloading_Wifi_01.png differ
diff --git a/data/resource/icons/Connection/B03_data_downloading_Wifi_02.png b/data/resource/icons/Connection/B03_data_downloading_Wifi_02.png
new file mode 100755 (executable)
index 0000000..5677740
Binary files /dev/null and b/data/resource/icons/Connection/B03_data_downloading_Wifi_02.png differ
diff --git a/data/resource/icons/Connection/B03_data_downloading_Wifi_03.png b/data/resource/icons/Connection/B03_data_downloading_Wifi_03.png
new file mode 100755 (executable)
index 0000000..41373d6
Binary files /dev/null and b/data/resource/icons/Connection/B03_data_downloading_Wifi_03.png differ
diff --git a/data/resource/icons/Connection/B03_data_downloading_Wifi_04.png b/data/resource/icons/Connection/B03_data_downloading_Wifi_04.png
new file mode 100755 (executable)
index 0000000..f6f7e54
Binary files /dev/null and b/data/resource/icons/Connection/B03_data_downloading_Wifi_04.png differ
diff --git a/data/resource/icons/Connection/B03_network_bonding_download_00.png b/data/resource/icons/Connection/B03_network_bonding_download_00.png
new file mode 100755 (executable)
index 0000000..86e29e4
Binary files /dev/null and b/data/resource/icons/Connection/B03_network_bonding_download_00.png differ
diff --git a/data/resource/icons/Connection/B03_network_bonding_download_01.png b/data/resource/icons/Connection/B03_network_bonding_download_01.png
new file mode 100755 (executable)
index 0000000..470770c
Binary files /dev/null and b/data/resource/icons/Connection/B03_network_bonding_download_01.png differ
diff --git a/data/resource/icons/Connection/B03_network_bonding_download_02.png b/data/resource/icons/Connection/B03_network_bonding_download_02.png
new file mode 100755 (executable)
index 0000000..99c7541
Binary files /dev/null and b/data/resource/icons/Connection/B03_network_bonding_download_02.png differ
diff --git a/data/resource/icons/Connection/B03_network_bonding_download_03.png b/data/resource/icons/Connection/B03_network_bonding_download_03.png
new file mode 100755 (executable)
index 0000000..4540812
Binary files /dev/null and b/data/resource/icons/Connection/B03_network_bonding_download_03.png differ
diff --git a/data/resource/icons/Connection/B03_network_bonding_download_04.png b/data/resource/icons/Connection/B03_network_bonding_download_04.png
new file mode 100755 (executable)
index 0000000..e14c720
Binary files /dev/null and b/data/resource/icons/Connection/B03_network_bonding_download_04.png differ
diff --git a/data/resource/icons/Connection/B03_network_bonding_download_05.png b/data/resource/icons/Connection/B03_network_bonding_download_05.png
new file mode 100755 (executable)
index 0000000..953b8df
Binary files /dev/null and b/data/resource/icons/Connection/B03_network_bonding_download_05.png differ
diff --git a/data/resource/icons/Connection/B03_network_bonding_download_06.png b/data/resource/icons/Connection/B03_network_bonding_download_06.png
new file mode 100755 (executable)
index 0000000..a541691
Binary files /dev/null and b/data/resource/icons/Connection/B03_network_bonding_download_06.png differ
diff --git a/data/resource/icons/Connection/B03_not_conection_UPdownload.png b/data/resource/icons/Connection/B03_not_conection_UPdownload.png
new file mode 100755 (executable)
index 0000000..6181191
Binary files /dev/null and b/data/resource/icons/Connection/B03_not_conection_UPdownload.png differ
diff --git a/data/resource/icons/Connection/network_restriction_mode.png b/data/resource/icons/Connection/network_restriction_mode.png
new file mode 100644 (file)
index 0000000..209e6e7
Binary files /dev/null and b/data/resource/icons/Connection/network_restriction_mode.png differ
diff --git a/data/resource/icons/Desk dock/B03_desk_dock.png b/data/resource/icons/Desk dock/B03_desk_dock.png
new file mode 100755 (executable)
index 0000000..2b9b03f
Binary files /dev/null and b/data/resource/icons/Desk dock/B03_desk_dock.png differ
diff --git a/data/resource/icons/Download booster/B03_download_booster_3g_dim.png b/data/resource/icons/Download booster/B03_download_booster_3g_dim.png
new file mode 100755 (executable)
index 0000000..b02fee1
Binary files /dev/null and b/data/resource/icons/Download booster/B03_download_booster_3g_dim.png differ
diff --git a/data/resource/icons/Download booster/B03_download_booster_3g_on.png b/data/resource/icons/Download booster/B03_download_booster_3g_on.png
new file mode 100755 (executable)
index 0000000..69b6efc
Binary files /dev/null and b/data/resource/icons/Download booster/B03_download_booster_3g_on.png differ
diff --git a/data/resource/icons/Download booster/B03_download_booster_LTE_dim.png b/data/resource/icons/Download booster/B03_download_booster_LTE_dim.png
new file mode 100755 (executable)
index 0000000..1a7ea00
Binary files /dev/null and b/data/resource/icons/Download booster/B03_download_booster_LTE_dim.png differ
diff --git a/data/resource/icons/Download booster/B03_download_booster_LTE_on.png b/data/resource/icons/Download booster/B03_download_booster_LTE_on.png
new file mode 100755 (executable)
index 0000000..4cf7701
Binary files /dev/null and b/data/resource/icons/Download booster/B03_download_booster_LTE_on.png differ
diff --git a/data/resource/icons/Download booster/B03_download_booster_dim.png b/data/resource/icons/Download booster/B03_download_booster_dim.png
new file mode 100755 (executable)
index 0000000..80cae95
Binary files /dev/null and b/data/resource/icons/Download booster/B03_download_booster_dim.png differ
diff --git a/data/resource/icons/Download booster/B03_download_booster_down_up.png b/data/resource/icons/Download booster/B03_download_booster_down_up.png
new file mode 100755 (executable)
index 0000000..18359d7
Binary files /dev/null and b/data/resource/icons/Download booster/B03_download_booster_down_up.png differ
diff --git a/data/resource/icons/Download booster/B03_download_booster_down_up_download.png b/data/resource/icons/Download booster/B03_download_booster_down_up_download.png
new file mode 100755 (executable)
index 0000000..8608099
Binary files /dev/null and b/data/resource/icons/Download booster/B03_download_booster_down_up_download.png differ
diff --git a/data/resource/icons/Download booster/B03_download_booster_down_up_none.png b/data/resource/icons/Download booster/B03_download_booster_down_up_none.png
new file mode 100755 (executable)
index 0000000..ba4860e
Binary files /dev/null and b/data/resource/icons/Download booster/B03_download_booster_down_up_none.png differ
diff --git a/data/resource/icons/Download booster/B03_download_booster_down_up_upload.png b/data/resource/icons/Download booster/B03_download_booster_down_up_upload.png
new file mode 100755 (executable)
index 0000000..b506adb
Binary files /dev/null and b/data/resource/icons/Download booster/B03_download_booster_down_up_upload.png differ
diff --git a/data/resource/icons/Download booster/B03_download_booster_no_service.png b/data/resource/icons/Download booster/B03_download_booster_no_service.png
new file mode 100755 (executable)
index 0000000..a1c4eaa
Binary files /dev/null and b/data/resource/icons/Download booster/B03_download_booster_no_service.png differ
diff --git a/data/resource/icons/Download booster/B03_download_booster_no_service_dim.png b/data/resource/icons/Download booster/B03_download_booster_no_service_dim.png
new file mode 100755 (executable)
index 0000000..f699769
Binary files /dev/null and b/data/resource/icons/Download booster/B03_download_booster_no_service_dim.png differ
diff --git a/data/resource/icons/Download booster/B03_download_booster_on.png b/data/resource/icons/Download booster/B03_download_booster_on.png
new file mode 100755 (executable)
index 0000000..c1ded3a
Binary files /dev/null and b/data/resource/icons/Download booster/B03_download_booster_on.png differ
diff --git a/data/resource/icons/Download booster/B03_download_booster_wifi_00.png b/data/resource/icons/Download booster/B03_download_booster_wifi_00.png
new file mode 100755 (executable)
index 0000000..c44b806
Binary files /dev/null and b/data/resource/icons/Download booster/B03_download_booster_wifi_00.png differ
diff --git a/data/resource/icons/Download booster/B03_download_booster_wifi_01.png b/data/resource/icons/Download booster/B03_download_booster_wifi_01.png
new file mode 100755 (executable)
index 0000000..44271e9
Binary files /dev/null and b/data/resource/icons/Download booster/B03_download_booster_wifi_01.png differ
diff --git a/data/resource/icons/Download booster/B03_download_booster_wifi_02.png b/data/resource/icons/Download booster/B03_download_booster_wifi_02.png
new file mode 100755 (executable)
index 0000000..78f28a9
Binary files /dev/null and b/data/resource/icons/Download booster/B03_download_booster_wifi_02.png differ
diff --git a/data/resource/icons/Download booster/B03_download_booster_wifi_03.png b/data/resource/icons/Download booster/B03_download_booster_wifi_03.png
new file mode 100755 (executable)
index 0000000..614a1eb
Binary files /dev/null and b/data/resource/icons/Download booster/B03_download_booster_wifi_03.png differ
diff --git a/data/resource/icons/Download booster/B03_download_booster_wifi_04.png b/data/resource/icons/Download booster/B03_download_booster_wifi_04.png
new file mode 100755 (executable)
index 0000000..77a616c
Binary files /dev/null and b/data/resource/icons/Download booster/B03_download_booster_wifi_04.png differ
similarity index 77%
rename from data/resource/icons/Background playing/B03_Backgroundplaying_Voicerecording.png
rename to data/resource/icons/Dropbox/B03_dropbox.png
index 299f903..1dbc131 100755 (executable)
Binary files a/data/resource/icons/Background playing/B03_Backgroundplaying_Voicerecording.png and b/data/resource/icons/Dropbox/B03_dropbox.png differ
diff --git a/data/resource/icons/Dual SIM/B03_Dual_Sim_00.png b/data/resource/icons/Dual SIM/B03_Dual_Sim_00.png
new file mode 100755 (executable)
index 0000000..44da375
Binary files /dev/null and b/data/resource/icons/Dual SIM/B03_Dual_Sim_00.png differ
diff --git a/data/resource/icons/Dual SIM/B03_Dual_Sim_01.png b/data/resource/icons/Dual SIM/B03_Dual_Sim_01.png
new file mode 100755 (executable)
index 0000000..1553dc9
Binary files /dev/null and b/data/resource/icons/Dual SIM/B03_Dual_Sim_01.png differ
diff --git a/data/resource/icons/Dual SIM/B03_Dual_Sim_1.png b/data/resource/icons/Dual SIM/B03_Dual_Sim_1.png
new file mode 100755 (executable)
index 0000000..aad2046
Binary files /dev/null and b/data/resource/icons/Dual SIM/B03_Dual_Sim_1.png differ
diff --git a/data/resource/icons/Dual SIM/B03_Dual_Sim_2.png b/data/resource/icons/Dual SIM/B03_Dual_Sim_2.png
new file mode 100755 (executable)
index 0000000..7fe6021
Binary files /dev/null and b/data/resource/icons/Dual SIM/B03_Dual_Sim_2.png differ
diff --git a/data/resource/icons/Dual SIM/B03_Dual_Sim_MMS.png b/data/resource/icons/Dual SIM/B03_Dual_Sim_MMS.png
new file mode 100755 (executable)
index 0000000..47d5864
Binary files /dev/null and b/data/resource/icons/Dual SIM/B03_Dual_Sim_MMS.png differ
diff --git a/data/resource/icons/Dual SIM/B03_Dual_Sim_SMS.png b/data/resource/icons/Dual SIM/B03_Dual_Sim_SMS.png
new file mode 100755 (executable)
index 0000000..2e9862d
Binary files /dev/null and b/data/resource/icons/Dual SIM/B03_Dual_Sim_SMS.png differ
diff --git a/data/resource/icons/Dual SIM/B03_Dual_Sim_data.png b/data/resource/icons/Dual SIM/B03_Dual_Sim_data.png
new file mode 100755 (executable)
index 0000000..5ca850a
Binary files /dev/null and b/data/resource/icons/Dual SIM/B03_Dual_Sim_data.png differ
diff --git a/data/resource/icons/Dual SIM/B03_Dual_Sim_global.png b/data/resource/icons/Dual SIM/B03_Dual_Sim_global.png
new file mode 100755 (executable)
index 0000000..ece731c
Binary files /dev/null and b/data/resource/icons/Dual SIM/B03_Dual_Sim_global.png differ
diff --git a/data/resource/icons/Dual SIM/B03_Dual_Sim_heart.png b/data/resource/icons/Dual SIM/B03_Dual_Sim_heart.png
new file mode 100755 (executable)
index 0000000..ff78ba0
Binary files /dev/null and b/data/resource/icons/Dual SIM/B03_Dual_Sim_heart.png differ
diff --git a/data/resource/icons/Dual SIM/B03_Dual_Sim_home.png b/data/resource/icons/Dual SIM/B03_Dual_Sim_home.png
new file mode 100755 (executable)
index 0000000..a2aa223
Binary files /dev/null and b/data/resource/icons/Dual SIM/B03_Dual_Sim_home.png differ
diff --git a/data/resource/icons/Dual SIM/B03_Dual_Sim_messages.png b/data/resource/icons/Dual SIM/B03_Dual_Sim_messages.png
new file mode 100755 (executable)
index 0000000..2e9862d
Binary files /dev/null and b/data/resource/icons/Dual SIM/B03_Dual_Sim_messages.png differ
diff --git a/data/resource/icons/Dual SIM/B03_Dual_Sim_office.png b/data/resource/icons/Dual SIM/B03_Dual_Sim_office.png
new file mode 100755 (executable)
index 0000000..4f2783b
Binary files /dev/null and b/data/resource/icons/Dual SIM/B03_Dual_Sim_office.png differ
diff --git a/data/resource/icons/Dual SIM/B03_Dual_Sim_phone.png b/data/resource/icons/Dual SIM/B03_Dual_Sim_phone.png
new file mode 100755 (executable)
index 0000000..42b07da
Binary files /dev/null and b/data/resource/icons/Dual SIM/B03_Dual_Sim_phone.png differ
diff --git a/data/resource/icons/Earphone/B03_BT_Headset.png b/data/resource/icons/Earphone/B03_BT_Headset.png
new file mode 100755 (executable)
index 0000000..2015617
Binary files /dev/null and b/data/resource/icons/Earphone/B03_BT_Headset.png differ
diff --git a/data/resource/icons/Earphone/B03_Earphone.png b/data/resource/icons/Earphone/B03_Earphone.png
deleted file mode 100755 (executable)
index 7418683..0000000
Binary files a/data/resource/icons/Earphone/B03_Earphone.png and /dev/null differ
similarity index 86%
rename from data/resource/icons/Connection/B03_connection02.png
rename to data/resource/icons/Error/B03_Error.png
index 10b873f..5c89628 100755 (executable)
Binary files a/data/resource/icons/Connection/B03_connection02.png and b/data/resource/icons/Error/B03_Error.png differ
index bf6750b..f8a8f7f 100755 (executable)
Binary files a/data/resource/icons/Event/B03_Event_IM.png and b/data/resource/icons/Event/B03_Event_IM.png differ
index 6758bad..1613c6e 100755 (executable)
Binary files a/data/resource/icons/Event/B03_Event_Message.png and b/data/resource/icons/Event/B03_Event_Message.png differ
index f2d2b59..fa6c380 100755 (executable)
Binary files a/data/resource/icons/Event/B03_Event_email.png and b/data/resource/icons/Event/B03_Event_email.png differ
index 0d0a30c..8a30e15 100755 (executable)
Binary files a/data/resource/icons/Event/B03_Event_voicemail.png and b/data/resource/icons/Event/B03_Event_voicemail.png differ
diff --git a/data/resource/icons/Event/B03_event_OTA_Messages.png b/data/resource/icons/Event/B03_event_OTA_Messages.png
new file mode 100755 (executable)
index 0000000..0683e5c
Binary files /dev/null and b/data/resource/icons/Event/B03_event_OTA_Messages.png differ
diff --git a/data/resource/icons/Event/B03_event_blocking_mode.png b/data/resource/icons/Event/B03_event_blocking_mode.png
new file mode 100755 (executable)
index 0000000..f1b9086
Binary files /dev/null and b/data/resource/icons/Event/B03_event_blocking_mode.png differ
diff --git a/data/resource/icons/Event/B03_event_cancel_message.png b/data/resource/icons/Event/B03_event_cancel_message.png
new file mode 100755 (executable)
index 0000000..206bb61
Binary files /dev/null and b/data/resource/icons/Event/B03_event_cancel_message.png differ
diff --git a/data/resource/icons/Event/B03_event_delivery_report_message.png b/data/resource/icons/Event/B03_event_delivery_report_message.png
new file mode 100755 (executable)
index 0000000..cbf5c6c
Binary files /dev/null and b/data/resource/icons/Event/B03_event_delivery_report_message.png differ
similarity index 87%
rename from data/resource/icons/Connection/B03_connection_CDMA.png
rename to data/resource/icons/Event/B03_event_private_mode.png
index 501b1c3..18f783b 100755 (executable)
Binary files a/data/resource/icons/Connection/B03_connection_CDMA.png and b/data/resource/icons/Event/B03_event_private_mode.png differ
diff --git a/data/resource/icons/Event/B03_event_read_report_message.png b/data/resource/icons/Event/B03_event_read_report_message.png
new file mode 100755 (executable)
index 0000000..ee59aed
Binary files /dev/null and b/data/resource/icons/Event/B03_event_read_report_message.png differ
diff --git a/data/resource/icons/Event/B03_event_screen_mirroring.png b/data/resource/icons/Event/B03_event_screen_mirroring.png
new file mode 100755 (executable)
index 0000000..34d5f06
Binary files /dev/null and b/data/resource/icons/Event/B03_event_screen_mirroring.png differ
diff --git a/data/resource/icons/Face Detection/B03_face_detection_off.png b/data/resource/icons/Face Detection/B03_face_detection_off.png
new file mode 100755 (executable)
index 0000000..ed91a00
Binary files /dev/null and b/data/resource/icons/Face Detection/B03_face_detection_off.png differ
diff --git a/data/resource/icons/Face Detection/B03_face_detection_on.png b/data/resource/icons/Face Detection/B03_face_detection_on.png
new file mode 100755 (executable)
index 0000000..ca73771
Binary files /dev/null and b/data/resource/icons/Face Detection/B03_face_detection_on.png differ
old mode 100755 (executable)
new mode 100644 (file)
similarity index 83%
rename from data/resource/icons/Background playing/B03_Backgroundplaying_Music_paused.png
rename to data/resource/icons/Felica/Felica.png
index 5d9b24c..fe7979c
Binary files a/data/resource/icons/Background playing/B03_Backgroundplaying_Music_paused.png and b/data/resource/icons/Felica/Felica.png differ
diff --git a/data/resource/icons/Find my mobile/B03_fmm_call_log.png b/data/resource/icons/Find my mobile/B03_fmm_call_log.png
new file mode 100755 (executable)
index 0000000..a743bd5
Binary files /dev/null and b/data/resource/icons/Find my mobile/B03_fmm_call_log.png differ
diff --git a/data/resource/icons/Find my mobile/B03_fmm_location_info.png b/data/resource/icons/Find my mobile/B03_fmm_location_info.png
new file mode 100755 (executable)
index 0000000..e93f883
Binary files /dev/null and b/data/resource/icons/Find my mobile/B03_fmm_location_info.png differ
diff --git a/data/resource/icons/Find my mobile/B03_fmm_unlock.png b/data/resource/icons/Find my mobile/B03_fmm_unlock.png
new file mode 100755 (executable)
index 0000000..989aca1
Binary files /dev/null and b/data/resource/icons/Find my mobile/B03_fmm_unlock.png differ
similarity index 82%
rename from data/resource/icons/Background playing/B03_Backgroundplaying_MP3playing.png
rename to data/resource/icons/Fota/B03_fota.png
index 7ae527f..aa9611e 100755 (executable)
Binary files a/data/resource/icons/Background playing/B03_Backgroundplaying_MP3playing.png and b/data/resource/icons/Fota/B03_fota.png differ
diff --git a/data/resource/icons/Gear/B03_gear_connect.png b/data/resource/icons/Gear/B03_gear_connect.png
new file mode 100755 (executable)
index 0000000..f7dc7a5
Binary files /dev/null and b/data/resource/icons/Gear/B03_gear_connect.png differ
diff --git a/data/resource/icons/Gear/B03_gear_disconnect.png b/data/resource/icons/Gear/B03_gear_disconnect.png
new file mode 100755 (executable)
index 0000000..aa50f9e
Binary files /dev/null and b/data/resource/icons/Gear/B03_gear_disconnect.png differ
diff --git a/data/resource/icons/Group play/B03_group_play.png b/data/resource/icons/Group play/B03_group_play.png
new file mode 100755 (executable)
index 0000000..1ffbe90
Binary files /dev/null and b/data/resource/icons/Group play/B03_group_play.png differ
diff --git a/data/resource/icons/Message/B03_OTA_Messages.png b/data/resource/icons/Message/B03_OTA_Messages.png
new file mode 100755 (executable)
index 0000000..f5a82ad
Binary files /dev/null and b/data/resource/icons/Message/B03_OTA_Messages.png differ
diff --git a/data/resource/icons/More/B03_notification.png b/data/resource/icons/More/B03_notification.png
new file mode 100755 (executable)
index 0000000..36e1ef8
Binary files /dev/null and b/data/resource/icons/More/B03_notification.png differ
diff --git a/data/resource/icons/Near by device/B03_near_by_device.png b/data/resource/icons/Near by device/B03_near_by_device.png
new file mode 100755 (executable)
index 0000000..1125d6b
Binary files /dev/null and b/data/resource/icons/Near by device/B03_near_by_device.png differ
diff --git a/data/resource/icons/Notification/B03_battery_full.png b/data/resource/icons/Notification/B03_battery_full.png
new file mode 100755 (executable)
index 0000000..78f6017
Binary files /dev/null and b/data/resource/icons/Notification/B03_battery_full.png differ
diff --git a/data/resource/icons/Notification/B03_video.png b/data/resource/icons/Notification/B03_video.png
new file mode 100644 (file)
index 0000000..52f3170
Binary files /dev/null and b/data/resource/icons/Notification/B03_video.png differ
diff --git a/data/resource/icons/Notify/B03_noti_readout.png b/data/resource/icons/Notify/B03_noti_readout.png
new file mode 100755 (executable)
index 0000000..11cc8ab
Binary files /dev/null and b/data/resource/icons/Notify/B03_noti_readout.png differ
diff --git a/data/resource/icons/Notify/B03_notification.png b/data/resource/icons/Notify/B03_notification.png
new file mode 100644 (file)
index 0000000..124e9d5
Binary files /dev/null and b/data/resource/icons/Notify/B03_notification.png differ
diff --git a/data/resource/icons/Notify/B03_notify_Wi-fi.png b/data/resource/icons/Notify/B03_notify_Wi-fi.png
new file mode 100755 (executable)
index 0000000..e0fac75
Binary files /dev/null and b/data/resource/icons/Notify/B03_notify_Wi-fi.png differ
diff --git a/data/resource/icons/Notify/B03_notify_Wi-fi_direct_not_connected.png b/data/resource/icons/Notify/B03_notify_Wi-fi_direct_not_connected.png
new file mode 100755 (executable)
index 0000000..5ee041c
Binary files /dev/null and b/data/resource/icons/Notify/B03_notify_Wi-fi_direct_not_connected.png differ
diff --git a/data/resource/icons/Notify/B03_notify_Wi-fi_range.png b/data/resource/icons/Notify/B03_notify_Wi-fi_range.png
new file mode 100755 (executable)
index 0000000..2e60beb
Binary files /dev/null and b/data/resource/icons/Notify/B03_notify_Wi-fi_range.png differ
diff --git a/data/resource/icons/Notify/B03_notify_Wi-fi_timer.png b/data/resource/icons/Notify/B03_notify_Wi-fi_timer.png
new file mode 100755 (executable)
index 0000000..4eb4504
Binary files /dev/null and b/data/resource/icons/Notify/B03_notify_Wi-fi_timer.png differ
diff --git a/data/resource/icons/Notify/B03_notify_Wi-fi_warning.png b/data/resource/icons/Notify/B03_notify_Wi-fi_warning.png
new file mode 100755 (executable)
index 0000000..730180b
Binary files /dev/null and b/data/resource/icons/Notify/B03_notify_Wi-fi_warning.png differ
diff --git a/data/resource/icons/Notify/B03_notify_image.png b/data/resource/icons/Notify/B03_notify_image.png
new file mode 100755 (executable)
index 0000000..9278293
Binary files /dev/null and b/data/resource/icons/Notify/B03_notify_image.png differ
diff --git a/data/resource/icons/Notify/B03_notify_image_error.png b/data/resource/icons/Notify/B03_notify_image_error.png
new file mode 100755 (executable)
index 0000000..e239d51
Binary files /dev/null and b/data/resource/icons/Notify/B03_notify_image_error.png differ
diff --git a/data/resource/icons/Notify/B03_notify_message.png b/data/resource/icons/Notify/B03_notify_message.png
new file mode 100755 (executable)
index 0000000..b5517db
Binary files /dev/null and b/data/resource/icons/Notify/B03_notify_message.png differ
diff --git a/data/resource/icons/Notify/B03_notify_message_failed.png b/data/resource/icons/Notify/B03_notify_message_failed.png
new file mode 100755 (executable)
index 0000000..47e21fa
Binary files /dev/null and b/data/resource/icons/Notify/B03_notify_message_failed.png differ
diff --git a/data/resource/icons/Notify/B03_notify_more.png b/data/resource/icons/Notify/B03_notify_more.png
new file mode 100755 (executable)
index 0000000..19527b9
Binary files /dev/null and b/data/resource/icons/Notify/B03_notify_more.png differ
diff --git a/data/resource/icons/Notify/B03_notify_safe_mode.png b/data/resource/icons/Notify/B03_notify_safe_mode.png
new file mode 100755 (executable)
index 0000000..f86837e
Binary files /dev/null and b/data/resource/icons/Notify/B03_notify_safe_mode.png differ
diff --git a/data/resource/icons/Notify/B03_notify_slideshow_play.png b/data/resource/icons/Notify/B03_notify_slideshow_play.png
new file mode 100755 (executable)
index 0000000..7595e09
Binary files /dev/null and b/data/resource/icons/Notify/B03_notify_slideshow_play.png differ
diff --git a/data/resource/icons/Notify/B03_notify_torch.png b/data/resource/icons/Notify/B03_notify_torch.png
new file mode 100755 (executable)
index 0000000..401286f
Binary files /dev/null and b/data/resource/icons/Notify/B03_notify_torch.png differ
diff --git a/data/resource/icons/Notify/B03_notify_video_play.png b/data/resource/icons/Notify/B03_notify_video_play.png
new file mode 100755 (executable)
index 0000000..558cba5
Binary files /dev/null and b/data/resource/icons/Notify/B03_notify_video_play.png differ
diff --git a/data/resource/icons/Notify/B03_notiy_readout.png.png b/data/resource/icons/Notify/B03_notiy_readout.png.png
new file mode 100755 (executable)
index 0000000..11cc8ab
Binary files /dev/null and b/data/resource/icons/Notify/B03_notiy_readout.png.png differ
diff --git a/data/resource/icons/Notify/B03_side_sync.png b/data/resource/icons/Notify/B03_side_sync.png
new file mode 100755 (executable)
index 0000000..6fe3f23
Binary files /dev/null and b/data/resource/icons/Notify/B03_side_sync.png differ
diff --git a/data/resource/icons/Patterns/B03_patterns_cooling_down.png b/data/resource/icons/Patterns/B03_patterns_cooling_down.png
new file mode 100755 (executable)
index 0000000..3a977df
Binary files /dev/null and b/data/resource/icons/Patterns/B03_patterns_cooling_down.png differ
diff --git a/data/resource/icons/Personal mode/B03_personal_mode.png b/data/resource/icons/Personal mode/B03_personal_mode.png
new file mode 100644 (file)
index 0000000..4461f63
Binary files /dev/null and b/data/resource/icons/Personal mode/B03_personal_mode.png differ
diff --git a/data/resource/icons/Power saving mode/B03_Power_saving_mode.png b/data/resource/icons/Power saving mode/B03_Power_saving_mode.png
new file mode 100755 (executable)
index 0000000..089291d
Binary files /dev/null and b/data/resource/icons/Power saving mode/B03_Power_saving_mode.png differ
diff --git a/data/resource/icons/Power saving mode/B03_ultra_Power_saving_mode.png b/data/resource/icons/Power saving mode/B03_ultra_Power_saving_mode.png
new file mode 100755 (executable)
index 0000000..c8042cb
Binary files /dev/null and b/data/resource/icons/Power saving mode/B03_ultra_Power_saving_mode.png differ
diff --git a/data/resource/icons/Power/12H/B03_battery_animation_12h_00.png b/data/resource/icons/Power/12H/B03_battery_animation_12h_00.png
deleted file mode 100755 (executable)
index a5d0270..0000000
Binary files a/data/resource/icons/Power/12H/B03_battery_animation_12h_00.png and /dev/null differ
diff --git a/data/resource/icons/Power/12H/B03_battery_animation_12h_01.png b/data/resource/icons/Power/12H/B03_battery_animation_12h_01.png
deleted file mode 100755 (executable)
index fe53e49..0000000
Binary files a/data/resource/icons/Power/12H/B03_battery_animation_12h_01.png and /dev/null differ
diff --git a/data/resource/icons/Power/12H/B03_battery_animation_12h_02.png b/data/resource/icons/Power/12H/B03_battery_animation_12h_02.png
deleted file mode 100755 (executable)
index 168adc4..0000000
Binary files a/data/resource/icons/Power/12H/B03_battery_animation_12h_02.png and /dev/null differ
diff --git a/data/resource/icons/Power/12H/B03_battery_animation_12h_03.png b/data/resource/icons/Power/12H/B03_battery_animation_12h_03.png
deleted file mode 100755 (executable)
index 8f2087d..0000000
Binary files a/data/resource/icons/Power/12H/B03_battery_animation_12h_03.png and /dev/null differ
diff --git a/data/resource/icons/Power/12H/B03_battery_animation_12h_04.png b/data/resource/icons/Power/12H/B03_battery_animation_12h_04.png
deleted file mode 100755 (executable)
index b430994..0000000
Binary files a/data/resource/icons/Power/12H/B03_battery_animation_12h_04.png and /dev/null differ
diff --git a/data/resource/icons/Power/12H/B03_battery_animation_12h_05.png b/data/resource/icons/Power/12H/B03_battery_animation_12h_05.png
deleted file mode 100755 (executable)
index 4e83296..0000000
Binary files a/data/resource/icons/Power/12H/B03_battery_animation_12h_05.png and /dev/null differ
diff --git a/data/resource/icons/Power/12H/B03_battery_animation_12h_06.png b/data/resource/icons/Power/12H/B03_battery_animation_12h_06.png
deleted file mode 100755 (executable)
index 51d85d6..0000000
Binary files a/data/resource/icons/Power/12H/B03_battery_animation_12h_06.png and /dev/null differ
diff --git a/data/resource/icons/Power/12H/B03_battery_animation_12h_07.png b/data/resource/icons/Power/12H/B03_battery_animation_12h_07.png
deleted file mode 100755 (executable)
index 625e60f..0000000
Binary files a/data/resource/icons/Power/12H/B03_battery_animation_12h_07.png and /dev/null differ
diff --git a/data/resource/icons/Power/12H/B03_battery_animation_12h_08.png b/data/resource/icons/Power/12H/B03_battery_animation_12h_08.png
deleted file mode 100755 (executable)
index 3ae1bb7..0000000
Binary files a/data/resource/icons/Power/12H/B03_battery_animation_12h_08.png and /dev/null differ
diff --git a/data/resource/icons/Power/12H/B03_battery_animation_12h_09.png b/data/resource/icons/Power/12H/B03_battery_animation_12h_09.png
deleted file mode 100755 (executable)
index fc93a4a..0000000
Binary files a/data/resource/icons/Power/12H/B03_battery_animation_12h_09.png and /dev/null differ
diff --git a/data/resource/icons/Power/12H/B03_battery_animation_12h_10.png b/data/resource/icons/Power/12H/B03_battery_animation_12h_10.png
deleted file mode 100755 (executable)
index 8f1ff8e..0000000
Binary files a/data/resource/icons/Power/12H/B03_battery_animation_12h_10.png and /dev/null differ
diff --git a/data/resource/icons/Power/12H/B03_battery_animation_12h_11.png b/data/resource/icons/Power/12H/B03_battery_animation_12h_11.png
deleted file mode 100755 (executable)
index 64aa34e..0000000
Binary files a/data/resource/icons/Power/12H/B03_battery_animation_12h_11.png and /dev/null differ
diff --git a/data/resource/icons/Power/12H/B03_battery_animation_12h_12.png b/data/resource/icons/Power/12H/B03_battery_animation_12h_12.png
deleted file mode 100755 (executable)
index e286f23..0000000
Binary files a/data/resource/icons/Power/12H/B03_battery_animation_12h_12.png and /dev/null differ
diff --git a/data/resource/icons/Power/12H/B03_battery_animation_12h_13.png b/data/resource/icons/Power/12H/B03_battery_animation_12h_13.png
deleted file mode 100755 (executable)
index ce931c1..0000000
Binary files a/data/resource/icons/Power/12H/B03_battery_animation_12h_13.png and /dev/null differ
diff --git a/data/resource/icons/Power/12H/B03_battery_animation_12h_14.png b/data/resource/icons/Power/12H/B03_battery_animation_12h_14.png
deleted file mode 100755 (executable)
index f41dfbf..0000000
Binary files a/data/resource/icons/Power/12H/B03_battery_animation_12h_14.png and /dev/null differ
diff --git a/data/resource/icons/Power/12H/B03_battery_animation_12h_15.png b/data/resource/icons/Power/12H/B03_battery_animation_12h_15.png
deleted file mode 100755 (executable)
index 9999b6b..0000000
Binary files a/data/resource/icons/Power/12H/B03_battery_animation_12h_15.png and /dev/null differ
diff --git a/data/resource/icons/Power/12H/B03_battery_animation_12h_16.png b/data/resource/icons/Power/12H/B03_battery_animation_12h_16.png
deleted file mode 100755 (executable)
index 4c6c075..0000000
Binary files a/data/resource/icons/Power/12H/B03_battery_animation_12h_16.png and /dev/null differ
diff --git a/data/resource/icons/Power/12H/B03_battery_animation_12h_17.png b/data/resource/icons/Power/12H/B03_battery_animation_12h_17.png
deleted file mode 100755 (executable)
index 12ea85a..0000000
Binary files a/data/resource/icons/Power/12H/B03_battery_animation_12h_17.png and /dev/null differ
diff --git a/data/resource/icons/Power/12H/B03_battery_animation_12h_18.png b/data/resource/icons/Power/12H/B03_battery_animation_12h_18.png
deleted file mode 100755 (executable)
index c415214..0000000
Binary files a/data/resource/icons/Power/12H/B03_battery_animation_12h_18.png and /dev/null differ
diff --git a/data/resource/icons/Power/12H/B03_battery_animation_12h_19.png b/data/resource/icons/Power/12H/B03_battery_animation_12h_19.png
deleted file mode 100755 (executable)
index e0c0d9f..0000000
Binary files a/data/resource/icons/Power/12H/B03_battery_animation_12h_19.png and /dev/null differ
diff --git a/data/resource/icons/Power/12H/B03_battery_animation_12h_20.png b/data/resource/icons/Power/12H/B03_battery_animation_12h_20.png
deleted file mode 100755 (executable)
index 8a79c35..0000000
Binary files a/data/resource/icons/Power/12H/B03_battery_animation_12h_20.png and /dev/null differ
diff --git a/data/resource/icons/Power/24H/B03_battery_animation_24h_00.png b/data/resource/icons/Power/24H/B03_battery_animation_24h_00.png
deleted file mode 100755 (executable)
index 2c9438a..0000000
Binary files a/data/resource/icons/Power/24H/B03_battery_animation_24h_00.png and /dev/null differ
diff --git a/data/resource/icons/Power/24H/B03_battery_animation_24h_01.png b/data/resource/icons/Power/24H/B03_battery_animation_24h_01.png
deleted file mode 100755 (executable)
index 2098fe8..0000000
Binary files a/data/resource/icons/Power/24H/B03_battery_animation_24h_01.png and /dev/null differ
diff --git a/data/resource/icons/Power/24H/B03_battery_animation_24h_02.png b/data/resource/icons/Power/24H/B03_battery_animation_24h_02.png
deleted file mode 100755 (executable)
index 6002892..0000000
Binary files a/data/resource/icons/Power/24H/B03_battery_animation_24h_02.png and /dev/null differ
diff --git a/data/resource/icons/Power/24H/B03_battery_animation_24h_03.png b/data/resource/icons/Power/24H/B03_battery_animation_24h_03.png
deleted file mode 100755 (executable)
index f039d12..0000000
Binary files a/data/resource/icons/Power/24H/B03_battery_animation_24h_03.png and /dev/null differ
diff --git a/data/resource/icons/Power/24H/B03_battery_animation_24h_04.png b/data/resource/icons/Power/24H/B03_battery_animation_24h_04.png
deleted file mode 100755 (executable)
index 5c2a787..0000000
Binary files a/data/resource/icons/Power/24H/B03_battery_animation_24h_04.png and /dev/null differ
diff --git a/data/resource/icons/Power/24H/B03_battery_animation_24h_05.png b/data/resource/icons/Power/24H/B03_battery_animation_24h_05.png
deleted file mode 100755 (executable)
index 24ea2ab..0000000
Binary files a/data/resource/icons/Power/24H/B03_battery_animation_24h_05.png and /dev/null differ
diff --git a/data/resource/icons/Power/24H/B03_battery_animation_24h_06.png b/data/resource/icons/Power/24H/B03_battery_animation_24h_06.png
deleted file mode 100755 (executable)
index 16645c7..0000000
Binary files a/data/resource/icons/Power/24H/B03_battery_animation_24h_06.png and /dev/null differ
diff --git a/data/resource/icons/Power/24H/B03_battery_animation_24h_07.png b/data/resource/icons/Power/24H/B03_battery_animation_24h_07.png
deleted file mode 100755 (executable)
index 6849f2f..0000000
Binary files a/data/resource/icons/Power/24H/B03_battery_animation_24h_07.png and /dev/null differ
diff --git a/data/resource/icons/Power/24H/B03_battery_animation_24h_08.png b/data/resource/icons/Power/24H/B03_battery_animation_24h_08.png
deleted file mode 100755 (executable)
index 2ef217b..0000000
Binary files a/data/resource/icons/Power/24H/B03_battery_animation_24h_08.png and /dev/null differ
diff --git a/data/resource/icons/Power/24H/B03_battery_animation_24h_09.png b/data/resource/icons/Power/24H/B03_battery_animation_24h_09.png
deleted file mode 100755 (executable)
index 0cb26fa..0000000
Binary files a/data/resource/icons/Power/24H/B03_battery_animation_24h_09.png and /dev/null differ
diff --git a/data/resource/icons/Power/24H/B03_battery_animation_24h_10.png b/data/resource/icons/Power/24H/B03_battery_animation_24h_10.png
deleted file mode 100755 (executable)
index a88e21c..0000000
Binary files a/data/resource/icons/Power/24H/B03_battery_animation_24h_10.png and /dev/null differ
diff --git a/data/resource/icons/Power/24H/B03_battery_animation_24h_11.png b/data/resource/icons/Power/24H/B03_battery_animation_24h_11.png
deleted file mode 100755 (executable)
index 299c15b..0000000
Binary files a/data/resource/icons/Power/24H/B03_battery_animation_24h_11.png and /dev/null differ
diff --git a/data/resource/icons/Power/24H/B03_battery_animation_24h_12.png b/data/resource/icons/Power/24H/B03_battery_animation_24h_12.png
deleted file mode 100755 (executable)
index 506526d..0000000
Binary files a/data/resource/icons/Power/24H/B03_battery_animation_24h_12.png and /dev/null differ
diff --git a/data/resource/icons/Power/24H/B03_battery_animation_24h_13.png b/data/resource/icons/Power/24H/B03_battery_animation_24h_13.png
deleted file mode 100755 (executable)
index 107aa82..0000000
Binary files a/data/resource/icons/Power/24H/B03_battery_animation_24h_13.png and /dev/null differ
diff --git a/data/resource/icons/Power/24H/B03_battery_animation_24h_14.png b/data/resource/icons/Power/24H/B03_battery_animation_24h_14.png
deleted file mode 100755 (executable)
index 82a2414..0000000
Binary files a/data/resource/icons/Power/24H/B03_battery_animation_24h_14.png and /dev/null differ
diff --git a/data/resource/icons/Power/24H/B03_battery_animation_24h_15.png b/data/resource/icons/Power/24H/B03_battery_animation_24h_15.png
deleted file mode 100755 (executable)
index 95a380a..0000000
Binary files a/data/resource/icons/Power/24H/B03_battery_animation_24h_15.png and /dev/null differ
diff --git a/data/resource/icons/Power/24H/B03_battery_animation_24h_16.png b/data/resource/icons/Power/24H/B03_battery_animation_24h_16.png
deleted file mode 100755 (executable)
index e318eeb..0000000
Binary files a/data/resource/icons/Power/24H/B03_battery_animation_24h_16.png and /dev/null differ
diff --git a/data/resource/icons/Power/24H/B03_battery_animation_24h_17.png b/data/resource/icons/Power/24H/B03_battery_animation_24h_17.png
deleted file mode 100755 (executable)
index 106e8a6..0000000
Binary files a/data/resource/icons/Power/24H/B03_battery_animation_24h_17.png and /dev/null differ
diff --git a/data/resource/icons/Power/24H/B03_battery_animation_24h_18.png b/data/resource/icons/Power/24H/B03_battery_animation_24h_18.png
deleted file mode 100755 (executable)
index a764724..0000000
Binary files a/data/resource/icons/Power/24H/B03_battery_animation_24h_18.png and /dev/null differ
diff --git a/data/resource/icons/Power/24H/B03_battery_animation_24h_19.png b/data/resource/icons/Power/24H/B03_battery_animation_24h_19.png
deleted file mode 100755 (executable)
index c2c9a90..0000000
Binary files a/data/resource/icons/Power/24H/B03_battery_animation_24h_19.png and /dev/null differ
diff --git a/data/resource/icons/Power/24H/B03_battery_animation_24h_20.png b/data/resource/icons/Power/24H/B03_battery_animation_24h_20.png
deleted file mode 100755 (executable)
index 68d9c36..0000000
Binary files a/data/resource/icons/Power/24H/B03_battery_animation_24h_20.png and /dev/null differ
diff --git a/data/resource/icons/Power/B03_stat_sys_battery_0.png b/data/resource/icons/Power/B03_stat_sys_battery_0.png
new file mode 100755 (executable)
index 0000000..fb597d0
Binary files /dev/null and b/data/resource/icons/Power/B03_stat_sys_battery_0.png differ
diff --git a/data/resource/icons/Power/B03_stat_sys_battery_10.png b/data/resource/icons/Power/B03_stat_sys_battery_10.png
new file mode 100755 (executable)
index 0000000..e5fa30e
Binary files /dev/null and b/data/resource/icons/Power/B03_stat_sys_battery_10.png differ
diff --git a/data/resource/icons/Power/B03_stat_sys_battery_100.png b/data/resource/icons/Power/B03_stat_sys_battery_100.png
new file mode 100755 (executable)
index 0000000..2796ad0
Binary files /dev/null and b/data/resource/icons/Power/B03_stat_sys_battery_100.png differ
diff --git a/data/resource/icons/Power/B03_stat_sys_battery_15.png b/data/resource/icons/Power/B03_stat_sys_battery_15.png
new file mode 100755 (executable)
index 0000000..8be9127
Binary files /dev/null and b/data/resource/icons/Power/B03_stat_sys_battery_15.png differ
diff --git a/data/resource/icons/Power/B03_stat_sys_battery_20.png b/data/resource/icons/Power/B03_stat_sys_battery_20.png
new file mode 100755 (executable)
index 0000000..f01931e
Binary files /dev/null and b/data/resource/icons/Power/B03_stat_sys_battery_20.png differ
diff --git a/data/resource/icons/Power/B03_stat_sys_battery_25.png b/data/resource/icons/Power/B03_stat_sys_battery_25.png
new file mode 100755 (executable)
index 0000000..9e0f5a7
Binary files /dev/null and b/data/resource/icons/Power/B03_stat_sys_battery_25.png differ
diff --git a/data/resource/icons/Power/B03_stat_sys_battery_30.png b/data/resource/icons/Power/B03_stat_sys_battery_30.png
new file mode 100755 (executable)
index 0000000..2285324
Binary files /dev/null and b/data/resource/icons/Power/B03_stat_sys_battery_30.png differ
diff --git a/data/resource/icons/Power/B03_stat_sys_battery_35.png b/data/resource/icons/Power/B03_stat_sys_battery_35.png
new file mode 100755 (executable)
index 0000000..2ce7a37
Binary files /dev/null and b/data/resource/icons/Power/B03_stat_sys_battery_35.png differ
diff --git a/data/resource/icons/Power/B03_stat_sys_battery_4.png b/data/resource/icons/Power/B03_stat_sys_battery_4.png
new file mode 100755 (executable)
index 0000000..fb597d0
Binary files /dev/null and b/data/resource/icons/Power/B03_stat_sys_battery_4.png differ
diff --git a/data/resource/icons/Power/B03_stat_sys_battery_40.png b/data/resource/icons/Power/B03_stat_sys_battery_40.png
new file mode 100755 (executable)
index 0000000..0faf700
Binary files /dev/null and b/data/resource/icons/Power/B03_stat_sys_battery_40.png differ
diff --git a/data/resource/icons/Power/B03_stat_sys_battery_45.png b/data/resource/icons/Power/B03_stat_sys_battery_45.png
new file mode 100755 (executable)
index 0000000..67cc13c
Binary files /dev/null and b/data/resource/icons/Power/B03_stat_sys_battery_45.png differ
diff --git a/data/resource/icons/Power/B03_stat_sys_battery_5.png b/data/resource/icons/Power/B03_stat_sys_battery_5.png
new file mode 100755 (executable)
index 0000000..f8bd748
Binary files /dev/null and b/data/resource/icons/Power/B03_stat_sys_battery_5.png differ
diff --git a/data/resource/icons/Power/B03_stat_sys_battery_50.png b/data/resource/icons/Power/B03_stat_sys_battery_50.png
new file mode 100755 (executable)
index 0000000..2e0e067
Binary files /dev/null and b/data/resource/icons/Power/B03_stat_sys_battery_50.png differ
diff --git a/data/resource/icons/Power/B03_stat_sys_battery_55.png b/data/resource/icons/Power/B03_stat_sys_battery_55.png
new file mode 100755 (executable)
index 0000000..746a7f7
Binary files /dev/null and b/data/resource/icons/Power/B03_stat_sys_battery_55.png differ
diff --git a/data/resource/icons/Power/B03_stat_sys_battery_60.png b/data/resource/icons/Power/B03_stat_sys_battery_60.png
new file mode 100755 (executable)
index 0000000..df1df36
Binary files /dev/null and b/data/resource/icons/Power/B03_stat_sys_battery_60.png differ
diff --git a/data/resource/icons/Power/B03_stat_sys_battery_65.png b/data/resource/icons/Power/B03_stat_sys_battery_65.png
new file mode 100755 (executable)
index 0000000..3138164
Binary files /dev/null and b/data/resource/icons/Power/B03_stat_sys_battery_65.png differ
diff --git a/data/resource/icons/Power/B03_stat_sys_battery_70.png b/data/resource/icons/Power/B03_stat_sys_battery_70.png
new file mode 100755 (executable)
index 0000000..f5457b5
Binary files /dev/null and b/data/resource/icons/Power/B03_stat_sys_battery_70.png differ
diff --git a/data/resource/icons/Power/B03_stat_sys_battery_75.png b/data/resource/icons/Power/B03_stat_sys_battery_75.png
new file mode 100755 (executable)
index 0000000..1a3a5ff
Binary files /dev/null and b/data/resource/icons/Power/B03_stat_sys_battery_75.png differ
diff --git a/data/resource/icons/Power/B03_stat_sys_battery_80.png b/data/resource/icons/Power/B03_stat_sys_battery_80.png
new file mode 100755 (executable)
index 0000000..28d0fce
Binary files /dev/null and b/data/resource/icons/Power/B03_stat_sys_battery_80.png differ
diff --git a/data/resource/icons/Power/B03_stat_sys_battery_85.png b/data/resource/icons/Power/B03_stat_sys_battery_85.png
new file mode 100755 (executable)
index 0000000..42a6d96
Binary files /dev/null and b/data/resource/icons/Power/B03_stat_sys_battery_85.png differ
diff --git a/data/resource/icons/Power/B03_stat_sys_battery_90.png b/data/resource/icons/Power/B03_stat_sys_battery_90.png
new file mode 100755 (executable)
index 0000000..8df4533
Binary files /dev/null and b/data/resource/icons/Power/B03_stat_sys_battery_90.png differ
diff --git a/data/resource/icons/Power/B03_stat_sys_battery_95.png b/data/resource/icons/Power/B03_stat_sys_battery_95.png
new file mode 100755 (executable)
index 0000000..3069c00
Binary files /dev/null and b/data/resource/icons/Power/B03_stat_sys_battery_95.png differ
diff --git a/data/resource/icons/Power/B03_stat_sys_battery_charge_anim0.png b/data/resource/icons/Power/B03_stat_sys_battery_charge_anim0.png
new file mode 100755 (executable)
index 0000000..e2e9d00
Binary files /dev/null and b/data/resource/icons/Power/B03_stat_sys_battery_charge_anim0.png differ
diff --git a/data/resource/icons/Power/B03_stat_sys_battery_charge_anim10.png b/data/resource/icons/Power/B03_stat_sys_battery_charge_anim10.png
new file mode 100755 (executable)
index 0000000..5885544
Binary files /dev/null and b/data/resource/icons/Power/B03_stat_sys_battery_charge_anim10.png differ
diff --git a/data/resource/icons/Power/B03_stat_sys_battery_charge_anim100.png b/data/resource/icons/Power/B03_stat_sys_battery_charge_anim100.png
new file mode 100755 (executable)
index 0000000..bf5d6c5
Binary files /dev/null and b/data/resource/icons/Power/B03_stat_sys_battery_charge_anim100.png differ
diff --git a/data/resource/icons/Power/B03_stat_sys_battery_charge_anim15.png b/data/resource/icons/Power/B03_stat_sys_battery_charge_anim15.png
new file mode 100755 (executable)
index 0000000..e22ac83
Binary files /dev/null and b/data/resource/icons/Power/B03_stat_sys_battery_charge_anim15.png differ
diff --git a/data/resource/icons/Power/B03_stat_sys_battery_charge_anim20.png b/data/resource/icons/Power/B03_stat_sys_battery_charge_anim20.png
new file mode 100755 (executable)
index 0000000..b49be2c
Binary files /dev/null and b/data/resource/icons/Power/B03_stat_sys_battery_charge_anim20.png differ
diff --git a/data/resource/icons/Power/B03_stat_sys_battery_charge_anim25.png b/data/resource/icons/Power/B03_stat_sys_battery_charge_anim25.png
new file mode 100755 (executable)
index 0000000..b5aa6a3
Binary files /dev/null and b/data/resource/icons/Power/B03_stat_sys_battery_charge_anim25.png differ
diff --git a/data/resource/icons/Power/B03_stat_sys_battery_charge_anim30.png b/data/resource/icons/Power/B03_stat_sys_battery_charge_anim30.png
new file mode 100755 (executable)
index 0000000..11a7f20
Binary files /dev/null and b/data/resource/icons/Power/B03_stat_sys_battery_charge_anim30.png differ
diff --git a/data/resource/icons/Power/B03_stat_sys_battery_charge_anim35.png b/data/resource/icons/Power/B03_stat_sys_battery_charge_anim35.png
new file mode 100755 (executable)
index 0000000..f7d0c26
Binary files /dev/null and b/data/resource/icons/Power/B03_stat_sys_battery_charge_anim35.png differ
diff --git a/data/resource/icons/Power/B03_stat_sys_battery_charge_anim4.png b/data/resource/icons/Power/B03_stat_sys_battery_charge_anim4.png
new file mode 100755 (executable)
index 0000000..e2e9d00
Binary files /dev/null and b/data/resource/icons/Power/B03_stat_sys_battery_charge_anim4.png differ
diff --git a/data/resource/icons/Power/B03_stat_sys_battery_charge_anim40.png b/data/resource/icons/Power/B03_stat_sys_battery_charge_anim40.png
new file mode 100755 (executable)
index 0000000..2c2667a
Binary files /dev/null and b/data/resource/icons/Power/B03_stat_sys_battery_charge_anim40.png differ
diff --git a/data/resource/icons/Power/B03_stat_sys_battery_charge_anim45.png b/data/resource/icons/Power/B03_stat_sys_battery_charge_anim45.png
new file mode 100755 (executable)
index 0000000..d91d6a2
Binary files /dev/null and b/data/resource/icons/Power/B03_stat_sys_battery_charge_anim45.png differ
diff --git a/data/resource/icons/Power/B03_stat_sys_battery_charge_anim5.png b/data/resource/icons/Power/B03_stat_sys_battery_charge_anim5.png
new file mode 100755 (executable)
index 0000000..8344a05
Binary files /dev/null and b/data/resource/icons/Power/B03_stat_sys_battery_charge_anim5.png differ
diff --git a/data/resource/icons/Power/B03_stat_sys_battery_charge_anim50.png b/data/resource/icons/Power/B03_stat_sys_battery_charge_anim50.png
new file mode 100755 (executable)
index 0000000..7554349
Binary files /dev/null and b/data/resource/icons/Power/B03_stat_sys_battery_charge_anim50.png differ
diff --git a/data/resource/icons/Power/B03_stat_sys_battery_charge_anim55.png b/data/resource/icons/Power/B03_stat_sys_battery_charge_anim55.png
new file mode 100755 (executable)
index 0000000..d7cb0fc
Binary files /dev/null and b/data/resource/icons/Power/B03_stat_sys_battery_charge_anim55.png differ
diff --git a/data/resource/icons/Power/B03_stat_sys_battery_charge_anim60.png b/data/resource/icons/Power/B03_stat_sys_battery_charge_anim60.png
new file mode 100755 (executable)
index 0000000..0ab80a3
Binary files /dev/null and b/data/resource/icons/Power/B03_stat_sys_battery_charge_anim60.png differ
diff --git a/data/resource/icons/Power/B03_stat_sys_battery_charge_anim65.png b/data/resource/icons/Power/B03_stat_sys_battery_charge_anim65.png
new file mode 100755 (executable)
index 0000000..498615a
Binary files /dev/null and b/data/resource/icons/Power/B03_stat_sys_battery_charge_anim65.png differ
diff --git a/data/resource/icons/Power/B03_stat_sys_battery_charge_anim70.png b/data/resource/icons/Power/B03_stat_sys_battery_charge_anim70.png
new file mode 100755 (executable)
index 0000000..96191a7
Binary files /dev/null and b/data/resource/icons/Power/B03_stat_sys_battery_charge_anim70.png differ
diff --git a/data/resource/icons/Power/B03_stat_sys_battery_charge_anim75.png b/data/resource/icons/Power/B03_stat_sys_battery_charge_anim75.png
new file mode 100755 (executable)
index 0000000..95835ac
Binary files /dev/null and b/data/resource/icons/Power/B03_stat_sys_battery_charge_anim75.png differ
diff --git a/data/resource/icons/Power/B03_stat_sys_battery_charge_anim80.png b/data/resource/icons/Power/B03_stat_sys_battery_charge_anim80.png
new file mode 100755 (executable)
index 0000000..49b5ab4
Binary files /dev/null and b/data/resource/icons/Power/B03_stat_sys_battery_charge_anim80.png differ
diff --git a/data/resource/icons/Power/B03_stat_sys_battery_charge_anim85.png b/data/resource/icons/Power/B03_stat_sys_battery_charge_anim85.png
new file mode 100755 (executable)
index 0000000..4cb9b85
Binary files /dev/null and b/data/resource/icons/Power/B03_stat_sys_battery_charge_anim85.png differ
diff --git a/data/resource/icons/Power/B03_stat_sys_battery_charge_anim90.png b/data/resource/icons/Power/B03_stat_sys_battery_charge_anim90.png
new file mode 100755 (executable)
index 0000000..49dabc8
Binary files /dev/null and b/data/resource/icons/Power/B03_stat_sys_battery_charge_anim90.png differ
diff --git a/data/resource/icons/Power/B03_stat_sys_battery_charge_anim95.png b/data/resource/icons/Power/B03_stat_sys_battery_charge_anim95.png
new file mode 100755 (executable)
index 0000000..dda484b
Binary files /dev/null and b/data/resource/icons/Power/B03_stat_sys_battery_charge_anim95.png differ
diff --git a/data/resource/icons/Power/B03_stat_sys_battery_full.png b/data/resource/icons/Power/B03_stat_sys_battery_full.png
new file mode 100644 (file)
index 0000000..026da11
Binary files /dev/null and b/data/resource/icons/Power/B03_stat_sys_battery_full.png differ
diff --git a/data/resource/icons/Power/B03_stat_sys_battery_percent_0.png b/data/resource/icons/Power/B03_stat_sys_battery_percent_0.png
new file mode 100755 (executable)
index 0000000..719e058
Binary files /dev/null and b/data/resource/icons/Power/B03_stat_sys_battery_percent_0.png differ
diff --git a/data/resource/icons/Power/B03_stat_sys_battery_percent_10.png b/data/resource/icons/Power/B03_stat_sys_battery_percent_10.png
new file mode 100755 (executable)
index 0000000..6cc67f6
Binary files /dev/null and b/data/resource/icons/Power/B03_stat_sys_battery_percent_10.png differ
diff --git a/data/resource/icons/Power/B03_stat_sys_battery_percent_100.png b/data/resource/icons/Power/B03_stat_sys_battery_percent_100.png
new file mode 100755 (executable)
index 0000000..5133c3d
Binary files /dev/null and b/data/resource/icons/Power/B03_stat_sys_battery_percent_100.png differ
diff --git a/data/resource/icons/Power/B03_stat_sys_battery_percent_20.png b/data/resource/icons/Power/B03_stat_sys_battery_percent_20.png
new file mode 100755 (executable)
index 0000000..984df7e
Binary files /dev/null and b/data/resource/icons/Power/B03_stat_sys_battery_percent_20.png differ
diff --git a/data/resource/icons/Power/B03_stat_sys_battery_percent_30.png b/data/resource/icons/Power/B03_stat_sys_battery_percent_30.png
new file mode 100755 (executable)
index 0000000..fe9c5f7
Binary files /dev/null and b/data/resource/icons/Power/B03_stat_sys_battery_percent_30.png differ
diff --git a/data/resource/icons/Power/B03_stat_sys_battery_percent_40.png b/data/resource/icons/Power/B03_stat_sys_battery_percent_40.png
new file mode 100755 (executable)
index 0000000..b24f80f
Binary files /dev/null and b/data/resource/icons/Power/B03_stat_sys_battery_percent_40.png differ
diff --git a/data/resource/icons/Power/B03_stat_sys_battery_percent_50.png b/data/resource/icons/Power/B03_stat_sys_battery_percent_50.png
new file mode 100755 (executable)
index 0000000..b35b14c
Binary files /dev/null and b/data/resource/icons/Power/B03_stat_sys_battery_percent_50.png differ
diff --git a/data/resource/icons/Power/B03_stat_sys_battery_percent_60.png b/data/resource/icons/Power/B03_stat_sys_battery_percent_60.png
new file mode 100755 (executable)
index 0000000..9dd8fe2
Binary files /dev/null and b/data/resource/icons/Power/B03_stat_sys_battery_percent_60.png differ
diff --git a/data/resource/icons/Power/B03_stat_sys_battery_percent_70.png b/data/resource/icons/Power/B03_stat_sys_battery_percent_70.png
new file mode 100755 (executable)
index 0000000..e9fc8e4
Binary files /dev/null and b/data/resource/icons/Power/B03_stat_sys_battery_percent_70.png differ
diff --git a/data/resource/icons/Power/B03_stat_sys_battery_percent_80.png b/data/resource/icons/Power/B03_stat_sys_battery_percent_80.png
new file mode 100755 (executable)
index 0000000..01aeb40
Binary files /dev/null and b/data/resource/icons/Power/B03_stat_sys_battery_percent_80.png differ
diff --git a/data/resource/icons/Power/B03_stat_sys_battery_percent_90.png b/data/resource/icons/Power/B03_stat_sys_battery_percent_90.png
new file mode 100755 (executable)
index 0000000..4b14b67
Binary files /dev/null and b/data/resource/icons/Power/B03_stat_sys_battery_percent_90.png differ
diff --git a/data/resource/icons/Power/B03_stat_sys_battery_percent_charge_anim0.png b/data/resource/icons/Power/B03_stat_sys_battery_percent_charge_anim0.png
new file mode 100755 (executable)
index 0000000..1bff0e7
Binary files /dev/null and b/data/resource/icons/Power/B03_stat_sys_battery_percent_charge_anim0.png differ
diff --git a/data/resource/icons/Power/B03_stat_sys_battery_percent_charge_anim10.png b/data/resource/icons/Power/B03_stat_sys_battery_percent_charge_anim10.png
new file mode 100755 (executable)
index 0000000..aabd5d9
Binary files /dev/null and b/data/resource/icons/Power/B03_stat_sys_battery_percent_charge_anim10.png differ
diff --git a/data/resource/icons/Power/B03_stat_sys_battery_percent_charge_anim100.png b/data/resource/icons/Power/B03_stat_sys_battery_percent_charge_anim100.png
new file mode 100755 (executable)
index 0000000..78eb7c2
Binary files /dev/null and b/data/resource/icons/Power/B03_stat_sys_battery_percent_charge_anim100.png differ
diff --git a/data/resource/icons/Power/B03_stat_sys_battery_percent_charge_anim20.png b/data/resource/icons/Power/B03_stat_sys_battery_percent_charge_anim20.png
new file mode 100755 (executable)
index 0000000..9e3f328
Binary files /dev/null and b/data/resource/icons/Power/B03_stat_sys_battery_percent_charge_anim20.png differ
diff --git a/data/resource/icons/Power/B03_stat_sys_battery_percent_charge_anim30.png b/data/resource/icons/Power/B03_stat_sys_battery_percent_charge_anim30.png
new file mode 100755 (executable)
index 0000000..451712c
Binary files /dev/null and b/data/resource/icons/Power/B03_stat_sys_battery_percent_charge_anim30.png differ
diff --git a/data/resource/icons/Power/B03_stat_sys_battery_percent_charge_anim40.png b/data/resource/icons/Power/B03_stat_sys_battery_percent_charge_anim40.png
new file mode 100755 (executable)
index 0000000..6b006f2
Binary files /dev/null and b/data/resource/icons/Power/B03_stat_sys_battery_percent_charge_anim40.png differ
diff --git a/data/resource/icons/Power/B03_stat_sys_battery_percent_charge_anim50.png b/data/resource/icons/Power/B03_stat_sys_battery_percent_charge_anim50.png
new file mode 100755 (executable)
index 0000000..cf2c6d7
Binary files /dev/null and b/data/resource/icons/Power/B03_stat_sys_battery_percent_charge_anim50.png differ
diff --git a/data/resource/icons/Power/B03_stat_sys_battery_percent_charge_anim60.png b/data/resource/icons/Power/B03_stat_sys_battery_percent_charge_anim60.png
new file mode 100755 (executable)
index 0000000..3d95843
Binary files /dev/null and b/data/resource/icons/Power/B03_stat_sys_battery_percent_charge_anim60.png differ
diff --git a/data/resource/icons/Power/B03_stat_sys_battery_percent_charge_anim70.png b/data/resource/icons/Power/B03_stat_sys_battery_percent_charge_anim70.png
new file mode 100755 (executable)
index 0000000..b1e3b8b
Binary files /dev/null and b/data/resource/icons/Power/B03_stat_sys_battery_percent_charge_anim70.png differ
diff --git a/data/resource/icons/Power/B03_stat_sys_battery_percent_charge_anim80.png b/data/resource/icons/Power/B03_stat_sys_battery_percent_charge_anim80.png
new file mode 100755 (executable)
index 0000000..383f18d
Binary files /dev/null and b/data/resource/icons/Power/B03_stat_sys_battery_percent_charge_anim80.png differ
diff --git a/data/resource/icons/Power/B03_stat_sys_battery_percent_charge_anim90.png b/data/resource/icons/Power/B03_stat_sys_battery_percent_charge_anim90.png
new file mode 100755 (executable)
index 0000000..f9201ed
Binary files /dev/null and b/data/resource/icons/Power/B03_stat_sys_battery_percent_charge_anim90.png differ
old mode 100755 (executable)
new mode 100644 (file)
similarity index 92%
rename from data/resource/00_winset_indicator_bg.png
rename to data/resource/icons/Power/battery_text/B03_stat_sys_battery_bg_1.png
index 19af501..4d3285f
Binary files a/data/resource/00_winset_indicator_bg.png and b/data/resource/icons/Power/battery_text/B03_stat_sys_battery_bg_1.png differ
old mode 100755 (executable)
new mode 100644 (file)
similarity index 92%
rename from data/resource/00_winset_indicator_event_bg.png
rename to data/resource/icons/Power/battery_text/B03_stat_sys_battery_bg_2.png
index 3aa9c67..c8c63f9
Binary files a/data/resource/00_winset_indicator_event_bg.png and b/data/resource/icons/Power/battery_text/B03_stat_sys_battery_bg_2.png differ
diff --git a/data/resource/icons/Power/battery_text/B03_stat_sys_battery_num_0.png b/data/resource/icons/Power/battery_text/B03_stat_sys_battery_num_0.png
new file mode 100755 (executable)
index 0000000..d7f7c1e
Binary files /dev/null and b/data/resource/icons/Power/battery_text/B03_stat_sys_battery_num_0.png differ
diff --git a/data/resource/icons/Power/battery_text/B03_stat_sys_battery_num_1.png b/data/resource/icons/Power/battery_text/B03_stat_sys_battery_num_1.png
new file mode 100755 (executable)
index 0000000..cafcfc7
Binary files /dev/null and b/data/resource/icons/Power/battery_text/B03_stat_sys_battery_num_1.png differ
diff --git a/data/resource/icons/Power/battery_text/B03_stat_sys_battery_num_100.png b/data/resource/icons/Power/battery_text/B03_stat_sys_battery_num_100.png
new file mode 100755 (executable)
index 0000000..aade1ef
Binary files /dev/null and b/data/resource/icons/Power/battery_text/B03_stat_sys_battery_num_100.png differ
diff --git a/data/resource/icons/Power/battery_text/B03_stat_sys_battery_num_2.png b/data/resource/icons/Power/battery_text/B03_stat_sys_battery_num_2.png
new file mode 100755 (executable)
index 0000000..afc17b0
Binary files /dev/null and b/data/resource/icons/Power/battery_text/B03_stat_sys_battery_num_2.png differ
diff --git a/data/resource/icons/Power/battery_text/B03_stat_sys_battery_num_3.png b/data/resource/icons/Power/battery_text/B03_stat_sys_battery_num_3.png
new file mode 100755 (executable)
index 0000000..d835b3c
Binary files /dev/null and b/data/resource/icons/Power/battery_text/B03_stat_sys_battery_num_3.png differ
diff --git a/data/resource/icons/Power/battery_text/B03_stat_sys_battery_num_4.png b/data/resource/icons/Power/battery_text/B03_stat_sys_battery_num_4.png
new file mode 100755 (executable)
index 0000000..3df5f07
Binary files /dev/null and b/data/resource/icons/Power/battery_text/B03_stat_sys_battery_num_4.png differ
diff --git a/data/resource/icons/Power/battery_text/B03_stat_sys_battery_num_5.png b/data/resource/icons/Power/battery_text/B03_stat_sys_battery_num_5.png
new file mode 100755 (executable)
index 0000000..04a4598
Binary files /dev/null and b/data/resource/icons/Power/battery_text/B03_stat_sys_battery_num_5.png differ
diff --git a/data/resource/icons/Power/battery_text/B03_stat_sys_battery_num_6.png b/data/resource/icons/Power/battery_text/B03_stat_sys_battery_num_6.png
new file mode 100755 (executable)
index 0000000..42f924b
Binary files /dev/null and b/data/resource/icons/Power/battery_text/B03_stat_sys_battery_num_6.png differ
diff --git a/data/resource/icons/Power/battery_text/B03_stat_sys_battery_num_7.png b/data/resource/icons/Power/battery_text/B03_stat_sys_battery_num_7.png
new file mode 100755 (executable)
index 0000000..94969d7
Binary files /dev/null and b/data/resource/icons/Power/battery_text/B03_stat_sys_battery_num_7.png differ
diff --git a/data/resource/icons/Power/battery_text/B03_stat_sys_battery_num_8.png b/data/resource/icons/Power/battery_text/B03_stat_sys_battery_num_8.png
new file mode 100755 (executable)
index 0000000..e98ee22
Binary files /dev/null and b/data/resource/icons/Power/battery_text/B03_stat_sys_battery_num_8.png differ
diff --git a/data/resource/icons/Power/battery_text/B03_stat_sys_battery_num_9.png b/data/resource/icons/Power/battery_text/B03_stat_sys_battery_num_9.png
new file mode 100755 (executable)
index 0000000..cdb7163
Binary files /dev/null and b/data/resource/icons/Power/battery_text/B03_stat_sys_battery_num_9.png differ
diff --git a/data/resource/icons/Private mode/B03_private_mode.png b/data/resource/icons/Private mode/B03_private_mode.png
new file mode 100755 (executable)
index 0000000..5e3fd60
Binary files /dev/null and b/data/resource/icons/Private mode/B03_private_mode.png differ
diff --git a/data/resource/icons/Processing/B03_Call_divert_Sim_1.png b/data/resource/icons/Processing/B03_Call_divert_Sim_1.png
new file mode 100644 (file)
index 0000000..45c9397
Binary files /dev/null and b/data/resource/icons/Processing/B03_Call_divert_Sim_1.png differ
diff --git a/data/resource/icons/Processing/B03_Call_divert_Sim_2.png b/data/resource/icons/Processing/B03_Call_divert_Sim_2.png
new file mode 100644 (file)
index 0000000..84de167
Binary files /dev/null and b/data/resource/icons/Processing/B03_Call_divert_Sim_2.png differ
diff --git a/data/resource/icons/Processing/B03_Call_divert_Sim_MMS.png b/data/resource/icons/Processing/B03_Call_divert_Sim_MMS.png
new file mode 100644 (file)
index 0000000..f5c33a5
Binary files /dev/null and b/data/resource/icons/Processing/B03_Call_divert_Sim_MMS.png differ
diff --git a/data/resource/icons/Processing/B03_Call_divert_Sim_SMS.png b/data/resource/icons/Processing/B03_Call_divert_Sim_SMS.png
new file mode 100644 (file)
index 0000000..cae35ff
Binary files /dev/null and b/data/resource/icons/Processing/B03_Call_divert_Sim_SMS.png differ
diff --git a/data/resource/icons/Processing/B03_Call_divert_Sim_global.png b/data/resource/icons/Processing/B03_Call_divert_Sim_global.png
new file mode 100644 (file)
index 0000000..6c1cdc5
Binary files /dev/null and b/data/resource/icons/Processing/B03_Call_divert_Sim_global.png differ
diff --git a/data/resource/icons/Processing/B03_Call_divert_Sim_heart.png b/data/resource/icons/Processing/B03_Call_divert_Sim_heart.png
new file mode 100644 (file)
index 0000000..43493fa
Binary files /dev/null and b/data/resource/icons/Processing/B03_Call_divert_Sim_heart.png differ
diff --git a/data/resource/icons/Processing/B03_Call_divert_Sim_home.png b/data/resource/icons/Processing/B03_Call_divert_Sim_home.png
new file mode 100644 (file)
index 0000000..2d56a14
Binary files /dev/null and b/data/resource/icons/Processing/B03_Call_divert_Sim_home.png differ
diff --git a/data/resource/icons/Processing/B03_Call_divert_Sim_office.png b/data/resource/icons/Processing/B03_Call_divert_Sim_office.png
new file mode 100644 (file)
index 0000000..c056822
Binary files /dev/null and b/data/resource/icons/Processing/B03_Call_divert_Sim_office.png differ
diff --git a/data/resource/icons/Processing/B03_Call_divert_Sim_phone.png b/data/resource/icons/Processing/B03_Call_divert_Sim_phone.png
new file mode 100644 (file)
index 0000000..cf1e69f
Binary files /dev/null and b/data/resource/icons/Processing/B03_Call_divert_Sim_phone.png differ
index 27a864b..46120f7 100755 (executable)
Binary files a/data/resource/icons/Processing/B03_Processing_01.png and b/data/resource/icons/Processing/B03_Processing_01.png differ
index 4aa8916..e11fd39 100755 (executable)
Binary files a/data/resource/icons/Processing/B03_Processing_02.png and b/data/resource/icons/Processing/B03_Processing_02.png differ
index 0e338e9..9851f6e 100755 (executable)
Binary files a/data/resource/icons/Processing/B03_Processing_03.png and b/data/resource/icons/Processing/B03_Processing_03.png differ
index d740664..e8b7c70 100755 (executable)
Binary files a/data/resource/icons/Processing/B03_Processing_04.png and b/data/resource/icons/Processing/B03_Processing_04.png differ
index 6bec90e..394a465 100755 (executable)
Binary files a/data/resource/icons/Processing/B03_Processing_05.png and b/data/resource/icons/Processing/B03_Processing_05.png differ
index fd960df..90f8d6b 100755 (executable)
Binary files a/data/resource/icons/Processing/B03_Processing_06.png and b/data/resource/icons/Processing/B03_Processing_06.png differ
index 4d29738..106b0d0 100755 (executable)
Binary files a/data/resource/icons/Processing/B03_Processing_07.png and b/data/resource/icons/Processing/B03_Processing_07.png differ
index 2426f8c..a14a1d8 100755 (executable)
Binary files a/data/resource/icons/Processing/B03_Processing_08.png and b/data/resource/icons/Processing/B03_Processing_08.png differ
index f33d8b3..1d94288 100755 (executable)
Binary files a/data/resource/icons/Processing/B03_Processing_09.png and b/data/resource/icons/Processing/B03_Processing_09.png differ
index 08f2ae9..adf097d 100755 (executable)
Binary files a/data/resource/icons/Processing/B03_Processing_10.png and b/data/resource/icons/Processing/B03_Processing_10.png differ
index 4d47219..e2b0935 100755 (executable)
Binary files a/data/resource/icons/Processing/B03_Processing_11.png and b/data/resource/icons/Processing/B03_Processing_11.png differ
index ee56f76..888db69 100755 (executable)
Binary files a/data/resource/icons/Processing/B03_Processing_12.png and b/data/resource/icons/Processing/B03_Processing_12.png differ
index fcb3049..99b7ba8 100755 (executable)
Binary files a/data/resource/icons/Processing/B03_Processing_13.png and b/data/resource/icons/Processing/B03_Processing_13.png differ
index daadb9c..3ec2cea 100755 (executable)
Binary files a/data/resource/icons/Processing/B03_Processing_14.png and b/data/resource/icons/Processing/B03_Processing_14.png differ
index 585a419..5abd5c9 100755 (executable)
Binary files a/data/resource/icons/Processing/B03_Processing_15.png and b/data/resource/icons/Processing/B03_Processing_15.png differ
index 367fd5c..947c4f9 100755 (executable)
Binary files a/data/resource/icons/Processing/B03_Processing_16.png and b/data/resource/icons/Processing/B03_Processing_16.png differ
index 2f65198..d9702bf 100755 (executable)
Binary files a/data/resource/icons/Processing/B03_Processing_17.png and b/data/resource/icons/Processing/B03_Processing_17.png differ
index 8afdef2..b3e81ab 100755 (executable)
Binary files a/data/resource/icons/Processing/B03_Processing_18.png and b/data/resource/icons/Processing/B03_Processing_18.png differ
index abd3a3c..21b68b3 100755 (executable)
Binary files a/data/resource/icons/Processing/B03_Processing_19.png and b/data/resource/icons/Processing/B03_Processing_19.png differ
index ec59fce..2bf4f2d 100755 (executable)
Binary files a/data/resource/icons/Processing/B03_Processing_20.png and b/data/resource/icons/Processing/B03_Processing_20.png differ
index 764ce4e..5fdf7ee 100755 (executable)
Binary files a/data/resource/icons/Processing/B03_Processing_21.png and b/data/resource/icons/Processing/B03_Processing_21.png differ
index f5318a2..3fbcc68 100755 (executable)
Binary files a/data/resource/icons/Processing/B03_Processing_22.png and b/data/resource/icons/Processing/B03_Processing_22.png differ
index c02556a..b647e19 100755 (executable)
Binary files a/data/resource/icons/Processing/B03_Processing_23.png and b/data/resource/icons/Processing/B03_Processing_23.png differ
index 796ca7b..f7f9ea7 100755 (executable)
Binary files a/data/resource/icons/Processing/B03_Processing_24.png and b/data/resource/icons/Processing/B03_Processing_24.png differ
index 55b9bab..636937e 100755 (executable)
Binary files a/data/resource/icons/Processing/B03_Processing_25.png and b/data/resource/icons/Processing/B03_Processing_25.png differ
index 94cf4e5..6427561 100755 (executable)
Binary files a/data/resource/icons/Processing/B03_Processing_26.png and b/data/resource/icons/Processing/B03_Processing_26.png differ
index e539af5..035ea43 100755 (executable)
Binary files a/data/resource/icons/Processing/B03_Processing_27.png and b/data/resource/icons/Processing/B03_Processing_27.png differ
index c5d2774..1fc9cf9 100755 (executable)
Binary files a/data/resource/icons/Processing/B03_Processing_28.png and b/data/resource/icons/Processing/B03_Processing_28.png differ
index 4069343..3a8f42d 100755 (executable)
Binary files a/data/resource/icons/Processing/B03_Processing_29.png and b/data/resource/icons/Processing/B03_Processing_29.png differ
index 87fa677..018221d 100755 (executable)
Binary files a/data/resource/icons/Processing/B03_Processing_30.png and b/data/resource/icons/Processing/B03_Processing_30.png differ
index 2e21840..6c5a6c6 100755 (executable)
Binary files a/data/resource/icons/Processing/B03_Processing_CPHS_line1.png and b/data/resource/icons/Processing/B03_Processing_CPHS_line1.png differ
index 32208c2..83731cd 100755 (executable)
Binary files a/data/resource/icons/Processing/B03_Processing_CPHS_line2.png and b/data/resource/icons/Processing/B03_Processing_CPHS_line2.png differ
index a7a6959..1c543cf 100755 (executable)
Binary files a/data/resource/icons/Processing/B03_Processing_Syncerror.png and b/data/resource/icons/Processing/B03_Processing_Syncerror.png differ
diff --git a/data/resource/icons/Processing/B03_Processing_Syncing.png b/data/resource/icons/Processing/B03_Processing_Syncing.png
deleted file mode 100755 (executable)
index a79a23e..0000000
Binary files a/data/resource/icons/Processing/B03_Processing_Syncing.png and /dev/null differ
index d6b7cbe..ad8c586 100755 (executable)
Binary files a/data/resource/icons/Processing/B03_Processing_Syncing_01.png and b/data/resource/icons/Processing/B03_Processing_Syncing_01.png differ
index 9094e5b..593d2f4 100755 (executable)
Binary files a/data/resource/icons/Processing/B03_Processing_Syncing_02.png and b/data/resource/icons/Processing/B03_Processing_Syncing_02.png differ
index df3151a..163a7ad 100755 (executable)
Binary files a/data/resource/icons/Processing/B03_Processing_Syncing_03.png and b/data/resource/icons/Processing/B03_Processing_Syncing_03.png differ
index 51af7f5..948f94f 100755 (executable)
Binary files a/data/resource/icons/Processing/B03_Processing_Syncing_04.png and b/data/resource/icons/Processing/B03_Processing_Syncing_04.png differ
index 15b3548..74fecd7 100755 (executable)
Binary files a/data/resource/icons/Processing/B03_Processing_calldivert.png and b/data/resource/icons/Processing/B03_Processing_calldivert.png differ
diff --git a/data/resource/icons/Processing/B03_Processing_download_ani_00.png b/data/resource/icons/Processing/B03_Processing_download_ani_00.png
new file mode 100755 (executable)
index 0000000..5ce6432
Binary files /dev/null and b/data/resource/icons/Processing/B03_Processing_download_ani_00.png differ
diff --git a/data/resource/icons/Processing/B03_Processing_download_ani_01.png b/data/resource/icons/Processing/B03_Processing_download_ani_01.png
new file mode 100755 (executable)
index 0000000..9e842c1
Binary files /dev/null and b/data/resource/icons/Processing/B03_Processing_download_ani_01.png differ
diff --git a/data/resource/icons/Processing/B03_Processing_download_ani_02.png b/data/resource/icons/Processing/B03_Processing_download_ani_02.png
new file mode 100755 (executable)
index 0000000..d602ad1
Binary files /dev/null and b/data/resource/icons/Processing/B03_Processing_download_ani_02.png differ
diff --git a/data/resource/icons/Processing/B03_Processing_download_ani_03.png b/data/resource/icons/Processing/B03_Processing_download_ani_03.png
new file mode 100755 (executable)
index 0000000..50248e4
Binary files /dev/null and b/data/resource/icons/Processing/B03_Processing_download_ani_03.png differ
diff --git a/data/resource/icons/Processing/B03_Processing_download_ani_04.png b/data/resource/icons/Processing/B03_Processing_download_ani_04.png
new file mode 100755 (executable)
index 0000000..ff1b494
Binary files /dev/null and b/data/resource/icons/Processing/B03_Processing_download_ani_04.png differ
diff --git a/data/resource/icons/Processing/B03_Processing_download_ani_05.png b/data/resource/icons/Processing/B03_Processing_download_ani_05.png
new file mode 100755 (executable)
index 0000000..312d8dd
Binary files /dev/null and b/data/resource/icons/Processing/B03_Processing_download_ani_05.png differ
diff --git a/data/resource/icons/Processing/B03_Processing_download_ani_06.png b/data/resource/icons/Processing/B03_Processing_download_ani_06.png
new file mode 100755 (executable)
index 0000000..1478320
Binary files /dev/null and b/data/resource/icons/Processing/B03_Processing_download_ani_06.png differ
diff --git a/data/resource/icons/Processing/B03_Processing_download_complete.png b/data/resource/icons/Processing/B03_Processing_download_complete.png
new file mode 100755 (executable)
index 0000000..1478320
Binary files /dev/null and b/data/resource/icons/Processing/B03_Processing_download_complete.png differ
diff --git a/data/resource/icons/Processing/B03_Processing_download_failed.png b/data/resource/icons/Processing/B03_Processing_download_failed.png
new file mode 100755 (executable)
index 0000000..a876e74
Binary files /dev/null and b/data/resource/icons/Processing/B03_Processing_download_failed.png differ
diff --git a/data/resource/icons/Processing/B03_Processing_upload_ani_00.png b/data/resource/icons/Processing/B03_Processing_upload_ani_00.png
new file mode 100755 (executable)
index 0000000..a9375a9
Binary files /dev/null and b/data/resource/icons/Processing/B03_Processing_upload_ani_00.png differ
diff --git a/data/resource/icons/Processing/B03_Processing_upload_ani_01.png b/data/resource/icons/Processing/B03_Processing_upload_ani_01.png
new file mode 100755 (executable)
index 0000000..aa3480e
Binary files /dev/null and b/data/resource/icons/Processing/B03_Processing_upload_ani_01.png differ
diff --git a/data/resource/icons/Processing/B03_Processing_upload_ani_02.png b/data/resource/icons/Processing/B03_Processing_upload_ani_02.png
new file mode 100755 (executable)
index 0000000..877220f
Binary files /dev/null and b/data/resource/icons/Processing/B03_Processing_upload_ani_02.png differ
diff --git a/data/resource/icons/Processing/B03_Processing_upload_ani_03.png b/data/resource/icons/Processing/B03_Processing_upload_ani_03.png
new file mode 100755 (executable)
index 0000000..78d1b2e
Binary files /dev/null and b/data/resource/icons/Processing/B03_Processing_upload_ani_03.png differ
diff --git a/data/resource/icons/Processing/B03_Processing_upload_ani_04.png b/data/resource/icons/Processing/B03_Processing_upload_ani_04.png
new file mode 100755 (executable)
index 0000000..337c82f
Binary files /dev/null and b/data/resource/icons/Processing/B03_Processing_upload_ani_04.png differ
diff --git a/data/resource/icons/Processing/B03_Processing_upload_ani_05.png b/data/resource/icons/Processing/B03_Processing_upload_ani_05.png
new file mode 100755 (executable)
index 0000000..582ed4b
Binary files /dev/null and b/data/resource/icons/Processing/B03_Processing_upload_ani_05.png differ
diff --git a/data/resource/icons/Processing/B03_Processing_upload_ani_06.png b/data/resource/icons/Processing/B03_Processing_upload_ani_06.png
new file mode 100755 (executable)
index 0000000..bbb7244
Binary files /dev/null and b/data/resource/icons/Processing/B03_Processing_upload_ani_06.png differ
diff --git a/data/resource/icons/Processing/B03_Processing_upload_complete.png b/data/resource/icons/Processing/B03_Processing_upload_complete.png
new file mode 100755 (executable)
index 0000000..bbb7244
Binary files /dev/null and b/data/resource/icons/Processing/B03_Processing_upload_complete.png differ
diff --git a/data/resource/icons/Processing/B03_Processing_upload_failed.png b/data/resource/icons/Processing/B03_Processing_upload_failed.png
new file mode 100755 (executable)
index 0000000..fd118e7
Binary files /dev/null and b/data/resource/icons/Processing/B03_Processing_upload_failed.png differ
index eac8a67..25fe8ac 100755 (executable)
Binary files a/data/resource/icons/Profile/B03_Profile_Mute.png and b/data/resource/icons/Profile/B03_Profile_Mute.png differ
diff --git a/data/resource/icons/Profile/B03_Profile_Sound&Vibration.png b/data/resource/icons/Profile/B03_Profile_Sound&Vibration.png
deleted file mode 100755 (executable)
index 341798e..0000000
Binary files a/data/resource/icons/Profile/B03_Profile_Sound&Vibration.png and /dev/null differ
index 22ad2f3..da8662a 100755 (executable)
Binary files a/data/resource/icons/Profile/B03_Profile_Vibration.png and b/data/resource/icons/Profile/B03_Profile_Vibration.png differ
index 6f3c47d..4d9fce4 100755 (executable)
Binary files a/data/resource/icons/RCS/B03_RCS.png and b/data/resource/icons/RCS/B03_RCS.png differ
diff --git a/data/resource/icons/RSSI/B03_Network_LimitedService.png b/data/resource/icons/RSSI/B03_Network_LimitedService.png
new file mode 100755 (executable)
index 0000000..f260b60
Binary files /dev/null and b/data/resource/icons/RSSI/B03_Network_LimitedService.png differ
diff --git a/data/resource/icons/RSSI/B03_RSSI_Drivingmode.png b/data/resource/icons/RSSI/B03_RSSI_Drivingmode.png
new file mode 100755 (executable)
index 0000000..3b1a892
Binary files /dev/null and b/data/resource/icons/RSSI/B03_RSSI_Drivingmode.png differ
diff --git a/data/resource/icons/RSSI/B03_RSSI_Dual_Sim_00.png b/data/resource/icons/RSSI/B03_RSSI_Dual_Sim_00.png
new file mode 100755 (executable)
index 0000000..4a4da54
Binary files /dev/null and b/data/resource/icons/RSSI/B03_RSSI_Dual_Sim_00.png differ
diff --git a/data/resource/icons/RSSI/B03_RSSI_Dual_Sim_01.png b/data/resource/icons/RSSI/B03_RSSI_Dual_Sim_01.png
new file mode 100755 (executable)
index 0000000..cd3590d
Binary files /dev/null and b/data/resource/icons/RSSI/B03_RSSI_Dual_Sim_01.png differ
diff --git a/data/resource/icons/RSSI/B03_RSSI_Dual_Sim_02.png b/data/resource/icons/RSSI/B03_RSSI_Dual_Sim_02.png
new file mode 100755 (executable)
index 0000000..ef40006
Binary files /dev/null and b/data/resource/icons/RSSI/B03_RSSI_Dual_Sim_02.png differ
diff --git a/data/resource/icons/RSSI/B03_RSSI_Dual_Sim_03.png b/data/resource/icons/RSSI/B03_RSSI_Dual_Sim_03.png
new file mode 100755 (executable)
index 0000000..fef9d76
Binary files /dev/null and b/data/resource/icons/RSSI/B03_RSSI_Dual_Sim_03.png differ
diff --git a/data/resource/icons/RSSI/B03_RSSI_Dual_Sim_04.png b/data/resource/icons/RSSI/B03_RSSI_Dual_Sim_04.png
new file mode 100755 (executable)
index 0000000..d2c29b8
Binary files /dev/null and b/data/resource/icons/RSSI/B03_RSSI_Dual_Sim_04.png differ
diff --git a/data/resource/icons/RSSI/B03_RSSI_Dual_Sim_roaming_00.png b/data/resource/icons/RSSI/B03_RSSI_Dual_Sim_roaming_00.png
new file mode 100755 (executable)
index 0000000..bb75695
Binary files /dev/null and b/data/resource/icons/RSSI/B03_RSSI_Dual_Sim_roaming_00.png differ
diff --git a/data/resource/icons/RSSI/B03_RSSI_Dual_Sim_roaming_01.png b/data/resource/icons/RSSI/B03_RSSI_Dual_Sim_roaming_01.png
new file mode 100755 (executable)
index 0000000..5e1d0ff
Binary files /dev/null and b/data/resource/icons/RSSI/B03_RSSI_Dual_Sim_roaming_01.png differ
diff --git a/data/resource/icons/RSSI/B03_RSSI_Dual_Sim_roaming_02.png b/data/resource/icons/RSSI/B03_RSSI_Dual_Sim_roaming_02.png
new file mode 100755 (executable)
index 0000000..1b0aef8
Binary files /dev/null and b/data/resource/icons/RSSI/B03_RSSI_Dual_Sim_roaming_02.png differ
diff --git a/data/resource/icons/RSSI/B03_RSSI_Dual_Sim_roaming_03.png b/data/resource/icons/RSSI/B03_RSSI_Dual_Sim_roaming_03.png
new file mode 100755 (executable)
index 0000000..a246d8c
Binary files /dev/null and b/data/resource/icons/RSSI/B03_RSSI_Dual_Sim_roaming_03.png differ
diff --git a/data/resource/icons/RSSI/B03_RSSI_Dual_Sim_roaming_04.png b/data/resource/icons/RSSI/B03_RSSI_Dual_Sim_roaming_04.png
new file mode 100755 (executable)
index 0000000..37c1302
Binary files /dev/null and b/data/resource/icons/RSSI/B03_RSSI_Dual_Sim_roaming_04.png differ
index f00b63f..5ee7d17 100755 (executable)
Binary files a/data/resource/icons/RSSI/B03_RSSI_Flightmode.png and b/data/resource/icons/RSSI/B03_RSSI_Flightmode.png differ
index 3dcbb53..4fc1298 100755 (executable)
Binary files a/data/resource/icons/RSSI/B03_RSSI_NoService.png and b/data/resource/icons/RSSI/B03_RSSI_NoService.png differ
index afdc9c9..3cbf16d 100755 (executable)
Binary files a/data/resource/icons/RSSI/B03_RSSI_NoSim.png and b/data/resource/icons/RSSI/B03_RSSI_NoSim.png differ
index 45cb87f..88de5f0 100755 (executable)
Binary files a/data/resource/icons/RSSI/B03_RSSI_Searching.png and b/data/resource/icons/RSSI/B03_RSSI_Searching.png differ
old mode 100755 (executable)
new mode 100644 (file)
index c0069f6..98512ee
Binary files a/data/resource/icons/RSSI/B03_RSSI_Sim1_00.png and b/data/resource/icons/RSSI/B03_RSSI_Sim1_00.png differ
old mode 100755 (executable)
new mode 100644 (file)
index eb7a15d..94fec03
Binary files a/data/resource/icons/RSSI/B03_RSSI_Sim1_01.png and b/data/resource/icons/RSSI/B03_RSSI_Sim1_01.png differ
old mode 100755 (executable)
new mode 100644 (file)
index 0890c0d..e264f6b
Binary files a/data/resource/icons/RSSI/B03_RSSI_Sim1_02.png and b/data/resource/icons/RSSI/B03_RSSI_Sim1_02.png differ
old mode 100755 (executable)
new mode 100644 (file)
index 487b8bb..282e7b6
Binary files a/data/resource/icons/RSSI/B03_RSSI_Sim1_03.png and b/data/resource/icons/RSSI/B03_RSSI_Sim1_03.png differ
old mode 100755 (executable)
new mode 100644 (file)
index 8f99516..ab5498c
Binary files a/data/resource/icons/RSSI/B03_RSSI_Sim1_04.png and b/data/resource/icons/RSSI/B03_RSSI_Sim1_04.png differ
old mode 100755 (executable)
new mode 100644 (file)
index 35afe59..68fac54
Binary files a/data/resource/icons/RSSI/B03_RSSI_Sim2_00.png and b/data/resource/icons/RSSI/B03_RSSI_Sim2_00.png differ
old mode 100755 (executable)
new mode 100644 (file)
index 8139f4a..a562773
Binary files a/data/resource/icons/RSSI/B03_RSSI_Sim2_01.png and b/data/resource/icons/RSSI/B03_RSSI_Sim2_01.png differ
old mode 100755 (executable)
new mode 100644 (file)
index a6a5b02..53f93cf
Binary files a/data/resource/icons/RSSI/B03_RSSI_Sim2_02.png and b/data/resource/icons/RSSI/B03_RSSI_Sim2_02.png differ
old mode 100755 (executable)
new mode 100644 (file)
index 10fa7b3..9693bf3
Binary files a/data/resource/icons/RSSI/B03_RSSI_Sim2_03.png and b/data/resource/icons/RSSI/B03_RSSI_Sim2_03.png differ
old mode 100755 (executable)
new mode 100644 (file)
index ab55cd5..671e17b
Binary files a/data/resource/icons/RSSI/B03_RSSI_Sim2_04.png and b/data/resource/icons/RSSI/B03_RSSI_Sim2_04.png differ
index 9c01bae..0ed9a81 100755 (executable)
Binary files a/data/resource/icons/RSSI/B03_RSSI_Sim_00.png and b/data/resource/icons/RSSI/B03_RSSI_Sim_00.png differ
index 7c7e37b..e002c25 100755 (executable)
Binary files a/data/resource/icons/RSSI/B03_RSSI_Sim_01.png and b/data/resource/icons/RSSI/B03_RSSI_Sim_01.png differ
index 9a7c427..67bafa6 100755 (executable)
Binary files a/data/resource/icons/RSSI/B03_RSSI_Sim_02.png and b/data/resource/icons/RSSI/B03_RSSI_Sim_02.png differ
index 6a03978..801e61a 100755 (executable)
Binary files a/data/resource/icons/RSSI/B03_RSSI_Sim_03.png and b/data/resource/icons/RSSI/B03_RSSI_Sim_03.png differ
index dbc68ea..fbd72d7 100755 (executable)
Binary files a/data/resource/icons/RSSI/B03_RSSI_Sim_04.png and b/data/resource/icons/RSSI/B03_RSSI_Sim_04.png differ
diff --git a/data/resource/icons/RSSI/B03_RSSI_Sim_office_04.png b/data/resource/icons/RSSI/B03_RSSI_Sim_office_04.png
new file mode 100755 (executable)
index 0000000..f0fc29f
Binary files /dev/null and b/data/resource/icons/RSSI/B03_RSSI_Sim_office_04.png differ
index 679cda9..01a34fd 100755 (executable)
Binary files a/data/resource/icons/RSSI/B03_RSSI_roaming_00.png and b/data/resource/icons/RSSI/B03_RSSI_roaming_00.png differ
index ca0f5e1..73d061b 100755 (executable)
Binary files a/data/resource/icons/RSSI/B03_RSSI_roaming_01.png and b/data/resource/icons/RSSI/B03_RSSI_roaming_01.png differ
index c48949e..082ff7a 100755 (executable)
Binary files a/data/resource/icons/RSSI/B03_RSSI_roaming_02.png and b/data/resource/icons/RSSI/B03_RSSI_roaming_02.png differ
index 177d665..4700db1 100755 (executable)
Binary files a/data/resource/icons/RSSI/B03_RSSI_roaming_03.png and b/data/resource/icons/RSSI/B03_RSSI_roaming_03.png differ
index bf301e0..bbc0b23 100755 (executable)
Binary files a/data/resource/icons/RSSI/B03_RSSI_roaming_04.png and b/data/resource/icons/RSSI/B03_RSSI_roaming_04.png differ
index 9b2ce27..514b203 100755 (executable)
Binary files a/data/resource/icons/RSSI/B03_Roaming.png and b/data/resource/icons/RSSI/B03_Roaming.png differ
diff --git a/data/resource/icons/Ready to share/B03_ready_to_share.png b/data/resource/icons/Ready to share/B03_ready_to_share.png
new file mode 100755 (executable)
index 0000000..5365fa3
Binary files /dev/null and b/data/resource/icons/Ready to share/B03_ready_to_share.png differ
index 73d6b11..cb5ab5c 100755 (executable)
Binary files a/data/resource/icons/Rotation locked/B03_Rotationlocked.png and b/data/resource/icons/Rotation locked/B03_Rotationlocked.png differ
diff --git a/data/resource/icons/SIM card full/B03_sim_card_full.png b/data/resource/icons/SIM card full/B03_sim_card_full.png
new file mode 100755 (executable)
index 0000000..4908901
Binary files /dev/null and b/data/resource/icons/SIM card full/B03_sim_card_full.png differ
diff --git a/data/resource/icons/Security/B03_Device_encryption_error.png b/data/resource/icons/Security/B03_Device_encryption_error.png
new file mode 100755 (executable)
index 0000000..4b50bba
Binary files /dev/null and b/data/resource/icons/Security/B03_Device_encryption_error.png differ
diff --git a/data/resource/icons/Security/B03_Firewall.png b/data/resource/icons/Security/B03_Firewall.png
new file mode 100755 (executable)
index 0000000..dd66c49
Binary files /dev/null and b/data/resource/icons/Security/B03_Firewall.png differ
diff --git a/data/resource/icons/Security/B03_SDcard_dectyption.png b/data/resource/icons/Security/B03_SDcard_dectyption.png
new file mode 100755 (executable)
index 0000000..8f33c77
Binary files /dev/null and b/data/resource/icons/Security/B03_SDcard_dectyption.png differ
diff --git a/data/resource/icons/Security/B03_SDcard_encryption.png b/data/resource/icons/Security/B03_SDcard_encryption.png
new file mode 100755 (executable)
index 0000000..7c57fa2
Binary files /dev/null and b/data/resource/icons/Security/B03_SDcard_encryption.png differ
diff --git a/data/resource/icons/Security/B03_Sdcard_encryption_error.png b/data/resource/icons/Security/B03_Sdcard_encryption_error.png
new file mode 100755 (executable)
index 0000000..97989fa
Binary files /dev/null and b/data/resource/icons/Security/B03_Sdcard_encryption_error.png differ
diff --git a/data/resource/icons/Security/B03_Security_error.png b/data/resource/icons/Security/B03_Security_error.png
new file mode 100755 (executable)
index 0000000..3d80115
Binary files /dev/null and b/data/resource/icons/Security/B03_Security_error.png differ
diff --git a/data/resource/icons/Security/B03_security_lock.png b/data/resource/icons/Security/B03_security_lock.png
new file mode 100755 (executable)
index 0000000..c386ea5
Binary files /dev/null and b/data/resource/icons/Security/B03_security_lock.png differ
diff --git a/data/resource/icons/Send help messages/B03_send_help_messages.png b/data/resource/icons/Send help messages/B03_send_help_messages.png
new file mode 100755 (executable)
index 0000000..1af3ae1
Binary files /dev/null and b/data/resource/icons/Send help messages/B03_send_help_messages.png differ
diff --git a/data/resource/icons/Shealth/B03_shealth.png b/data/resource/icons/Shealth/B03_shealth.png
new file mode 100755 (executable)
index 0000000..032b8a6
Binary files /dev/null and b/data/resource/icons/Shealth/B03_shealth.png differ
diff --git a/data/resource/icons/Splanner/B03_Splanner.png b/data/resource/icons/Splanner/B03_Splanner.png
new file mode 100755 (executable)
index 0000000..dbe4882
Binary files /dev/null and b/data/resource/icons/Splanner/B03_Splanner.png differ
diff --git a/data/resource/icons/Storage/B03_storage_memoryfull.png b/data/resource/icons/Storage/B03_storage_memoryfull.png
new file mode 100755 (executable)
index 0000000..7458cbe
Binary files /dev/null and b/data/resource/icons/Storage/B03_storage_memoryfull.png differ
diff --git a/data/resource/icons/Storage/B03_storage_t_flash.png b/data/resource/icons/Storage/B03_storage_t_flash.png
new file mode 100755 (executable)
index 0000000..d626f29
Binary files /dev/null and b/data/resource/icons/Storage/B03_storage_t_flash.png differ
diff --git a/data/resource/icons/Tethering/B03_All_connected.png b/data/resource/icons/Tethering/B03_All_connected.png
new file mode 100755 (executable)
index 0000000..fd15f34
Binary files /dev/null and b/data/resource/icons/Tethering/B03_All_connected.png differ
diff --git a/data/resource/icons/Tethering/B03_All_no_connected.png b/data/resource/icons/Tethering/B03_All_no_connected.png
new file mode 100755 (executable)
index 0000000..d42ca66
Binary files /dev/null and b/data/resource/icons/Tethering/B03_All_no_connected.png differ
diff --git a/data/resource/icons/Tethering/B03_BT_connected.png b/data/resource/icons/Tethering/B03_BT_connected.png
new file mode 100755 (executable)
index 0000000..eb6c3e3
Binary files /dev/null and b/data/resource/icons/Tethering/B03_BT_connected.png differ
diff --git a/data/resource/icons/Tethering/B03_BT_no_connected.png b/data/resource/icons/Tethering/B03_BT_no_connected.png
new file mode 100755 (executable)
index 0000000..0fa42bd
Binary files /dev/null and b/data/resource/icons/Tethering/B03_BT_no_connected.png differ
diff --git a/data/resource/icons/Tethering/B03_USB_connected.png b/data/resource/icons/Tethering/B03_USB_connected.png
new file mode 100755 (executable)
index 0000000..3190a65
Binary files /dev/null and b/data/resource/icons/Tethering/B03_USB_connected.png differ
diff --git a/data/resource/icons/Tethering/B03_USB_no_connected.png b/data/resource/icons/Tethering/B03_USB_no_connected.png
new file mode 100755 (executable)
index 0000000..179ecff
Binary files /dev/null and b/data/resource/icons/Tethering/B03_USB_no_connected.png differ
diff --git a/data/resource/icons/Tethering/B03_Wi_Fi_connected.png b/data/resource/icons/Tethering/B03_Wi_Fi_connected.png
new file mode 100755 (executable)
index 0000000..e6fffc6
Binary files /dev/null and b/data/resource/icons/Tethering/B03_Wi_Fi_connected.png differ
diff --git a/data/resource/icons/Tethering/B03_Wi_Fi_no_connected.png b/data/resource/icons/Tethering/B03_Wi_Fi_no_connected.png
new file mode 100755 (executable)
index 0000000..65b71c5
Binary files /dev/null and b/data/resource/icons/Tethering/B03_Wi_Fi_no_connected.png differ
old mode 100755 (executable)
new mode 100644 (file)
index 0dc9cc1..f8a1d06
Binary files a/data/resource/icons/USB tethering/B03_USB.png and b/data/resource/icons/USB tethering/B03_USB.png differ
diff --git a/data/resource/icons/VPN/B03_VPN.png b/data/resource/icons/VPN/B03_VPN.png
new file mode 100755 (executable)
index 0000000..b8528c2
Binary files /dev/null and b/data/resource/icons/VPN/B03_VPN.png differ
diff --git a/data/resource/icons/Voice control/B03_voice_control.png b/data/resource/icons/Voice control/B03_voice_control.png
new file mode 100755 (executable)
index 0000000..24a0345
Binary files /dev/null and b/data/resource/icons/Voice control/B03_voice_control.png differ
diff --git a/data/resource/icons/facebook/B03_facbook_app.png b/data/resource/icons/facebook/B03_facbook_app.png
new file mode 100755 (executable)
index 0000000..7ee83ee
Binary files /dev/null and b/data/resource/icons/facebook/B03_facbook_app.png differ
diff --git a/data/resource/icons/facebook/B03_facbook_event.png b/data/resource/icons/facebook/B03_facbook_event.png
new file mode 100755 (executable)
index 0000000..67ddb96
Binary files /dev/null and b/data/resource/icons/facebook/B03_facbook_event.png differ
similarity index 86%
rename from data/resource/icons/Background playing/B03_Memorycard.png
rename to data/resource/icons/facebook/B03_facbook_friend_request.png
index 9ff4c47..2c9c15b 100755 (executable)
Binary files a/data/resource/icons/Background playing/B03_Memorycard.png and b/data/resource/icons/facebook/B03_facbook_friend_request.png differ
diff --git a/data/resource/icons/facebook/B03_facbook_messages.png b/data/resource/icons/facebook/B03_facbook_messages.png
new file mode 100755 (executable)
index 0000000..701e898
Binary files /dev/null and b/data/resource/icons/facebook/B03_facbook_messages.png differ
diff --git a/data/resource/icons/handler_bg.#.png b/data/resource/icons/handler_bg.#.png
new file mode 100755 (executable)
index 0000000..38bd634
Binary files /dev/null and b/data/resource/icons/handler_bg.#.png differ
similarity index 94%
rename from data/resource/icons_edc/B03_Status_bar_line.PNG
rename to data/resource/icons/handler_bg_ef.#.png
index b36a142..38db7ff 100755 (executable)
Binary files a/data/resource/icons_edc/B03_Status_bar_line.PNG and b/data/resource/icons/handler_bg_ef.#.png differ
diff --git a/data/resource/icons/tethering/B03_All_connected.png b/data/resource/icons/tethering/B03_All_connected.png
new file mode 100755 (executable)
index 0000000..fd15f34
Binary files /dev/null and b/data/resource/icons/tethering/B03_All_connected.png differ
diff --git a/data/resource/icons/tethering/B03_All_no_connected.png b/data/resource/icons/tethering/B03_All_no_connected.png
new file mode 100755 (executable)
index 0000000..d42ca66
Binary files /dev/null and b/data/resource/icons/tethering/B03_All_no_connected.png differ
diff --git a/data/resource/icons/tethering/B03_BT_connected.png b/data/resource/icons/tethering/B03_BT_connected.png
new file mode 100755 (executable)
index 0000000..eb6c3e3
Binary files /dev/null and b/data/resource/icons/tethering/B03_BT_connected.png differ
diff --git a/data/resource/icons/tethering/B03_BT_no_connected.png b/data/resource/icons/tethering/B03_BT_no_connected.png
new file mode 100755 (executable)
index 0000000..0fa42bd
Binary files /dev/null and b/data/resource/icons/tethering/B03_BT_no_connected.png differ
diff --git a/data/resource/icons/tethering/B03_USB_connected.png b/data/resource/icons/tethering/B03_USB_connected.png
new file mode 100755 (executable)
index 0000000..3190a65
Binary files /dev/null and b/data/resource/icons/tethering/B03_USB_connected.png differ
diff --git a/data/resource/icons/tethering/B03_USB_no_connected.png b/data/resource/icons/tethering/B03_USB_no_connected.png
new file mode 100755 (executable)
index 0000000..179ecff
Binary files /dev/null and b/data/resource/icons/tethering/B03_USB_no_connected.png differ
diff --git a/data/resource/icons/tethering/B03_Wi_Fi_connected.png b/data/resource/icons/tethering/B03_Wi_Fi_connected.png
new file mode 100755 (executable)
index 0000000..e6fffc6
Binary files /dev/null and b/data/resource/icons/tethering/B03_Wi_Fi_connected.png differ
diff --git a/data/resource/icons/tethering/B03_Wi_Fi_no_connected.png b/data/resource/icons/tethering/B03_Wi_Fi_no_connected.png
new file mode 100755 (executable)
index 0000000..65b71c5
Binary files /dev/null and b/data/resource/icons/tethering/B03_Wi_Fi_no_connected.png differ
diff --git a/data/resource/icons_edc/B03_OrangeF.png b/data/resource/icons_edc/B03_OrangeF.png
new file mode 100644 (file)
index 0000000..5cbc939
Binary files /dev/null and b/data/resource/icons_edc/B03_OrangeF.png differ
diff --git a/data/resource/icons_edc/B03_Processing_download_ani_00.png b/data/resource/icons_edc/B03_Processing_download_ani_00.png
new file mode 100755 (executable)
index 0000000..5ce6432
Binary files /dev/null and b/data/resource/icons_edc/B03_Processing_download_ani_00.png differ
diff --git a/data/resource/icons_edc/B03_Processing_download_ani_01.png b/data/resource/icons_edc/B03_Processing_download_ani_01.png
new file mode 100755 (executable)
index 0000000..9e842c1
Binary files /dev/null and b/data/resource/icons_edc/B03_Processing_download_ani_01.png differ
diff --git a/data/resource/icons_edc/B03_Processing_download_ani_02.png b/data/resource/icons_edc/B03_Processing_download_ani_02.png
new file mode 100755 (executable)
index 0000000..d602ad1
Binary files /dev/null and b/data/resource/icons_edc/B03_Processing_download_ani_02.png differ
diff --git a/data/resource/icons_edc/B03_Processing_download_ani_03.png b/data/resource/icons_edc/B03_Processing_download_ani_03.png
new file mode 100755 (executable)
index 0000000..50248e4
Binary files /dev/null and b/data/resource/icons_edc/B03_Processing_download_ani_03.png differ
diff --git a/data/resource/icons_edc/B03_Processing_download_ani_04.png b/data/resource/icons_edc/B03_Processing_download_ani_04.png
new file mode 100755 (executable)
index 0000000..ff1b494
Binary files /dev/null and b/data/resource/icons_edc/B03_Processing_download_ani_04.png differ
diff --git a/data/resource/icons_edc/B03_Processing_download_ani_05.png b/data/resource/icons_edc/B03_Processing_download_ani_05.png
new file mode 100755 (executable)
index 0000000..312d8dd
Binary files /dev/null and b/data/resource/icons_edc/B03_Processing_download_ani_05.png differ
diff --git a/data/resource/icons_edc/B03_Processing_download_ani_06.png b/data/resource/icons_edc/B03_Processing_download_ani_06.png
new file mode 100755 (executable)
index 0000000..1478320
Binary files /dev/null and b/data/resource/icons_edc/B03_Processing_download_ani_06.png differ
diff --git a/data/resource/icons_edc/B03_Processing_download_complete.png b/data/resource/icons_edc/B03_Processing_download_complete.png
new file mode 100755 (executable)
index 0000000..1478320
Binary files /dev/null and b/data/resource/icons_edc/B03_Processing_download_complete.png differ
diff --git a/data/resource/icons_edc/B03_Processing_download_failed.png b/data/resource/icons_edc/B03_Processing_download_failed.png
new file mode 100755 (executable)
index 0000000..a876e74
Binary files /dev/null and b/data/resource/icons_edc/B03_Processing_download_failed.png differ
diff --git a/data/resource/icons_edc/B03_Processing_upload_ani_00.png b/data/resource/icons_edc/B03_Processing_upload_ani_00.png
new file mode 100755 (executable)
index 0000000..a9375a9
Binary files /dev/null and b/data/resource/icons_edc/B03_Processing_upload_ani_00.png differ
diff --git a/data/resource/icons_edc/B03_Processing_upload_ani_01.png b/data/resource/icons_edc/B03_Processing_upload_ani_01.png
new file mode 100755 (executable)
index 0000000..aa3480e
Binary files /dev/null and b/data/resource/icons_edc/B03_Processing_upload_ani_01.png differ
diff --git a/data/resource/icons_edc/B03_Processing_upload_ani_02.png b/data/resource/icons_edc/B03_Processing_upload_ani_02.png
new file mode 100755 (executable)
index 0000000..877220f
Binary files /dev/null and b/data/resource/icons_edc/B03_Processing_upload_ani_02.png differ
diff --git a/data/resource/icons_edc/B03_Processing_upload_ani_03.png b/data/resource/icons_edc/B03_Processing_upload_ani_03.png
new file mode 100755 (executable)
index 0000000..78d1b2e
Binary files /dev/null and b/data/resource/icons_edc/B03_Processing_upload_ani_03.png differ
diff --git a/data/resource/icons_edc/B03_Processing_upload_ani_04.png b/data/resource/icons_edc/B03_Processing_upload_ani_04.png
new file mode 100755 (executable)
index 0000000..337c82f
Binary files /dev/null and b/data/resource/icons_edc/B03_Processing_upload_ani_04.png differ
diff --git a/data/resource/icons_edc/B03_Processing_upload_ani_05.png b/data/resource/icons_edc/B03_Processing_upload_ani_05.png
new file mode 100755 (executable)
index 0000000..582ed4b
Binary files /dev/null and b/data/resource/icons_edc/B03_Processing_upload_ani_05.png differ
diff --git a/data/resource/icons_edc/B03_Processing_upload_ani_06.png b/data/resource/icons_edc/B03_Processing_upload_ani_06.png
new file mode 100755 (executable)
index 0000000..bbb7244
Binary files /dev/null and b/data/resource/icons_edc/B03_Processing_upload_ani_06.png differ
diff --git a/data/resource/icons_edc/B03_Processing_upload_complete.png b/data/resource/icons_edc/B03_Processing_upload_complete.png
new file mode 100755 (executable)
index 0000000..bbb7244
Binary files /dev/null and b/data/resource/icons_edc/B03_Processing_upload_complete.png differ
diff --git a/data/resource/icons_edc/B03_Processing_upload_failed.png b/data/resource/icons_edc/B03_Processing_upload_failed.png
new file mode 100755 (executable)
index 0000000..fd118e7
Binary files /dev/null and b/data/resource/icons_edc/B03_Processing_upload_failed.png differ
diff --git a/data/resource/icons_edc/B03_conection_UPdownload.png b/data/resource/icons_edc/B03_conection_UPdownload.png
new file mode 100755 (executable)
index 0000000..d59226c
Binary files /dev/null and b/data/resource/icons_edc/B03_conection_UPdownload.png differ
diff --git a/data/resource/icons_edc/B03_conection_not_UPdownload.png b/data/resource/icons_edc/B03_conection_not_UPdownload.png
new file mode 100755 (executable)
index 0000000..bbb6e47
Binary files /dev/null and b/data/resource/icons_edc/B03_conection_not_UPdownload.png differ
diff --git a/data/resource/icons_edc/B03_connection_UPload.png b/data/resource/icons_edc/B03_connection_UPload.png
new file mode 100755 (executable)
index 0000000..48f4806
Binary files /dev/null and b/data/resource/icons_edc/B03_connection_UPload.png differ
diff --git a/data/resource/icons_edc/B03_connection_download.png b/data/resource/icons_edc/B03_connection_download.png
new file mode 100755 (executable)
index 0000000..25802b0
Binary files /dev/null and b/data/resource/icons_edc/B03_connection_download.png differ
diff --git a/data/resource/icons_edc/B03_indicator_bg.png b/data/resource/icons_edc/B03_indicator_bg.png
new file mode 100644 (file)
index 0000000..c27b619
Binary files /dev/null and b/data/resource/icons_edc/B03_indicator_bg.png differ
diff --git a/data/resource/icons_edc/B03_not_conection_UPdownload.png b/data/resource/icons_edc/B03_not_conection_UPdownload.png
new file mode 100755 (executable)
index 0000000..6181191
Binary files /dev/null and b/data/resource/icons_edc/B03_not_conection_UPdownload.png differ
diff --git a/data/resource/icons_edc/B03_notify_more.png b/data/resource/icons_edc/B03_notify_more.png
new file mode 100755 (executable)
index 0000000..19527b9
Binary files /dev/null and b/data/resource/icons_edc/B03_notify_more.png differ
old mode 100755 (executable)
new mode 100644 (file)
similarity index 95%
rename from data/resource/icons/App tray/B03_Status_bar_line.PNG
rename to data/resource/icons_edc/B03_search_divider.png
index b36a142..d90ad78
Binary files a/data/resource/icons/App tray/B03_Status_bar_line.PNG and b/data/resource/icons_edc/B03_search_divider.png differ
diff --git a/data/resource/icons_edc/core_theme_bg_01.png b/data/resource/icons_edc/core_theme_bg_01.png
new file mode 100644 (file)
index 0000000..be3057d
Binary files /dev/null and b/data/resource/icons_edc/core_theme_bg_01.png differ
diff --git a/data/resource/icons_edc/handler_bg.#.png b/data/resource/icons_edc/handler_bg.#.png
new file mode 100755 (executable)
index 0000000..38bd634
Binary files /dev/null and b/data/resource/icons_edc/handler_bg.#.png differ
diff --git a/data/resource/icons_edc/handler_bg_ef.#.png b/data/resource/icons_edc/handler_bg_ef.#.png
new file mode 100755 (executable)
index 0000000..38db7ff
Binary files /dev/null and b/data/resource/icons_edc/handler_bg_ef.#.png differ
diff --git a/data/resource/icons_edc/handler_btn_02.png b/data/resource/icons_edc/handler_btn_02.png
new file mode 100644 (file)
index 0000000..f4fedc3
Binary files /dev/null and b/data/resource/icons_edc/handler_btn_02.png differ
old mode 100755 (executable)
new mode 100644 (file)
index 4f4acb4..80e4ea0
@@ -1,19 +1,24 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ *  Indicator
  *
- * Licensed under the Flora License, Version 1.1 (the "License");
+ * Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.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/
+ * http://www.apache.org/licenses/LICENSE-2.0
  *
  * 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 "color_classes.edc"
+
 #define TEMP_SWALLOW_PART_FROM_LEFT( partName, rel_x, rel_y, MinWidth, MinHeight) \
                        part { \
                                name: partName; \
                                } \
                        } \
 
+#define SWALLOW_PART_FROM_LEFT_WITH_SPACE( partName, rel_x, rel_y, MinWidth, MinHeight) \
+                       part {\
+                         name : "rect."partName; \
+                         type : RECT;\
+                         scale : 1;\
+                         description {\
+                            state : "default" 0.0;\
+                            rel1.to : partName;\
+                            rel2.to : partName;\
+                            color : 0 0 0 0;\
+                         }\
+                       }\
+                       part { \
+                               name: partName; \
+                               type: SWALLOW; \
+                               scale: 1; \
+                               description { \
+                                       state: "default" 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; \
+                               } \
+                               description { \
+                                       state: "hide" 0.0; \
+                                       min: 0 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: 0; \
+                               } \
+                       } \
+
 #define SWALLOW_PART_FROM_LEFT_WITH_EFFECT( 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; \
                                        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; } \
+                                       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; \
                                } \
                                name: partName; \
                                type: SWALLOW; \
                                mouse_events: 0; \
-                               clip_to : slide_clip2; \
                                scale: 1; \
                                description { \
                                        state: "default" 0.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: 0; \
+                                       visible: 1; \
                                } \
                                description { \
                                        state: "show" 0.0; \
                        part { \
                                name: partName; \
                                type: SWALLOW; \
-                               mouse_events: 0; \
                                scale: 1; \
                                description { \
                                        state: "default" 0.0; \
                                } \
                        } \
 
+#define SWALLOW_PART_FROM_RIGHT_WITH_SPACE( partName, rel_x, rel_y, MinWidth, MinHeight) \
+                       part { \
+                               name: partName; \
+                               type: SWALLOW; \
+                               scale: 1; \
+                               description { \
+                                       state: "default" 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; \
+                               } \
+                               description { \
+                                       state: "hide" 0.0; \
+                                       min: 0 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: 0; \
+                               } \
+                       } \
+
 #define SWALLOW_PART_FROM_RIGHT_WITH_EFFECT( 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; \
                                        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; } \
+                                       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; \
                                } \
                                name: partName; \
                                type: SWALLOW; \
                                mouse_events: 0; \
-                               clip_to : slide_clip; \
                                scale: 1; \
                                description { \
                                        state: "default" 0.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: 0; \
+                                       visible: 1; \
                                } \
                                description { \
                                        state: "show" 0.0; \
                                        color : colorValue; \
                                        visible: visibleValue; \
                                } \
+                               description { \
+                                       state: "hide" 0.0; \
+                                       inherit: "default" 0.0; \
+                                       min: 0 0; \
+                                       visible: 0; \
+                               } \
                        } \
 
 #define FIXED_RECT_FROM_RIGHT( rectName, rel_x, rel_y, MinWidth, colorValue, visibleValue) \
                                        color : colorValue; \
                                        visible: visibleValue; \
                                } \
+                               description { \
+                                       state: "hide" 0.0; \
+                                       inherit: "default" 0.0; \
+                                       min: 0 0; \
+                                       visible: 0; \
+                               } \
                        } \
 
 #define DYNAMIC_RECT_FROM_RIGHT( rectName, rel_x, rel_y, MinWidth, changeWidth, colorValue, visibleValue) \
                        part { \
                                name: partName; \
                                type: SWALLOW; \
-                               mouse_events: 0; \
                                scale: 1; \
                                description { \
                                        state: "default" 0.0; \
                                        rel1 { relative: 1.0 0.0; to: lPadding; } \
                                        rel2 { relative: 0.0 1.0; to: rPadding; } \
                                        align: 0.5 0.5; \
-                                       map { \
-                                               on: 1; \
-                                               perspective_on: 1; \
-                                               rotation.z: 0.0; \
-                                       } \
                                } \
                                description { \
-                                       state: "rotate_tick" 0.0; \
+                                       state: "rotate_120" 0.0; \
                                        inherit: "default" 0.0; \
-                                       map.rotation.z: 20.0; \
                                } \
                                description { \
-                                       state: "rotate_tock" 0.0; \
+                                       state: "rotate_60" 0.0; \
                                        inherit: "default" 0.0; \
-                                       map.rotation.z: -20.0; \
                                } \
                                description { \
                                        state: "rotate_180" 0.0; \
                                        inherit: "default" 0.0; \
-                                       map.rotation.z: 180.0; \
                                } \
                                description { \
-                                       state: "rotate_360" 0.0; \
+                                       state: "rotate_240" 0.0; \
+                                       inherit: "default" 0.0; \
+                               } \
+                               description { \
+                                       state: "rotate_300" 0.0; \
                                        inherit: "default" 0.0; \
-                                       map.rotation.z: 360.0; \
                                } \
                                description { \
                                        state: "invisible" 0.0; \
                                action: ACTION_STOP; \
                                target: "icon_blink_show"; \
                                target: "icon_blink_hide"; \
-                               target: "icon_tick"; \
-                               target: "icon_tock"; \
+                               target: "icon_rotate_60"; \
+                               target: "icon_rotate_120"; \
                                target: "icon_rotate_180"; \
-                               target: "icon_rotate_360"; \
+                               target: "icon_rotate_240"; \
+                               target: "icon_rotate_300"; \
                                target: "icon_rotate_0"; \
                        } \
                        program { name: "icon_default"; \
                                target: targetName; \
                                after: "icon_default_pre"; \
                        } \
-                       program { name: "icon_tick"; \
-                               action:  STATE_SET "rotate_tick" 0.0; \
-                               target: targetName; \
-                               transition: LINEAR 0.5; \
-                               after: "icon_tock"; \
-                       } \
-                       program { name: "icon_tock"; \
-                               action:  STATE_SET "rotate_tock" 0.0; \
-                               target: targetName; \
-                               transition: LINEAR 0.5; \
-                               after: "icon_tick"; \
-                       } \
-                       program { name: "icon_metronome"; \
-                               signal: "icon,state,metronome"; \
-                               source: sourceName; \
-                               action:  STATE_SET "rotate_tick" 0.0; \
-                               target: targetName; \
-                               after: "icon_tock"; \
-                       } \
                        program { name: "icon_blink_show"; \
                                action:  STATE_SET "default" 0.0; \
                                target: targetName; \
                        program { name: "icon_blink"; \
                                signal: "icon,state,blink"; \
                                source: sourceName; \
-                               action:  STATE_SET "invisible" 0.0; \
+                               action:  STATE_SET "default" 0.0; \
                                target: targetName; \
-                               after: "icon_blink_show"; \
+                               after: "icon_blink_hide"; \
                        } \
                        program { name: "icon_rotate_0"; \
                                action:  STATE_SET "default" 0.0; \
                                target: targetName; \
+                               in: 0.4 0.0; \
+                               after: "icon_rotate_60"; \
+                       } \
+                       program { name: "icon_rotate_60"; \
+                               action:  STATE_SET "rotate_60" 0.0; \
+                               target: targetName; \
+                               in: 0.4 0.0; \
+                               after: "icon_rotate_120"; \
+                       } \
+                       program { name: "icon_rotate_120"; \
+                               action:  STATE_SET "rotate_120" 0.0; \
+                               target: targetName; \
+                               in: 0.4 0.0; \
                                after: "icon_rotate_180"; \
                        } \
                        program { name: "icon_rotate_180"; \
                                action:  STATE_SET "rotate_180" 0.0; \
                                target: targetName; \
-                               transition: LINEAR 0.8; \
-                               after: "icon_rotate_360"; \
+                               in: 0.4 0.0; \
+                               after: "icon_rotate_240"; \
                        } \
-                       program { name: "icon_rotate_360"; \
-                               action:  STATE_SET "rotate_360" 0.0; \
+                       program { name: "icon_rotate_240"; \
+                               action:  STATE_SET "rotate_240" 0.0; \
                                target: targetName; \
-                               transition: LINEAR 0.8; \
+                               in: 0.4 0.0; \
+                               after: "icon_rotate_300"; \
+                       } \
+                       program { name: "icon_rotate_300"; \
+                               action:  STATE_SET "rotate_300" 0.0; \
+                               target: targetName; \
+                               in: 0.4 0.0; \
                                after: "icon_rotate_0"; \
                        } \
                        program { name: "icon_rotate"; \
                                signal: "icon,state,rotate"; \
                                source: sourceName; \
-                               action:  STATE_SET "rotate_180" 0.0; \
+                               action:  STATE_SET "default" 0.0; \
                                target: targetName; \
-                               after: "icon_rotate_360"; \
+                               after : icon_rotate_0; \
                        } \
old mode 100755 (executable)
new mode 100644 (file)
index b70d5b0..644558b
@@ -1,45 +1,55 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ *  Indicator
  *
- * Licensed under the Flora License, Version 1.1 (the "License");
+ * Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.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/
+ * http://www.apache.org/licenses/LICENSE-2.0
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
+ *
  */
 
 
 #ifndef __INDICATOR_GUI_H__
 #define __INDICATOR_GUI_H__
 
-#define INDICATOR_HEIGHT 60
+/* DISPLAY */
+#define INDICATOR_HEIGHT 36
 #define INDICATOR_SIMPLE_HEIGHT 20
 #define ICON_PADDING           3
 
-#define PADDING_WIDTH          8
-#define LEFT_PADDING_WIDTH     0
-#define RIGHT_PADDING_WIDTH    0
-#define INDICATOR_PADDING_H 10
+#define PADDING_WIDTH          10
+#define LEFT_PADDING_WIDTH     3
+#define RIGHT_PADDING_WIDTH    6
+#define INDICATOR_PADDING_H 4
 
 
-#define CLOCK_WIDTH    116
+#define CLOCK_WIDTH_1  110
+#define CLOCK_WIDTH_2  120
+
 #define CLOCK_HEIGHT   34
 #define CLOCK_PADDING  10
 
-#define DEFAULT_ICON_PADDING 10
+#define DEFAULT_ICON_PADDING 3
+#define NOTI_ICON_PADDING 2
+
+#define DEFAULT_ICON_HEIGHT    25
+#define DEFAULT_ICON_WIDTH     25
+#define BATTERY_ICON_WIDTH     25
+#define BATTERY_ICON_HEIGHT    25
+#define FIXED4_ICON_HEIGHT     25
+#define FIXED4_ICON_WIDTH      25
 
-#define DEFAULT_ICON_HEIGHT    40
-#define DEFAULT_ICON_WIDTH     40
-#define BATTERY_ICON_WIDTH     116
-#define BATTERY_ICON_HEIGHT    17
-#define APPTRAY_ICON_HEIGHT    50
-#define APPTRAY_ICON_WIDTH     50
+#define BATTERY_DIGIT_WIDTH 8
+#define BATTERY_DIGIT_HEIGHT 12
 
 #define MESSAGE_PADDING 10
 
 #define LANDSCAPE_FIXED1_PADDING 122
 #define LANDSCAPE_FIXED0_PADDING 122
 
-#define HOME_PADDING_PORTRAIT 78
-#define HOME_PADDING_LANDSCAPE 78
+#define HOME_PADDING_PORTRAIT 50
+#define HOME_PADDING_LANDSCAPE 50
 #define DEFAULT_NON_FIXED_PADDING 0
 
-#define INDI_DEFAULT_BG_COLOR 52 52 50 255
+#define INDI_DEFAULT_BG_COLOR 30 30 30 255
 #define INDI_DEFAULT_BG_TRANSLUCENT 0 0 0 125
 #define INDI_DEFAULT_BG_TRANSPARENT 0 0 0 0
+#define INDI_DEFAULT_BG_TEST 255 0 0 150
 
+
+/* FONT */
 #define ICON_FONT_NAME         "Tizen"
 #define ICON_FONT_STYLE                "Medium"
 #define ICON_FONT_SIZE         20
 
 #define INDICATOR_HIDE_TRIGER_H 30
 
+#define DOWN_ANI_TIMER 0.3
+
+#define INDICATOR_ICON_OPACITY 204     //80%
+
 #define DEFAULT_LABEL_STRING   "<font_size=%d><color=#%02x%02x%02x%02x>%s</color></font_size>"
 #define CUSTOM_LABEL_STRING            "<font=%s><style=%s><font_size=%d>%s</font_size></style></font>"
 
+#ifndef _INDICATOR_REMOVE_SEARCH
+#define _INDICATOR_REMOVE_SEARCH
 #endif
+#endif /*__INDICATOR_GUI_H__*/
diff --git a/data/resource/indicator_icon_animation.edc b/data/resource/indicator_icon_animation.edc
new file mode 100644 (file)
index 0000000..6d07f81
--- /dev/null
@@ -0,0 +1,351 @@
+/*
+ *  Indicator
+ *
+ * Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * 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 {
+       base_scale: 1.7;
+
+       group {
+               name: "elm/indicator/icon/base";
+
+               images {
+                       image: "B03_Processing_download_ani_00.png" COMP;
+                       image: "B03_Processing_download_ani_01.png" COMP;
+                       image: "B03_Processing_download_ani_02.png" COMP;
+                       image: "B03_Processing_download_ani_03.png" COMP;
+                       image: "B03_Processing_download_ani_04.png" COMP;
+                       image: "B03_Processing_download_ani_05.png" COMP;
+                       image: "B03_Processing_download_ani_06.png" COMP;
+                       image: "B03_Processing_upload_ani_00.png" COMP;
+                       image: "B03_Processing_upload_ani_01.png" COMP;
+                       image: "B03_Processing_upload_ani_02.png" COMP;
+                       image: "B03_Processing_upload_ani_03.png" COMP;
+                       image: "B03_Processing_upload_ani_04.png" COMP;
+                       image: "B03_Processing_upload_ani_05.png" COMP;
+                       image: "B03_Processing_upload_ani_06.png" COMP;
+               }
+               parts {
+                       part {
+                               name: "background";
+                               description {
+                                       state: "default" 0.0;
+                                       color : 255 255 255 255;
+                                       visible : 1;
+                               }
+                       }
+                       part {
+                               name: "padding.left";
+                               type: RECT;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: DEFAULT_ICON_PADDING 0;
+                                       fixed: 1 0;
+                                       rel1.to: "background";
+                                       rel2 { relative: 0.0 1.0; to: "background"; }
+                                       align: 0.0 0.5;
+                                       visible: 0;
+                               }
+                       }
+
+                       PART_SWALLOW_SET( "elm.swallow.icon", "padding.left", "padding.right" )
+
+                       part {
+                               name: "elm.image.icon.ani";
+                               type: IMAGE;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1.to: "elm.swallow.icon";
+                                       rel2.to: "elm.swallow.icon";
+                                       visible: 0;
+                               }
+                               description {
+                                       state: "downloading0" 0.0;
+                                       inherit: "default" 0.0;
+                                       image {
+                                       normal:"B03_Processing_download_ani_00.png";
+                                       border: 0 0 0 0;
+                                       border_scale: 1;
+                                       }
+                                       visible: 1;
+                               }
+                               description {
+                                       state: "downloading1" 0.0;
+                                       inherit: "default" 0.0;
+                                       image {
+                                       normal:"B03_Processing_download_ani_01.png";
+                                       border: 0 0 0 0;
+                                       border_scale: 1;
+                                       }
+                                       visible: 1;
+                               }
+                               description {
+                                       state: "downloading2" 0.0;
+                                       inherit: "default" 0.0;
+                                       image {
+                                       normal:"B03_Processing_download_ani_02.png";
+                                       border: 0 0 0 0;
+                                       border_scale: 1;
+                                       }
+                                       visible: 1;
+                               }
+                               description {
+                                       state: "downloading3" 0.0;
+                                       inherit: "default" 0.0;
+                                       image {
+                                       normal:"B03_Processing_download_ani_03.png";
+                                       border: 0 0 0 0;
+                                       border_scale: 1;
+                                       }
+                                       visible: 1;
+                               }
+                               description {
+                                       state: "downloading4" 0.0;
+                                       inherit: "default" 0.0;
+                                       image {
+                                       normal:"B03_Processing_download_ani_04.png";
+                                       border: 0 0 0 0;
+                                       border_scale: 1;
+                                       }
+                                       visible: 1;
+                               }
+                               description {
+                                       state: "downloading5" 0.0;
+                                       inherit: "default" 0.0;
+                                       image {
+                                       normal:"B03_Processing_download_ani_05.png";
+                                       border: 0 0 0 0;
+                                       border_scale: 1;
+                                       }
+                                       visible: 1;
+                               }
+                               description {
+                                       state: "downloading6" 0.0;
+                                       inherit: "default" 0.0;
+                                       image {
+                                       normal:"B03_Processing_download_ani_06.png";
+                                       border: 0 0 0 0;
+                                       border_scale: 1;
+                                       }
+                                       visible: 1;
+                               }
+
+                               description {
+                                       state: "uploading0" 0.0;
+                                       inherit: "default" 0.0;
+                                       image {
+                                       normal:"B03_Processing_upload_ani_00.png";
+                                       border: 0 0 0 0;
+                                       border_scale: 1;
+                                       }
+                                       visible: 1;
+                               }
+                               description {
+                                       state: "uploading1" 0.0;
+                                       inherit: "default" 0.0;
+                                       image {
+                                       normal:"B03_Processing_upload_ani_01.png";
+                                       border: 0 0 0 0;
+                                       border_scale: 1;
+                                       }
+                                       visible: 1;
+                               }
+                               description {
+                                       state: "uploading2" 0.0;
+                                       inherit: "default" 0.0;
+                                       image {
+                                       normal:"B03_Processing_upload_ani_02.png";
+                                       border: 0 0 0 0;
+                                       border_scale: 1;
+                                       }
+                                       visible: 1;
+                               }
+                               description {
+                                       state: "uploading3" 0.0;
+                                       inherit: "default" 0.0;
+                                       image {
+                                       normal:"B03_Processing_upload_ani_03.png";
+                                       border: 0 0 0 0;
+                                       border_scale: 1;
+                                       }
+                                       visible: 1;
+                               }
+                               description {
+                                       state: "uploading4" 0.0;
+                                       inherit: "default" 0.0;
+                                       image {
+                                       normal:"B03_Processing_upload_ani_04.png";
+                                       border: 0 0 0 0;
+                                       border_scale: 1;
+                                       }
+                                       visible: 1;
+                               }
+                               description {
+                                       state: "uploading5" 0.0;
+                                       inherit: "default" 0.0;
+                                       image {
+                                       normal:"B03_Processing_upload_ani_05.png";
+                                       border: 0 0 0 0;
+                                       border_scale: 1;
+                                       }
+                                       visible: 1;
+                               }
+                               description {
+                                       state: "uploading6" 0.0;
+                                       inherit: "default" 0.0;
+                                       image {
+                                       normal:"B03_Processing_upload_ani_06.png";
+                                       border: 0 0 0 0;
+                                       border_scale: 1;
+                                       }
+                                       visible: 1;
+                               }
+                       }
+
+                       part {
+                               name: "padding.right";
+                               type: RECT;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 0;
+                                       fixed: 1 0;
+                                       rel1 { relative: 1.0 0.0; to: "background"; }
+                                       align: 1.0 0.5;
+                                       visible: 0;
+                               }
+                       }
+
+               }
+
+               programs {
+                       PROGRAM_SET( "elm.swallow.icon", "elm.swallow.icon")
+
+                       /*Downloading state programs: */
+                       program{
+                               name: "indicator.ani.downloading.0";
+                               signal: "indicator.ani.downloading.0";
+                               source: "prog";
+                               action: STATE_SET "downloading0" 0.0;
+                               target: "elm.image.icon.ani";
+                       }
+
+                       program{
+                               name: "indicator.ani.downloading.1";
+                               signal: "indicator.ani.downloading.1";
+                               source: "prog";
+                               action: STATE_SET "downloading1" 0.0;
+                               target: "elm.image.icon.ani";
+                       }
+                       program{
+                               name: "indicator.ani.downloading.2";
+                               signal: "indicator.ani.downloading.2";
+                               source: "prog";
+                               action: STATE_SET "downloading2" 0.0;
+                               target: "elm.image.icon.ani";
+                       }
+                       program{
+                               name: "indicator.ani.downloading.3";
+                               signal: "indicator.ani.downloading.3";
+                               source: "prog";
+                               action: STATE_SET "downloading3" 0.0;
+                               target: "elm.image.icon.ani";
+                       }
+                       program{
+                               name: "indicator.ani.downloading.4";
+                               signal: "indicator.ani.downloading.4";
+                               source: "prog";
+                               action: STATE_SET "downloading4" 0.0;
+                               target: "elm.image.icon.ani";
+                       }
+                       program{
+                               name: "indicator.ani.downloading.5";
+                               signal: "indicator.ani.downloading.5";
+                               source: "prog";
+                               action: STATE_SET "downloading5" 0.0;
+                               target: "elm.image.icon.ani";
+                       }
+                       program{
+                               name: "indicator.ani.downloading.6";
+                               signal: "indicator.ani.downloading.6";
+                               source: "prog";
+                               action: STATE_SET "downloading6" 0.0;
+                               target: "elm.image.icon.ani";
+                       }
+                       /*Uploading state programs: */
+                       program{
+                               name: "indicator.ani.uploading.0";
+                               signal: "indicator.ani.uploading.0";
+                               source: "prog";
+                               action: STATE_SET "uploading0" 0.0;
+                               target: "elm.image.icon.ani";
+                       }
+                       program{
+                               name: "indicator.ani.uploading.1";
+                               signal: "indicator.ani.uploading.1";
+                               source: "prog";
+                               action: STATE_SET "uploading1" 0.0;
+                               target: "elm.image.icon.ani";
+                       }
+                       program{
+                               name: "indicator.ani.uploading.2";
+                               signal: "indicator.ani.uploading.2";
+                               source: "prog";
+                               action: STATE_SET "uploading2" 0.0;
+                               target: "elm.image.icon.ani";
+                       }
+                       program{
+                               name: "indicator.ani.uploading.3";
+                               signal: "indicator.ani.uploading.3";
+                               source: "prog";
+                               action: STATE_SET "uploading3" 0.0;
+                               target: "elm.image.icon.ani";
+                       }
+                       program{
+                               name: "indicator.ani.uploading.4";
+                               signal: "indicator.ani.uploading.4";
+                               source: "prog";
+                               action: STATE_SET "uploading4" 0.0;
+                               target: "elm.image.icon.ani";
+                       }
+                       program{
+                               name: "indicator.ani.uploading.5";
+                               signal: "indicator.ani.uploading.5";
+                               source: "prog";
+                               action: STATE_SET "uploading5" 0.0;
+                               target: "elm.image.icon.ani";
+                       }
+                       program{
+                               name: "indicator.ani.uploading.6";
+                               signal: "indicator.ani.uploading.6";
+                               source: "prog";
+                               action: STATE_SET "uploading6" 0.0;
+                               target: "elm.image.icon.ani";
+                       }
+               }
+       }
+}
+
+
old mode 100755 (executable)
new mode 100644 (file)
index b91bd48..8f723ce
@@ -1,73 +1,92 @@
-/*\r
- * Copyright 2012  Samsung Electronics Co., Ltd\r
- *\r
- * Licensed under the Flora License, Version 1.1 (the "License");\r
- * you may not use this file except in compliance with the License.\r
- * You may obtain a copy of the License at\r
- *\r
- *  http://floralicense.org/license/\r
- *\r
- * Unless required by applicable law or agreed to in writing, software\r
- * distributed under the License is distributed on an "AS IS" BASIS,\r
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- * See the License for the specific language governing permissions and\r
- * limitations under the License.\r
- */\r
\r
-#include "indicator_gui.h"\r
-#include "indicator_common.edc"\r
-\r
-collections {\r
-       group {\r
-               name: "elm/indicator/icon/base";\r
-               parts {\r
-                       part {\r
-                               name: "background";\r
-                               mouse_events: 0;\r
-                               description {\r
-                                       state: "default" 0.0;\r
-                                       color : 255 255 255 204;\r
-                                       visible : 1;\r
-                               }\r
-                       }\r
-                       part {\r
-                               name: "padding.left";\r
-                               type: RECT;\r
-                               mouse_events: 0;\r
-                               scale: 1;\r
-                               description {\r
-                                       state: "default" 0.0;\r
-                                       min: 0 0;\r
-                                       fixed: 1 0;\r
-                                       rel1.to: "background";\r
-                                       rel2 { relative: 0.0 1.0; to: "background"; }\r
-                                       align: 0.0 0.5;\r
-                                       visible: 0;\r
-                               }\r
-                       }\r
-\r
-                       PART_SWALLOW_SET( "elm.swallow.icon", "padding.left", "padding.right" )\r
-\r
-                       part {\r
-                               name: "padding.right";\r
-                               type: RECT;\r
-                               mouse_events: 0;\r
-                               scale: 1;\r
-                               description {\r
-                                       state: "default" 0.0;\r
-                                       min: PADDING_WIDTH 0;\r
-                                       fixed: 1 0;\r
-                                       rel1 { relative: 1.0 0.0; to: "background"; }\r
-                                       align: 1.0 0.5;\r
-                                       visible: 0;\r
-                               }\r
-                       }\r
-\r
-               }\r
-               programs {\r
-                       PROGRAM_SET( "elm.swallow.icon", "elm.swallow.icon")\r
-               }\r
-       }\r
-}\r
-\r
-\r
+/*
+ *  Indicator
+ *
+ * Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * 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 {
+       base_scale: 1.7;
+
+       group {
+               name: "elm/indicator/icon/base";
+               parts {
+                       part {
+                               name: "background";
+                               description {
+                                       state: "default" 0.0;
+                                       visible : 1;
+                               }
+                       }
+                       part {
+                               name: "padding.left";
+                               type: RECT;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: DEFAULT_ICON_PADDING 0;
+                                       fixed: 1 0;
+                                       rel1.to: "background";
+                                       rel2 { relative: 0.0 1.0; to: "background"; }
+                                       color : 0 255 0 255;
+                                       align: 0.0 0.5;
+                                       visible: 0;
+                               }
+                       }
+
+                       part {
+                               name: "padding.right";
+                               type: RECT;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 0;
+                                       fixed: 1 0;
+                                       rel1 { relative: 1.0 0.0; to: "background"; }
+                                       color : 0 0 255 255;
+                                       align: 1.0 0.5;
+                                       visible: 0;
+                               }
+                       }
+                       PART_SWALLOW_SET( "elm.swallow.icon", "padding.left", "padding.right" )
+
+#ifdef _SUPPORT_SCREEN_READER
+                       part {
+                               name: "elm.rect.icon.access";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1.to: "elm.swallow.icon";
+                                       rel2.to: "elm.swallow.icon";
+                                       color:0 0 0 0;
+                                       visible: 1;
+                               }
+                       }
+#endif
+               }
+               programs {
+                       PROGRAM_SET( "elm.swallow.icon", "elm.swallow.icon")
+               }
+       }
+}
+
+
old mode 100755 (executable)
new mode 100644 (file)
index a2ca67b..23ffc65
-/*\r
- * Copyright 2012  Samsung Electronics Co., Ltd\r
- *\r
- * Licensed under the Flora License, Version 1.1 (the "License");\r
- * you may not use this file except in compliance with the License.\r
- * You may obtain a copy of the License at\r
- *\r
- *  http://floralicense.org/license/\r
- *\r
- * Unless required by applicable law or agreed to in writing, software\r
- * distributed under the License is distributed on an "AS IS" BASIS,\r
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- * See the License for the specific language governing permissions and\r
- * limitations under the License.\r
- */\r
\r
-#include "indicator_gui.h"\r
-#include "indicator_common.edc"\r
-\r
-collections {\r
-       group {\r
-               name: "elm/indicator/icon/base";\r
-               parts {\r
-                       part {\r
-                               name: "background";\r
-                               mouse_events: 0;\r
-                               description {\r
-                                       state: "default" 0.0;\r
-                                       color : 255 255 255 204;\r
-                                       visible : 1;\r
-                               }\r
-                       }\r
-                       part {\r
-                               name: "padding.left";\r
-                               type: RECT;\r
-                               mouse_events: 0;\r
-                               scale: 1;\r
-                               description {\r
-                                       state: "default" 0.0;\r
-                                       min: 0 0;\r
-                                       fixed: 1 0;\r
-                                       rel1.to: "background";\r
-                                       rel2 { relative: 0.0 1.0; to: "background"; }\r
-                                       align: 0.0 0.5;\r
-                                       visible: 0;\r
-                               }\r
-                       }\r
-\r
-                       PART_SWALLOW_SET( "elm.swallow.icon", "padding.left", "padding.right" )\r
-\r
-                       part {\r
-                               name: "padding.right";\r
-                               type: RECT;\r
-                               mouse_events: 0;\r
-                               scale: 1;\r
-                               description {\r
-                                       state: "default" 0.0;\r
-                                       min: 0 0;\r
-                                       fixed: 1 0;\r
-                                       rel1 { relative: 1.0 0.0; to: "background"; }\r
-                                       align: 1.0 0.5;\r
-                                       visible: 0;\r
-                               }\r
-                       }\r
-\r
-               }\r
-               programs {\r
-                       PROGRAM_SET( "elm.swallow.icon", "elm.swallow.icon")\r
-               }\r
-       }\r
-}\r
-\r
-\r
+/*
+ *  Indicator
+ *
+ * Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * 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 {
+       base_scale: 1.7;
+
+       group {
+               name: "elm/indicator/icon/base";
+               parts {
+                       part {
+                               name: "background";
+                               description {
+                                       state: "default" 0.0;
+                                       visible : 1;
+                               }
+                       }
+                       part {
+                               name: "padding.left";
+                               type: RECT;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 0;
+                                       fixed: 1 0;
+                                       color: 255 0 0 255;
+                                       rel1.to: "background";
+                                       rel2 { relative: 0.0 1.0; to: "background"; }
+                                       align: 0.0 0.5;
+                                       visible: 0;
+                               }
+                       }
+
+                       PART_SWALLOW_SET( "elm.swallow.icon", "padding.left", "padding.right" )
+
+                       part {
+                               name: "padding.right";
+                               type: RECT;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 0;
+                                       fixed: 1 0;
+                                       color: 0 255 0 255;
+                                       rel1 { relative: 1.0 0.0; to: "background"; }
+                                       align: 1.0 0.5;
+                                       visible: 0;
+                               }
+                       }
+
+#ifdef _SUPPORT_SCREEN_READER
+                       part {
+                               name: "elm.rect.icon.access";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1.to: "elm.swallow.icon";
+                                       rel2.to: "elm.swallow.icon";
+                                       color:0 0 0 0;
+                                       visible: 1;
+                               }
+                       }
+#endif
+               }
+               programs {
+                       PROGRAM_SET( "elm.swallow.icon", "elm.swallow.icon")
+               }
+       }
+
+    group {
+               name: "elm/indicator/icon/dozen_digit";
+               parts {
+                       part {
+                               name: "background";
+                               type: RECT;
+                               description {
+                                       state: "default" 0.0;
+                                       color : 0 0 255 255;
+                                       visible : 0;
+                               }
+                       }
+                       part {
+                               name: "padding.left";
+                               type: RECT;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 0;
+                                       fixed: 1 0;
+                                       rel1.to: "background";
+                                       rel2 { relative: 0.0 1.0; to: "background"; }
+                                       align: 0.0 0.5;
+                                       visible: 0;
+                               }
+                       }
+
+                       PART_SWALLOW_SET( "elm.swallow.icon", "padding.left", "padding.right" )
+
+                       part {
+                               name: "padding.right";
+                               type: RECT;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 1 20;
+                                       fixed: 1 0;
+                                       rel1 { relative: 1.0 0.0; to: "background"; }
+                                       rel2 { relative: 1.0 1.0; to: "background"; }
+                                       align: 1.0 0.5;
+                                       visible: 0;
+                               }
+                       }
+
+#ifdef _SUPPORT_SCREEN_READER
+                       part {
+                               name: "elm.rect.icon.access";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1.to: "elm.swallow.icon";
+                                       rel2.to: "elm.swallow.icon";
+                                       color:0 0 0 0;
+                                       visible: 1;
+                               }
+                       }
+#endif
+               }
+               programs {
+                       PROGRAM_SET( "elm.swallow.icon", "elm.swallow.icon")
+               }
+       }
+}
+
+
diff --git a/data/resource/indicator_land.edc b/data/resource/indicator_land.edc
deleted file mode 100755 (executable)
index 97f1c6a..0000000
+++ /dev/null
@@ -1,1053 +0,0 @@
-/*
- * Copyright 2012  Samsung Electronics Co., Ltd
- *
- * Licensed under the Flora License, Version 1.1 (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);
-                                       }
-                               }
-                       }
-               }
-       }
-}
old mode 100755 (executable)
new mode 100644 (file)
index 513a0b4..b204f83
@@ -1,23 +1,34 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ *  Indicator
  *
- * Licensed under the Flora License, Version 1.1 (the "License");
+ * Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.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/
+ * http://www.apache.org/licenses/LICENSE-2.0
  *
  * 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"
 
+
+images {
+       image: "icons/Power/battery_text/B03_stat_sys_battery_num_100.png" COMP;
+}
+
 collections {
+       base_scale: 1.7;
+
        group {
                name: "indicator";
                script {
@@ -27,20 +38,45 @@ collections {
                {
                        style {
                                name: "textblock_style";
-                               base: "font=Tizen:style=Medium text_class=tizen color=#FFFFFFFF ";
+                               base: "font=Tizen:style=Regular text_class=tizen color=#FFFFFFFF color_class=AO004";
+                       }
+                       style {
+                               name: "textblock_style_24";
+                               base: "font=Tizen:style=Regular color=#FFFFFFFF valign=middle align=center color_class=AO004 font_size=36 text_class=ATO001";
                        }
                        style {
                                name: "textblock_outline_style";
-                               base: "font=Tizen:style=Medium text_class=tizen color=#FFFFFFFF";
+                               base: "font=Tizen:style=Bold 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";
+                               base: "font=Tizen:style=Regular text_class=tizen font_size=29 color=#FFFFFFFF valign=middle wrap=none ellipsis=1";
+                       }
+                       style {
+                               name: "message_style2";
+                               base: "font=Tizen:style=Regular text_class=tizen font_size=29 color=#FFFFFFFF valign=middle wrap=none ellipsis=1";
+                       }
+                       style {
+                               name: "message_style_compare";
+                               base: "font=Tizen:style=Regular text_class=tizen font_size=29 color=#FFFFFFFF valign=middle wrap=none ellipsis=0";
+                       }
+                       style {
+                               name: "plmn_style";
+                               base: "font=Tizen:style=Bold text_class=tizen font_size=35 color=#FFFFFFFF valign=middle wrap=none ellipsis=1";
                        }
                }
 
                images {
-                       image: "B03_Status_bar_line.PNG" COMP;
+                       image: "B03_indicator_bg.png" COMP;
+                       image: "B03_OrangeF.png" COMP;
+                       image: "B03_conection_not_UPdownload.png" COMP;
+                       image: "B03_connection_UPload.png" COMP;
+                       image: "B03_connection_download.png" COMP;
+                       image: "B03_conection_UPdownload.png" COMP;
+                       image: "B03_search_divider.png" COMP;
+                       image: "B03_notification.png" COMP;
+                       image: "B03_notification_press.png" COMP;
+                       image: "B03_notify_more.png" COMP;
                }
 
                parts {
@@ -85,7 +121,47 @@ collections {
                                }
 
                        }
+                       /* Left padding */
+                       part {
+                               name: "resize_padding.left";
+                               type: RECT;
+                               scale: 1;
+                               mouse_events: 0;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 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;
+                                       visible: 0;
+                               }
+                               description {
+                                       state: "1" 0.0;
+                                       inherit: "default" 0.0;
+                                       min: 1 0;
+                                       color: 255 0 0 255;
+                               }
+                               description {
+                                       state: "2" 0.0;
+                                       inherit: "default" 0.0;
+                                       min: 2 0;
+                                       color: 0 255 0 255;
+                               }
+                               description {
+                                       state: "3" 0.0;
+                                       inherit: "default" 0.0;
+                                       min: 3 0;
+                                       color: 0 0 255 255;
+                               }
 
+                               description {
+                                       state: "4" 0.0;
+                                       inherit: "default" 0.0;
+                                       min: 4 0;
+                                       color: 255 255 0 255;
+                               }
+                       }
                        part {
                                name: "padding.left";
                                type: RECT;
@@ -95,13 +171,60 @@ collections {
                                        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;
+                                       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;
+                                       color:0 0 0 0;
                                        visible: 0;
                                }
+                               description {
+                                       state: "scover" 0.0;
+                                       inherit: "default" 0.0;
+                                       min: 72 0;
+                               }
                        }
+                       /* Right padding */
+                       part {
+                               name: "resize_padding.right";
+                               type: RECT;
+                               scale: 1;
+                               mouse_events: 0;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 0;
+                                       fixed: 1 0;
+                                       rel1 { relative: 1.0 0.0; to: "elm.rect.bg"; }
+                                       rel2 { relative: 1.0 1.0; to: "elm.rect.bg"; }
+                                       align: 0.0 0.0;
+                                       visible: 0;
+                               }
+                               description {
+                                       state: "1" 0.0;
+                                       inherit: "default" 0.0;
+                                       min: 1 0;
+                                       color: 255 0 0 255;
+                               }
+                               description {
+                                       state: "2" 0.0;
+                                       inherit: "default" 0.0;
+                                       min: 2 0;
+                                       color: 0 255 0 255;
+                               }
+                               description {
+                                       state: "3" 0.0;
+                                       inherit: "default" 0.0;
+                                       min: 3 0;
+                                       color: 0 0 255 255;
+                               }
+
+                               description {
+                                       state: "4" 0.0;
+                                       inherit: "default" 0.0;
+                                       min: 4 0;
+                                       color: 255 255 0 255;
+                               }
 
+                       }
                        part {
                                name: "padding.right";
                                type: RECT;
@@ -111,13 +234,34 @@ collections {
                                        state: "default" 0.0;
                                        min: RIGHT_PADDING_WIDTH 0;
                                        fixed: 1 0;
-                                       rel1.relative: 1.0 0.0;
-                                       color: 0 0 0 0;
+                                       rel1 { relative: 1.0 0.0; to: "elm.rect.bg"; }
+                                       rel2 { relative: 1.0 1.0; to: "elm.rect.bg"; }
+                                       align: 1.0 0.0;
+                                       color : 0 0 0 0;
                                        visible: 0;
                                }
+                               description {
+                                       state: "scover" 0.0;
+                                       inherit: "default" 0.0;
+                                       min: 72 0;
+                               }
+                               description {
+                                       state: "dynamic" 0.0;
+                                       inherit: "default" 0.0;
+                                       rel1 {
+                                               relative: 1.0 0.0; to: "resize_padding.right";
+                                               offset : 73 0;
+                                       }
+                                       rel2 {
+                                               relative: 1.0 1.0; to: "resize_padding.right";
+                                               offset : 73 0;
+                                       }
+                                       align: 1.0 0.0;
+                               }
+
                        }
                        part {
-                               name: "elm.rect.bg";
+                               name: "elm.rect.bg.base";
                                type: RECT;
                                scale: 1;
                                mouse_events: 0;
@@ -131,6 +275,36 @@ collections {
                                                relative: 1.0 1.0;
                                                to: "background";
                                        }
+                                       visible:0;
+                               }
+                               description {
+                                       state: "hide" 0.0;
+                                       rel1 {
+                                               relative: 0.0 1.0;
+                                               to: "background";
+                                       }
+                                       rel2 {
+                                               relative: 1.0 2.0;
+                                               to: "background";
+                                       }
+                                       visible:0;
+                               }
+                       }
+                       part {
+                               name: "elm.rect.bg";
+                               type: RECT;
+                               scale: 1;
+                               mouse_events: 0;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 {
+                                               relative: 0.0 0.0;
+                                               to: "elm.rect.bg.base";
+                                       }
+                                       rel2 {
+                                               relative: 1.0 1.0;
+                                               to: "elm.rect.bg.base";
+                                       }
                                        color: INDI_DEFAULT_BG_TRANSPARENT;
                                }
                                description {
@@ -140,25 +314,60 @@ collections {
                                description {
                                        state: "translucent" 0.0;
                                        inherit: "default" 0.0;
-                                       color: INDI_DEFAULT_BG_TRANSLUCENT;
-
                                }
                                description {
                                        state: "notification" 0.0;
                                        inherit: "default" 0.0;
-                                       color: 0 0 0 0;
-                                       visible: 0;
-
+                               }
+                               description {
+                                       state: "transparent_slide" 0.0;
+                                       inherit: "default" 0.0;
                                }
                                description {
                                        state: "transparent" 0.0;
-                                       inherit: "notification" 0.0;
-                                       color: INDI_DEFAULT_BG_TRANSPARENT;
+                                       inherit: "default" 0.0;
+                               }
+                       }
+
+                       part {
+                               name: "elm.rect.bg.call";
+                               type: RECT;
+                               scale: 1;
+                               mouse_events: 0;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 {
+                                               relative: 0.0 0.0;
+                                               to: "elm.rect.bg";
+                                       }
+                                       rel2 {
+                                               relative: 1.0 1.0;
+                                               to: "elm.rect.bg";
+                                       }
+                                       visible: 0;
+                               }
+                               description {
+                                       state: "during_call" 0.0;
+                                       inherit: "default" 0.0;
+                                       color_class:"AO005";
+                                       visible : 1;
+                               }
+                               description {
+                                       state: "call_hold" 0.0;
+                                       inherit: "default" 0.0;
+                                       color_class:"AO007";
+                                       visible : 1;
+                               }
+                               description {
+                                       state: "call_end" 0.0;
+                                       inherit: "default" 0.0;
+                                       color_class:"AO006";
+                                       visible : 1;
                                }
                        }
 
                        part {
-                               name: "elm.rect.left_con";
+                               name: "elm.rect.right_con";
                                type: RECT;
                                scale: 1;
                                mouse_events: 0;
@@ -181,8 +390,8 @@ collections {
                                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; }
+                                       rel1 { relative: 1.0 0.0; to_x: padding.left; to_y: elm.rect.bg; }
+                                       rel2 { relative: 0.0 1.0; to_x: elm.swallow.fixed6; to_y: elm.rect.bg; }
                                        align: 0.0 0.0;
                                }
                        }
@@ -215,7 +424,7 @@ collections {
                        }
 
                        part {
-                               name: "message.bg";
+                               name: "plmn.bg";
                                type: RECT;
                                scale: 1;
                                mouse_events: 0;
@@ -224,15 +433,14 @@ collections {
                                        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"; }
+                                       rel1 { relative: 1.0 1.0; to_x: padding.left; to_y: elm.swallow.noti; }
+                                       rel2 { relative: 0.0 1.0; to_x: padding.right; to_y: elm.swallow.noti; }
                                        align: 0.0 0.0;
                                        visible: 0;
                                }
                        }
-
                        part {
-                               name: "message.padding.left";
+                               name: "plmn.padding.left";
                                type: RECT;
                                scale: 1;
                                mouse_events: 0;
@@ -242,92 +450,61 @@ collections {
                                        fixed: 1 0;
                                        rel1 {
                                                relative: 0.0 0.0;
-                                               to: "message.bg";
+                                               to: "plmn.bg";
                                        }
                                        rel2 {
                                                relative: 0.0 1.0;
-                                               to: "message.bg";
+                                               to: "plmn.bg";
                                        }
                                        align: 0.0 0.0;
                                        visible: 0;
                                }
                        }
                        part {
-                               name: "message.padding.right";
-                               type: RECT;
+                               name: "plmn.text";
+                               type: TEXTBLOCK;
                                scale: 1;
                                mouse_events: 0;
                                description {
                                        state: "default" 0.0;
-                                       min: MESSAGE_PADDING 0;
-                                       fixed: 1 0;
+                                       fixed: 1 1;
+                                       visible: 1;
                                        rel1 {
-                                               relative: 1.0 0.0;
-                                               to: "message.bg";
+                                               relative: 1.0 1.0;
+                                               to_x: "plmn.padding.left";
+                                               to_y: "plmn.bg";
                                        }
+
                                        rel2 {
-                                               relative: 1.0 1.0;
-                                               to: "message.bg";
+                                               relative: 0.0 0.0;
+                                               to_x: "plmn.padding.right";
+                                               to_y: "plmn.bg";
+                                       }
+                                       text {
+                                               style: "plmn_style";
+                                               min: 0 1;
                                        }
-                                       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";
+                               name: "plmn.padding.right";
                                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;
+                                       min: 0 0;
+                                       fixed: 1 0;
                                        rel1 {
-                                               relative: 1.0 1.0;
-                                               to_x: "message.padding.left";
-                                               to_y: "message.bg";
+                                               relative: 1.0 0.0;
+                                               to: "plmn.bg";
                                        }
-
                                        rel2 {
-                                               relative: 0.0 0.0;
-                                               to_x: "message.padding.right";
-                                               to_y: "message.bg";
-                                       }
-                                       text {
-                                               style: "message_style";
-                                               min: 0 1;
+                                               relative: 1.0 1.0;
+                                               to: "plmn.bg";
                                        }
+                                       align: 1.0 0.0;
+                                       visible: 0;
                                }
                        }
 
@@ -338,15 +515,44 @@ collections {
                                scale: 1;
                                description {
                                        state: "default" 0.0;
-                                       min: HOME_PADDING_PORTRAIT APPTRAY_ICON_HEIGHT;
+#ifndef _INDICATOR_REMOVE_SEARCH
+                                       min: HOME_PADDING_PORTRAIT FIXED4_ICON_HEIGHT;
+#else
+                                       min: 0 0;
+#endif
                                        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; }
+                                       rel1 { relative: 1.0 0.0; to_x: padding.left; to_y: elm.rect.right_con; }
+                                       rel2 { relative: 1.0 1.0; to_x: padding.left; to_y: elm.rect.right_con; }
                                        align: 0.0 0.5;
                                        visible: 1;
                                }
                        }
+                       part {
+                               name: "padding.separator";
+                               type: SPACER;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+#ifndef _INDICATOR_REMOVE_SEARCH
+                                       min: PADDING_WIDTH/2 0;
+#else
+                                       min: 0 0;
+#endif
+                                       fixed: 1 0;
+                                       rel1 { relative: 0.0 0.0; to_x: elm.swallow.fixed6; to_y: elm.rect.right_con; }
+                                       rel2 { relative: 0.0 1.0; to_x: elm.swallow.fixed6; to_y: elm.rect.right_con; }
+                                       align: 1.0 0.5;
+                               }
+                               description {
+                                       state: "hide" 0.0;
+                                       inherit: "default" 0.0;
+                                       min: 0 0;
+                                       fixed: 1 1;
+                               }
+                       }
 
+                       /* Separator Padding */
                        part {
                                name: "seperator.image";
                                type: IMAGE;
@@ -354,215 +560,437 @@ collections {
                                mouse_events: 0;
                                description {
                                        state: "default" 0.0;
-                                       visible: 0;
-                                       min: 4 36;
+#ifndef _INDICATOR_REMOVE_SEARCH
+                                       min: 3 44;
+#else
+                                       min: 0 0;
+#endif
                                        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;
+                                       image.normal: "B03_search_divider.png";
+                                       color_class:"AO004";
+                                       rel1 { relative: 0.0 0.5; to_x: padding.separator; to_y: elm.rect.right_con; }
+                                       rel2 { relative: 0.0 0.5; to_x: padding.separator; to_y: elm.rect.right_con; }
+                                       align: 1.0 0.5;
+                                       visible : 1;
                                }
                                description {
-                                       state: "show" 0.0;
+                                       state: "hide" 0.0;
                                        inherit: "default" 0.0;
+                                       min: 0 0;
+                                       fixed: 1 1;
                                        visible : 0;
                                }
                        }
 
                        part {
-                               name: "padding.separator";
-                               type: RECT;
+                               name: "padding.separator2";
+                               type: SPACER;
                                mouse_events: 0;
                                scale: 1;
                                description {
                                        state: "default" 0.0;
+#ifndef _INDICATOR_REMOVE_SEARCH
                                        min: PADDING_WIDTH 0;
+#else
+                                       min: 0 0;
+#endif
                                        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;
+                                       rel1 { relative: 0.0 0.0; to_x: seperator.image; to_y: elm.rect.right_con; }
+                                       rel2 { relative: 0.0 1.0; to_x: seperator.image; to_y: elm.rect.right_con; }
+                                       align: 1.0 0.5;
+                               }
+                               description {
+                                       state: "hide" 0.0;
+                                       inherit: "default" 0.0;
+                                       min: 0 0;
+                                       fixed: 1 1;
                                }
                        }
 
-                       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 )
-
-                       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_EFFECT( "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_EFFECT( "elm.swallow.nonfixed", "elm.rect.nonfixed", "elm.rect.middle_con", 0, 0)
-
-                       SWALLOW_PART_FROM_RIGHT_WITH_EFFECT( "elm.swallow.noti", "clock.padding.left", "elm.rect.middle_con", 0, 0)
-
+                       //battery
                        part {
-                               name: elm.swallow.fixed4;
+                               name: "elm.swallow.fixed8";
                                type: SWALLOW;
-                               mouse_events: 0;
                                scale: 1;
                                description {
                                        state: "default" 0.0;
-                                       min: HOME_PADDING_PORTRAIT APPTRAY_ICON_HEIGHT;
+                                       min: BATTERY_ICON_WIDTH BATTERY_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; }
+                                       rel1 { relative: 0.0 0.0; to_x: "padding.right"; to_y: "elm.rect.bg"; }
+                                       rel2 { relative: 0.0 1.0; to_x: "padding.right"; to_y: "elm.rect.bg"; }
+                                       align: 1.0 0.5;
+                                       visible: 1;
+                               }
+                               description
+                               {
+                                       state: "show" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 0;
+                                       max: 0 0;
+                               }
+                       }
+
+                       part {
+                               name: "percentage.digit.box";
+                               type: SWALLOW;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 7 10;
+                                       max: 7 10;
+                                       rel1 { relative: 0.0 0.0; to_x: "elm.swallow.fixed8"; }
+                                       rel2 { relative: 1.0 1.0; to_x: "elm.swallow.fixed8"; offset: -8 -14; }
                                        align: 1.0 0.5;
                                        visible: 1;
                                }
+                               description {
+                                       state: "two_digits" 0.0;
+                                       inherit: "default" 0.0;
+                                       min: 15 10;
+                                       max: 15 10;
+                                       rel1 { relative: 0.0 0.0; to_x: "elm.swallow.fixed8"; }
+                                       rel2 { relative: 1.0 1.0; to_x: "elm.swallow.fixed8"; offset: -4 -14; }
+                               }
+                               description {
+                                       state: "three_digits" 0.0;
+                                       inherit: "default" 0.0;
+                                       min: 17 10;
+                                       max: 17 10;
+                                       rel1 { relative: 0.0 0.0; to_x: "elm.swallow.fixed8"; }
+                                       rel2 { relative: 1.0 1.0; to_x: "elm.swallow.fixed8"; offset: -3 -14; }
+                               }
                        }
+                       //////////////////////////////////////////
+                       ///////// LEFT SIDE /////////////////////
+                       //////////////////////////////////////////
+
+                       /* ICON_FIXED3 (RSSI 1) + PADDING_FIXED4(RIGHT, FIXED PADDING) */
+                       FIXED_RECT_FROM_LEFT( "elm.rect.rssi1", "padding.left", "elm.rect.bg", DEFAULT_ICON_PADDING, INDI_DEFAULT_BG_TEST, 0)
+                       SWALLOW_PART_FROM_LEFT_WITH_SPACE( "elm.swallow.fixed1", "elm.rect.rssi1", "elm.rect.bg", DEFAULT_ICON_WIDTH, DEFAULT_ICON_HEIGHT )
 
+                       /* ICON_FIXED4 (RSSI 2) + PADDING_FIXED5(RIGHT, FIXED PADDING) */
+                       FIXED_RECT_FROM_LEFT( "elm.rect.rssi2", "elm.swallow.fixed1", "elm.rect.bg", DEFAULT_ICON_PADDING, INDI_DEFAULT_BG_TEST, 0)
+                       SWALLOW_PART_FROM_LEFT_WITH_SPACE( "elm.swallow.fixed2", "elm.rect.rssi2", "elm.rect.bg", DEFAULT_ICON_WIDTH, DEFAULT_ICON_HEIGHT )
+
+                       /* ICON_FIXED2 (Sim Icon) + PADDING_FIXED3(RIGHT, FIXED PADDING) */
+                       FIXED_RECT_FROM_LEFT( "elm.rect.simicon", "elm.swallow.fixed2", "elm.rect.bg", DEFAULT_ICON_PADDING, INDI_DEFAULT_BG_TEST, 0)
+                       SWALLOW_PART_FROM_LEFT_WITH_SPACE( "elm.swallow.fixed3", "elm.rect.simicon", "elm.rect.bg", DEFAULT_ICON_WIDTH, DEFAULT_ICON_HEIGHT )
+
+                       /* ICON_FIXED1 (Connection-3G) + PADDING_NONFIXED1(RIGHT,DYNAMIC PADDING) */
+                       FIXED_RECT_FROM_LEFT( "elm.rect.connection", "elm.swallow.fixed3", "elm.rect.bg", DEFAULT_ICON_PADDING, INDI_DEFAULT_BG_TEST, 0)
+                       SWALLOW_PART_FROM_LEFT_WITH_SPACE( "elm.swallow.fixed4", "elm.rect.connection", "elm.rect.bg", DEFAULT_ICON_WIDTH, DEFAULT_ICON_HEIGHT )
+                       /* Connection-3G UpDown arrow icon */
                        part {
-                               name: "seperator.image2";
+                               name: "elm.image.updown1";
                                type: IMAGE;
                                scale: 1;
                                mouse_events: 0;
                                description {
                                        state: "default" 0.0;
+                                       rel1 { relative: 0.5 0.5; to_x: elm.swallow.fixed4; to_y: elm.rect.bg; }
+                                       rel2 { relative: 0.5 0.5; to_x: elm.swallow.fixed4; to_y: elm.rect.bg; }
+                                       min: 25 25;
+                                       fixed: 1 1;
+                                       align: 0.5 0.5;
+                                       color_class:"AO004";
+                                       visible: 0;
+                               }
+                               description {
+                                       state: "none" 0.0;
+                                       inherit: "default" 0.0;
+                                       image {
+                                       normal:"B03_conection_not_UPdownload.png";
+                                       }
+                                       visible: 1;
+                               }
+                               description {
+                                       state: "upload" 0.0;
+                                       inherit: "default" 0.0;
+                                       image {
+                                       normal:"B03_connection_UPload.png";
+                                       }
+                                       visible: 1;
+                               }
+                               description {
+                                       state: "download" 0.0;
+                                       inherit: "default" 0.0;
+                                       image {
+                                       normal:"B03_connection_download.png";
+                                       }
+                                       visible: 1;
+                               }
+                               description {
+                                       state: "updownload" 0.0;
+                                       inherit: "default" 0.0;
+                                       image {
+                                       normal:"B03_conection_UPdownload.png";
+                                       }
+                                       visible: 1;
+                               }
+                               description {
+                                       state: "hide" 0.0;
+                                       inherit: "default" 0.0;
                                        visible: 0;
-                                       min: 4 36;
+                               }
+
+                       }
+                       /* ICON_FIXED1 (Wi-Fi) + PADDING_NONFIXED1(RIGHT,DYNAMIC PADDING) */
+                       FIXED_RECT_FROM_LEFT( "elm.rect.wifi", "elm.swallow.fixed4", "elm.rect.bg", DEFAULT_ICON_PADDING, INDI_DEFAULT_BG_TEST, 0)
+                       SWALLOW_PART_FROM_LEFT_WITH_SPACE( "elm.swallow.fixed5", "elm.rect.wifi", "elm.rect.bg", DEFAULT_ICON_WIDTH, DEFAULT_ICON_HEIGHT )
+                       /* Wi-Fi UpDown arrow icon */
+                       part {
+                               name: "elm.image.updown2";
+                               type: IMAGE;
+                               scale: 1;
+                               mouse_events: 0;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: 0.5 0.5; to_x: elm.swallow.fixed5; to_y: elm.rect.bg; }
+                                       rel2 { relative: 0.5 0.5; to_x: elm.swallow.fixed5; to_y: elm.rect.bg; }
+                                       min: 25 25;
                                        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";
+                                       align: 0.5 0.5;
+                                       color_class:"AO004";
+                                       visible: 0;
+                               }
+                               description {
+                                       state: "none" 0.0;
+                                       inherit: "default" 0.0;
+                                       image {
+                                       normal:"B03_conection_not_UPdownload.png";
                                        }
-                                       rel2 {
-                                               relative: 0.0 0.5;
-                                               to_x: "elm.swallow.fixed4";
-                                               to_y: "elm.rect.bg";
+                                       visible: 1;
+                               }
+                               description {
+                                       state: "upload" 0.0;
+                                       inherit: "default" 0.0;
+                                       image {
+                                       normal:"B03_connection_UPload.png";
                                        }
-                                       align: 1.0 0.5;
-                                       visible : 0;
+                                       visible: 1;
                                }
                                description {
-                                       state: "show" 0.0;
+                                       state: "download" 0.0;
                                        inherit: "default" 0.0;
-                                       visible : 0;
+                                       image {
+                                       normal:"B03_connection_download.png";
+                                       }
+                                       visible: 1;
+                               }
+                               description {
+                                       state: "updownload" 0.0;
+                                       inherit: "default" 0.0;
+                                       image {
+                                       normal:"B03_conection_UPdownload.png";
+                                       }
+                                       visible: 1;
+                               }
+                               description {
+                                       state: "hide" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 0;
                                }
+
                        }
+                       /* Connection1 (NON_FIXED) (BT) */
+                       FIXED_RECT_FROM_LEFT( "elm.rect.bt", "elm.swallow.fixed5", "elm.rect.bg", DEFAULT_ICON_PADDING, 0 255 0 255, 0)
+                       SWALLOW_PART_FROM_LEFT_WITH_SPACE( "elm.swallow.fixed6", "elm.rect.bt", "elm.rect.bg", DEFAULT_ICON_WIDTH, DEFAULT_ICON_HEIGHT )
+                       /* Connection2 (NON_FIXED) (WiFi-direct) */
+                       FIXED_RECT_FROM_LEFT( "elm.rect.wifidirect", "elm.swallow.fixed6", "elm.rect.bg", DEFAULT_ICON_PADDING, 0 0 255 255, 0)
+                       SWALLOW_PART_FROM_LEFT_WITH_SPACE( "elm.swallow.fixed7", "elm.rect.wifidirect", "elm.rect.bg", DEFAULT_ICON_WIDTH, DEFAULT_ICON_HEIGHT )
+
+
+                       //////////////////////////////////////////
+                       ///////// RIGHT SIDE /////////////////////
+                       //////////////////////////////////////////
+
+                       /* System (Sound Profile, Call divert, Alarm, GPS) */
+                       FIXED_RECT_FROM_RIGHT( "elm.rect.system", "elm.swallow.fixed8", "elm.rect.bg", DEFAULT_ICON_PADDING, 255 0 0 255, 0)
+                       SWALLOW_PART_FROM_RIGHT_WITH_SPACE( "elm.swallow.system", "elm.rect.system", "elm.rect.bg", DEFAULT_ICON_WIDTH, DEFAULT_ICON_HEIGHT )
 
+                       /* MiniCtrl (Call, Music/FM Radio, Voice recorder) */
+                       FIXED_RECT_FROM_RIGHT( "elm.rect.minictrl", "elm.swallow.system", "elm.rect.bg", DEFAULT_ICON_PADDING, 0 255 0 255, 0)
+                       SWALLOW_PART_FROM_RIGHT_WITH_SPACE( "elm.swallow.minictrl", "elm.rect.minictrl", "elm.rect.bg", DEFAULT_ICON_WIDTH, DEFAULT_ICON_HEIGHT )
+
+                       /* NOTI(R1~R5) */
+                       FIXED_RECT_FROM_RIGHT( "elm.rect.noti", "elm.swallow.minictrl", "elm.rect.bg", DEFAULT_ICON_PADDING, 0 0 255 255, 0)
+                       SWALLOW_PART_FROM_RIGHT_WITH_SPACE( "elm.swallow.noti", "elm.rect.noti", "elm.rect.middle_con", 0, 0)
+
+                       /* more */
+                       SWALLOW_PART_FROM_RIGHT_WITH_EFFECT( "elm.swallow.fixed10", "elm.swallow.noti", "elm.rect.middle_con", 0, 0)
+
+#ifdef _SUPPORT_SCREEN_READER
                        part {
-                               name: "padding.separator2";
+                               name: elm.swallow.fixed9.access;
                                type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       fixed: 1 0;
+                                       rel1.to: elm.swallow.fixed9;
+                                       rel2.to: elm.swallow.fixed9;
+                                       visible: 1;
+                                       color:0 0 0 0;
+                               }
+                               description {
+                                       state: "hide" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 0;
+                               }
+                       }
+#endif
+                       part {
+                               name: elm.swallow.fixed9;
+                               type: SWALLOW;
                                mouse_events: 0;
                                scale: 1;
                                description {
                                        state: "default" 0.0;
-                                       min: PADDING_WIDTH 0;
+#ifndef _INDICATOR_REMOVE_SEARCH
+                                       min: HOME_PADDING_PORTRAIT FIXED4_ICON_HEIGHT;
+#else
+                                       min: 0 0;
+#endif
                                        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";
+                                       rel1 { relative: 0.0 0.0; to_x: padding.right; to_y: elm.rect.right_con; }
+                                       rel2 { relative: 0.0 1.0; to_x: padding.right; to_y: elm.rect.right_con; }
+                                       align: 1.0 0.5;
+                                       visible: 1;
+                               }
+                               description {
+                                       state: "hide" 0.0;
+                                       inherit: "default" 0.0;
+                                       min: 0 0;
+                                       fixed:1 0;
+                                       visible: 0;
+                               }
+                       }
+                       part {
+                               name: "elm.image.plmn";
+                               type: IMAGE;
+                               scale: 1;
+                               mouse_events: 0;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 0;
+                                       fixed: 1 0;
+                                       color: 100 100 100 100;
+                                       rel1 { relative: 0.0 0.5; to_x: elm.swallow.fixed8; to_y: elm.rect.right_con; }
+                                       rel2 { relative: 0.0 0.5; to_x: elm.swallow.fixed8; to_y: elm.rect.right_con; }
+                                       align: 1.0 0.5;
+                                       visible: 0;
+                               }
+                               description {
+                                       state: "show" 0.0;
+                                       inherit: "default" 0.0;
+                                       min: 112 31;
+                                       fixed: 1 1;
+                                       image {
+                                       normal:"B03_OrangeF.png";
                                        }
-                                       align: 0.0 0.5;
+                                       color_class:"AO004";
                                        visible: 1;
-                                       color: 0 0 0 0;
                                }
                        }
-
                        part {
-                               name: "clock.padding.left";
+                               name: "plmn_dynamic.padding.left";
                                type: RECT;
                                mouse_events: 0;
                                scale: 1;
                                description {
                                        state: "default" 0.0;
-                                       min: 12 0;
+                                       min: 0 0;
+                                       fixed: 1 0;
+                                       rel1 { relative: 1.0 0.5; to_x: elm.swallow.fixed9; to_y: elm.rect.right_con; }
+                                       rel2 { relative: 1.0 0.5; to_x: elm.swallow.fixed9; to_y: elm.rect.right_con; }
+                                       color : 255 0 0 125;
+                                       visible: 0;
+                               }
+                               description {
+                                       state: "show" 0.0;
+                                       inherit: "default" 0.0;
+                                       min: 30 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;
+                               name: "elm.image.plmn_dynamic";
+                               type: IMAGE;
                                scale: 1;
+                               mouse_events: 0;
                                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; }
+                                       min: 0 0;
+                                       fixed: 1 0;
+                                       rel1 { relative: 1.0 0.5; to_x:plmn_dynamic.padding.left; to_y: elm.rect.right_con; }
+                                       rel2 { relative: 1.0 0.5; to_x:plmn_dynamic.padding.left; to_y: elm.rect.right_con; }
+                                       align: 0.0 0.5;
                                        visible: 0;
                                }
+                               description {
+                                       state: "show" 0.0;
+                                       inherit: "default" 0.0;
+                                       min: 112 31;
+                                       fixed: 1 1;
+                                       image {
+                                       normal:"B03_OrangeF.png";
+                                       }
+                                       visible: 1;
+                               }
                        }
                        part {
-                               name: "elm.rect.clock";
+                               name: "plmn_dynamic.padding.right";
                                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;
+                                       min: 0 0;
+                                       fixed: 1 0;
+                                       rel1 { relative: 1.0 0.5; to_x: elm.image.plmn_dynamic; to_y: elm.rect.right_con; }
+                                       rel2 { relative: 1.0 0.5; to_x: elm.image.plmn_dynamic; to_y: elm.rect.right_con; }
+                                       color : 255 0 0 125;
                                        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;
+                                       state: "show" 0.0;
+                                       inherit: "default" 0.0;
+                                       min: 5 0;
+                                       fixed: 1 0;
                                        visible: 0;
                                }
                        }
                        part {
-                               name: "elm.rect.innerclock";
+                               name: "clock.padding.left";
                                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";}
+                                       min: 5 0;
+                                       fixed: 1 0;
+                                       rel1 { relative: 0.0 0.0; to_x: elm.text.clock; to_y: elm.rect.bg; }
+                                       rel2 { relative: 0.0 1.0; to_x: elm.text.clock; to_y: elm.rect.bg; }
+                                       align: 1.0 0.5;
+                                       visible: 0;
                                }
                        }
+
                        part {
                                name: "elm.text.clock";
                                type: TEXTBLOCK;
-                               mouse_events: 0;
                                scale: 1;
+                               mouse_events: 0;
                                description {
                                        state: "default" 0.0;
-                                       rel1.to: "elm.rect.innerclock";
-                                       rel2.to: "elm.rect.innerclock";
+                                       rel1 { relative: 1.0 0.0; to: "elm.rect.bg"; }
+                                       rel2 { relative: 0.0 1.0; to: "elm.rect.bg"; }
+                                       align: 0.5 0.5;
                                        fixed: 1 1;
                                        text {
-                                               style: "textblock_style";
                                                min: 1 1;
+                                               style: "textblock_style";
                                                align: 0.5 0.5;
                                        }
                                }
@@ -573,244 +1001,348 @@ collections {
                                                style: "textblock_outline_style";
                                        }
                                }
-                       }
-
-                       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;
+                                       state: "size24" 0.0;
+                                       inherit: "default" 0.0;
+                                       text {
+                                               style: "textblock_style_24";
+                                       }
+                               }
+                               description {
+                                       state: "invisible" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible:0;
                                }
                        }
-
                        part {
-                               name: "clock.padding.bottom";
+                               name: "clock.padding.right";
                                type: RECT;
                                mouse_events: 0;
                                scale: 1;
                                description {
                                        state: "default" 0.0;
-                                       min: 116 5;
-                                       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;
+                                       min: 2 0;
+                                       fixed: 1 0;
+                                       rel1 { relative: 1.0 0.0; to_x: "elm.text.clock"; to_y: "elm.rect.bg"; }
+                                       rel2 { relative: 1.0 1.0; to_x: "elm.text.clock"; to_y: "elm.rect.bg"; }
+                                       align: 1.0 0.5;
                                        visible: 0;
                                }
                        }
-
                        part {
-                               name: "clock.padding.right";
-                               type: RECT;
+                               name: "indicator.alarm.icon";
+                               type: SWALLOW;
                                mouse_events: 0;
                                scale: 1;
                                description {
                                        state: "default" 0.0;
-                                       min: 12 0;
+                                       min: DEFAULT_ICON_WIDTH DEFAULT_ICON_HEIGHT;
+                                       rel1 { relative: 1.0 0.0; to_x: "clock.padding.right"; to_y: "elm.rect.bg"; }
+                                       rel2 { relative: 1.0 1.0; to_x: "clock.padding.right"; to_y: "elm.rect.bg"; }
                                        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;
+                                       align: 0.0 0.0;
                                }
                        }
 
+#ifdef _SUPPORT_SCREEN_READER
                        part {
-                               name: "elm.padding.badge.left";
+                               name: "elm.rect.clock.access";
                                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;
+                                       rel1 { relative: 0.0 0.0; to_x: "elm.swallow.fixed5"; to_y: "elm.swallow.fixed5"; }
+                                       rel2 { relative: 1.0 1.0; to_x: "elm.rect.clock"; to_y: "elm.rect.clock"; }
                                        visible: 1;
+                                       color:0 0 0 0;
                                }
                        }
+#endif
 
                        part {
-                               name: "elm.padding.badge.right";
+                               name: "message.bg";
                                type: RECT;
-                               mouse_events: 0;
                                scale: 1;
+                               mouse_events: 0;
                                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;
+                                       min: 0 INDICATOR_HEIGHT;
+                                       fixed: 0 1;
+                                       rel1 { relative: 0.0 0.0; to: "elm.rect.bg.base"; }
+                                       rel2 { relative: 1.0 0.0; to: "elm.rect.bg.base"; }
+                                       align: 0.0 1.0;
+                                       color: INDI_DEFAULT_BG_TRANSPARENT;
                                        visible: 1;
                                }
+                               description {
+                                       state: "transparent" 0.0;
+                                       inherit: "default" 0.0;
+                               }
                        }
 
                        part {
-                               name: "elm.image.badge";
-                               type: IMAGE;
-                               mouse_events: 0;
+                               name: "message.padding.left";
+                               type: RECT;
                                scale: 1;
+                               mouse_events: 0;
                                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;
+                                       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;
                                }
                                description {
-                                       state: "show2" 0.0;
+                                       state: "scover" 0.0;
                                        inherit: "default" 0.0;
-                                       visible: 1;
+                                       min: 72 0;
                                }
                        }
-
                        part {
-                               name: "elm.text.badge";
-                               type: TEXT;
-                               mouse_events: 0;
+                               name: "message.padding.right";
+                               type: RECT;
                                scale: 1;
+                               mouse_events: 0;
                                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;
+                                       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;
                                }
                                description {
-                                       state: "default2" 0.0;
+                                       state: "scover" 0.0;
                                        inherit: "default" 0.0;
-                                       color: 0 0 0 255;
+                                       min: 72 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: "slide_clip";
+                               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: "seperator.image";
-                                               to_y: "elm.rect.bg";
+                                               relative: 1.0 0.0;
+                                               to_x: "message.padding.left";
+                                               to_y: "message.bg";
                                        }
+
                                        rel2 {
-                                               relative: 1.0 1.0;
-                                               to_x: "clock.padding.left";
-                                               to_y: "elm.rect.bg";
+                                               relative: 0.0 1.0;
+                                               to_x: "message.padding.right";
+                                               to_y: "message.bg";
+                                       }
+                                       text {
+                                               style: "message_style";
+                                               min: 0 1;
                                        }
-                                       color: 255 255 255 0;
                                }
                                description {
-                                       state: "show" 0.0;
+                                       state: "line2" 0.0;
+                                       inherit: "default" 0.0;
                                        rel1 {
-                                               relative: 1.0 0.0;
-                                               to_x: "seperator.image";
-                                               to_y: "elm.rect.bg";
+                                               relative: 1.0 1.0;
+                                               to_x: "message.padding.left";
+                                               to_y: "message.bg";
                                        }
+
                                        rel2 {
-                                               relative: 1.0 1.0;
-                                               to_x: "clock.padding.left";
-                                               to_y: "elm.rect.bg";
+                                               relative: 0.0 2.0;
+                                               to_x: "message.padding.right";
+                                               to_y: "message.bg";
+                                       }
+                                       text {
+                                               style: "message_style2";
+                                               min: 0 1;
                                        }
-                                       color: 255 255 255 255;
+                                       visible: 0;
                                }
                        }
                        part {
-                               name: "slide_clip2";
-                               type: RECT;
+                               name: "message.text.compare";
+                               type: TEXTBLOCK;
                                scale: 1;
+                               mouse_events: 0;
                                description {
                                        state: "default" 0.0;
+                                       fixed: 1 1;
+                                       visible: 0;
                                        rel1 {
-                                               relative: 1.0 -1.0;
-                                               to_x: "clock.padding.right";
-                                               to_y: "elm.rect.bg";
+                                               relative: 0.0 0.0;
+                                               to: "message.text";
                                        }
                                        rel2 {
-                                               relative: 0.0 1.0;
-                                               to_x: "seperator.image2";
-                                               to_y: "elm.rect.bg";
+                                               relative: 3.0 1.0;
+                                               to: "message.text";
+                                       }
+                                       text {
+                                               style: "message_style_compare";
+                                               min: 0 1;
                                        }
-                                       color: 255 255 255 0;
                                }
+                       }
+                       part {
+                               name: "message.line2.text";
+                               type: TEXTBLOCK;
+                               scale: 1;
+                               mouse_events: 0;
                                description {
-                                       state: "show" 0.0;
+                                       state: "default" 0.0;
+                                       fixed: 1 1;
+                                       visible: 1;
                                        rel1 {
-                                               relative: 1.0 0.0;
-                                               to_x: "clock.padding.right";
-                                               to_y: "elm.rect.bg";
+                                               relative: 1.0 -1.0;
+                                               to_x: "message.padding.left";
+                                               to_y: "message.text";
                                        }
+
                                        rel2 {
-                                               relative: 0.0 1.0;
-                                               to_x: "seperator.image2";
-                                               to_y: "elm.rect.bg";
+                                               relative: 0.0 0.0;
+                                               to_x: "message.padding.right";
+                                               to_y: "message.text";
+                                       }
+                                       text {
+                                               style: "message_style";
+                                               min: 0 1;
                                        }
-                                       color: 255 255 255 255;
                                }
                        }
-
                }
 
                programs {
+                       /*********************************************************
+                        *
+                        * Fixed ICon
+                        *
+                        **********************************************************/
                        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);
+                               name: "message.show";
+                               action: STATE_SET "hide" 0.0;
+                               signal: "message.show";
+                               source: "indicator.prog";
+                               script
+                               {
+                                       if (get_int(bg_set) == 0)
+                                       {
+                                               run_program(PROGRAM:"message.show.effect");
+                                       }
+                                       else if(get_int(bg_set) == 1)
+                                       {
+                                               run_program(PROGRAM:"message.show.effect");
+                                       }
+                                       else
+                                       {
+                                               run_program(PROGRAM:"message.show.noeffect");
                                        }
                                }
                        }
 
                        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);
-                                       }
-                               }
+                               name: "message.show.effect";
+                               action: STATE_SET "hide" 0.0;
+                               source: "indicator.prog";
+                               target: "elm.rect.bg.base";
+                               transition: LINEAR 0.3;
                        }
 
                        program {
-                               name: "home_pressed";
-                               signal: "home.pressed";
+                               name: "message.show.noeffect";
+                               action: STATE_SET "hide" 0.0;
+                               signal: "message.show.noeffect";
                                source: "indicator.prog";
-                               script {
-                               }
+                               target: "elm.rect.bg.base";
                        }
 
+                       program {
+                               name: "message.hide";
+                               action: STATE_SET "default" 0.0;
+                               signal: "message.hide";
+                               source: "indicator.prog";
+                               target: "elm.rect.bg.base";
+                               transition: LINEAR 0.3;
+                               after:message.line2.hide.noeffect;
+                       }
+                       program {
+                               name: "message.line2.show";
+                               action: STATE_SET "line2" 0.0;
+                               signal: "message.line2.show";
+                               source: "indicator.prog";
+                               target: "message.text";
+                               transition: LINEAR 0.3;
+                       }
 
                        program {
+                               name: "message.line2.hide";
+                               action: STATE_SET "default" 0.0;
+                               signal: "message.line2.hide";
+                               source: "indicator.prog";
+                               target: "message.text";
+                               transition: LINEAR 0.3;
+                       }
+                       program {
+                               name: "message.line2.hide.noeffect";
+                               action: STATE_SET "default" 0.0;
+                               signal: "message.line2.hide.noeffect";
+                               source: "indicator.prog";
+                               target: "message.text";
+                       }
+                       /*********************************************************
+                        *
+                        * BG and CLOCK
+                        *
+                        **********************************************************/
+                       program {
                                name: "bg_opaque";
                                action: STATE_SET "default" 0.0;
                                signal: "bg.opaque";
@@ -818,6 +1350,7 @@ collections {
                                script {
                                        set_int(bg_set, 0);
                                        set_state(PART:"elm.rect.bg", "opaque", 0.0);
+                                       set_state(PART:"message.bg", "transparent", 0.0);
                                }
 
                        }
@@ -829,6 +1362,7 @@ collections {
                                script {
                                        set_int(bg_set, 1);
                                        set_state(PART:"elm.rect.bg", "translucent", 0.0);
+                                       set_state(PART:"message.bg", "transparent", 0.0);
                                }
 
                        }
@@ -839,6 +1373,7 @@ collections {
                                script {
                                        set_int(bg_set, 2);
                                        set_state(PART:"elm.rect.bg", "transparent", 0.0);
+                                       set_state(PART:"message.bg", "transparent", 0.0);
                                }
 
                        }
@@ -849,150 +1384,474 @@ collections {
                                script {
                                        set_int(bg_set, 3);
                                        set_state(PART:"elm.rect.bg", "notification", 0.0);
+                                       set_state(PART:"message.bg", "transparent", 0.0);
                                }
 
                        }
 
                        program {
-                               name: "clock_size_default";
-                               signal: "indicator.clock.default";
+                               name: "indicator.lock.on";
+                               action: STATE_SET "hide" 0.0;
+                               signal: "indicator.lock.on";
                                source: "indicator.prog";
-                               script {
-                                       set_state(PART:"elm.rect.clock", "default", 0.0);
-                               }
-
+                               target: "elm.swallow.fixed6";
+                               target: "seperator.image";
+                               target: "padding.separator";
+                               target: "padding.separator2";
                        }
+
                        program {
-                               name: "clock_size_ampm";
-                               signal: "indicator.clock.ampm";
+                               name: "indicator.lock.off";
+                               action: STATE_SET "default" 0.0;
+                               signal: "indicator.lock.off";
                                source: "indicator.prog";
-                               script {
-                                       set_state(PART:"elm.rect.clock", "ampm", 0.0);
-                               }
-
+                               target: "elm.swallow.fixed6";
+                               target: "seperator.image";
+                               target: "padding.separator";
+                               target: "padding.separator2";
                        }
 
+                       /* Battery */
                        program {
-                               name: "show.clip.noeffect";
-                               in: 0.15 0.0;
+                               name: "indicator.battery.percentage.show";
                                action: STATE_SET "show" 0.0;
-                               signal: "indicator.clip.show.noeffect";
+                               signal: "indicator.battery.percentage.show";
                                source: "indicator.prog";
-                               target: "slide_clip";
-                               target: "slide_clip2";
+                               target: "elm.swallow.fixed8";
                        }
 
                        program {
-                               name: "show.clip";
-                               in: 0.15 0.0;
-                               action: STATE_SET "show" 0.0;
-                               signal: "indicator.clip.show";
+                               name: "indicator.battery.percentage.hide";
+                               action: STATE_SET "default" 0.0;
+                               signal: "indicator.battery.percentage.hide";
                                source: "indicator.prog";
-                               target: "slide_clip";
-                               target: "slide_clip2";
-                               transition: LINEAR 0.15;
+                               target: "elm.swallow.fixed8";
                        }
 
                        program {
-                               name: "hide.clip.noeffect";
+                               name: "indicator.battery.percentage.one.digit.show";
                                action: STATE_SET "default" 0.0;
-                               signal: "indicator.clip.hide.noeffect";
+                               signal: "indicator.battery.percentage.one.digit.show";
                                source: "indicator.prog";
-                               target: "slide_clip";
-                               target: "slide_clip2";
+                               target: "percentage.digit.box";
                        }
 
                        program {
-                               name: "hide.clip";
+                               name: "indicator.battery.percentage.two.digits.show";
+                               action: STATE_SET "two_digits" 0.0;
+                               signal: "indicator.battery.percentage.two.digits.show";
+                               source: "indicator.prog";
+                               target: "percentage.digit.box";
+                       }
+
+                       program {
+                               name: "indicator.battery.percentage.full.show";
+                               action: STATE_SET "three_digits" 0.0;
+                               signal: "indicator.battery.percentage.full.show";
+                               source: "indicator.prog";
+                               target: "percentage.digit.box";
+                       }
+                       // RSSI1
+                       program {
+                               name: "indicator.rssi1.show";
                                action: STATE_SET "default" 0.0;
-                               signal: "indicator.clip.hide";
+                               signal: "indicator.rssi1.show";
                                source: "indicator.prog";
-                               target: "slide_clip";
-                               target: "slide_clip2";
-                               transition: LINEAR 0.15;
+                               target: "elm.swallow.fixed1";
+                               target: "elm.rect.rssi1";
                        }
+
                        program {
-                               name: "show.noti.noeffect";
-                               action: STATE_SET "show" 0.0;
-                               signal: "indicator.noti.show.noeffect";
+                               name: "indicator.rssi1.hide";
+                               action: STATE_SET "hide" 0.0;
+                               signal: "indicator.rssi1.hide";
                                source: "indicator.prog";
-                               target: "elm.swallow.noti";
-                               target: "elm.swallow.nonfixed";
                                target: "elm.swallow.fixed1";
+                               target: "elm.rect.rssi1";
+                       }
+                       // RSSI2
+                       program {
+                               name: "indicator.rssi2.show";
+                               action: STATE_SET "default" 0.0;
+                               signal: "indicator.rssi2.show";
+                               source: "indicator.prog";
                                target: "elm.swallow.fixed2";
-                               target: "seperator.image";
-                               target: "seperator.image2";
+                               target: "elm.rect.rssi2";
                        }
 
                        program {
-                               name: "show.noti";
-                               action: STATE_SET "show" 0.0;
-                               signal: "indicator.noti.show";
+                               name: "indicator.rssi2.hide";
+                               action: STATE_SET "hide" 0.0;
+                               signal: "indicator.rssi2.hide";
                                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";
-                               transition: LINEAR 0.3;
+                               target: "elm.rect.rssi2";
                        }
+                       // Sim Icon
                        program {
-                               name: "hide.noti.noeffect";
+                               name: "indicator.simicon.show";
                                action: STATE_SET "default" 0.0;
-                               signal: "indicator.noti.hide.noeffect";
+                               signal: "indicator.simicon.show";
                                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";
+                               target: "elm.swallow.fixed3";
+                               target: "elm.rect.simicon";
+                       }
+
+                       program {
+                               name: "indicator.simicon.hide";
+                               action: STATE_SET "hide" 0.0;
+                               signal: "indicator.simicon.hide";
+                               source: "indicator.prog";
+                               target: "elm.swallow.fixed3";
+                               target: "elm.rect.simicon";
+                       }
+
+                       /* Connection - 3G */
+                       program {
+                               name: "indicator.connection.show";
+                               action: STATE_SET "default" 0.0;
+                               signal: "indicator.connection.show";
+                               source: "indicator.prog";
+                               target: "elm.swallow.fixed4";
+                               target: "elm.rect.connection";
+                       }
+
+                       program {
+                               name: "indicator.connection.hide";
+                               action: STATE_SET "hide" 0.0;
+                               signal: "indicator.connection.hide";
+                               source: "indicator.prog";
+                               target: "elm.swallow.fixed4";
+                               target: "elm.rect.connection";
+                       }
+
+                       // WIFI
+                       program {
+                               name: "indicator.wifi.show";
+                               action: STATE_SET "default" 0.0;
+                               signal: "indicator.wifi.show";
+                               source: "indicator.prog";
+                               target: "elm.swallow.fixed5";
+                               target: "elm.rect.wifi";
+                       }
+
+                       program {
+                               name: "indicator.wifi.hide";
+                               action: STATE_SET "hide" 0.0;
+                               signal: "indicator.wifi.hide";
+                               source: "indicator.prog";
+                               target: "elm.swallow.fixed5";
+                               target: "elm.rect.wifi";
+                       }
+                       // BLUETOOTH
+                       program {
+                               name: "indicator.bluetooth.show";
+                               action: STATE_SET "default" 0.0;
+                               signal: "indicator.bluetooth.show";
+                               source: "indicator.prog";
+                               target: "elm.swallow.fixed6";
+                               target: "elm.rect.bt";
                        }
+
+                       program {
+                               name: "indicator.bluetooth.hide";
+                               action: STATE_SET "hide" 0.0;
+                               signal: "indicator.bluetooth.hide";
+                               source: "indicator.prog";
+                               target: "elm.swallow.fixed6";
+                               target: "elm.rect.bt";
+                       }
+                       // WIFI-Direct
                        program {
-                               name: "hide.noti";
+                               name: "indicator.wifidirect.show";
                                action: STATE_SET "default" 0.0;
+                               signal: "indicator.wifidirect.show";
+                               source: "indicator.prog";
+                               target: "elm.swallow.fixed7";
+                               target: "elm.rect.wifidirect";
+                       }
+
+                       program {
+                               name: "indicator.wifidirect.hide";
+                               action: STATE_SET "hide" 0.0;
+                               signal: "indicator.wifidirect.hide";
+                               source: "indicator.prog";
+                               target: "elm.swallow.fixed7";
+                               target: "elm.rect.wifidirect";
+                       }
+
+                       // UpDown Arrow icon
+                       program {
+                               name: "indicator.connection.updown.none";
+                               action: STATE_SET "none" 0.0;
+                               signal: "indicator.connection.updown.none";
+                               source: "indicator.prog";
+                               target: "elm.image.updown1";
+                       }
+                       program {
+                               name: "indicator.connection.updown.download";
+                               action: STATE_SET "download" 0.0;
+                               signal: "indicator.connection.updown.download";
+                               source: "indicator.prog";
+                               target: "elm.image.updown1";
+                       }
+                       program {
+                               name: "indicator.connection.updown.upload";
+                               action: STATE_SET "upload" 0.0;
+                               signal: "indicator.connection.updown.upload";
+                               source: "indicator.prog";
+                               target: "elm.image.updown1";
+                       }
+                       program {
+                               name: "indicator.connection.updown.updownload";
+                               action: STATE_SET "updownload" 0.0;
+                               signal: "indicator.connection.updown.updownload";
+                               source: "indicator.prog";
+                               target: "elm.image.updown1";
+                       }
+                       program {
+                               name: "indicator.connection.updown.hide";
+                               action: STATE_SET "hide" 0.0;
+                               signal: "indicator.connection.updown.hide";
+                               source: "indicator.prog";
+                               target: "elm.image.updown1";
+                       }
+                       program {
+                               name: "indicator.wifi.updown.none";
+                               action: STATE_SET "none" 0.0;
+                               signal: "indicator.wifi.updown.none";
+                               source: "indicator.prog";
+                               target: "elm.image.updown2";
+                       }
+                       program {
+                               name: "indicator.wifi.updown.download";
+                               action: STATE_SET "download" 0.0;
+                               signal: "indicator.wifi.updown.download";
+                               source: "indicator.prog";
+                               target: "elm.image.updown2";
+                       }
+                       program {
+                               name: "indicator.wifi.updown.upload";
+                               action: STATE_SET "upload" 0.0;
+                               signal: "indicator.wifi.updown.upload";
+                               source: "indicator.prog";
+                               target: "elm.image.updown2";
+                       }
+                       program {
+                               name: "indicator.wifi.updown.updownload";
+                               action: STATE_SET "updownload" 0.0;
+                               signal: "indicator.wifi.updown.updownload";
+                               source: "indicator.prog";
+                               target: "elm.image.updown2";
+                       }
+                       program {
+                               name: "indicator.wifi.updown.hide";
+                               action: STATE_SET "hide" 0.0;
+                               signal: "indicator.wifi.updown.hide";
+                               source: "indicator.prog";
+                               target: "elm.image.updown2";
+                       }
+                       // System Box
+                       program {
+                               name: "indicator.system.show";
+                               action: STATE_SET "default" 0.0;
+                               signal: "indicator.system.show";
+                               source: "indicator.prog";
+                               target: "elm.swallow.system";
+                               target: "elm.rect.system";
+                       }
+
+                       program {
+                               name: "indicator.system.hide";
+                               action: STATE_SET "hide" 0.0;
+                               signal: "indicator.system.hide";
+                               source: "indicator.prog";
+                               target: "elm.swallow.system";
+                               target: "elm.rect.system";
+                       }
+                       // Mini Control box
+                       program {
+                               name: "indicator.minictrl.show";
+                               action: STATE_SET "default" 0.0;
+                               signal: "indicator.minictrl.show";
+                               source: "indicator.prog";
+                               target: "elm.swallow.minictrl";
+                               target: "elm.rect.minictrl";
+                       }
+
+                       program {
+                               name: "indicator.minictrl.hide";
+                               action: STATE_SET "hide" 0.0;
+                               signal: "indicator.minictrl.hide";
+                               source: "indicator.prog";
+                               target: "elm.swallow.minictrl";
+                               target: "elm.rect.minictrl";
+                       }
+                       // Noti box
+                       program {
+                               name: "indicator.noti.show";
+                               action: STATE_SET "default" 0.0;
+                               signal: "indicator.noti.show";
+                               source: "indicator.prog";
+                               target: "elm.swallow.noti";
+                               target: "elm.rect.noti";
+                       }
+
+                       program {
+                               name: "indicator.noti.hide";
+                               action: STATE_SET "hide" 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: "seperator.image";
-                               target: "seperator.image2";
-                               transition: LINEAR 0.3;
+                               target: "elm.rect.noti";
+                       }
+                       // S Cover
+                       program {
+                               name: "indicator.scover.on";
+                               action: STATE_SET "scover" 0.0;
+                               signal: "indicator.scover.on";
+                               source: "indicator.prog";
+                               target: "padding.left";
+                               target: "padding.right";
+                               target: "message.padding.left";
+                               target: "message.padding.right";
+                       }
+                       program {
+                               name: "indicator.scover.off";
+                               action: STATE_SET "default" 0.0;
+                               signal: "indicator.scover.off";
+                               source: "indicator.prog";
+                               target: "padding.left";
+                               target: "padding.right";
+                               target: "message.padding.left";
+                               target: "message.padding.right";
+                       }
+                       program {
+                               name: "indicator.padding.dynamic.on";
+                               action: STATE_SET "dynamic" 0.0;
+                               signal: "indicator.padding.dynamic.on";
+                               source: "indicator.prog";
+                               target: "padding.right";
+                               transition: LINEAR 0.4;
+                       }
+                       program {
+                               name: "indicator.padding.dynamic.off";
+                               action: STATE_SET "default" 0.0;
+                               signal: "indicator.padding.dynamic.off";
+                               source: "indicator.prog";
+                               target: "padding.right";
+                               transition: LINEAR 0.4;
                        }
 
+                       program {
+                               name: "indicator.padding.dynamic.off.noeffect";
+                               action: STATE_SET "default" 0.0;
+                               signal: "indicator.padding.dynamic.off.noeffect";
+                               source: "indicator.prog";
+                               target: "padding.right";
+                       }
 
                        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);
-                                               }
-                                       }
-                               }
+                               name: "indicator.padding.resize.0";
+                               action: STATE_SET "default" 0.0;
+                               signal: "indicator.padding.resize.0";
+                               source: "indicator.prog";
+                               target: "resize_padding.left";
+                               target: "resize_padding.right";
+                       }
+                       program {
+                               name: "indicator.padding.resize.1";
+                               action: STATE_SET "1" 0.0;
+                               signal: "indicator.padding.resize.1";
+                               source: "indicator.prog";
+                               target: "resize_padding.left";
+                               target: "resize_padding.right";
                        }
 
                        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);
-                                       }
-                               }
+                               name: "indicator.padding.resize.2";
+                               action: STATE_SET "2" 0.0;
+                               signal: "indicator.padding.resize.2";
+                               source: "indicator.prog";
+                               target: "resize_padding.left";
+                               target: "resize_padding.right";
+                       }
+
+                       program {
+                               name: "indicator.padding.resize.3";
+                               action: STATE_SET "3" 0.0;
+                               signal: "indicator.padding.resize.3";
+                               source: "indicator.prog";
+                               target: "resize_padding.left";
+                               target: "resize_padding.right";
+                       }
+
+                       program {
+                               name: "indicator.padding.resize.4";
+                               action: STATE_SET "4" 0.0;
+                               signal: "indicator.padding.resize.4";
+                               source: "indicator.prog";
+                               target: "resize_padding.left";
+                               target: "resize_padding.right";
+                       }
+
+                       program {
+                               name: "indicator.bg.call.0";
+                               action: STATE_SET "default" 0.0;
+                               signal: "indicator.bg.call.0";
+                               source: "indicator.prog";
+                               target: "elm.rect.bg.call";
                        }
+                       program {
+                               name: "indicator.bg.call.1";
+                               action: STATE_SET "during_call" 0.0;
+                               signal: "indicator.bg.call.1";
+                               source: "indicator.prog";
+                               target: "elm.rect.bg.call";
+                       }
+                       program {
+                               name: "indicator.bg.call.2";
+                               action: STATE_SET "call_hold" 0.0;
+                               signal: "indicator.bg.call.2";
+                               source: "indicator.prog";
+                               target: "elm.rect.bg.call";
+                       }
+                       program {
+                               name: "indicator.bg.call.3";
+                               action: STATE_SET "call_end" 0.0;
+                               signal: "indicator.bg.call.3";
+                               source: "indicator.prog";
+                               target: "elm.rect.bg.call";
+                       }
+
+                       program {
+                               name: "clock.font.12";
+                               action: STATE_SET "default" 0.0;
+                               signal: "clock.font.12";
+                               source: "indicator.prog";
+                               target: "elm.text.clock";
+                       }
+                       program {
+                               name: "clock.font.24";
+                               action: STATE_SET "size24" 0.0;
+                               signal: "clock.font.24";
+                               source: "indicator.prog";
+                               target: "elm.text.clock";
+                       }
+                       program {
+                               name: "clock.invisible";
+                               action: STATE_SET "invisible" 0.0;
+                               signal: "clock.invisible";
+                               source: "indicator.prog";
+                               target: "elm.text.clock";
+                       }
+
+                       /*********************************************************
+                        *
+                        * BADGE
+                        *
+                        **********************************************************/
+
                }
        }
 }
diff --git a/data/resource/ticker.edc b/data/resource/ticker.edc
new file mode 100755 (executable)
index 0000000..e88ed6e
--- /dev/null
@@ -0,0 +1,216 @@
+/*
+ * Copyright (c) 2009-2015 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * 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 "color_classes.edc"
+#include "indicator_gui.h"
+
+#define TICKERNOTI_MAIN_TEXT_HEIGHT_INC 1
+collections
+{
+       base_scale: 1.7;
+
+       group {
+               name: "quickpanel/tickernoti/text";
+               data {
+                       item: "height" TICKERNOTI_DEFAULT_BG_MIN_HEIGHT_INC;
+               }
+               styles {
+                       style {
+                               name: "style_main_text";
+                               base: "font=Tizen:style=Regular font_size=25 color=#FFFFFF  text_class=tizen wrap=mixed";
+                               tag: "br" "\n";
+                               tag: "ps" "ps";
+                               tag: "b" "+ font_weight=Bold";
+                       }
+               }
+               parts {
+                       part {
+                               name: "elm.text";
+                               type: TEXTBLOCK;
+                               scale: 1;
+                               multiline: 1;
+                               mouse_events: 0;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 434 0;
+                                       align: 0.5 0.0;
+                                       text {
+                                               style: "style_main_text";
+                                               min: 0 1;
+                                               align: 0.0 0.0;
+                                       }
+                               }
+                       }
+               }
+       }
+
+       group {
+               name: "quickpanel/tickernoti/normal";
+               data {
+                       item: "height" TICKERNOTI_DEFAULT_BG_MIN_HEIGHT_INC;
+               }
+               parts {
+                       part {
+                               name: "base";
+                               type: SWALLOW;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       align: 0.0 0.0;
+                               }
+
+                       }
+                       part {
+                               name: "clipper";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1.to: "base";
+                                       rel2.to: "base";
+                                       align: 0.0 0.0;
+                               }
+                       }
+                       part {
+                               name: "bg";
+                               mouse_events: 1;
+                               type: RECT;
+                               clip_to: "clipper";
+                               scale: 1;
+                               description { state: "default" 0.0;
+                                       visible: 0;
+                                       rel1.to: "base";
+                                       rel2.to: "base";
+                               }
+                       }
+
+                       part {
+                               name: "bg_img";
+                               mouse_events: 0;
+                               type: RECT;
+                               scale: 1;
+                               description { state: "default" 0.0;
+                                       visible: 1;
+                                       align:0.0 0.0;
+
+                                       rel1.to: "bg";
+                                       rel2.to: "bg";
+                                       /* FIXME */
+                                       color: 0 0 0 255;
+                                       //color_class: "AO008_STATUS";
+                               }
+                       }
+                       // Icon
+                       part {
+                               name: "icon";
+                               type: SWALLOW;
+                               scale: 1;
+                               mouse_events: 1;
+                               clip_to: "clipper";
+                               description {
+                                       state: "default" 0.0;
+                                       fixed: 1 1;
+                                       min: 25 25;
+                                       max: 25 25;
+                                       align: 0.0 0.5;
+                                       rel1
+                                       {
+                                               relative: 0.0 0.5;
+                                               to: "base";
+                                               offset: 6 0;
+                                       }
+                                       rel2 {
+                                               relative: 0.0 0.5;
+                                               to: "base";
+                                       }
+                                       aspect: 1.0 1.0;
+                                       aspect_preference: VERTICAL;
+                               }
+                       }
+                       /* Text */
+                       part {
+                               name: "text_rect";
+                               type: SWALLOW;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       max: 800 36;
+                                       fixed: 1 1;
+                                       align: 0.0 0.5;
+                                       rel1 {
+                                               relative: 1.0 0.0;
+                                               to_x: "icon";
+                                               to_y: "base";
+                                               offset: 10 3;
+                                       }
+                                       rel2 {
+                                               relative: 1.0 0.9;
+                                               to: "base";
+                                       }
+                               }
+                       }
+                       part {
+                               name: "event";
+                               type: RECT;
+                               mouse_events: 1;
+                               repeat_events: 1;
+                       description {
+                                       state: "default" 0.0;
+                                       color: 0 0 0 0;
+                                       rel1 {
+                                               to: "bg";
+                                       }
+                                       rel2 {
+                                               to: "bg";
+                                       }
+                               }
+                       }
+               }
+               programs {
+                       program {
+                               name: "effect_show";
+                               signal: "effect,show";
+                               source: "elm";
+                               in: 0.1 0.0;
+                               action: STATE_SET "show" "0.0";
+                               transition: ACCEL 0.4;
+                               target: "bg";
+                       }
+                       program {
+                               name: "clicked";
+                               signal: "mouse,clicked,1";
+                               source: "event";
+                               action: SIGNAL_EMIT "clicked" "";
+                               after: "effect_hide";
+                       }
+                       program {
+                               name: "effect_hide";
+                               signal: "effect,hide";
+                               source: "elm";
+                               action: STATE_SET "default" "0.0";
+                               transition: DECEL 0.4;
+                               target: "bg";
+                               after: "hide";
+                       }
+                       program {
+                               name: "hide";
+                               action: SIGNAL_EMIT "request,hide" "";
+                       }
+               }
+       }
+}
diff --git a/data/resource/ticker_animated_icon.edc b/data/resource/ticker_animated_icon.edc
new file mode 100755 (executable)
index 0000000..f78c282
--- /dev/null
@@ -0,0 +1,517 @@
+/*
+ * Copyright (c) 2009-2015 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * 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.
+ *
+ */
+
+#define FRAME_TIME 0.3
+
+images {
+       image: "noti_download_01.png" COMP;
+       image: "noti_download_02.png" COMP;
+       image: "noti_download_03.png" COMP;
+       image: "noti_download_04.png" COMP;
+       image: "noti_download_05.png" COMP;
+       image: "noti_download_complete.png" COMP;
+
+       image: "noti_upload_01.png" COMP;
+       image: "noti_upload_02.png" COMP;
+       image: "noti_upload_03.png" COMP;
+       image: "noti_upload_04.png" COMP;
+       image: "noti_upload_05.png" COMP;
+       image: "noti_upload_complete.png" COMP;
+
+       image: "noti_install_01.png" COMP;
+       image: "noti_install_02.png" COMP;
+       image: "noti_install_03.png" COMP;
+       image: "noti_install_04.png" COMP;
+       image: "noti_install_05.png" COMP;
+       image: "noti_install_complete.png" COMP;
+}
+
+collections {
+group {
+       name: "quickpanel/animated_icon_download";
+       parts {
+               part { name: "background";
+                       type: SPACER;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 47 47;
+                               max: 47 47;
+                       }
+               }
+               part{
+                       name: "obj.image";
+                       type:IMAGE;
+                       scale:1;
+                       description {
+                               state: "default" 0.0;
+                               fixed: 1 1;
+                               state: "default" 0.0;
+                               min: 47 47;
+                               max: 47 47;
+                               rel1 {
+                                       to: "background";
+                               }
+                               rel2 {
+                                       to: "background";
+                               }
+                               image {
+                                       normal:"noti_download_01.png";
+                                       border: 0 0 0 0;
+                                       border_scale: 1;
+                               }
+                               color_class: QP_THEME_LIST_ITEM_ICON_COLOR;
+                               visible:1;
+                       }
+                       description {
+                               state: "state.0" 0.0;
+                               inherit: "default" 0.0;
+                               image {
+                                       normal:"noti_download_01.png";
+                                       border: 0 0 0 0;
+                                       border_scale: 1;
+                               }
+                       }
+                       description {
+                               state: "state.1" 0.0;
+                               inherit: "default" 0.0;
+                               image {
+                                       normal:"noti_download_02.png";
+                                       border: 0 0 0 0;
+                                       border_scale: 1;
+                               }
+                       }
+                       description {
+                               state: "state.2" 0.0;
+                               inherit: "default" 0.0;
+                               image {
+                                       normal:"noti_download_03.png";
+                                       border: 0 0 0 0;
+                                       border_scale: 1;
+                               }
+                       }
+                       description {
+                               state: "state.3" 0.0;
+                               inherit: "default" 0.0;
+                               image {
+                                       normal:"noti_download_04.png";
+                                       border: 0 0 0 0;
+                                       border_scale: 1;
+                               }
+                       }
+                       description {
+                               state: "state.4" 0.0;
+                               inherit: "default" 0.0;
+                               image {
+                                       normal:"noti_download_05.png";
+                                       border: 0 0 0 0;
+                                       border_scale: 1;
+                               }
+                       }
+                       description {
+                               state: "state.5" 0.0;
+                               inherit: "default" 0.0;
+                               image {
+                                       normal:"noti_download_complete.png";
+                                       border: 0 0 0 0;
+                                       border_scale: 1;
+                               }
+                       }
+               }
+       }
+
+       programs {
+               program {
+                       name: "init.layout";
+                       signal: "load";
+                       source: "";
+                       in: 0.0 0.0;
+                       action: SIGNAL_EMIT "icon.state.0" "prog";
+               }
+               program{
+                       name: "icon.state.0";
+                       signal: "icon.state.0";
+                       source: "prog";
+                       in: FRAME_TIME 0.0;
+                       action: STATE_SET "state.0" 0.0;
+                       target: "obj.image";
+                       after: "icon.state.1";
+               }
+               program{
+                       name: "icon.state.1";
+                       signal: "icon.state.1";
+                       source: "prog";
+                       in: FRAME_TIME 0.0;
+                       action: STATE_SET "state.1" 0.0;
+                       target: "obj.image";
+                       after: "icon.state.2";
+               }
+               program{
+                       name: "icon.state.2";
+                       signal: "icon.state.2";
+                       source: "prog";
+                       in: FRAME_TIME 0.0;
+                       action: STATE_SET "state.2" 0.0;
+                       target: "obj.image";
+                       after: "icon.state.3";
+               }
+               program{
+                       name: "icon.state.3";
+                       signal: "icon.state.3";
+                       source: "prog";
+                       in: FRAME_TIME 0.0;
+                       action: STATE_SET "state.3" 0.0;
+                       target: "obj.image";
+                       after: "icon.state.4";
+               }
+               program{
+                       name: "icon.state.4";
+                       signal: "icon.state.4";
+                       source: "prog";
+                       in: FRAME_TIME 0.0;
+                       action: STATE_SET "state.4" 0.0;
+                       target: "obj.image";
+                       after: "icon.state.5";
+               }
+               program{
+                       name: "icon.state.5";
+                       signal: "icon.state.5";
+                       source: "prog";
+                       in: FRAME_TIME 0.0;
+                       action: STATE_SET "state.5" 0.0;
+                       target: "obj.image";
+                       after: "icon.state.0";
+               }
+       }
+}
+
+group {
+       name: "quickpanel/animated_icon_upload";
+       parts {
+               part { name: "background";
+                       type: SPACER;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 47 47;
+                               max: 47 47;
+                       }
+               }
+               part{
+                       name: "obj.image";
+                       type:IMAGE;
+                       scale:1;
+                       description {
+                               state: "default" 0.0;
+                               fixed: 1 1;
+                               state: "default" 0.0;
+                               min: 47 47;
+                               max: 47 47;
+                               rel1 {
+                                       to: "background";
+                               }
+                               rel2 {
+                                       to: "background";
+                               }
+                               image {
+                                       normal:"noti_upload_01.png";
+                                       border: 0 0 0 0;
+                                       border_scale: 1;
+                               }
+                               color_class: QP_THEME_LIST_ITEM_ICON_COLOR;
+                               visible:1;
+                       }
+                       description {
+                               state: "state.0" 0.0;
+                               inherit: "default" 0.0;
+                               image {
+                                       normal:"noti_upload_01.png";
+                                       border: 0 0 0 0;
+                                       border_scale: 1;
+                               }
+                       }
+                       description {
+                               state: "state.1" 0.0;
+                               inherit: "default" 0.0;
+                               image {
+                                       normal:"noti_upload_02.png";
+                                       border: 0 0 0 0;
+                                       border_scale: 1;
+                               }
+                       }
+                       description {
+                               state: "state.2" 0.0;
+                               inherit: "default" 0.0;
+                               image {
+                                       normal:"noti_upload_03.png";
+                                       border: 0 0 0 0;
+                                       border_scale: 1;
+                               }
+                       }
+                       description {
+                               state: "state.3" 0.0;
+                               inherit: "default" 0.0;
+                               image {
+                                       normal:"noti_upload_04.png";
+                                       border: 0 0 0 0;
+                                       border_scale: 1;
+                               }
+                       }
+                       description {
+                               state: "state.4" 0.0;
+                               inherit: "default" 0.0;
+                               image {
+                                       normal:"noti_upload_05.png";
+                                       border: 0 0 0 0;
+                                       border_scale: 1;
+                               }
+                       }
+                       description {
+                               state: "state.5" 0.0;
+                               inherit: "default" 0.0;
+                               image {
+                                       normal:"noti_upload_complete.png";
+                                       border: 0 0 0 0;
+                                       border_scale: 1;
+                               }
+                       }
+               }
+       }
+
+       programs {
+               program {
+                       name: "init.layout";
+                       signal: "load";
+                       source: "";
+                       in: 0.0 0.0;
+                       action: SIGNAL_EMIT "icon.state.0" "prog";
+               }
+               program{
+                       name: "icon.state.0";
+                       signal: "icon.state.0";
+                       source: "prog";
+                       in: FRAME_TIME 0.0;
+                       action: STATE_SET "state.0" 0.0;
+                       target: "obj.image";
+                       after: "icon.state.1";
+               }
+               program{
+                       name: "icon.state.1";
+                       signal: "icon.state.1";
+                       source: "prog";
+                       in: FRAME_TIME 0.0;
+                       action: STATE_SET "state.1" 0.0;
+                       target: "obj.image";
+                       after: "icon.state.2";
+               }
+               program{
+                       name: "icon.state.2";
+                       signal: "icon.state.2";
+                       source: "prog";
+                       in: FRAME_TIME 0.0;
+                       action: STATE_SET "state.2" 0.0;
+                       target: "obj.image";
+                       after: "icon.state.3";
+               }
+               program{
+                       name: "icon.state.3";
+                       signal: "icon.state.3";
+                       source: "prog";
+                       in: FRAME_TIME 0.0;
+                       action: STATE_SET "state.3" 0.0;
+                       target: "obj.image";
+                       after: "icon.state.4";
+               }
+               program{
+                       name: "icon.state.4";
+                       signal: "icon.state.4";
+                       source: "prog";
+                       in: FRAME_TIME 0.0;
+                       action: STATE_SET "state.4" 0.0;
+                       target: "obj.image";
+                       after: "icon.state.5";
+               }
+               program{
+                       name: "icon.state.5";
+                       signal: "icon.state.5";
+                       source: "prog";
+                       in: FRAME_TIME 0.0;
+                       action: STATE_SET "state.5" 0.0;
+                       target: "obj.image";
+                       after: "icon.state.0";
+               }
+       }
+}
+
+group {
+       name: "quickpanel/animated_icon_install";
+       parts {
+               part { name: "background";
+                       type: SPACER;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 47 47;
+                               max: 47 47;
+                       }
+               }
+               part{
+                       name: "obj.image";
+                       type:IMAGE;
+                       scale:1;
+                       description {
+                               state: "default" 0.0;
+                               fixed: 1 1;
+                               state: "default" 0.0;
+                               min: 47 47;
+                               max: 47 47;
+                               rel1 {
+                                       to: "background";
+                               }
+                               rel2 {
+                                       to: "background";
+                               }
+                               image {
+                                       normal:"noti_install_01.png";
+                                       border: 0 0 0 0;
+                                       border_scale: 1;
+                               }
+                               color_class: QP_THEME_LIST_ITEM_ICON_COLOR;
+                               visible:1;
+                       }
+                       description {
+                               state: "state.0" 0.0;
+                               inherit: "default" 0.0;
+                               image {
+                                       normal:"noti_install_01.png";
+                                       border: 0 0 0 0;
+                                       border_scale: 1;
+                               }
+                       }
+                       description {
+                               state: "state.1" 0.0;
+                               inherit: "default" 0.0;
+                               image {
+                                       normal:"noti_install_02.png";
+                                       border: 0 0 0 0;
+                                       border_scale: 1;
+                               }
+                       }
+                       description {
+                               state: "state.2" 0.0;
+                               inherit: "default" 0.0;
+                               image {
+                                       normal:"noti_install_03.png";
+                                       border: 0 0 0 0;
+                                       border_scale: 1;
+                               }
+                       }
+                       description {
+                               state: "state.3" 0.0;
+                               inherit: "default" 0.0;
+                               image {
+                                       normal:"noti_install_04.png";
+                                       border: 0 0 0 0;
+                                       border_scale: 1;
+                               }
+                       }
+                       description {
+                               state: "state.4" 0.0;
+                               inherit: "default" 0.0;
+                               image {
+                                       normal:"noti_install_05.png";
+                                       border: 0 0 0 0;
+                                       border_scale: 1;
+                               }
+                       }
+                       description {
+                               state: "state.5" 0.0;
+                               inherit: "default" 0.0;
+                               image {
+                                       normal:"noti_install_complete.png";
+                                       border: 0 0 0 0;
+                                       border_scale: 1;
+                               }
+                       }
+               }
+       }
+
+       programs {
+               program {
+                       name: "init.layout";
+                       signal: "load";
+                       source: "";
+                       in: 0.0 0.0;
+                       action: SIGNAL_EMIT "icon.state.0" "prog";
+               }
+               program{
+                       name: "icon.state.0";
+                       signal: "icon.state.0";
+                       source: "prog";
+                       in: FRAME_TIME 0.0;
+                       action: STATE_SET "state.0" 0.0;
+                       target: "obj.image";
+                       after: "icon.state.1";
+               }
+               program{
+                       name: "icon.state.1";
+                       signal: "icon.state.1";
+                       source: "prog";
+                       in: FRAME_TIME 0.0;
+                       action: STATE_SET "state.1" 0.0;
+                       target: "obj.image";
+                       after: "icon.state.2";
+               }
+               program{
+                       name: "icon.state.2";
+                       signal: "icon.state.2";
+                       source: "prog";
+                       in: FRAME_TIME 0.0;
+                       action: STATE_SET "state.2" 0.0;
+                       target: "obj.image";
+                       after: "icon.state.3";
+               }
+               program{
+                       name: "icon.state.3";
+                       signal: "icon.state.3";
+                       source: "prog";
+                       in: FRAME_TIME 0.0;
+                       action: STATE_SET "state.3" 0.0;
+                       target: "obj.image";
+                       after: "icon.state.4";
+               }
+               program{
+                       name: "icon.state.4";
+                       signal: "icon.state.4";
+                       source: "prog";
+                       in: FRAME_TIME 0.0;
+                       action: STATE_SET "state.4" 0.0;
+                       target: "obj.image";
+                       after: "icon.state.5";
+               }
+               program{
+                       name: "icon.state.5";
+                       signal: "icon.state.5";
+                       source: "prog";
+                       in: FRAME_TIME 0.0;
+                       action: STATE_SET "state.5" 0.0;
+                       target: "obj.image";
+                       after: "icon.state.0";
+               }
+       }
+}
+}
diff --git a/data/resource/ticker_default.edc b/data/resource/ticker_default.edc
new file mode 100755 (executable)
index 0000000..331dcab
--- /dev/null
@@ -0,0 +1,502 @@
+/*
+ * Copyright (c) 2009-2015 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * 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 "color_classes.edc"
+
+#define QP_DATE_H 50
+#define QP_HANDLE_H    50
+#define QP_SETTING_H 221
+#define QP_SETTING_SEPERATOR_H 0
+
+#define QUICKPANEL_FOCUS_OBJECT(NAME, TO_1, TO_2)\
+                       part {\
+                               name: NAME;\
+                               type: SWALLOW;\
+                               scale: 1;\
+                               mouse_events: 1;\
+                               repeat_events: 1;\
+                               description {\
+                                       state: "default" 0.0;\
+                                       rel1 { relative: 0.0 0.00; to, TO_1; }\
+                                       rel2 { relative: 1.0 1.00; to, TO_2; }\
+                                       fixed: 1 1;\
+                                       visible: 1;\
+                               }\
+                               description {\
+                                       state: "show" 0.0;\
+                                       inherit: "default" 0.0;\
+                                       visible: 1;\
+                               }\
+                               description {\
+                                       state: "hide" 0.0;\
+                                       inherit: "default" 0.0;\
+                                       visible: 0;\
+                               }\
+                       }\
+
+#define QUICKPANEL_FOCUS_OBJECT_WITH_OFFSET(NAME, TO_1, TO_2, OFFSET_X, OFFSET_Y)\
+                       part {\
+                               name: NAME;\
+                               type: SWALLOW;\
+                               scale: 1;\
+                               mouse_events: 1;\
+                               repeat_events: 1;\
+                               description {\
+                                       state: "default" 0.0;\
+                                       rel1 { relative: 0.0 0.00; to, TO_1; offset: -OFFSET_X -OFFSET_Y;}\
+                                       rel2 { relative: 1.0 1.00; to, TO_2; offset: +OFFSET_X +OFFSET_Y; }\
+                                       fixed: 1 1;\
+                                       visible: 1;\
+                               }\
+                       }\
+
+images
+{
+       image: "handler_bg.#.png" COMP;
+       image: "handler_bg_ef.#.png" COMP;
+       image: "handler_btn_02.png" COMP;
+       image: "core_theme_bg_01.png" COMP;
+}
+
+collections {
+       base_scale: 1.7;
+       group {
+               name: "quickpanel/root";
+
+               script {
+                       public g_is_portrait;
+
+                       public init_variables() {
+                               set_int(g_is_portrait, 1);
+                       }
+               }
+
+               parts {
+                       part {
+                               name: "base";
+                               type: RECT;
+                               scale: 1;
+                               mouse_events: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 1;
+                               }
+                       }
+
+
+                       part {
+                               name: "background";
+                               type: IMAGE;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       fixed: 1 1;
+                                       align: 0.5 0.5;
+                                       rel1 {
+                                               to: "base";
+                                       }
+                                       rel2 {
+                                               to: "base";
+                                       }
+                                       image {
+                                               normal: "core_theme_bg_01.png";
+                                       }
+                               }
+                       }
+
+                       part{
+                               name: "qp.base.rect.datetime";
+                               type:SPACER;
+                               scale:1;
+                               description {
+                                       state: "default" 0.0;
+                                       fixed: 0 1;
+                                       min: 0 QP_DATE_H;
+                                       rel1 {
+                                               relative: 0.0 0.0;
+                                               to: "background";
+                                       }
+                                       rel2 {
+                                               relative: 1.0 0.0;
+                                               to: "background";
+                                       }
+                                       align: 0.0 0.0;
+                               }
+                       }
+                       part{
+                               name: "qp.base.datetime.swallow";
+                               type:SWALLOW;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       fixed: 0 1;
+                                       rel1 {
+                                               to: "qp.base.rect.datetime";
+                                       }
+                                       rel2 {
+                                               to: "qp.base.rect.datetime";
+                                       }
+                                       align: 0.0 0.0;
+                               }
+                       }
+                       part{
+                               name: "qp.root.swallow";
+                               type:SWALLOW;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 {
+                                               relative: 0.0 1.0;
+                                               to_x: "background";
+                                               to_y: "qp.base.datetime.swallow";
+                                       }
+                                       rel2 {
+                                               relative: 1.0 0.0;
+                                               to_x: "background";
+                                               to_y: "qp.handler.bg";
+                                       }
+                                       align: 0.0 0.0;
+                               }
+                       }
+                       part
+                       {
+                               name: "qp.handler.bg";
+                               type:IMAGE;
+                               scale:1;
+                               description {
+                                       state: "default" 0.0;
+                                       fixed: 0 1;
+                                       min: 0 QP_HANDLE_H;
+                                       rel1 {
+                                               relative: 0.0 1.0;
+                                               to: "background";
+                                       }
+                                       rel2 {
+                                               relative: 1.0 1.0;
+                                               to: "background";
+                                       }
+                                       image {
+                                               normal:"handler_bg.#.png";
+                                       }
+                                       align: 0.0 1.0;
+                                       color_class: "W0113";
+                               }
+                               description {
+                                       state: "pressed" 0.0;
+                                       inherit: "default";
+                                       color_class: "W0113P";
+                               }
+                       }
+
+                       part
+                       {
+                               name: "qp.handler.effect";
+                               type:IMAGE;
+                               scale:1;
+                               description {
+                                       state: "default" 0.0;
+
+                                       rel1 {
+                                               relative: 0.0 0.0;
+                                               to: "qp.handler.bg";
+                                       }
+                                       rel2 {
+                                               relative: 1.0 1.0;
+                                               to: "qp.handler.bg";
+                                       }
+                                       image {
+                                               normal:"handler_bg_ef.#.png";
+                                       }
+                                       align: 0.0 1.0;
+                                       color_class: "AO007L2";
+                               }
+                       }
+
+                       part
+                       {
+                               name: "qp.handler.button";
+                               type:IMAGE;
+                               scale:1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 50 50;
+                                       max: 50 50;
+                                       fixed: 1 1;
+                                       rel1
+                                       {
+                                               relative: 0.5 0.0;
+                                               to: "qp.handler.bg";
+                                       }
+                                       rel2
+                                       {
+                                               relative: 0.5 1.0;
+                                               to: "qp.handler.bg";
+                                       }
+                                       image {
+                                               normal:"handler_btn_02.png";
+                                       }
+
+                                       align: 0.5 0.5;
+                                       color_class: "AO007L1";
+                                       visible: 1;
+                               }
+                               description {
+                                       state: "text.show" 0.0;
+                                       inherit: "default";
+                                       visible: 0;
+                               }
+                               description {
+                                       state: "text.hide" 0.0;
+                                       inherit: "default";
+                                       visible: 1;
+                               }
+                       }
+
+                       part
+                       {
+                               name: "qp.handler.text";
+                               type:TEXT;
+                               scale:1;
+                               description {
+                                       state: "default" 0.0;
+                                       fixed: 0 1;
+                                       min: 0 QP_HANDLE_H;
+                                       align: 0.5 0.5;
+                                       rel1 {
+                                               relative: 0.0 0.0;
+                                               to: "qp.handler.bg";
+                                       }
+                                       rel2 {
+                                               relative: 1.0 1.0;
+                                               to: "qp.handler.bg";
+                                       }
+
+                                       text {
+                                               font : "Tizen:style=Regular";
+                                               size : 25;
+                                               text_class : "Tizen";
+                                       }
+                                       color_class: "AO007L1";
+                                       visible: 1;
+                               }
+                               description
+                               {
+                                       state: "text.show" 0.0;
+                                       inherit: "default";
+                                       visible: 1;
+                               }
+                               description
+                               {
+                                       state: "text.hide" 0.0;
+                                       inherit: "default";
+                                       visible: 0;
+                               }
+                       }
+               }
+
+               programs
+               {
+                       program
+                       {
+                               name: "init.layout";
+                               signal: "load";
+                               source: "";
+                               in: 0.0 0.0;
+                               script{
+                                       init_variables();
+                               }
+                       }
+                       program {
+                               name: "text.show";
+                               signal: "show";
+                               source: "qp.handler.text";
+                               action: STATE_SET "text.show" 0.0;
+                               target: "qp.handler.button";
+                               target: "qp.handler.text";
+                       }
+                       program {
+                               name: "text.hide";
+                               signal: "hide";
+                               source: "qp.handler.text";
+                               action: STATE_SET "text.hide" 0.0;
+                               target: "qp.handler.button";
+                               target: "qp.handler.text";
+                       }
+                       program {
+                               name: "handler.press";
+                               signal: "mouse,down,1";
+                               source: "qp.handler.bg";
+                               action: STATE_SET "pressed" 0.0;
+                               target: "qp.handler.bg";
+                       }
+                       program {
+                               name: "handler.release";
+                               signal: "mouse,up,1";
+                               source: "qp.handler.bg";
+                               action: STATE_SET "default" 0.0;
+                               target: "qp.handler.bg";
+                       }
+               }
+       }
+
+       group {
+               name: "quickpanel/base";
+               parts {
+                       part {
+                               name: "background";
+                               type: SPACER;
+                               scale: 1;
+                               mouse_events: 1;
+                               description {
+                                       state: "default" 0.0;
+                               }
+                               description {
+                                       state: "portrait" 0.0;
+                                       inherit: "default" 0.0;
+                               }
+                               description {
+                                       state: "landscape" 0.0;
+                                       inherit: "default" 0.0;
+                               }
+                       }
+                       part{
+                               name: "qp.base.rect.setting";
+                               type:SPACER;
+                               scale:1;
+                               description {
+                                       state: "default" 0.0;
+                                       fixed: 0 1;
+                                       min: 0 QP_SETTING_H;
+                                       rel1 {
+                                               relative: 0.0 0.0;
+                                               to: "background";
+                                       }
+                                       rel2 {
+                                               relative: 1.0 0.0;
+                                               to: "background";
+                                       }
+                                       align: 0.0 0.0;
+                               }
+                               description {
+                                       state: "show" 0.0;
+                                       inherit: "default" 0.0;
+                               }
+                               description {
+                                       state: "hide" 0.0;
+                                       inherit: "default" 0.0;
+                                       min: 0 0;
+                                       max: 0 0;
+                               }
+                       }
+                       part{
+                               name: "qp.base.setting.swallow";
+                               type:SWALLOW;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       fixed: 0 1;
+                                       rel1 {
+                                               to: "qp.base.rect.setting";
+                                       }
+                                       rel2 {
+                                               to: "qp.base.rect.setting";
+                                       }
+                                       align: 0.0 0.0;
+                               }
+                       }
+                       part {
+                               name: "background.touch";
+                               type: SWALLOW;
+                               scale: 1;
+                               mouse_events:1;
+                               description {
+                                       state: "default" 0.0;
+                                       fixed: 0 0;
+                                       min: 0 QP_SETTING_SEPERATOR_H;
+                                       rel1 {
+                                               to_y:"qp.base.setting.swallow";
+                                               relative: 0.0 1.0;
+                                       }
+                                       rel2 {
+                                               to_y:"background";
+                                               relative: 1.0 1.0;
+                                       }
+                                       align: 0.0 0.0;
+                               }
+                       }
+                       part {
+                               name: "qp.base.list.swallow";
+                               type: SWALLOW;
+                               scale: 1;
+                               repeat_events: 1;
+                               mouse_events:1;
+                               description {
+                                       state: "default" 0.0;
+                                       fixed: 0 0;
+                                       rel1 {
+                                               to_y:"qp.base.setting.swallow";
+                                               relative: 0.0 1.0;
+                                       }
+                                       rel2 {
+                                               to_y:"background";
+                                               relative: 1.0 1.0;
+                                       }
+                                       align: 0.0 0.0;
+                               }
+                       }
+               }
+               programs {
+                       program{
+                               name: "portrait";
+                               signal: "portrait";
+                               source: "prog";
+                               action: STATE_SET "portrait" 0.0;
+                               target: "background";
+                       }
+                       program{
+                               name: "landscape";
+                               signal: "landscape";
+                               source: "prog";
+                               action: STATE_SET "landscape" 0.0;
+                               target: "background";
+                       }
+                       program {
+                               name: "setting.show";
+                               action: STATE_SET "show" 0.0;
+                               signal: "quickpanel.setting.show";
+                               source: "quickpanel.prog";
+                               target: "qp.base.rect.setting";
+                               target: "qp.base.setting.swallow";
+                       }
+                       program {
+                               name: "setting.hide";
+                               action: STATE_SET "hide" 0.0;
+                               signal: "quickpanel.setting.hide";
+                               source: "quickpanel.prog";
+                               target: "qp.base.rect.setting";
+                               target: "qp.base.setting.swallow";
+                       }
+                       program {
+                               name: "background.touch";
+                               action: SIGNAL_EMIT "close.quickpanel" "";
+                               signal: "mouse,down,1";
+                               source: "background";
+                       }
+               }
+       }
+}
old mode 100755 (executable)
new mode 100644 (file)
index f10b0d2..4e3d3b3
@@ -1,52 +1,58 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ *  Indicator
  *
- * Licensed under the Flora License, Version 1.1 (the "License");
+ * Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.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/
+ * http://www.apache.org/licenses/LICENSE-2.0
  *
  * 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 <stdio.h>
 #include <stdlib.h>
 #include <vconf.h>
-#include <runtime_info.h>
-#include <Ecore_X.h>
+//#include <Ecore_X.h>
 #include <unicode/udat.h>
 #include <unicode/udatpg.h>
 #include <unicode/ustring.h>
+#include <system_settings.h>
 
 #include "common.h"
 #include "indicator.h"
-#include "indicator_ui.h"
+#include "main.h"
 #include "indicator_gui.h"
-#include "indicator_icon_util.h"
-#include "indicator_util.h"
+#include "icon.h"
+#include "util.h"
 #include "modules.h"
+#include "box.h"
+#include "log.h"
 
-#define SYSTEM_RESUME                          "system_wakeup"
+#define SYSTEM_RESUME          "system_wakeup"
 
-#define TIME_FONT_SIZE_24      34
-#define TIME_FONT_SIZE_12      30
-#define TIME_FONT_SIZE_BATTERY 32
-#define TIME_FONT_COLOR                243, 243, 243, 255
+#define TIME_FONT_SIZE_24              ELM_SCALE_SIZE(22)
+#define TIME_FONT_SIZE_12              ELM_SCALE_SIZE(22)
+#define AMPM_FONT_SIZE         ELM_SCALE_SIZE(21)
 
-#define AMPM_FONT_SIZE         24
-#define AMPM_FONT_COLOR                243, 243, 243, 255
+#define TIME_FONT_COLOR                200, 200, 200, 255
+#define AMPM_FONT_COLOR                200, 200, 200, 255
 #define LABEL_STRING           "<font_size=%d>%s" \
-                               "</font_size></font>"
+       "</font_size>"
+#define LABEL_STRING_FONT              "%s</font>"
 
 #define BATTERY_TIMER_INTERVAL         3
 #define BATTERY_TIMER_INTERVAL_CHARGING        30
 
-#define CLOCK_STR_LEN 256
+#define CLOCK_STR_LEN 128
 
 enum {
        INDICATOR_CLOCK_MODE_12H = 0,
@@ -54,37 +60,41 @@ enum {
        INDICATOR_CLOCK_MODE_MAX
 };
 
-static int notifd;
-static int clock_mode = INDICATOR_CLOCK_MODE_12H;
+int clock_mode = INDICATOR_CLOCK_MODE_12H;
+int clock_hour = 0;
+static const char *colon = ":";
+static const char *ratio = "&#x2236;";
+
 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;
+extern Ecore_Timer *clock_timer;
+
+static UDateTimePatternGenerator *_last_generator = NULL;
+static char *_last_locale = 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);
 static int language_changed_cb(void *data);
 static int region_changed_cb(void *data);
 static int wake_up_cb(void *data);
+#ifdef _SUPPORT_SCREEN_READER
+static int register_clock_tts(void *data,int win_type);
+#endif
 
-#define ICON_PRIORITY  INDICATOR_PRIORITY_FIXED6
+#define ICON_PRIORITY  INDICATOR_PRIORITY_FIXED8
 #define MODULE_NAME            "clock"
 
+static void indicator_get_apm_by_region(char* output, void* data);
 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] = {
-{
-       .win_type = INDICATOR_WIN_PORT,
+icon_s sysclock = {
        .type = INDICATOR_TXT_ICON,
        .name = MODULE_NAME,
        .priority = ICON_PRIORITY,
        .always_top = EINA_FALSE,
-       .txt_obj = {0,},
        .img_obj = {0,},
        .obj_exist = EINA_FALSE,
        .exist_in_view = EINA_FALSE,
@@ -93,468 +103,283 @@ Indicator_Icon_Object sysclock[INDICATOR_WIN_MAX] = {
        .lang_changed = NULL,
        .region_changed = region_changed_cb,
        .lang_changed = language_changed_cb,
-       .wake_up = wake_up_cb
-},
+       .wake_up = wake_up_cb,
+};
+
+
+
+void cal_delete_last_generator(void)
 {
-       .win_type = INDICATOR_WIN_LAND,
-       .type = INDICATOR_TXT_ICON,
-       .name = MODULE_NAME,
-       .priority = ICON_PRIORITY,
-       .always_top = EINA_FALSE,
-       .txt_obj = {0,},
-       .img_obj = {0,},
-       .obj_exist = EINA_FALSE,
-       .exist_in_view = EINA_FALSE,
-       .init = register_clock_module,
-       .fini = unregister_clock_module,
-       .lang_changed = NULL,
-       .region_changed = region_changed_cb,
-       .lang_changed = language_changed_cb,
-       .wake_up = wake_up_cb
+       if (_last_locale) {
+               free(_last_locale);
+               _last_locale = NULL;
+       }
+       if (_last_generator) {
+               udatpg_close(_last_generator);
+               _last_generator = NULL;
+       }
 }
-};
 
-static void set_app_state(void* data)
+
+
+static UDateTimePatternGenerator *__cal_get_pattern_generator(const char *locale, UErrorCode *status)
 {
-       int i = 0;
+       if (!_last_generator || !_last_locale || strcmp(locale, _last_locale)) {
+
+               cal_delete_last_generator();
+
+               _last_locale = strdup(locale);
+
+               _last_generator = udatpg_open(locale, status);
 
-       for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
-       {
-               sysclock[i].ad = data;
        }
+       return _last_generator;
 }
 
+
+
+static void set_app_state(void* data)
+{
+       sysclock.ad = data;
+}
+
+
+
 static void indicator_clock_changed_cb(void *data)
 {
-       char time_str[32];
-       char time_buf[128], ampm_buf[128];
-       char buf[CLOCK_STR_LEN];
+       char time_str[CLOCK_STR_LEN] = {0,};
+       char time_buf[CLOCK_STR_LEN] = {0,};
+       char ampm_buf[CLOCK_STR_LEN] = {0,};
+       char ampm_str[CLOCK_STR_LEN] = {0,};
+       char buf[CLOCK_STR_LEN] = {0,};
+       char result[CLOCK_STR_LEN] = {0,};
        char icu_apm[CLOCK_STR_LEN] = {0,};
 
        struct tm *ts = NULL;
        time_t ctime;
+       struct appdata *ad = NULL;
        int len;
        int font_size;
+       int ampm_size = AMPM_FONT_SIZE;
 
-       retif(data == NULL, , "Invalid parameter!");
+       ret_if(!data);
 
-       if(indicator_util_get_update_flag()==0)
-       {
-               DBG("need to update");
-               return;
-       }
+       ad = (struct appdata *)data;
 
-       if (battery_timer != NULL || battery_charging_timer != NULL)
-       {
-               DBG("battery is displaying. ignore clock callback");
-               return;
-       }
+       if (icon_get_update_flag() == 0) return;
 
+       /* Set time */
        ctime = time(NULL);
        ts = localtime(&ctime);
-       if (ts == NULL)
+       if (ts == NULL) {
+               _E("Fail to get localtime !");
                return;
+       }
 
-       if (timer != NULL) {
-               ecore_timer_del(timer);
-               timer = NULL;
+       if (clock_timer != NULL) {
+               ecore_timer_del(clock_timer);
+               clock_timer = NULL;
        }
 
        memset(time_str, 0x00, sizeof(time_str));
+       memset(ampm_str, 0x00, sizeof(ampm_str));
        memset(time_buf, 0x00, sizeof(time_buf));
        memset(ampm_buf, 0x00, sizeof(ampm_buf));
        memset(buf, 0x00, sizeof(buf));
 
-       timer =
-           ecore_timer_add(60 - ts->tm_sec, (void *)indicator_clock_changed_cb,
-                           data);
+       clock_timer = ecore_timer_add(60 - ts->tm_sec, (void *)indicator_clock_changed_cb, data);
+       if(!clock_timer) {
+               _E("Fail to add timer !");
+       }
+
+       indicator_get_apm_by_region(icu_apm,data);
+       indicator_get_time_by_region(time_buf,data);
 
-       indicator_get_time_by_region(icu_apm,data);
 
        if (clock_mode == INDICATOR_CLOCK_MODE_12H) {
                char bf1[32] = { 0, };
                int hour;
+               static int pre_hour = 0;
+               const char *region = NULL;
 
-               if(apm_length>0 && apm_length<=4)
-               {
-                       snprintf(ampm_buf, sizeof(ampm_buf),LABEL_STRING, AMPM_FONT_SIZE,icu_apm);
-               }
-               else
-               {
-                       if (ts->tm_hour >= 0 && ts->tm_hour < 12)
-                               snprintf(ampm_buf, sizeof(ampm_buf),
-                                        LABEL_STRING, AMPM_FONT_SIZE,
-                                        "AM");
-                       else
-                               snprintf(ampm_buf, sizeof(ampm_buf),
-                                        LABEL_STRING, AMPM_FONT_SIZE,
-                                        "PM");
-               }
-
-               strftime(bf1, sizeof(bf1), "%l", ts);
-               hour = atoi(bf1);
-               strftime(bf1, sizeof(bf1), ":%M", ts);
-
-               snprintf(time_str, sizeof(time_str), "%d%s", hour, bf1);
-               font_size = TIME_FONT_SIZE_12;
-               indicator_signal_emit(data,"indicator.clock.ampm","indicator.prog");
-       }
-       else{
-               font_size = TIME_FONT_SIZE_24;
-               strftime(time_str, sizeof(time_str), "%H:%M", ts);
-               indicator_signal_emit(data,"indicator.clock.default","indicator.prog");
-       }
-
-       snprintf(time_buf, sizeof(time_buf), LABEL_STRING, font_size, time_str);
-
-       if(apm_position == 0)
-               len = snprintf(buf, sizeof(buf), "%s%s", ampm_buf, time_buf);
-       else
-               len = snprintf(buf, sizeof(buf), "%s%s", time_buf, ampm_buf);
-
-       if (len < 0) {
-               ERR("Unexpected ERROR!");
-               return;
-       }
-
-       INFO("[CLOCK MODULE] Timer Status : %d Time: %s", timer, buf);
-
-       indicator_part_text_emit(data,"elm.text.clock", buf);
-
-       return;
-}
-
-static void indicator_clock_format_changed_cb(keynode_t *node, void *data)
-{
-       retif(data == NULL, , "Invalid parameter!");
-
-       int r = -1;
-
-       bool is_24hour_enabled = false;
-
-       INFO("[Enter] indicator_clock_format_changed_cb");
-
-       r = runtime_info_get_value_bool(
-                       RUNTIME_INFO_KEY_24HOUR_CLOCK_FORMAT_ENABLED, &is_24hour_enabled);
-
-       if( r==RUNTIME_INFO_ERROR_NONE&&is_24hour_enabled==true)
-       {
-               clock_mode = INDICATOR_CLOCK_MODE_24H;
-       }
-       else
-       {
-               clock_mode = INDICATOR_CLOCK_MODE_12H;
-       }
+               int bRegioncheck = 0;
+               char *lang1 = "it_IT";
 
-       char *timezone = vconf_get_str(VCONFKEY_SETAPPL_TIMEZONE_ID);
-       ICU_set_timezone(timezone);
-       indicator_clock_changed_cb(data);
-       free(timezone);
-}
+               region = vconf_get_str(VCONFKEY_REGIONFORMAT);
+               ret_if(!region);
 
-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 (strncmp(region,lang1,strlen(lang1)) == 0) bRegioncheck = 1;
 
-                       if (battery_timer != NULL) {
-                               ecore_timer_del(battery_timer);
-                               battery_timer = NULL;
+               if (apm_length>=4 || bRegioncheck==1) {
+                       if (ts->tm_hour >= 0 && ts->tm_hour < 12) {
+                               snprintf(ampm_buf, sizeof(ampm_buf),"%s","AM");
+                       } else {
+                               snprintf(ampm_buf, sizeof(ampm_buf),"%s","PM");
                        }
+               } else {
+                       snprintf(ampm_buf, sizeof(ampm_buf),"%s",icu_apm);
+               }
 
-                       if (battery_charging_timer != NULL) {
-                               ecore_timer_del(battery_charging_timer);
-                               battery_charging_timer = NULL;
-                       }
-                       break;
-               default:
-                       break;
-       }
+               strftime(bf1, sizeof(bf1), "%l", ts);
+               hour = atoi(bf1);
+               strftime(bf1, sizeof(bf1), ":%M", ts);
 
-}
+               font_size = TIME_FONT_SIZE_12;
+               clock_hour = hour;
 
-static void indicator_clock_battery_display_cb(void *data)
-{
-       INFO("indicator_clock_battery_display_cb");
+               if ((pre_hour<10 && hour>=10)||(pre_hour>=10 && hour<10)) {
+                       box_update_display(&(ad->win));
+               }
 
-       if (battery_timer != NULL) {
-               ecore_timer_del(battery_timer);
-               battery_timer = NULL;
+               pre_hour = hour;
+       } else {
+               font_size = TIME_FONT_SIZE_24;
        }
 
-       indicator_clock_changed_cb(data);
-}
-
-static void indicator_clock_battery_disp_changed_cb(keynode_t *node, void *data)
-{
-       int status = 0;
-
-       vconf_get_int(VCONFKEY_BATTERY_DISP_STATE,&status);
+       snprintf(time_str, sizeof(time_str), LABEL_STRING, font_size, time_buf);
+       snprintf(ampm_str, sizeof(ampm_str), LABEL_STRING, ampm_size, ampm_buf);
 
-       DBG("indicator_clock_battery_disp_changed_cb(%d)",status);
+       if (clock_mode == INDICATOR_CLOCK_MODE_12H) {
+               if (apm_position == 0) {
+                       len = snprintf(buf, sizeof(buf), "%s %s", ampm_str, time_str);
+               } else {
+                       len = snprintf(buf, sizeof(buf), "%s %s", time_str, ampm_str);
+               }
+       } else {
+               len = snprintf(buf, sizeof(buf), "%s", time_str);
+       }
 
-       if(battery_charging_timer!=NULL)
-       {
-               ERR("30s timer alive");
+       snprintf(result, sizeof(result), LABEL_STRING_FONT, buf);
+       if (len < 0) {
+               _E("Unexpected ERROR!");
                return;
        }
-       if (battery_timer != NULL) {
-               ecore_timer_del(battery_timer);
-               battery_timer = NULL;
-       }
 
-       battery_timer =  ecore_timer_add(BATTERY_TIMER_INTERVAL, (void *)indicator_clock_battery_display_cb,data);
+       _D("[CLOCK MODULE] Timer Status : %d Time: %s", clock_timer, result);
+       util_part_text_emit(data,"elm.text.clock", result);
 
-       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);
-       }
+       return;
 }
 
-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);
-}
 
-static void indicator_clock_charging_now_cb(keynode_t *node, void *data)
+static void _clock_format_changed_cb(keynode_t *node, void *data)
 {
-       int status = 0;
-       int lock_state = 0;
-
-       retif(data == NULL, , "Invalid parameter!");
+       struct appdata *ad = NULL;
+       int mode_24 = 0;
 
-       vconf_get_int(VCONFKEY_IDLE_LOCK_STATE, &lock_state);
-
-       vconf_get_int(VCONFKEY_SYSMAN_BATTERY_CHARGE_NOW, &status);
-
-       battery_charging = status;
+       ret_if(!data);
 
-       DBG("indicator_clock_charging_now_cb(%d)",status);
+       ad = (struct appdata *)data;
 
-       if(lock_state==VCONFKEY_IDLE_LOCK)
+       if (vconf_get_int(VCONFKEY_REGIONFORMAT_TIME1224,&mode_24) < 0)
        {
-               DBG("indicator_clock_charging_now_cb:lock_state(%d)",lock_state);
+               ERR("Error getting VCONFKEY_REGIONFORMAT_TIME1224 value");
                return;
        }
 
-       if(status==1)
+       /* Check Time format. If timeformat have invalid value, Set to 12H */
+       if( mode_24==VCONFKEY_TIME_FORMAT_24)
        {
-               if(battery_charging_first == 0)
+               if(clock_mode == INDICATOR_CLOCK_MODE_12H)
                {
-                       battery_charging_first = 1;
-                       if (battery_charging_timer != NULL)
-                       {
-                               ecore_timer_del(battery_charging_timer);
-                               battery_charging_timer = NULL;
-                       }
-                       battery_charging_timer =  ecore_timer_add(BATTERY_TIMER_INTERVAL_CHARGING, (void *)indicator_clock_battery_charging_stop_cb,data);
-
-                       indicator_clock_display_battery_percentage(data,0);
+                       clock_mode = INDICATOR_CLOCK_MODE_24H;
+                       box_update_display(&(ad->win));
                }
        }
        else
        {
-               battery_charging_first = 0;
-               indicator_clock_battery_charging_stop_cb(data);
+               if(clock_mode==INDICATOR_CLOCK_MODE_24H)
+               {
+                       clock_mode = INDICATOR_CLOCK_MODE_12H;
+                       box_update_display(&(ad->win));
+               }
        }
 
+       char *timezone = util_get_timezone_str();
+       ICU_set_timezone(timezone);
+       indicator_clock_changed_cb(data);
+       if(timezone!=NULL)
+               free(timezone);
 }
 
-static void indicator_clock_battery_capacity_cb(keynode_t *node, void *data)
-{
-       retif(data == NULL, , "Invalid parameter!");
-
-       if(battery_charging_timer!=NULL||battery_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)
+static void indicator_clock_charging_now_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);
+       vconf_get_int(VCONFKEY_SYSMAN_CHARGER_STATUS, &status);
 
-       if(status==VCONFKEY_SYSMAN_USB_DISCONNECTED)
-       {
-               if (battery_charging_timer != NULL)
-               {
-                       ecore_timer_del(battery_charging_timer);
-                       battery_charging_timer = NULL;
-               }
-               indicator_clock_changed_cb(data);
-       }
+       battery_charging = status;
 }
 
-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)
-       {
-               if (battery_charging_timer != NULL)
-               {
-                       ecore_timer_del(battery_charging_timer);
-                       battery_charging_timer = NULL;
-               }
-               battery_charging_timer =  ecore_timer_add(BATTERY_TIMER_INTERVAL_CHARGING, (void *)indicator_clock_battery_charging_stop_cb,data);
-
-               indicator_clock_display_battery_percentage(data,0);
-       }
 
-}
-static void indicator_clock_battery_precentage_setting_cb(keynode_t *node, void *data)
+static int language_changed_cb(void *data)
 {
-       int ret = 0;
-       int status = 0;
+       const char *pa_lang = vconf_get_str(VCONFKEY_LANGSET);
+       DBG("language_changed_cb %s",pa_lang);
+       indicator_clock_changed_cb(data);
+       return OK;
+}
 
-       retif(data == NULL, , "Invalid parameter!");
 
-       ret = vconf_get_bool(VCONFKEY_SETAPPL_BATTERY_PERCENTAGE_BOOL, &status);
-       if (ret != OK)
-       {
-               ERR("Fail to get [%s: %d]",VCONFKEY_SETAPPL_BATTERY_PERCENTAGE_BOOL, ret);
-               return;
-       }
-       if(status==0)
-       {
-               if (battery_charging_timer != NULL) {
-                       ecore_timer_del(battery_charging_timer);
-                       battery_charging_timer = NULL;
-               }
-               if (battery_timer != NULL) {
-                       ecore_timer_del(battery_timer);
-                       battery_timer = NULL;
-               }
-               indicator_clock_changed_cb(data);
-       }
-}
 
-static void indicator_clock_display_battery_percentage(void *data,int win_type )
+static int region_changed_cb(void *data)
 {
-       int ret = FAIL;
-       int status = 0;
-       int battery_capa = 0;
-       char buf[256] = {0,};
-       char temp[256] = {0,};
-       struct appdata *ad = (struct appdata *)data;
+       _clock_format_changed_cb(NULL, data);
+       return OK;
+}
 
-       ret = vconf_get_bool(VCONFKEY_SETAPPL_BATTERY_PERCENTAGE_BOOL, &status);
-       if (ret != OK)
-               ERR("Fail to get [%s: %d]",
-                       VCONFKEY_SETAPPL_BATTERY_PERCENTAGE_BOOL, ret);
 
-       if(status)
-       {
-               ret = vconf_get_int(VCONFKEY_SYSMAN_BATTERY_CAPACITY, &battery_capa);
-               if (ret != OK)
-               {
-                       ERR("Fail to get [VCONFKEY_SYSMAN_BATTERY_CAPACITY:%d]", ret);
-                       return;
-               }
-               if (battery_capa < 0)
-               {
-                       INFO("Invalid Battery Capacity: %d", battery_capa);
-                       return;
-               }
 
-               INFO("Battery Capacity: %d", battery_capa);
+static int wake_up_cb(void *data)
+{
+       indicator_clock_changed_cb(data);
 
-               if (battery_capa > 100)
-                       battery_capa = 100;
+       return OK;
+}
 
-               snprintf(temp, sizeof(temp), "%d%%",battery_capa);
 
-               snprintf(buf, sizeof(buf), LABEL_STRING, TIME_FONT_SIZE_BATTERY, temp);
 
-               INFO("indicator_clock_display_battery_percentage %s", buf);
+/*static void _time_changed(system_settings_key_e key, void *data)
+{
+       DBG("_time_changed");
+       _clock_format_changed_cb(NULL,data);
+}*/
 
-               indicator_part_text_emit_by_win(&(ad->win[win_type]),"elm.text.clock", buf);
 
-       }
 
+static void regionformat_changed(keynode_t *node, void *data)
+{
+       DBG("regionformat_changed");
+       _clock_format_changed_cb(NULL,data);
 }
 
 
-static int language_changed_cb(void *data)
-{
-       DBG("language_changed_cb");
-       indicator_clock_changed_cb(data);
-       return OK;
-}
 
-static int region_changed_cb(void *data)
+static void timezone_int_changed(keynode_t *node, void *data)
 {
-       DBG("region_changed_cb");
-       indicator_clock_format_changed_cb(NULL, data);
-       return OK;
+       DBG("timezone_int_changed");
+       _clock_format_changed_cb(NULL,data);
 }
 
-static int wake_up_cb(void *data)
-{
-       int status = 0;
-       int lock_type = 0;
 
-       INFO("CLOCK wake_up_cb");
-
-       retif(data == NULL, FAIL, "Invalid parameter!");
 
-       vconf_get_int(VCONFKEY_IDLE_LOCK_STATE, &lock_type);
-
-       vconf_get_bool(VCONFKEY_SETAPPL_BATTERY_PERCENTAGE_BOOL, &status);
-
-       DBG("wake_up_cb(%d,%d)",lock_type,status);
+static void timezone_id_changed(keynode_t *node, void *data)
+{
+       char *szTimezone = NULL;
+       szTimezone = vconf_get_str(VCONFKEY_SETAPPL_TIMEZONE_ID);
 
-       if(status == 1)
-       {
-               if(lock_type == VCONFKEY_IDLE_UNLOCK && battery_charging==1)
-               {
-                       indicator_clock_display_battery_percentage(data,0);
-                       return OK;
-               }
-       }
+       DBG("timezone_id_changed %s",szTimezone);
+       _clock_format_changed_cb(NULL,data);
+}
 
-       indicator_clock_changed_cb(data);
 
-       return OK;
-}
 
 static int register_clock_module(void *data)
 {
@@ -564,162 +389,193 @@ static int register_clock_module(void *data)
 
        set_app_state(data);
 
-       ret = vconf_notify_key_changed(VCONFKEY_SYSTEM_TIME_CHANGED,
-                                      indicator_clock_format_changed_cb, data);
-       if (ret != OK) {
-               ERR("Fail: register VCONFKEY_SYSTEM_TIME_CHANGED");
-               r = r | ret;
-       }
-
-       ret = vconf_notify_key_changed(VCONFKEY_REGIONFORMAT_TIME1224,
-                                      indicator_clock_format_changed_cb, data);
-       if (ret != OK) {
-               ERR("Fail: register VCONFKEY_REGIONFORMAT_TIME1224");
-               r = r | ret;
-       }
-
-       ret = vconf_notify_key_changed(VCONFKEY_SETAPPL_TIMEZONE_INT,
-                                      indicator_clock_format_changed_cb, data);
-       if (ret != OK) {
-               ERR("Fail: register VCONFKEY_SETAPPL_TIMEZONE_INT");
-               r = r | ret;
-       }
-
-       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);
+       /*ret = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_TIME_CHANGED, _time_changed, 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);
+       ret = vconf_notify_key_changed(VCONFKEY_REGIONFORMAT_TIME1224, regionformat_changed, 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);
+       ret = vconf_notify_key_changed(VCONFKEY_SETAPPL_TIMEZONE_INT, timezone_int_changed, 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);
+       ret = vconf_notify_key_changed(VCONFKEY_SETAPPL_TIMEZONE_ID, timezone_id_changed, 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);
+       ret = vconf_notify_key_changed(VCONFKEY_REGIONFORMAT, regionformat_changed, data);
        if (ret != OK) {
-               ERR("Failed to register callback!");
                r = r | ret;
        }
-
-       ret = vconf_notify_key_changed(VCONFKEY_SETAPPL_BATTERY_PERCENTAGE_BOOL,
-                                       indicator_clock_battery_precentage_setting_cb, data);
-       if (ret != OK) {
-               ERR("Failed to register callback!");
-               r = r | ret;
-       }
-
-       indicator_clock_format_changed_cb(NULL, data);
+       _clock_format_changed_cb(NULL, data);
+       indicator_clock_charging_now_cb(NULL,data);
 
        return r;
 }
 
+
+
 static int unregister_clock_module(void)
 {
        int ret;
 
-       ret = vconf_ignore_key_changed(VCONFKEY_SYSTEM_TIME_CHANGED,
-                                              indicator_clock_format_changed_cb);
-       if (ret != OK)
-               ERR("Fail: unregister VCONFKEY_SYSTEM_TIME_CHANGED");
+       //ret = system_settings_unset_changed_cb(SYSTEM_SETTINGS_KEY_TIME_CHANGED);
+       ret = ret | vconf_ignore_key_changed(VCONFKEY_REGIONFORMAT_TIME1224, regionformat_changed);
+       ret = ret | vconf_ignore_key_changed(VCONFKEY_SETAPPL_TIMEZONE_INT, timezone_int_changed);
+       ret = ret | vconf_ignore_key_changed(VCONFKEY_SETAPPL_TIMEZONE_ID, timezone_id_changed);
+       ret = ret | vconf_ignore_key_changed(VCONFKEY_REGIONFORMAT, regionformat_changed);
 
-       ret = vconf_ignore_key_changed(VCONFKEY_REGIONFORMAT_TIME1224,
-                                      indicator_clock_format_changed_cb);
-       if (ret != OK)
-               ERR("Fail: unregister VCONFKEY_REGIONFORMAT_TIME1224");
+       if (clock_timer != NULL) {
+               ecore_timer_del(clock_timer);
+               clock_timer = NULL;
+       }
 
-       ret = vconf_ignore_key_changed(VCONFKEY_SETAPPL_TIMEZONE_INT,
-                                      indicator_clock_format_changed_cb);
-       if (ret != OK)
-               ERR("Fail: unregister VCONFKEY_SETAPPL_TIMEZONE_INT");
+       cal_delete_last_generator();
 
-       ret = vconf_ignore_key_changed(VCONFKEY_PM_STATE,
-                                              indicator_clock_pm_state_change_cb);
-       if (ret != OK)
-               ERR("Fail: unregister VCONFKEY_PM_STATE");
+       return ret;
+}
 
-       ret = vconf_ignore_key_changed(VCONFKEY_BATTERY_DISP_STATE,
-                                             indicator_clock_battery_disp_changed_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_CAPACITY");
 
-       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");
+static inline char *_extend_heap(char *buffer, int *sz, int incsz)
+{
+       char *tmp;
 
-       ret = vconf_ignore_key_changed(VCONFKEY_SYSMAN_USB_STATUS,
-                                              indicator_clock_usb_cb);
-       if (ret != OK)
-               ERR("Fail: unregister VCONFKEY_SYSMAN_BATTERY_CHARGE_NOW");
+       *sz += incsz;
+       tmp = realloc(buffer, *sz);
+       if (!tmp) {
+               ERR("Heap");
+               return NULL;
+       }
 
+       return tmp;
+}
 
-       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");
 
-       ret = vconf_ignore_key_changed(VCONFKEY_SETAPPL_BATTERY_PERCENTAGE_BOOL,
-                                              indicator_clock_battery_precentage_setting_cb);
-       if (ret != OK)
-               ERR("Fail: unregister VCONFKEY_SYSMAN_BATTERY_CHARGE_NOW");
 
-       if (timer != NULL) {
-               ecore_timer_del(timer);
-               timer = NULL;
-       }
+static char *_string_replacer(const char *src, const char *pattern, const char *replace)
+{
+       const char *ptr;
+       char *tmp = NULL;
+       char *ret = NULL;
+       int idx = 0;
+       int out_idx = 0;
+       int out_sz = 0;
+       enum {
+               STATE_START,
+               STATE_FIND,
+               STATE_CHECK,
+               STATE_END,
+       } state;
+
+       if (!src || !pattern)
+               return NULL;
 
-       if (battery_timer != NULL) {
-               ecore_timer_del(battery_timer);
-               battery_timer = NULL;
+       out_sz = strlen(src);
+       ret = strdup(src);
+       if (!ret) {
+               ERR("Heap");
+               return NULL;
        }
 
-       if (battery_charging_timer != NULL) {
-               ecore_timer_del(battery_charging_timer);
-               battery_charging_timer = NULL;
+       out_idx = 0;
+       for (state = STATE_START, ptr = src; state != STATE_END; ptr++) {
+               switch (state) {
+               case STATE_START:
+                       if (*ptr == '\0') {
+                               state = STATE_END;
+                       } else if (!isblank(*ptr)) {
+                               state = STATE_FIND;
+                               ptr--;
+                       }
+                       break;
+               case STATE_FIND:
+                       if (*ptr == '\0') {
+                               state = STATE_END;
+                       } else if (*ptr == *pattern) {
+                               state = STATE_CHECK;
+                               ptr--;
+                               idx = 0;
+                       } else {
+                               ret[out_idx] = *ptr;
+                               out_idx++;
+                               if (out_idx == out_sz) {
+                                       tmp = _extend_heap(ret, &out_sz, strlen(replace) + 1);
+                                       if (!tmp) {
+                                               free(ret);
+                                               return NULL;
+                                       }
+                                       ret = tmp;
+                               }
+                       }
+                       break;
+               case STATE_CHECK:
+                       if (!pattern[idx]) {
+                               /*!
+     * If there is no space for copying the replacement,
+     * Extend size of the return buffer.
+     */
+                               if (out_sz - out_idx < strlen(replace) + 1) {
+                                       tmp = _extend_heap(ret, &out_sz, strlen(replace) + 1);
+                                       if (!tmp) {
+                                               free(ret);
+                                               return NULL;
+                                       }
+                                       ret = tmp;
+                               }
+
+                               strcpy(ret + out_idx, replace);
+                               out_idx += strlen(replace);
+
+                               state = STATE_FIND;
+                               ptr--;
+                       } else if (*ptr != pattern[idx]) {
+                               ptr -= idx;
+
+                               /* Copy the first matched character */
+                               ret[out_idx] = *ptr;
+                               out_idx++;
+                               if (out_idx == out_sz) {
+                                       tmp = _extend_heap(ret, &out_sz, strlen(replace) + 1);
+                                       if (!tmp) {
+                                               free(ret);
+                                               return NULL;
+                                       }
+
+                                       ret = tmp;
+                               }
+
+                               state = STATE_FIND;
+                       } else {
+                               idx++;
+                       }
+                       break;
+               default:
+                       break;
+               }
        }
 
-       return OK;
+       ret[out_idx] = '\0';
+       return ret;
 }
 
-void indicator_get_time_by_region(char* output,void *data)
+
+
+void indicator_get_apm_by_region(char* output,void *data)
 {
        retif(data == NULL, , "Data parameter is NULL");
        retif(output == NULL, , "output parameter is NULL");
 
 
        UChar customSkeleton[CLOCK_STR_LEN] = { 0, };
+       UChar u_timezone[64] = {0,};
+
        UErrorCode status = U_ZERO_ERROR;
        UDateFormat *formatter = NULL;
 
@@ -733,14 +589,31 @@ void indicator_get_time_by_region(char* output,void *data)
 
        char *time_skeleton = "hhmm";
 
+       char* timezone_id = NULL;
+       timezone_id = util_get_timezone_str();
+
        char *locale = vconf_get_str(VCONFKEY_REGIONFORMAT);
-       if (locale == NULL) {
-               DBG("[Error] get value of VCONFKEY_REGIONFORMAT fail.");
+       if(locale == NULL)
+       {
+               ERR("[Error] get value of fail.");
+               free(timezone_id);
+               return;
+       }
+
+       /* Remove ".UTF-8" in locale */
+       char locale_tmp[32] = {0,};
+       strncpy(locale_tmp, locale, sizeof(locale_tmp)-1);
+       char *p = util_safe_str(locale_tmp, ".UTF-8");
+       if (p) {
+               *p = 0;
        }
 
        u_uastrncpy(customSkeleton, time_skeleton, strlen(time_skeleton));
 
-       pattern_generator = udatpg_open(locale, &status);
+       pattern_generator = __cal_get_pattern_generator (locale_tmp, &status);
+       if (pattern_generator == NULL) {
+               return ;
+       }
 
        int32_t bestPatternCapacity = (int32_t) (sizeof(bestPattern) / sizeof((bestPattern)[0]));
        (void)udatpg_getBestPattern(pattern_generator, customSkeleton,
@@ -750,6 +623,8 @@ void indicator_get_time_by_region(char* output,void *data)
        u_austrcpy(bestPatternString, bestPattern);
        u_uastrcpy(bestPattern,"a");
 
+       DBG("TimeZone is %s", timezone_id);
+
        if(bestPatternString[0] == 'a')
        {
                apm_position = 0;
@@ -760,17 +635,25 @@ void indicator_get_time_by_region(char* output,void *data)
        }
 
        UDate date = ucal_getNow();
-       formatter = udat_open(UDAT_IGNORE, UDAT_IGNORE, locale, NULL, -1, bestPattern, -1, &status);
+       if(timezone_id)
+       {
+               u_uastrncpy(u_timezone, timezone_id, sizeof(u_timezone));
+               formatter = udat_open(UDAT_IGNORE, UDAT_IGNORE, locale_tmp, u_timezone, -1, bestPattern, -1, &status);
+       }
+       else
+       {
+               formatter = udat_open(UDAT_IGNORE, UDAT_IGNORE, locale_tmp, NULL, -1, bestPattern, -1, &status);
+       }
+       if (formatter == NULL) {
+               return ;
+       }
+
        int32_t formattedCapacity = (int32_t) (sizeof(formatted) / sizeof((formatted)[0]));
        (void)udat_format(formatter, date, formatted, formattedCapacity, NULL, &status);
        u_austrcpy(formattedString, formatted);
 
-       DBG("DATE & TIME is %s %s %d %s", locale, formattedString, u_strlen(formatted), bestPatternString);
-
        apm_length = u_strlen(formatted);
 
-       udatpg_close(pattern_generator);
-
        udat_close(formatter);
 
        if(strlen(formattedString)<CLOCK_STR_LEN)
@@ -785,6 +668,134 @@ void indicator_get_time_by_region(char* output,void *data)
        return;
 }
 
+
+
+void indicator_get_time_by_region(char* output,void *data)
+{
+       retif(data == NULL, , "Data parameter is NULL");
+       retif(output == NULL, , "output parameter is NULL");
+
+       UChar customSkeleton[CLOCK_STR_LEN] = { 0, };
+       UChar u_timezone[64] = {0,};
+
+       UErrorCode status = U_ZERO_ERROR;
+       UDateFormat *formatter = NULL;
+
+       UChar bestPattern[CLOCK_STR_LEN] = { 0, };
+       UChar formatted[CLOCK_STR_LEN] = { 0, };
+
+       char bestPatternString[CLOCK_STR_LEN] = { 0, };
+       char formattedString[CLOCK_STR_LEN] = { 0, };
+       char* convertFormattedString = NULL;
+
+       char time_skeleton[20] = {0,};
+       UDateTimePatternGenerator *pattern_generator = NULL;
+
+       if(clock_mode == INDICATOR_CLOCK_MODE_12H)
+       {
+               strcpy(time_skeleton,"hm");
+       }
+       else
+       {
+               strcpy(time_skeleton,"Hm");
+       }
+       char* timezone_id = NULL;
+       timezone_id = util_get_timezone_str();
+
+       char *locale = vconf_get_str(VCONFKEY_REGIONFORMAT);
+       if(locale == NULL)
+       {
+               ERR("[Error] get value of fail.");
+               free(timezone_id);
+               return;
+       }
+
+       /* Remove ".UTF-8" in locale */
+       char locale_tmp[32] = {0,};
+       strncpy(locale_tmp, locale, sizeof(locale_tmp)-1);
+       char *p = util_safe_str(locale_tmp, ".UTF-8");
+       if (p) {
+               *p = 0;
+       }
+
+       u_uastrncpy(customSkeleton, time_skeleton, strlen(time_skeleton));
+
+       pattern_generator = __cal_get_pattern_generator (locale_tmp, &status);
+       if (pattern_generator == NULL) {
+               return ;
+       }
+
+       int32_t bestPatternCapacity = (int32_t) (sizeof(bestPattern) / sizeof((bestPattern)[0]));
+       (void)udatpg_getBestPattern(pattern_generator, customSkeleton,
+                                   u_strlen(customSkeleton), bestPattern,
+                                   bestPatternCapacity, &status);
+
+       char a_best_pattern[64] = {0,};
+       u_austrcpy(a_best_pattern, bestPattern);
+       char *a_best_pattern_fixed = strtok(a_best_pattern, "a");
+       a_best_pattern_fixed = strtok(a_best_pattern_fixed, " ");
+       if(a_best_pattern_fixed)
+       {
+               u_uastrcpy(bestPattern, a_best_pattern_fixed);
+       }
+
+       u_austrcpy(bestPatternString, bestPattern);
+
+       DBG("BestPattern is %s", bestPatternString);
+       DBG("TimeZone is %s", timezone_id);
+
+       UDate date = ucal_getNow();
+       if(timezone_id)
+       {
+               u_uastrncpy(u_timezone, timezone_id, sizeof(u_timezone));
+               formatter = udat_open(UDAT_IGNORE, UDAT_IGNORE, locale_tmp, u_timezone, -1, bestPattern, -1, &status);
+       }
+       else
+       {
+               formatter = udat_open(UDAT_IGNORE, UDAT_IGNORE, locale_tmp, NULL, -1, bestPattern, -1, &status);
+       }
+
+       if (formatter == NULL) {
+               return;
+       }
+       int32_t formattedCapacity = (int32_t) (sizeof(formatted) / sizeof((formatted)[0]));
+       (void)udat_format(formatter, date, formatted, formattedCapacity, NULL, &status);
+       u_austrcpy(formattedString, formatted);
+       DBG("DATE & TIME is %s %s %d %s", locale_tmp, formattedString, u_strlen(formatted), bestPatternString);
+
+       DBG("24H :: Before change %s", formattedString);
+       convertFormattedString = _string_replacer(formattedString, colon, ratio);
+       DBG("24H :: After change %s", convertFormattedString);
+
+       if(convertFormattedString == NULL)
+       {
+               DBG("_string_replacer return NULL");
+               udat_close(formatter);
+               return;
+       }
+
+       udat_close(formatter);
+
+       if(strlen(convertFormattedString)<CLOCK_STR_LEN)
+       {
+               strncpy(output,convertFormattedString,strlen(convertFormattedString));
+       }
+       else
+       {
+               strncpy(output,convertFormattedString,CLOCK_STR_LEN-1);
+       }
+
+       if(convertFormattedString != NULL)
+       {
+               free(convertFormattedString);
+               convertFormattedString = NULL;
+       }
+
+       return;
+}
+
+
+
 static UChar *uastrcpy(const char *chars)
 {
        int len = 0;
@@ -797,6 +808,8 @@ static UChar *uastrcpy(const char *chars)
        return str;
 }
 
+
+
 static void ICU_set_timezone(const char *timezone)
 {
        if(timezone == NULL)
@@ -805,13 +818,11 @@ static void ICU_set_timezone(const char *timezone)
                return;
        }
 
-       DBG("ICU_set_timezone = %s ", timezone);
        UErrorCode ec = U_ZERO_ERROR;
        UChar *str = uastrcpy(timezone);
 
        ucal_setDefaultTimeZone(str, &ec);
        if (U_SUCCESS(ec)) {
-               DBG("ucal_setDefaultTimeZone() SUCCESS ");
        } else {
                DBG("ucal_setDefaultTimeZone() FAILED : %s ",
                              u_errorName(ec));
@@ -820,3 +831,130 @@ static void ICU_set_timezone(const char *timezone)
 }
 
 
+
+#ifdef _SUPPORT_SCREEN_READER
+static char *_access_info_cb(void *data, Evas_Object *obj)
+{
+       Evas_Object *item = data;
+       char *tmp = NULL;
+       char time_str[32];
+       char time_buf[128], ampm_buf[128];
+       char buf[CLOCK_STR_LEN];
+       char buf1[CLOCK_STR_LEN];
+       int ret = 0;
+       int battery_capa = 0;
+       int hour = 0;
+       int minute = 0;
+       char strHour[128] = { 0, };
+       char strMin[128] = { 0, };
+
+
+       struct tm *ts = NULL;
+       time_t ctime;
+       int len;
+
+       retif(data == NULL,NULL, "Invalid parameter!");
+       char *timezone = util_get_timezone_str();
+       ICU_set_timezone(timezone);
+       if(timezone!=NULL)
+               free(timezone);
+
+       /* Set time */
+       ctime = time(NULL);
+       ts = localtime(&ctime);
+       if (ts == NULL)
+               return NULL;
+
+       memset(time_str, 0x00, sizeof(time_str));
+       memset(time_buf, 0x00, sizeof(time_buf));
+       memset(ampm_buf, 0x00, sizeof(ampm_buf));
+       memset(buf, 0x00, sizeof(buf));
+       memset(buf1, 0x00, sizeof(buf1));
+
+       if (clock_mode == INDICATOR_CLOCK_MODE_12H) {
+               char bf1[32] = { 0, };
+
+               if (ts->tm_hour >= 0 && ts->tm_hour < 12)
+                       strncpy(ampm_buf, _("IDS_IDLE_OPT_AM_ABB"),sizeof(ampm_buf)-1);
+               else
+                       strncpy(ampm_buf, _("IDS_IDLE_OPT_PM_ABB"),sizeof(ampm_buf)-1);
+
+               strftime(bf1, sizeof(bf1), "%l", ts);
+               hour = atoi(bf1);
+               strftime(bf1, sizeof(bf1), "%M", ts);
+               minute = atoi(bf1);
+       }
+       else{
+               char bf1[32] = { 0, };
+
+               strftime(bf1, sizeof(bf1), "%H", ts);
+               hour = atoi(bf1);
+               strftime(bf1, sizeof(bf1), "%M", ts);
+               minute = atoi(bf1);
+       }
+
+       if(hour ==1)
+       {
+               strncpy(strHour, _("IDS_COM_BODY_1_HOUR"),sizeof(strHour));
+       }
+       else
+       {
+               snprintf(strHour, sizeof(strHour), _("IDS_COM_POP_PD_HOURS"),hour);
+       }
+
+       if(minute ==1)
+       {
+               strncpy(strMin, _("IDS_COM_BODY_1_MINUTE"),sizeof(strMin));
+       }
+       else
+       {
+               snprintf(strMin, sizeof(strMin), _("IDS_COM_BODY_PD_MINUTES"),minute);
+       }
+
+       if(clock_mode == INDICATOR_CLOCK_MODE_12H)
+               snprintf(time_str, sizeof(time_str), "%s, %s, %s", strHour, strMin,ampm_buf);
+       else
+               snprintf(time_str, sizeof(time_str), "%s, %s", strHour, strMin);
+
+
+       ret = vconf_get_int(VCONFKEY_SYSMAN_BATTERY_CAPACITY, &battery_capa);
+       if (ret != OK)
+       {
+               return NULL;
+       }
+       if (battery_capa < 0)
+       {
+               return NULL;
+       }
+
+       if (battery_capa > 100)
+               battery_capa = 100;
+       snprintf(buf1, sizeof(buf1), _("IDS_IDLE_BODY_PD_PERCENT_OF_BATTERY_POWER_REMAINING"), battery_capa);
+
+       snprintf(buf, sizeof(buf), "%s, %s, %s", time_str, buf1, _("IDS_IDLE_BODY_STATUS_BAR_ITEM"));
+
+       DBG("buf: %s", buf);
+       tmp = strdup(buf);
+       if (!tmp) return NULL;
+       return tmp;
+}
+
+
+
+static int register_clock_tts(void *data,int win_type)
+{
+       int r = 0, ret = -1;
+
+       retif(data == NULL, FAIL, "Invalid parameter!");
+
+       Evas_Object *to = NULL;
+       Evas_Object *ao = NULL;
+       struct appdata *ad = data;
+
+       to = (Evas_Object *) edje_object_part_object_get(elm_layout_edje_get(ad->win[win_type].layout), "elm.rect.clock.access");
+       ao = util_access_object_register(to, ad->win[win_type].layout);
+       util_access_object_info_cb_set(ao,ELM_ACCESS_INFO,_access_info_cb,data);
+       return 0;
+}
+#endif
+
old mode 100755 (executable)
new mode 100644 (file)
index 351264c..8591a04
@@ -1,68 +1,70 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ *  Indicator
  *
- * Licensed under the Flora License, Version 1.1 (the "License");
+ * Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.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/
+ * http://www.apache.org/licenses/LICENSE-2.0
  *
  * 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 <stdio.h>
 #include <stdlib.h>
+#include <tapi_common.h>
+#include <TelNetwork.h>
+#include <TelSim.h>
+#include <ITapiNetwork.h>
+#include <TelCall.h>
 #include <vconf.h>
+#include <wifi.h>
+
 #include "common.h"
 #include "indicator.h"
-#include "indicator_icon_util.h"
+#include "icon.h"
 #include "modules.h"
-#include "indicator_ui.h"
+#include "main.h"
+#include "util.h"
+#include "box.h"
+#include "log.h"
+#include "network/rssi.h"
 
-#define ICON_PRIORITY  INDICATOR_PRIORITY_FIXED2
+#define ICON_PRIORITY  INDICATOR_PRIORITY_FIXED5
 #define MODULE_NAME            "connection"
 #define TIMER_INTERVAL 0.3
+#define TAPI_HANDLE_MAX  2
 
 static int register_conn_module(void *data);
 static int unregister_conn_module(void);
 static int wake_up_cb(void *data);
+static int transfer_state = -1;
+int isBTIconShowing = 0;
+extern TapiHandle *tapi_handle[TAPI_HANDLE_MAX+1];
+static int updated_while_lcd_off = 0;
+static int prevIndex = -1;
 
-Indicator_Icon_Object conn[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,
-       .area = INDICATOR_ICON_AREA_FIXED,
-       .txt_obj = {0,},
-       .img_obj = {0,},
-       .obj_exist = EINA_FALSE,
-       .init = register_conn_module,
-       .fini = unregister_conn_module,
-       .wake_up = wake_up_cb
-},
-{
-       .win_type = INDICATOR_WIN_LAND,
+icon_s conn = {
        .type = INDICATOR_IMG_ICON,
        .name = MODULE_NAME,
        .priority = ICON_PRIORITY,
        .always_top = EINA_FALSE,
        .exist_in_view = EINA_FALSE,
        .area = INDICATOR_ICON_AREA_FIXED,
-       .txt_obj = {0,},
        .img_obj = {0,},
        .obj_exist = EINA_FALSE,
        .init = register_conn_module,
        .fini = unregister_conn_module,
        .wake_up = wake_up_cb
-}
 };
 
 enum {
@@ -70,74 +72,287 @@ enum {
        LEVEL_2G = LEVEL_MIN,
        LEVEL_EDGE,
        LEVEL_3G,
-       LEVEL_HS,
+       LEVEL_H,
+       LEVEL_H_PLUS,
        LEVEL_3G_PLUS,
-       LEVEL_CDMA,
-       LEVEL_GPRS,
-       LEVEL_EVDO,
-       LEVEL_CONN,
-       LEVEL_CONN03,
-       LEVEL_CONN_1X,
        LEVEL_LTE,
+       LEVEL_4G,
+       LEVEL_BT_TETHERING,
        LEVEL_MAX
 };
 
 static const char *icon_path[LEVEL_MAX] = {
-       [LEVEL_2G] = "Connection/B03_connection_GSM.png",
-       [LEVEL_EDGE] = "Connection/B03_connection02.png",
+       [LEVEL_2G] = "Connection/B03_connection_G.png",
+       [LEVEL_EDGE] = "Connection/B03_connection_E.png",
        [LEVEL_3G] = "Connection/B03_connection_3G.png",
-       [LEVEL_HS] = "Connection/B03_connection_Highspeed.png",
+       [LEVEL_H] = "Connection/B03_connection_H.png",
+       [LEVEL_H_PLUS] = "Connection/B03_connection_H+.png",
        [LEVEL_3G_PLUS] = "Connection/B03_connection_3G+.png",
-       [LEVEL_CDMA] = "Connection/B03_connection_CDMA.png",
-       [LEVEL_GPRS] = "Connection/B03_connection_GPRS.png",
-       [LEVEL_EVDO] = "Connection/B03_connection_EVDO.png",
-       [LEVEL_CONN] = "Connection/B03_connection.png",
-       [LEVEL_CONN03] = "Connection/B03_connection03.png",
-       [LEVEL_CONN_1X] = "Connection/B03_connection_1x.png",
        [LEVEL_LTE] = "Connection/B03_connection_LTE.png",
+       [LEVEL_4G] = "Connection/B03_connection_4G.png",
+       [LEVEL_BT_TETHERING] = "Bluetooth, NFC, GPS/B03_BT_tethering_network.png"
 };
 
-static Eina_Bool dnet_transferring = EINA_FALSE;
-static int updated_while_lcd_off = 0;
 
 
 static void set_app_state(void* data)
 {
-       int i = 0;
+       conn.ad = data;
+}
+
+
 
-       for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
+static void show_connection_transfer_icon(void* data)
+{
+       int state = 0;
+       int ret = 0;
+       int type = -1;
+
+       ret = vconf_get_int(VCONFKEY_PACKET_STATE, &state);
+       if (ret == OK) {
+               switch (state) {
+               case VCONFKEY_PACKET_RX:
+                       type = TRANSFER_DOWN;
+                       break;
+               case VCONFKEY_PACKET_TX:
+                       type = TRANSFER_UP;
+                       break;
+               case VCONFKEY_PACKET_RXTX:
+                       type = TRANSFER_UPDOWN;
+                       break;
+               case VCONFKEY_PACKET_NORMAL:
+                       type = TRANSFER_NONE;
+                       break;
+               default:
+                       type = -1;
+                       break;
+               }
+       }
+
+       if(transfer_state==type)
        {
-               conn[i].ad = data;
+               DBG("same transfer state");
+               return;
+       }
+
+       DBG("type %d",type);
+       transfer_state = type;
+       switch (type)
+       {
+               case TRANSFER_NONE:
+                       util_signal_emit(conn.ad,"indicator.connection.updown.none","indicator.prog");
+                       break;
+               case TRANSFER_DOWN:
+                       util_signal_emit(conn.ad,"indicator.connection.updown.download","indicator.prog");
+                       break;
+               case TRANSFER_UP:
+                       util_signal_emit(conn.ad,"indicator.connection.updown.upload","indicator.prog");
+                       break;
+               case TRANSFER_UPDOWN:
+                       util_signal_emit(conn.ad,"indicator.connection.updown.updownload","indicator.prog");
+                       break;
+               default:
+                       break;
+
        }
 }
 
+
+
 static void show_image_icon(int type)
 {
-       int i = 0;
-       for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
+       if(prevIndex == type)
        {
-               conn[i].img_obj.data = icon_path[type];
-               indicator_util_icon_show(&conn[i]);
+               return;
        }
+
+       conn.img_obj.data = icon_path[type];
+       icon_show(&conn);
+
+       prevIndex = type;
+       util_signal_emit(conn.ad,"indicator.connection.show","indicator.prog");
 }
+
+
+
 static void hide_image_icon(void)
 {
-       int i = 0;
-       for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
+       transfer_state = -1;
+
+       icon_hide(&conn);
+
+       util_signal_emit(conn.ad,"indicator.connection.hide","indicator.prog");
+       util_signal_emit(conn.ad,"indicator.connection.updown.hide","indicator.prog");
+
+       prevIndex = -1;
+}
+
+
+
+static void _show_proper_icon(int svc_type,int ps_type, void *data)
+{
+       retif(data == NULL, , "Invalid parameter!");
+
+       if (ps_type != TAPI_NETWORK_PS_TYPE_UNKNOWN) {
+               switch (ps_type) {
+               case TAPI_NETWORK_PS_TYPE_HSDPA:
+               case TAPI_NETWORK_PS_TYPE_HSUPA:
+               case TAPI_NETWORK_PS_TYPE_HSPA:
+                       show_image_icon(LEVEL_H);
+                       show_connection_transfer_icon(data);
+                       break;
+               case TAPI_NETWORK_PS_TYPE_HSPAP:
+                       show_image_icon(LEVEL_H_PLUS);
+                       show_connection_transfer_icon(data);
+                       break;
+               default:
+                       hide_image_icon();
+                       break;
+               }
+       } else {
+               switch (svc_type) {
+               case TAPI_NETWORK_SERVICE_TYPE_UNKNOWN:
+               case TAPI_NETWORK_SERVICE_TYPE_NO_SERVICE:
+               case TAPI_NETWORK_SERVICE_TYPE_EMERGENCY:
+               case TAPI_NETWORK_SERVICE_TYPE_SEARCH:
+                       hide_image_icon();
+                       break;
+               case TAPI_NETWORK_SERVICE_TYPE_2G:
+               case TAPI_NETWORK_SERVICE_TYPE_2_5G:
+                       show_image_icon(LEVEL_2G);
+                       show_connection_transfer_icon(data);
+                       break;
+               case TAPI_NETWORK_SERVICE_TYPE_2_5G_EDGE:
+                       show_image_icon(LEVEL_EDGE);
+                       show_connection_transfer_icon(data);
+                       break;
+               case TAPI_NETWORK_SERVICE_TYPE_3G:
+                       show_image_icon(LEVEL_3G);
+                       show_connection_transfer_icon(data);
+                       break;
+               case TAPI_NETWORK_SERVICE_TYPE_HSDPA:
+                       show_image_icon(LEVEL_H_PLUS);
+                       show_connection_transfer_icon(data);
+                       break;
+               case TAPI_NETWORK_SERVICE_TYPE_LTE:
+                       show_image_icon(LEVEL_LTE);
+                       show_connection_transfer_icon(data);
+                       break;
+               default:
+                       hide_image_icon();
+                       break;
+               }
+       }
+}
+
+
+
+static void on_noti(TapiHandle *handle_obj, const char *noti_id, void *data, void *user_data)
+{
+       DBG("On noti function");
+       TelNetworkDefaultDataSubs_t default_subscription = TAPI_NETWORK_DEFAULT_DATA_SUBS_UNKNOWN;
+       int ret = 0;
+       int val = 0;
+       int ps_type = 0;
+       struct appdata *ad = (struct appdata *)user_data;
+       retif(user_data == NULL, , "invalid parameter!!");
+
+       ret = wifi_get_connection_state(&val);
+       DBG("WIFI Status : %d", val);
+       if (ret == WIFI_ERROR_NONE && val == WIFI_CONNECTION_STATE_CONNECTED) {
+               DBG("WIFI connected, so hide connection icon");
+               hide_image_icon();
+               return;
+       }
+
+       ret = vconf_get_bool(VCONFKEY_TELEPHONY_FLIGHT_MODE, &val);
+       if (ret == OK && val == TRUE) {
+               DBG("FLIGHT MODE ON");
+               hide_image_icon();
+               return;
+       }
+
+       ret = vconf_get_int(VCONFKEY_NETWORK_STATUS, &val);
+       if (ret == OK && val == VCONFKEY_NETWORK_BLUETOOTH) {
+               DBG("bluetooth tethering On");
+               isBTIconShowing = 1;
+               show_image_icon(LEVEL_BT_TETHERING);
+               util_signal_emit(conn.ad,"indicator.connection.updown.hide","indicator.prog");
+               return;
+       }
+       else if (ret == OK && val != VCONFKEY_NETWORK_BLUETOOTH) {
+               DBG("bluetooth tethering Off");
+               if(isBTIconShowing == 1)
+               {
+                       isBTIconShowing = 0;
+                       hide_image_icon();
+               }
+       }
+
+       int index = rssi_get_sim_number(handle_obj);
+       default_subscription = ad->tel_info[index].prefered_data;
+
+       if(default_subscription == TAPI_NETWORK_DEFAULT_DATA_SUBS_UNKNOWN)
        {
-               indicator_util_icon_hide(&conn[i]);
+               hide_image_icon();
+       }
+       else if(default_subscription == TAPI_NETWORK_DEFAULT_DATA_SUBS_SIM1)
+       {
+               int ret = 0;
+               ret = vconf_get_int(VCONFKEY_DNET_STATE, &val);
+               if (ret == OK) {
+                       if (val == VCONFKEY_DNET_OFF)
+                       {
+                               DBG("CONNECTION DNET Status: %d", val);
+                               hide_image_icon();
+                               return;
+                       }
+               }
+
+               val = ad->tel_info[0].network_service_type;
+               ps_type = ad->tel_info[0].network_ps_type;
+
+               DBG("TAPI_NETWORK_DEFAULT_DATA_SUBS_SIM1 %d",val);
+               DBG("TAPI_NETWORK_DEFAULT_DATA_SUBS_SIM1 %d",ps_type);
+               _show_proper_icon(val,ps_type, user_data);
+       }
+       else
+       {
+               int ret = 0;
+//             ret = vconf_get_int(VCONFKEY_DNET_STATE2, &val);
+               if (ret == OK) {
+                       if (val == VCONFKEY_DNET_OFF)
+                       {
+                               DBG("CONNECTION DNET Status: %d", val);
+                               hide_image_icon();
+                               return;
+                       }
+               }
+
+               val = ad->tel_info[1].network_service_type;
+               ps_type = ad->tel_info[1].network_ps_type;
+
+               DBG("TAPI_NETWORK_DEFAULT_DATA_SUBS_SIM2 %d",val);
+               DBG("TAPI_NETWORK_DEFAULT_DATA_SUBS_SIM2 %d",ps_type);
+               _show_proper_icon(val,ps_type, user_data);
        }
 }
 
 
+
 static void indicator_conn_change_cb(keynode_t *node, void *data)
 {
+       struct appdata* ad = NULL;
        int svc_type = VCONFKEY_TELEPHONY_SVCTYPE_NONE;
        int status = 0;
        int ret = 0;
        int ps_type = VCONFKEY_TELEPHONY_PSTYPE_NONE;
 
-       if(indicator_util_get_update_flag()==0)
+       ret_if(!data);
+
+       ad = (struct appdata*)data;
+
+       if(icon_get_update_flag()==0)
        {
                updated_while_lcd_off = 1;
                DBG("need to update %d",updated_while_lcd_off);
@@ -147,140 +362,400 @@ static void indicator_conn_change_cb(keynode_t *node, void *data)
 
        retif(data == NULL, , "Invalid parameter!");
 
-       ret = vconf_get_int(VCONFKEY_WIFI_STATE, &status);
-       if (ret == OK) {
+       /* check wifi status */
+       ret = wifi_get_connection_state(&status);
+       if (ret == WIFI_ERROR_NONE) {
                INFO("CONNECTION WiFi Status: %d", status);
-               if ((status == VCONFKEY_WIFI_CONNECTED)) {
-                       hide_image_icon();
-                       if (dnet_transferring == EINA_TRUE) {
-                               dnet_transferring = EINA_FALSE;
+
+               if ((status == WIFI_CONNECTION_STATE_CONNECTED))
+               {
+                       int mms_state = 0;
+                       vconf_get_int(VCONFKEY_DNET_STATE, &mms_state);
+                       box_update_display(&(ad->win));
+
+                       if(mms_state!=VCONFKEY_DNET_SECURE_CONNECTED)
+                       {
+                               hide_image_icon();
+                               return;
                        }
-                       return;
                }
        }
 
+       /* get dnet status */
        ret = vconf_get_int(VCONFKEY_DNET_STATE, &status);
        if (ret == OK) {
-               INFO("CONNECTION DNET Status: %d", status);
                if (status == VCONFKEY_DNET_OFF)
                {
+                       DBG("CONNECTION DNET Status: %d", status);
                        hide_image_icon();
-                       return;
                }
-       }
-
-       ret = vconf_get_int(VCONFKEY_TELEPHONY_PSTYPE, &ps_type);
-       if (ret == OK)
-       {
-               INFO("Telephony packet service type: %d", ps_type);
-
-               switch (ps_type)
+               else
                {
-               case VCONFKEY_TELEPHONY_PSTYPE_HSDPA:
-               case VCONFKEY_TELEPHONY_PSTYPE_HSUPA:
-               case VCONFKEY_TELEPHONY_PSTYPE_HSPA:
-                       show_image_icon(LEVEL_HS);
-                       return;
-               case VCONFKEY_TELEPHONY_PSTYPE_NONE:
-               default:
-                       break;
+                       ret = vconf_get_int(VCONFKEY_TELEPHONY_PSTYPE, &ps_type);
+                       if (ret == OK)
+                       {
+                               INFO("Telephony packet service type: %d", ps_type);
+
+                               switch (ps_type)
+                               {
+
+                               case VCONFKEY_TELEPHONY_PSTYPE_HSDPA:
+                               case VCONFKEY_TELEPHONY_PSTYPE_HSUPA:
+                               case VCONFKEY_TELEPHONY_PSTYPE_HSPA:
+                                       if(util_is_orf())
+                                       {
+                                               show_image_icon(LEVEL_3G_PLUS);
+                                       }
+                                       else
+                                       {
+                                               show_image_icon(LEVEL_H);
+                                       }
+                                       show_connection_transfer_icon(data);
+                                       return;
+                               case VCONFKEY_TELEPHONY_PSTYPE_NONE:
+                               default:
+                                       break;
+                               }
+                       }
+
+                       /* check service type */
+                       ret = vconf_get_int(VCONFKEY_TELEPHONY_SVCTYPE, &svc_type);
+                       if (ret == OK) {
+                               switch (svc_type) {
+                               case VCONFKEY_TELEPHONY_SVCTYPE_2G:
+                                       /**< Network 2G. Show to LEVEL_2G icon */
+                               case VCONFKEY_TELEPHONY_SVCTYPE_2_5G:
+                                       /**< Network 2.5G. Show to LEVEL_2G icon  */
+                                       show_image_icon(LEVEL_2G);
+                                       show_connection_transfer_icon(data);
+                                       break;
+                               case VCONFKEY_TELEPHONY_SVCTYPE_2_5G_EDGE:
+                                       /**< Network EDGE */
+                                       show_image_icon(LEVEL_EDGE);
+                                       show_connection_transfer_icon(data);
+                                       break;
+                               case VCONFKEY_TELEPHONY_SVCTYPE_3G:
+                                       /**< Network UMTS */
+                                       show_image_icon(LEVEL_3G);
+                                       show_connection_transfer_icon(data);
+                                       break;
+                               case VCONFKEY_TELEPHONY_SVCTYPE_LTE:
+                                       /**< Network LTE */
+                                       show_image_icon(LEVEL_4G);
+                                       show_connection_transfer_icon(data);
+                                       break;
+
+                               default:
+                                       hide_image_icon();
+                                       break;
+                               }
+
+                               return;
+                       }
                }
        }
 
-       ret = vconf_get_int(VCONFKEY_TELEPHONY_SVCTYPE, &svc_type);
+//     ret = vconf_get_int(VCONFKEY_DNET_STATE2, &status);
        if (ret == OK) {
-               INFO("Telephony service type: %d", svc_type);
-
-               switch (svc_type) {
-               case VCONFKEY_TELEPHONY_SVCTYPE_2G:
-               case VCONFKEY_TELEPHONY_SVCTYPE_2_5G:
-                       show_image_icon(LEVEL_2G);
-                       break;
-               case VCONFKEY_TELEPHONY_SVCTYPE_2_5G_EDGE:
-                       show_image_icon(LEVEL_EDGE);
-                       break;
-               case VCONFKEY_TELEPHONY_SVCTYPE_3G:
-                       show_image_icon(LEVEL_3G);
-                       break;
-               case VCONFKEY_TELEPHONY_SVCTYPE_LTE:
-                       show_image_icon(LEVEL_LTE);
-                       break;
-
-               default:
+               if (status == VCONFKEY_DNET_OFF)
+               {
+                       DBG("CONNECTION DNET Status: %d", status);
                        hide_image_icon();
-                       break;
                }
+               else
+               {
 
-               return;
-       }
+                       ret = vconf_get_int(VCONFKEY_TELEPHONY_PSTYPE, &ps_type);
+                       if (ret == OK)
+                       {
+                               switch (ps_type)
+                               {
+
+                               case VCONFKEY_TELEPHONY_PSTYPE_HSDPA:
+                               case VCONFKEY_TELEPHONY_PSTYPE_HSUPA:
+                                       if(util_is_orf())
+                                       {
+                                               show_image_icon(LEVEL_3G_PLUS);
+                                       }
+                                       else
+                                       {
+                                               show_image_icon(LEVEL_H);
+                                       }
+                                       show_connection_transfer_icon(data);
+                                       return;
+                               case VCONFKEY_TELEPHONY_PSTYPE_HSPA:
+                                       show_image_icon(LEVEL_H_PLUS);
+                                       show_connection_transfer_icon(data);
+                                       return;
+
+                               case VCONFKEY_TELEPHONY_PSTYPE_NONE:
+                               default:
+                                       break;
+                               }
+                       }
 
+                       /* check service type */
+                       ret = vconf_get_int(VCONFKEY_TELEPHONY_SVCTYPE, &svc_type);
+                       if (ret == OK) {
+                               switch (svc_type) {
+                               case VCONFKEY_TELEPHONY_SVCTYPE_2G:
+                                       /**< Network 2G. Show to LEVEL_2G icon */
+                               case VCONFKEY_TELEPHONY_SVCTYPE_2_5G:
+                                       /**< Network 2.5G. Show to LEVEL_2G icon  */
+                                       show_image_icon(LEVEL_2G);
+                                       show_connection_transfer_icon(data);
+                                       break;
+                               case VCONFKEY_TELEPHONY_SVCTYPE_2_5G_EDGE:
+                                       /**< Network EDGE */
+                                       show_image_icon(LEVEL_EDGE);
+                                       show_connection_transfer_icon(data);
+                                       break;
+                               case VCONFKEY_TELEPHONY_SVCTYPE_3G:
+                                       /**< Network UMTS */
+                                       show_image_icon(LEVEL_3G);
+                                       show_connection_transfer_icon(data);
+                                       break;
+                               case VCONFKEY_TELEPHONY_SVCTYPE_LTE:
+                                       /**< Network LTE */
+                                       show_image_icon(LEVEL_4G);
+                                       show_connection_transfer_icon(data);
+                                       break;
+
+                               default:
+                                       hide_image_icon();
+                                       break;
+                               }
+
+                               return;
+                       }
+               }
+       }
        hide_image_icon();
 
        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);
+       on_noti(tapi_handle[0], NULL, NULL, data);
        return OK;
 }
 
-static int register_conn_module(void *data)
+
+#if 0
+static void svc_type_callback(keynode_t *node, void *data)
 {
-       int r = 0, ret = -1;
+       int type = 0;
 
-       retif(data == NULL, FAIL, "Invalid parameter!");
+       vconf_get_int(VCONFKEY_TELEPHONY_SVCTYPE, &type);
+       DBG("svc_type_callback %d",type);
+       indicator_conn_change_cb(node,data);
+}
+#endif
 
-       set_app_state(data);
 
-       ret = vconf_notify_key_changed(VCONFKEY_TELEPHONY_SVCTYPE,
-                                      indicator_conn_change_cb, data);
+static void ps_type_callback(keynode_t *node, void *data)
+{
+       int type = 0;
+
+       vconf_get_int(VCONFKEY_TELEPHONY_PSTYPE, &type);
+
+       DBG("ps_type_callback %d",type);
+       indicator_conn_change_cb(node,data);
+}
+
+
+
+static void dnet_state_callback(keynode_t *node, void *data)
+{
+       DBG("dnet_state_callback");
+       on_noti(tapi_handle[0], NULL, NULL, data);
+}
+
+
+
+static void dnet2_state_callback(keynode_t *node, void *data)
+{
+       DBG("dnet_state_callback");
+       on_noti(tapi_handle[1], NULL, NULL, data);
+}
+
+
+
+static void packet_state_callback(keynode_t *node, void *data)
+{
+       DBG("packet_state_callback");
+       on_noti(tapi_handle[0], NULL, NULL, data);
+}
+
+
+
+static void _wifi_status_changed_cb(wifi_connection_state_e state, wifi_ap_h ap, void *user_data)
+{
+       int status = 0;
+       int ret = 0;
+
+       ret = wifi_get_connection_state(&status);
+       if (ret == WIFI_ERROR_NONE)
+       {
+               INFO("[CB] WIFI Status: %d", status);
+               if(status == WIFI_CONNECTION_STATE_CONNECTED)
+               {
+                       DBG("[CB] WIFI connected, so hide connection icon");
+                       hide_image_icon();
+               }
+               else
+               {
+                       on_noti(tapi_handle[0], NULL, NULL, user_data);
+               }
+       }
+}
+
+
+
+static void _flight_mode(keynode_t *key, void *data)
+{
+       on_noti(tapi_handle[0], NULL, NULL, data);
+}
+
+
+
+static void _bt_tethering(keynode_t *key, void *data)
+{
+       on_noti(tapi_handle[0], NULL, NULL, data);
+}
+
+
+
+void connection_icon_on_noti(TapiHandle *handle_obj, const char *noti_id, void *data, void *user_data)
+{
+       DBG("");
+       on_noti(handle_obj, NULL, NULL, user_data);
+}
+
+
+
+/* Initialize TAPI */
+static void __init_tel(void *data)
+{
+       DBG("__init_tel");
+       int ret = FAIL;
+
+       ret = vconf_notify_key_changed(VCONFKEY_DNET_STATE, dnet_state_callback, data);
        if (ret != OK) {
                ERR("Failed to register callback!");
-               r = ret;
        }
 
-       ret = vconf_notify_key_changed(VCONFKEY_DNET_STATE,
-                                      indicator_conn_change_cb, data);
+/*     ret = vconf_notify_key_changed(VCONFKEY_DNET_STATE2, dnet2_state_callback, data);
+       if (ret != OK) {
+               ERR("Failed to register callback!");
+       }*/
+
+       ret = vconf_notify_key_changed(VCONFKEY_PACKET_STATE, packet_state_callback, data);
        if (ret != OK) {
                ERR("Failed to register callback!");
-               r = r | ret;
        }
 
-       ret = vconf_notify_key_changed(VCONFKEY_TELEPHONY_PSTYPE,
-                                      indicator_conn_change_cb, data);
+       ret = vconf_notify_key_changed(VCONFKEY_TELEPHONY_FLIGHT_MODE, _flight_mode, data);
        if (ret != OK) {
                ERR("Failed to register callback!");
+       }
+
+       ret = vconf_notify_key_changed(VCONFKEY_NETWORK_STATUS, _bt_tethering, data);
+       if (ret != OK) {
+               ERR("Failed to register callback!");
+       }
+
+       on_noti(tapi_handle[0], NULL, NULL, data);
+}
+
+
+
+/* De-initialize TAPI */
+static void __deinit_tel()
+{
+       DBG("__deinit_tel");
+}
+
+
+
+static void tel_ready_cb(keynode_t *key, void *data)
+{
+       gboolean status = FALSE;
+
+       status = vconf_keynode_get_bool(key);
+       if (status == TRUE) {    /* Telephony State - READY */
+               __init_tel(data);
+       }
+       else {                   /* Telephony State – NOT READY */
+               /* De-initialization is optional here (ONLY if required) */
+               __deinit_tel();
+       }
+}
+
+
+
+static int register_conn_module(void *data)
+{
+       int r = 0, ret = -1;
+
+       retif(data == NULL, FAIL, "Invalid parameter!");
+
+       set_app_state(data);
+
+       ret = vconf_notify_key_changed(VCONFKEY_TELEPHONY_PSTYPE,
+                                          ps_type_callback, data);
+       if (ret != OK) {
                r = r | ret;
        }
 
-       indicator_conn_change_cb(NULL, data);
+       ret = wifi_set_connection_state_changed_cb(_wifi_status_changed_cb, data);
+       if (ret != WIFI_ERROR_NONE) {
+               ERR("Failed to register wifi_set_connection_state_changed_cb!");
+               r = r | ret;
+       }
+       gboolean state = FALSE;
+
+       vconf_get_bool(VCONFKEY_TELEPHONY_READY, &state);
+
+       if(state)
+       {
+               DBG("Telephony ready");
+               __init_tel(data);
+       }
+       else
+       {
+               DBG("Telephony not ready");
+               vconf_notify_key_changed(VCONFKEY_TELEPHONY_READY, tel_ready_cb, data);
+       }
 
        return r;
 }
 
-static int unregister_conn_module(void)
-{
-       int ret;
 
-       ret = vconf_ignore_key_changed(VCONFKEY_TELEPHONY_SVCTYPE,
-                                      indicator_conn_change_cb);
-       if (ret != OK)
-               ERR("Failed to unregister callback!");
 
-       ret = vconf_ignore_key_changed(VCONFKEY_DNET_STATE,
-                                      indicator_conn_change_cb);
+static int unregister_conn_module(void)
+{
+       int ret = -1;
+
+       ret = ret | vconf_ignore_key_changed(VCONFKEY_TELEPHONY_PSTYPE, ps_type_callback);
+       ret = ret | vconf_ignore_key_changed(VCONFKEY_DNET_STATE, dnet_state_callback);
+//     ret = ret | vconf_ignore_key_changed(VCONFKEY_DNET_STATE2, dnet_state_callback);
+       ret = ret | wifi_unset_connection_state_changed_cb();
+       ret = ret | vconf_ignore_key_changed(VCONFKEY_PACKET_STATE, packet_state_callback);
+       ret = ret | vconf_ignore_key_changed(VCONFKEY_TELEPHONY_READY, tel_ready_cb);
+       ret = ret | vconf_ignore_key_changed(VCONFKEY_TELEPHONY_FLIGHT_MODE, _flight_mode);
+       ret = ret | vconf_ignore_key_changed(VCONFKEY_NETWORK_STATUS, _bt_tethering);
        if (ret != OK)
                ERR("Failed to unregister callback!");
 
-       if (dnet_transferring == EINA_TRUE) {
-               dnet_transferring = EINA_FALSE;
-       }
+       __deinit_tel();
 
-       return OK;
+       return ret;
 }
diff --git a/modules/connection/connection.h b/modules/connection/connection.h
new file mode 100644 (file)
index 0000000..5cc9ec5
--- /dev/null
@@ -0,0 +1,26 @@
+/*
+ *  Indicator
+ *
+ * Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+
+#ifndef __INDICATOR_CONNECTION_H__
+#define __INDICATOR_CONNECTION_H__
+
+extern void connection_icon_on_noti(TapiHandle *handle_obj, const char *noti_id, void *data, void *user_data);
+
+#endif
diff --git a/modules/connection/dock.c b/modules/connection/dock.c
new file mode 100644 (file)
index 0000000..9771a92
--- /dev/null
@@ -0,0 +1,145 @@
+/*
+ *  Indicator
+ *
+ * Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * 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 <stdio.h>
+#include <stdlib.h>
+#include <vconf.h>
+#include "common.h"
+#include "indicator.h"
+#include "icon.h"
+#include "modules.h"
+#include "main.h"
+
+#define ICON_PRIORITY  INDICATOR_PRIORITY_NOTI_2
+#define MODULE_NAME            "dock"
+#define TIMER_INTERVAL 0.3
+
+static int register_dock_module(void *data);
+static int unregister_dock_module(void);
+static int bShown = 0;
+
+icon_s dock = {
+       .type = INDICATOR_IMG_ICON,
+       .name = MODULE_NAME,
+       .priority = ICON_PRIORITY,
+       .always_top = EINA_FALSE,
+       .exist_in_view = EINA_FALSE,
+       .area = INDICATOR_ICON_AREA_NOTI,
+       .img_obj = {0,},
+       .obj_exist = EINA_FALSE,
+       .init = register_dock_module,
+       .fini = unregister_dock_module
+};
+
+static const char *icon_path[] = {
+       "Desk dock/B03_desk_dock.png",
+       NULL
+};
+
+
+
+static void set_app_state(void* data)
+{
+       dock.ad = data;
+}
+
+
+
+static void show_image_icon(void)
+{
+       if(bShown == 1)
+       {
+               return;
+       }
+
+       dock.img_obj.data = icon_path[0];
+       icon_show(&dock);
+
+       bShown = 1;
+}
+
+
+
+static void hide_image_icon(void)
+{
+       icon_hide(&dock);
+
+       bShown = 0;
+}
+
+
+
+static void indicator_dock_change_cb(keynode_t *node, void *data)
+{
+       int status;
+       int ret;
+
+       retif(data == NULL, , "Invalid parameter!");
+
+       /* First, check dock status */
+       ret = vconf_get_int(VCONFKEY_SYSMAN_CRADLE_STATUS, &status);
+       if (ret == OK) {
+               if (status > 0) {
+                       DBG("dock Status: %d", status);
+                       show_image_icon();
+               }
+               else
+               {
+                       hide_image_icon();
+               }
+       }
+
+       return;
+}
+
+
+
+static int register_dock_module(void *data)
+{
+       int r = 0, ret = -1;
+
+       retif(data == NULL, FAIL, "Invalid parameter!");
+
+       set_app_state(data);
+
+       ret = vconf_notify_key_changed(VCONFKEY_SYSMAN_CRADLE_STATUS,
+                                      indicator_dock_change_cb, data);
+       if (ret != OK)
+       {
+               r = ret;
+       }
+
+       indicator_dock_change_cb(NULL, data);
+
+       return r;
+}
+
+
+
+static int unregister_dock_module(void)
+{
+       int ret;
+
+       ret = vconf_ignore_key_changed(VCONFKEY_SYSMAN_CRADLE_STATUS,
+                                      indicator_dock_change_cb);
+
+       return ret;
+}
old mode 100755 (executable)
new mode 100644 (file)
index 04e098f..0b9c761
@@ -1,28 +1,32 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ *  Indicator
  *
- * Licensed under the Flora License, Version 1.1 (the "License");
+ * Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.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/
+ * http://www.apache.org/licenses/LICENSE-2.0
  *
  * 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 <stdio.h>
 #include <stdlib.h>
 #include <vconf.h>
 #include "common.h"
 #include "indicator.h"
-#include "indicator_icon_util.h"
+#include "icon.h"
 #include "modules.h"
-#include "indicator_ui.h"
+#include "main.h"
 
 #define ICON_PRIORITY  INDICATOR_PRIORITY_NOTI_2
 #define MODULE_NAME            "mobile_hotspot"
@@ -31,97 +35,77 @@ 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] = {
-{
-       .win_type = INDICATOR_WIN_PORT,
-       .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_mobile_hotspot_module,
-       .fini = unregister_mobile_hotspot_module,
-       .wake_up = wake_up_cb
-},
-{
-       .win_type = INDICATOR_WIN_LAND,
-       .type = INDICATOR_IMG_ICON,
+icon_s mobile_hotspot = {
        .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_mobile_hotspot_module,
        .fini = unregister_mobile_hotspot_module,
        .wake_up = wake_up_cb
-}
-
 };
 
 enum {
-       MOBILEAP_ON_NOT_CONNECTED = 0,
-       MOBILEAP_CONNECTED_MIN = MOBILEAP_ON_NOT_CONNECTED,
-       MOBILEAP_CONNECTED1,
-       MOBILEAP_CONNECTED2,
-       MOBILEAP_CONNECTED3,
-       MOBILEAP_CONNECTED4,
-       MOBILEAP_CONNECTED5,
-       MOBILEAP_CONNECTED6,
-       MOBILEAP_CONNECTED7,
-       MOBILEAP_CONNECTED8,
-       MOBILEAP_CONNECTED9,
-       MOBILEAP_MAX,
+       TETHERING_ALL_ON_CONNECTED = 0,
+       TETHERING_ALL_ON_NOT_CONNECTED,
+       TETHERING_BT_ON_CONNECTED,
+       TETHERING_BT_ON_NOT_CONNECTED,
+       TETHERING_USB_ON_CONNECTED,
+       TETHERING_USB_ON_NOT_CONNECTED,
+       TETHERING_WIFI_ON_CONNECTED,
+       TETHERING_WIFI_ON_NOT_CONNECTED,
+       TETHERING_MAX,
 };
 
-static const char *icon_path[MOBILEAP_MAX] = {
-       [MOBILEAP_ON_NOT_CONNECTED] =
-                       "Connection/B03_MobileAP_on&not connected.png",
-       [MOBILEAP_CONNECTED1] = "Connection/B03_MobileAP_connected_01.png",
-       [MOBILEAP_CONNECTED2] = "Connection/B03_MobileAP_connected_02.png",
-       [MOBILEAP_CONNECTED3] = "Connection/B03_MobileAP_connected_03.png",
-       [MOBILEAP_CONNECTED4] = "Connection/B03_MobileAP_connected_04.png",
-       [MOBILEAP_CONNECTED5] = "Connection/B03_MobileAP_connected_05.png",
-       [MOBILEAP_CONNECTED6] = "Connection/B03_MobileAP_connected_06.png",
-       [MOBILEAP_CONNECTED7] = "Connection/B03_MobileAP_connected_07.png",
-       [MOBILEAP_CONNECTED8] = "Connection/B03_MobileAP_connected_08.png",
-       [MOBILEAP_CONNECTED9] = "Connection/B03_MobileAP_connected_09.png",
+static const char *icon_path[TETHERING_MAX] = {
+       [TETHERING_ALL_ON_CONNECTED]            = "tethering/B03_All_connected.png",
+       [TETHERING_ALL_ON_NOT_CONNECTED]        = "tethering/B03_All_no_connected.png",
+       [TETHERING_BT_ON_CONNECTED]             = "tethering/B03_BT_connected.png",
+       [TETHERING_BT_ON_NOT_CONNECTED]         = "tethering/B03_BT_no_connected.png",
+       [TETHERING_USB_ON_CONNECTED]            = "tethering/B03_USB_connected.png",
+       [TETHERING_USB_ON_NOT_CONNECTED]        = "tethering/B03_USB_no_connected.png",
+       [TETHERING_WIFI_ON_CONNECTED]           = "tethering/B03_Wi_Fi_connected.png",
+       [TETHERING_WIFI_ON_NOT_CONNECTED]       = "tethering/B03_Wi_Fi_no_connected.png",
 };
 static int updated_while_lcd_off = 0;
+static int prevIndex = -1;
+
+
 
 static void set_app_state(void* data)
 {
-       int i = 0;
-
-       for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
-       {
-               mobile_hotspot[i].ad = data;
-       }
+       mobile_hotspot.ad = data;
 }
 
+
+
 static void show_image_icon(int type)
 {
-       int i = 0;
-       for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
+       if(prevIndex == type)
        {
-               mobile_hotspot[i].img_obj.data = icon_path[type];
-               indicator_util_icon_show(&mobile_hotspot[i]);
+               return;
        }
+
+       mobile_hotspot.img_obj.data = icon_path[type];
+       icon_show(&mobile_hotspot);
+
+       prevIndex = type;
 }
+
+
+
 static void hide_image_icon(void)
 {
-       int i = 0;
-       for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
-       {
-               indicator_util_icon_hide(&mobile_hotspot[i]);
-       }
+       icon_hide(&mobile_hotspot);
+
+       prevIndex = -1;
 }
 
+
+
 static void indicator_mobile_hotspot_change_cb(keynode_t *node, void *data)
 {
        int status;
@@ -129,59 +113,108 @@ static void indicator_mobile_hotspot_change_cb(keynode_t *node, void *data)
 
        retif(data == NULL, , "Invalid parameter!");
 
-       if(indicator_util_get_update_flag()==0)
+       if(icon_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);
-               if (status != VCONFKEY_MOBILE_HOTSPOT_MODE_NONE) {
-                       int icon_index = 0;
+       if (ret == OK)
+       {
+               DBG("mobile_hotspot status: %d", status);
+               if (status != VCONFKEY_MOBILE_HOTSPOT_MODE_NONE)
+               {
                        int connected_device = 0;
+                       int on_device_cnt = 0;
+
+                       int bBT = 0;
+                       int bWifi = 0;
+                       int bUSB = 0;
 
-                       ret = vconf_get_int(
-                               VCONFKEY_MOBILE_HOTSPOT_CONNECTED_DEVICE,
-                               &connected_device);
+                       vconf_get_int(VCONFKEY_MOBILE_HOTSPOT_CONNECTED_DEVICE,&connected_device);
 
-                       if (ret == OK)
+                       if(status&VCONFKEY_MOBILE_HOTSPOT_MODE_BT)
+                               bBT = 1;
+                       if(status&VCONFKEY_MOBILE_HOTSPOT_MODE_WIFI)
+                               bWifi = 1;
+                       if(status&VCONFKEY_MOBILE_HOTSPOT_MODE_USB)
+                               bUSB = 1;
+
+                       on_device_cnt = bBT+bWifi+bUSB;
+                       DBG("STSTUS %d %d %d , %d",bBT,bWifi,bUSB,connected_device);
+                       if(on_device_cnt==0)
                        {
-                               icon_index = MOBILEAP_CONNECTED_MIN + connected_device;
-                               if (icon_index < MOBILEAP_ON_NOT_CONNECTED) {
-                                       ERR("unable to handle %d connected devices ",
-                                               connected_device);
-                                       icon_index = MOBILEAP_ON_NOT_CONNECTED;
-                               } else if (icon_index >= MOBILEAP_MAX) {
-                                       ERR("unable to handle %d connected devices ",
-                                               connected_device);
-                                       icon_index = MOBILEAP_CONNECTED9;
+                               hide_image_icon();
+                               return;
+                       }
+                       else if(on_device_cnt>=2)
+                       {
+                               if(connected_device>=1)
+                               {
+                                       show_image_icon(TETHERING_ALL_ON_CONNECTED);
+                               }
+                               else
+                               {
+                                       show_image_icon(TETHERING_ALL_ON_NOT_CONNECTED);
                                }
-                               show_image_icon(icon_index);
                        }
                        else
                        {
-                               show_image_icon(MOBILEAP_ON_NOT_CONNECTED);
+                               if(bBT==1)
+                               {
+                                       if(connected_device>0)
+                                       {
+                                               show_image_icon(TETHERING_BT_ON_CONNECTED);
+                                       }
+                                       else
+                                       {
+                                               show_image_icon(TETHERING_BT_ON_NOT_CONNECTED);
+                                       }
+                               }
+
+                               if(bUSB==1)
+                               {
+                                       if(connected_device>0)
+                                       {
+                                               show_image_icon(TETHERING_USB_ON_CONNECTED);
+                                       }
+                                       else
+                                       {
+                                               show_image_icon(TETHERING_USB_ON_NOT_CONNECTED);
+                                       }
+                               }
+
+                               if(bWifi==1)
+                               {
+                                       if(connected_device>0)
+                                       {
+                                               show_image_icon(TETHERING_WIFI_ON_CONNECTED);
+                                       }
+                                       else
+                                       {
+                                               show_image_icon(TETHERING_WIFI_ON_NOT_CONNECTED);
+                                       }
+                               }
                        }
-                       return;
-               } else {
+
+               }
+               else
+               {
                        hide_image_icon();
                        return;
                }
        }
 
-       hide_image_icon();
-       return;
 }
 
+
+
 static int wake_up_cb(void *data)
 {
        if(updated_while_lcd_off==0)
        {
-               DBG("ICON WAS NOT UPDATED");
                return OK;
        }
 
@@ -189,6 +222,8 @@ static int wake_up_cb(void *data)
        return OK;
 }
 
+
+
 static int register_mobile_hotspot_module(void *data)
 {
        int r = 0, ret = -1;
@@ -200,14 +235,12 @@ static int register_mobile_hotspot_module(void *data)
        ret = vconf_notify_key_changed(VCONFKEY_MOBILE_HOTSPOT_MODE,
                               indicator_mobile_hotspot_change_cb, data);
        if (ret != OK) {
-               ERR("Failed to register callback!");
                r = r | ret;
        }
 
        ret = vconf_notify_key_changed(VCONFKEY_MOBILE_HOTSPOT_CONNECTED_DEVICE,
                               indicator_mobile_hotspot_change_cb, data);
        if (ret != OK) {
-               ERR("Failed to register callback!");
                r = r | ret;
        }
 
@@ -216,19 +249,17 @@ static int register_mobile_hotspot_module(void *data)
        return r;
 }
 
+
+
 static int unregister_mobile_hotspot_module(void)
 {
        int ret;
 
        ret = vconf_ignore_key_changed(VCONFKEY_MOBILE_HOTSPOT_MODE,
                                       indicator_mobile_hotspot_change_cb);
-       if (ret != OK)
-               ERR("Failed to unregister callback!");
 
-       ret = vconf_ignore_key_changed(VCONFKEY_MOBILE_HOTSPOT_CONNECTED_DEVICE,
+       ret = ret | vconf_ignore_key_changed(VCONFKEY_MOBILE_HOTSPOT_CONNECTED_DEVICE,
                                       indicator_mobile_hotspot_change_cb);
-       if (ret != OK)
-               ERR("Failed to register callback!");
 
-       return OK;
+       return ret;
 }
diff --git a/modules/connection/nosim.c b/modules/connection/nosim.c
new file mode 100644 (file)
index 0000000..349c683
--- /dev/null
@@ -0,0 +1,138 @@
+/*
+ *  Indicator
+ *
+ * Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * 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 <stdio.h>
+#include <stdlib.h>
+#include <vconf.h>
+#include "common.h"
+#include "indicator.h"
+#include "icon.h"
+#include "modules.h"
+#include "main.h"
+
+#define ICON_PRIORITY  INDICATOR_PRIORITY_NOTI_2
+#define MODULE_NAME            "nosim"
+#define TIMER_INTERVAL 0.3
+
+static int register_nosim_module(void *data);
+static int unregister_nosim_module(void);
+
+icon_s nosim = {
+       .type = INDICATOR_IMG_ICON,
+       .name = MODULE_NAME,
+       .priority = ICON_PRIORITY,
+       .always_top = EINA_FALSE,
+       .exist_in_view = EINA_FALSE,
+       .area = INDICATOR_ICON_AREA_NOTI,
+       .img_obj = {0,},
+       .obj_exist = EINA_FALSE,
+       .init = register_nosim_module,
+       .fini = unregister_nosim_module
+};
+
+static const char *icon_path[] = {
+       "RSSI/B03_RSSI_NoSim.png",
+       NULL
+};
+
+static int bShown = 0;
+
+
+
+static void set_app_state(void* data)
+{
+       nosim.ad = data;
+}
+
+
+
+static void show_image_icon(void)
+{
+       if(bShown == 1)
+       {
+               return;
+       }
+
+       nosim.img_obj.data = icon_path[0];
+       icon_show(&nosim);
+
+       bShown = 1;
+}
+
+
+
+static void hide_image_icon(void)
+{
+       icon_hide(&nosim);
+
+       bShown = 0;
+}
+
+
+
+static void indicator_nosim_change_cb(keynode_t *node, void *data)
+{
+       int status;
+       int ret;
+       retif(data == NULL, , "Invalid parameter!");
+
+       ret = vconf_get_int(VCONFKEY_TELEPHONY_SIM_SLOT, &status);
+       if (ret == OK && status != VCONFKEY_TELEPHONY_SIM_INSERTED)
+       {
+               show_image_icon();
+       }
+       else
+       {
+               hide_image_icon();
+       }
+
+       return;
+}
+
+
+
+static int register_nosim_module(void *data)
+{
+       int ret = -1;
+
+       retif(data == NULL, FAIL, "Invalid parameter!");
+
+       set_app_state(data);
+
+       ret = vconf_notify_key_changed(VCONFKEY_TELEPHONY_SIM_SLOT,
+                                      indicator_nosim_change_cb, data);
+
+       indicator_nosim_change_cb(NULL, data);
+
+       return ret;
+}
+
+
+
+static int unregister_nosim_module(void)
+{
+       int ret;
+
+       ret = vconf_ignore_key_changed(VCONFKEY_TELEPHONY_SIM_SLOT,
+                                      indicator_nosim_change_cb);
+
+       return ret;
+}
old mode 100755 (executable)
new mode 100644 (file)
index cbc6ab0..7eb3a7d
@@ -1,28 +1,35 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ *  Indicator
  *
- * Licensed under the Flora License, Version 1.1 (the "License");
+ * Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.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/
+ * http://www.apache.org/licenses/LICENSE-2.0
  *
  * 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 <stdio.h>
 #include <stdlib.h>
 #include <vconf.h>
+#include <runtime_info.h>
+
 #include "common.h"
 #include "indicator.h"
-#include "indicator_icon_util.h"
+#include "icon.h"
 #include "modules.h"
-#include "indicator_ui.h"
+#include "main.h"
+#include "log.h"
 
 #define ICON_PRIORITY  INDICATOR_PRIORITY_NOTI_2
 #define MODULE_NAME            "usb"
 static int register_usb_module(void *data);
 static int unregister_usb_module(void);
 
-Indicator_Icon_Object usb[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,
-       .area = INDICATOR_ICON_AREA_NOTI,
-       .txt_obj = {0,},
-       .img_obj = {0,},
-       .obj_exist = EINA_FALSE,
-       .init = register_usb_module,
-       .fini = unregister_usb_module
-},
-{
-       .win_type = INDICATOR_WIN_LAND,
+icon_s usb = {
        .type = INDICATOR_IMG_ICON,
        .name = MODULE_NAME,
        .priority = ICON_PRIORITY,
        .always_top = EINA_FALSE,
        .exist_in_view = EINA_FALSE,
        .area = INDICATOR_ICON_AREA_NOTI,
-       .txt_obj = {0,},
        .img_obj = {0,},
        .obj_exist = EINA_FALSE,
        .init = register_usb_module,
        .fini = unregister_usb_module
-}
 };
 
 static const char *icon_path[] = {
-       "USB tethering/B03_USB.png",
+       "Connection/B03_USB.png",
        NULL
 };
 
+static int bShown = 0;
+
+
+
 static void set_app_state(void* data)
 {
-       int i = 0;
-
-       for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
-       {
-               usb[i].ad = data;
-       }
+       usb.ad = data;
 }
 
 static void show_image_icon(void)
 {
-       int i = 0;
+       if (bShown == 1) return;
 
-       for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
-       {
-               usb[i].img_obj.data = icon_path[0];
-               indicator_util_icon_show(&usb[i]);
-       }
+       usb.img_obj.data = icon_path[0];
+       icon_show(&usb);
+
+       bShown = 1;
 }
 
 static void hide_image_icon(void)
 {
-       int i = 0;
+       icon_hide(&usb);
+
+       bShown = 0;
+}
+
+static void _cradle_change_cb(keynode_t *node, void *data)
+{
+       int cradle = 0;
 
-       for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
-       {
-               indicator_util_icon_hide(&usb[i]);
+       vconf_get_int(VCONFKEY_SYSMAN_CRADLE_STATUS, &cradle);
+       if (cradle > 0) {
+               _D("cradle Status: %d", cradle);
+               hide_image_icon();
+               return;
        }
 }
 
-static void indicator_usb_change_cb(keynode_t *node, void *data)
+static void _usb_change_cb(keynode_t *node, void *data)
 {
+       bool usb_state;
        int status;
        int ret;
+       int cradle = 0;
+       int tethering = 0;
 
-       retif(data == NULL, , "Invalid parameter!");
+       ret_if(!data);
 
-       ret = vconf_get_int(VCONFKEY_SYSMAN_USB_STATUS, &status);
-       if (ret == OK) {
-               if (status >= VCONFKEY_SYSMAN_USB_CONNECTED) {
-                       INFO("indicator_usb_change_cb : CONNECTION USB Status: %d", status);
+       vconf_get_int(VCONFKEY_SYSMAN_CRADLE_STATUS, &cradle);
+       if (cradle > 0) {
+               _D("cradle Status: %d", cradle);
+               hide_image_icon();
+               return;
+       }
+
+       vconf_get_int(VCONFKEY_MOBILE_HOTSPOT_MODE, &tethering);
+       if (tethering & VCONFKEY_MOBILE_HOTSPOT_MODE_USB) {
+               _D("tethering Status: %d", tethering);
+               hide_image_icon();
+               return;
+       }
+       /* First, check usb state */
+       ret = runtime_info_get_value_bool(RUNTIME_INFO_KEY_USB_CONNECTED, &usb_state);
+       if (ret == RUNTIME_INFO_ERROR_NONE) {
+               if (usb_state) {
                        show_image_icon();
                        return;
-               }
-               else
-               {
+               } else {
+                       /* Second, check usb Host status */
                        ret = vconf_get_int(VCONFKEY_SYSMAN_USB_HOST_STATUS, &status);
                        if (ret == OK) {
                                if (status >= VCONFKEY_SYSMAN_USB_HOST_CONNECTED) {
-                                       INFO("indicator_usb_change_cb : Host USB Status: %d", status);
+                                       _D("Host USB Status: %d", status);
                                        show_image_icon();
                                        return;
-                               } else
+                               } else {
                                        hide_image_icon();
+                               }
                        }
                }
        }
@@ -129,50 +141,41 @@ static void indicator_usb_change_cb(keynode_t *node, void *data)
        return;
 }
 
-static int register_usb_module(void *data)
+static void _runtime_info_usb_change_cb(runtime_info_key_e key, void *data)
 {
-       int r = 0, ret = -1;
+       ret_if(!data);
 
-       retif(data == NULL, FAIL, "Invalid parameter!");
+       _usb_change_cb(NULL, data);
 
-       set_app_state(data);
+       return;
+}
 
-       ret = vconf_notify_key_changed(VCONFKEY_SYSMAN_USB_STATUS,
-                                      indicator_usb_change_cb, data);
-       if (ret != OK)
-       {
-               ERR("Failed to register callback(VCONFKEY_SYSMAN_USB_STATUS)!");
-               r = ret;
-       }
+static int register_usb_module(void *data)
+{
+       int ret = -1;
 
+       retv_if(!data, 0);
 
-       ret = vconf_notify_key_changed(VCONFKEY_SYSMAN_USB_HOST_STATUS,
-                                      indicator_usb_change_cb, data);
-       if (ret != OK)
-       {
-               ERR("Failed to register callback(VCONFKEY_SYSMAN_USB_HOST_STATUS)!");
-               r = r|ret;
-       }
+       set_app_state(data);
 
+       ret = runtime_info_set_changed_cb(RUNTIME_INFO_KEY_USB_CONNECTED, _runtime_info_usb_change_cb, data);
+       ret = ret | vconf_notify_key_changed(VCONFKEY_SYSMAN_USB_HOST_STATUS, _usb_change_cb, data);
+       ret = ret | vconf_notify_key_changed(VCONFKEY_SYSMAN_CRADLE_STATUS, _cradle_change_cb, data);
+       ret = ret | vconf_notify_key_changed(VCONFKEY_MOBILE_HOTSPOT_MODE, _usb_change_cb, data);
 
-       indicator_usb_change_cb(NULL, data);
+       _usb_change_cb(NULL, data);
 
-       return r;
+       return ret;
 }
 
 static int unregister_usb_module(void)
 {
        int ret;
 
-       ret = vconf_ignore_key_changed(VCONFKEY_SYSMAN_USB_STATUS,
-                                      indicator_usb_change_cb);
-       if (ret != OK)
-               ERR("Failed to unregister callback(VCONFKEY_SYSMAN_USB_STATUS)!");
-
-       ret = vconf_ignore_key_changed(VCONFKEY_SYSMAN_USB_HOST_STATUS,
-                                      indicator_usb_change_cb);
-       if (ret != OK)
-               ERR("Failed to unregister callback(VCONFKEY_SYSMAN_USB_HOST_STATUS)!");
-
-       return OK;
+       ret = runtime_info_unset_changed_cb(RUNTIME_INFO_KEY_USB_CONNECTED);
+       ret = ret | vconf_ignore_key_changed(VCONFKEY_SYSMAN_USB_HOST_STATUS, _usb_change_cb);
+       ret = ret | vconf_ignore_key_changed(VCONFKEY_SYSMAN_CRADLE_STATUS, _cradle_change_cb);
+       ret = ret | vconf_ignore_key_changed(VCONFKEY_MOBILE_HOTSPOT_MODE, _usb_change_cb);
+       return ret;
 }
+/* End of file */
old mode 100755 (executable)
new mode 100644 (file)
index 7c3130e..7887af9
@@ -1,30 +1,38 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ *  Indicator
  *
- * Licensed under the Flora License, Version 1.1 (the "License");
+ * Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.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/
+ * http://www.apache.org/licenses/LICENSE-2.0
  *
  * 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 <stdio.h>
 #include <stdlib.h>
 #include <vconf.h>
+#include <wifi.h>
+
 #include "common.h"
 #include "indicator.h"
-#include "indicator_icon_util.h"
+#include "icon.h"
 #include "modules.h"
-#include "indicator_ui.h"
+#include "main.h"
+#include "util.h"
+#include "log.h"
 
-#define ICON_PRIORITY  INDICATOR_PRIORITY_FIXED2
+#define ICON_PRIORITY  INDICATOR_PRIORITY_FIXED6
 #define MODULE_NAME            "wifi"
 #define TIMER_INTERVAL 0.3
 
@@ -32,42 +40,22 @@ static int register_wifi_module(void *data);
 static int unregister_wifi_module(void);
 static int wake_up_cb(void *data);
 
-Indicator_Icon_Object wifi[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_FIXED,
-       .init = register_wifi_module,
-       .fini = unregister_wifi_module,
-       .wake_up = wake_up_cb
-},
-{
-       .win_type = INDICATOR_WIN_LAND,
+icon_s wifi = {
        .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_FIXED,
        .init = register_wifi_module,
        .fini = unregister_wifi_module,
        .wake_up = wake_up_cb
-}
 };
 
 enum {
        LEVEL_WIFI_01 = 0,
-       LEVEL_WIFI = LEVEL_WIFI_01,
        LEVEL_WIFI_02,
        LEVEL_WIFI_03,
        LEVEL_WIFI_04,
@@ -75,98 +63,209 @@ enum {
 };
 
 static const char *icon_path[LEVEL_WIFI_MAX] = {
-       [LEVEL_WIFI_01] = "Connection/B03_connection_Wifi_01.png",
-       [LEVEL_WIFI_02] = "Connection/B03_connection_Wifi_02.png",
-       [LEVEL_WIFI_03] = "Connection/B03_connection_Wifi_03.png",
-       [LEVEL_WIFI_04] = "Connection/B03_connection_Wifi_04.png",
+       [LEVEL_WIFI_01] = "Connection/B03_data_downloading_Wifi_01.png",
+       [LEVEL_WIFI_02] = "Connection/B03_data_downloading_Wifi_02.png",
+       [LEVEL_WIFI_03] = "Connection/B03_data_downloading_Wifi_03.png",
+       [LEVEL_WIFI_04] = "Connection/B03_data_downloading_Wifi_04.png",
 };
 
+static int transfer_state = -1;
 static Eina_Bool wifi_transferring = EINA_FALSE;
 static int updated_while_lcd_off = 0;
+static int prevIndex = -1;
+
+
 
 static void set_app_state(void* data)
 {
-       int i = 0;
-
-       for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
-       {
-               wifi[i].ad = data;
-       }
+       wifi.ad = data;
 }
 
 static void show_image_icon(void *data, int index)
 {
-       int i = 0;
-
-       for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
+       if(prevIndex == index)
        {
-               wifi[i].img_obj.data = icon_path[index];
-               indicator_util_icon_show(&wifi[i]);
+               return;
        }
+
+       wifi.img_obj.data = icon_path[index];
+       icon_show(&wifi);
+
+       prevIndex = index;
+       util_signal_emit(wifi.ad, "indicator.wifi.show", "indicator.prog");
 }
 
 static void hide_image_icon(void)
 {
-       int i = 0;
+       transfer_state = -1;
+
+       icon_hide(&wifi);
+
+       prevIndex = -1;
+       util_signal_emit(wifi.ad, "indicator.wifi.hide", "indicator.prog");
+       util_signal_emit(wifi.ad, "indicator.wifi.updown.hide", "indicator.prog");
+}
 
-       for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
+static void show_wifi_transfer_icon(void* data)
+{
+       int type = -1;
+       int status = 0;
+
+       if (vconf_get_int(VCONFKEY_WIFI_TRANSFER_STATE, &status) < 0)
        {
-               indicator_util_icon_hide(&wifi[i]);
+               ERR("Error getting VCONFKEY_WIFI_TRANSFER_STATE value");
+               return;
        }
-}
 
+       switch(status)
+       {
+       case VCONFKEY_WIFI_TRANSFER_STATE_TXRX://TX/RX BOTH
+               type = TRANSFER_UPDOWN;
+               break;
+       case VCONFKEY_WIFI_TRANSFER_STATE_TX:
+               type = TRANSFER_UP;
+               break;
+       case VCONFKEY_WIFI_TRANSFER_STATE_RX:
+               type = TRANSFER_DOWN;
+               break;
+       case VCONFKEY_WIFI_TRANSFER_STATE_NONE:
+               type = TRANSFER_NONE;
+               break;
+       default:
+               break;
+       }
 
-static void indicator_wifi_change_cb(keynode_t *node, void *data)
+       if(transfer_state==type)
+       {
+               DBG("same transfer state");
+               return;
+       }
+
+       transfer_state = type;
+       switch (type)
+       {
+               case TRANSFER_NONE:
+                       util_signal_emit(wifi.ad, "indicator.wifi.updown.none", "indicator.prog");
+                       break;
+               case TRANSFER_DOWN:
+                       util_signal_emit(wifi.ad, "indicator.wifi.updown.download", "indicator.prog");
+                       break;
+               case TRANSFER_UP:
+                       util_signal_emit(wifi.ad, "indicator.wifi.updown.upload", "indicator.prog");
+                       break;
+               case TRANSFER_UPDOWN:
+                       util_signal_emit(wifi.ad, "indicator.wifi.updown.updownload", "indicator.prog");
+                       break;
+               default:
+                       break;
+
+       }
+}
+
+static void _wifi_changed_cb(keynode_t *node, void *data)
 {
+       bool wifi_state = FALSE;
        int status, strength;
        int ret;
 
-       retif(data == NULL, , "Invalid parameter!");
+       ret_if(!data);
 
-       if(indicator_util_get_update_flag()==0)
-       {
+       if (icon_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);
                if (strength < VCONFKEY_WIFI_STRENGTH_MIN) {
                        strength = VCONFKEY_WIFI_STRENGTH_MIN;
-               } else if (strength > VCONFKEY_WIFI_STRENGTH_MAX) {
+               }
+               else if (strength > VCONFKEY_WIFI_STRENGTH_MAX) {
                        strength = VCONFKEY_WIFI_STRENGTH_MAX;
                }
-       } else
+       } else {
                strength = VCONFKEY_WIFI_STRENGTH_MAX;
+       }
+
+       if (strength <= 0) strength = 1;
+
+       /* Second, check wifi status */
+       ret = wifi_is_activated(&wifi_state);
+       _D("wifi_state : %d", wifi_state);
+       if(ret != WIFI_ERROR_NONE) {
+               _E("wifi_is_activated error. ret is [%d]", ret);
+       }
 
-       ret = vconf_get_int(VCONFKEY_WIFI_STATE, &status);
+       ret = wifi_get_connection_state(&status);
+       if (ret == WIFI_ERROR_NONE) {
+               DBG("CONNECTION WiFi Status: %d", status);
+               switch(status) {
+               case WIFI_CONNECTION_STATE_CONNECTED:
+                       show_wifi_transfer_icon(data);
+                       show_image_icon(data, strength-1);
+                       break;
+               default: //WIFI_CONNECTION_STATE_DISCONNECTED
+                       hide_image_icon();
+                       break;
+               }
+       }
+
+       return;
+}
+
+static void _wifi_device_state_changed_cb(wifi_device_state_e state, void *user_data)
+{
+       bool wifi_state = FALSE;
+       int ret, strength;
+
+       ret_if(!user_data);
+
+       if (icon_get_update_flag()==0) {
+               updated_while_lcd_off = 1;
+               return;
+       }
+       updated_while_lcd_off = 0;
+
+       ret = vconf_get_int(VCONFKEY_WIFI_STRENGTH, &strength);
        if (ret == OK) {
-               INFO("CONNECTION WiFi Status: %d", status);
-               if (status != VCONFKEY_WIFI_TRANSFER) {
-                       if ( wifi_transferring == EINA_TRUE ) {
-                               wifi_transferring = EINA_FALSE;
-                       }
+               if (strength < VCONFKEY_WIFI_STRENGTH_MIN) {
+                       strength = VCONFKEY_WIFI_STRENGTH_MIN;
                }
-               if (status == VCONFKEY_WIFI_UNCONNECTED) {
-                       hide_image_icon();
-                       return;
-               } else if (status == VCONFKEY_WIFI_CONNECTED) {
-                       if (strength <= 0)
-                               strength = 1;
-
-                       show_image_icon(data,LEVEL_WIFI + strength-1);
-                       return;
-               } else if (status == VCONFKEY_WIFI_TRANSFER) {
-                       if (wifi_transferring != EINA_TRUE) {
-                               wifi_transferring = EINA_TRUE;
-                       }
-                       return;
+               else if (strength > VCONFKEY_WIFI_STRENGTH_MAX) {
+                       strength = VCONFKEY_WIFI_STRENGTH_MAX;
                }
+       } else {
+               strength = VCONFKEY_WIFI_STRENGTH_MAX;
+       }
+
+       if (strength <= 0) strength = 1;
+
+       ret = wifi_is_activated(&wifi_state);
+       _D("wifi_state : %d", wifi_state);
+       if(ret != WIFI_ERROR_NONE) {
+               _E("wifi_is_activated error. ret is [%d]", ret);
+       }
+
+       switch(wifi_state) {
+       case WIFI_DEVICE_STATE_ACTIVATED:
+               show_wifi_transfer_icon(user_data);
+               show_image_icon(user_data, strength-1);
+               break;
+       case WIFI_DEVICE_STATE_DEACTIVATED:
+               hide_image_icon();
+               break;
        }
-       hide_image_icon();
+
+       return;
+}
+
+static void _wifi_connection_state_changed_cb(wifi_connection_state_e state, wifi_ap_h ap, void *user_data)
+{
+       ret_if(!user_data);
+
+       _wifi_changed_cb(NULL, user_data);
+
        return;
 }
 
@@ -174,36 +273,56 @@ 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);
+       _wifi_changed_cb(NULL, data);
        return OK;
 }
 
+static bool _wifi_init(void)
+{
+       int ret = -1;
+       ret = wifi_initialize();
+       if (ret != WIFI_ERROR_NONE) {
+               _E("wifi_initialize is fail : %d", ret);
+               return FALSE;
+       }
+
+       return TRUE;
+}
+
+static void _wifi_fini(void)
+{
+       int ret = -1;
+       ret = wifi_deinitialize();
+       if (ret != WIFI_ERROR_NONE) {
+               _E("wifi_deinitialize is fail : %d", ret);
+       }
+}
+
 static int register_wifi_module(void *data)
 {
        int r = 0, ret = -1;
 
-       retif(data == NULL, FAIL, "Invalid parameter!");
+       retv_if(!data, 0);
 
        set_app_state(data);
+       _wifi_init();
 
-       ret = vconf_notify_key_changed(VCONFKEY_WIFI_STATE,
-                                      indicator_wifi_change_cb, data);
-       if (ret != OK) {
-               ERR("Failed to register callback!");
-               r = ret;
-       }
+       ret = wifi_set_device_state_changed_cb(_wifi_device_state_changed_cb, data);
+       if (ret != WIFI_ERROR_NONE) r = ret;
 
-       ret = vconf_notify_key_changed(VCONFKEY_WIFI_STRENGTH,
-                                      indicator_wifi_change_cb, data);
-       if (ret != OK) {
-               ERR("Failed to register callback!");
-               r = r | ret;
-       }
-       indicator_wifi_change_cb(NULL, data);
+       ret = wifi_set_connection_state_changed_cb(_wifi_connection_state_changed_cb, data);
+       if (ret != WIFI_ERROR_NONE) r = ret;
+
+       ret = vconf_notify_key_changed(VCONFKEY_WIFI_STRENGTH, _wifi_changed_cb, data);
+       if (ret != OK) r = r | ret;
+
+       ret = vconf_notify_key_changed(VCONFKEY_WIFI_TRANSFER_STATE, _wifi_changed_cb, data);
+       if (ret != OK) r = r | ret;
+
+       _wifi_changed_cb(NULL, data);
 
        return r;
 }
@@ -212,19 +331,17 @@ static int unregister_wifi_module(void)
 {
        int ret;
 
-       ret = vconf_ignore_key_changed(VCONFKEY_WIFI_STATE,
-                                      indicator_wifi_change_cb);
-       if (ret != OK)
-               ERR("Failed to unregister callback!");
-
-       ret = vconf_ignore_key_changed(VCONFKEY_WIFI_STRENGTH,
-                                      indicator_wifi_change_cb);
-       if (ret != OK)
-               ERR("Failed to unregister callback!");
+       ret = wifi_unset_device_state_changed_cb();
+       ret = wifi_unset_connection_state_changed_cb();
+       ret = ret | vconf_ignore_key_changed(VCONFKEY_WIFI_STRENGTH, _wifi_changed_cb);
+       ret = ret | vconf_ignore_key_changed(VCONFKEY_WIFI_TRANSFER_STATE, _wifi_changed_cb);
 
        if (wifi_transferring == EINA_TRUE) {
                wifi_transferring  = EINA_FALSE;
        }
 
-       return OK;
+       _wifi_fini();
+
+       return ret;
 }
+/* End of file */
old mode 100755 (executable)
new mode 100644 (file)
similarity index 67%
rename from daemon/indicator.c
rename to modules/home/always.c
index f6ded43..71e5cca
@@ -1,15 +1,20 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ *  Indicator
  *
- * Licensed under the Flora License, Version 1.1 (the "License");
+ * Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.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/
+ * http://www.apache.org/licenses/LICENSE-2.0
  *
  * 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.
+ *
  */
+
+
old mode 100755 (executable)
new mode 100644 (file)
index 6ce054d..71e5cca
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ *  Indicator
  *
- * Licensed under the Flora License, Version 1.1 (the "License");
+ * Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.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/
+ * http://www.apache.org/licenses/LICENSE-2.0
  *
  * 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 <stdio.h>
-#include <stdlib.h>
-#include <vconf.h>
-#include "common.h"
-#include "indicator.h"
-#include "indicator_ui.h"
-#include "modules.h"
-#include "indicator_icon_util.h"
-#include "indicator_gui.h"
-
-#define ICON_PRIORITY  INDICATOR_PRIORITY_FIXED5
-#define MODULE_NAME            "home"
-
-static int register_home_module(void *data);
-static int unregister_home_module(void);
-
-Indicator_Icon_Object home[INDICATOR_WIN_MAX] = {
-{
-       .win_type = INDICATOR_WIN_PORT,
-       .type = INDICATOR_IMG_ICON,
-       .name = MODULE_NAME,
-       .priority = ICON_PRIORITY,
-       .always_top = EINA_FALSE,
-       .txt_obj = {0,},
-       .img_obj = {0,0,APPTRAY_ICON_WIDTH,APPTRAY_ICON_HEIGHT},
-       .obj_exist = EINA_FALSE,
-       .area = INDICATOR_ICON_AREA_FIXED,
-       .exist_in_view = EINA_FALSE,
-       .init = register_home_module,
-       .fini = unregister_home_module,
-},
-{
-       .win_type = INDICATOR_WIN_LAND,
-       .type = INDICATOR_IMG_ICON,
-       .name = MODULE_NAME,
-       .priority = ICON_PRIORITY,
-       .always_top = EINA_FALSE,
-       .txt_obj = {0,},
-       .img_obj = {0,0,APPTRAY_ICON_WIDTH,APPTRAY_ICON_HEIGHT},
-       .obj_exist = EINA_FALSE,
-       .area = INDICATOR_ICON_AREA_FIXED,
-       .exist_in_view = EINA_FALSE,
-       .init = register_home_module,
-       .fini = unregister_home_module,
-}
-
-};
-
-static const char *icon_path[] = {
-       "App tray/B03_app_tray.PNG",
-       "App tray/B03_app_tray_press.PNG",
-       NULL
-};
-
-static void set_app_state(void* data)
-{
-       int i = 0;
-
-       for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
-       {
-               home[i].ad = data;
-       }
-
-}
-static void show_image_icon(int index)
-{
-       int i = 0;
-
-       for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
-       {
-               home[i].img_obj.data = icon_path[index];
-               indicator_util_icon_show(&home[i]);
-       }
-}
-static void change_home_icon_cb(keynode_t *node, void *data)
-{
-       int status = 0;
-       int ret = -1;
-
-       retif(data == NULL, , "Invalid parameter!");
-
-}
-static int register_home_module(void *data)
-{
-       int r = 0, ret = -1;
-
-       retif(data == NULL, FAIL, "Invalid parameter!");
-
-       set_app_state(data);
-
-       show_image_icon(0);
-       return 0;
-}
-
-static int unregister_home_module(void)
-{
-
-       return 0;
-}
diff --git a/modules/home/search.c b/modules/home/search.c
new file mode 100644 (file)
index 0000000..3d75157
--- /dev/null
@@ -0,0 +1,226 @@
+/*
+ *  Indicator
+ *
+ * Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+
+
+#ifndef _INDICATOR_REMOVE_SEARCH
+#include <stdio.h>
+#include <stdlib.h>
+#include <vconf.h>
+#include <app_preference.h>
+
+#include "common.h"
+#include "indicator.h"
+#include "main.h"
+#include "modules.h"
+#include "icon.h"
+#include "indicator_gui.h"
+#include "util.h"
+#include "log.h"
+
+#define ICON_PRIORITY  INDICATOR_PRIORITY_FIXED10
+#define MODULE_NAME            "search"
+
+static int register_search_module(void *data);
+static int unregister_search_module(void);
+#ifdef _SUPPORT_SCREEN_READER
+static int register_search_tts(void *data);
+#endif
+#define EXPORT_PUBLIC __attribute__ ((visibility ("default")))
+
+icon_s search = {
+       .type = INDICATOR_IMG_ICON,
+       .name = MODULE_NAME,
+       .priority = ICON_PRIORITY,
+       .always_top = EINA_FALSE,
+       .img_obj = {0,0,FIXED4_ICON_WIDTH,FIXED4_ICON_HEIGHT},
+       .obj_exist = EINA_FALSE,
+       .area = INDICATOR_ICON_AREA_FIXED,
+       .exist_in_view = EINA_FALSE,
+       .init = register_search_module,
+       .fini = unregister_search_module,
+#ifdef _SUPPORT_SCREEN_READER
+       .register_tts = register_search_tts,
+#endif
+};
+
+static const char *icon_path[] = {
+       "B03_search.png",
+       "B03_search_press.png",
+       NULL
+};
+
+
+
+static void set_app_state(void* data)
+{
+       search.ad = data;
+}
+
+
+
+static void show_image_icon(int index)
+{
+       search.img_obj.data = icon_path[index];
+       icon_show(&search);
+}
+
+
+
+static void hide_image_icon(void)
+{
+       icon_hide(&search);
+}
+
+
+
+EXPORT_PUBLIC void hide_search_icon(void)
+{
+       hide_image_icon();
+}
+
+
+
+EXPORT_PUBLIC void show_search_icon(void)
+{
+       show_image_icon(0);
+}
+
+static void _handle_search_icon(void* data)
+{
+       int lock_status = -1;
+       int ps_mode = -1;
+       int bHide = 0;
+       struct appdata *ad = (struct appdata *)data;
+
+       retif(data == NULL, , "Invalid parameter!");
+
+       vconf_get_int(VCONFKEY_IDLE_LOCK_STATE, &lock_status);
+       vconf_get_int(VCONFKEY_SETAPPL_PSMODE, &ps_mode);
+
+       DBG("_indicator_lock_status_cb!!(%d)(%d)",lock_status,ps_mode);
+
+       if(lock_status==VCONFKEY_IDLE_LOCK || ps_mode == SETTING_PSMODE_EMERGENCY)
+       {
+               bHide = 1;
+       }
+       else
+       {
+               bHide = 0;
+       }
+
+       if (bHide==0)
+       {
+               DBG("_lock_status_cb : show search!");
+               show_image_icon(0);
+               util_signal_emit_by_win(&(ad->win),"indicator.lock.off", "indicator.prog");
+       }
+       else
+       {
+               DBG("_lock_status_cb : hide search");
+               util_signal_emit_by_win(&(ad->win), "indicator.lock.on", "indicator.prog");
+               hide_image_icon();
+       }
+}
+
+
+
+static void _ps_mode_cb(keynode_t *node, void *data)
+{
+       DBG("Ps mode change");
+       _handle_search_icon(data);
+}
+
+
+
+static void _lock_status_cb(keynode_t *node, void *data)
+{
+       DBG("lock state change");
+       _handle_search_icon(data);
+}
+
+
+
+static int register_search_module(void *data)
+{
+       retv_if(!data, 0);
+
+       set_app_state(data);
+
+       vconf_notify_key_changed(VCONFKEY_IDLE_LOCK_STATE,  _lock_status_cb, (void *)data);
+
+       vconf_notify_key_changed(VCONFKEY_SETAPPL_PSMODE,  _ps_mode_cb, (void *)data);
+
+       _handle_search_icon(data);
+       return 0;
+}
+
+
+
+static int unregister_search_module(void)
+{
+       vconf_ignore_key_changed(VCONFKEY_IDLE_LOCK_STATE, _lock_status_cb);
+       vconf_ignore_key_changed(VCONFKEY_SETAPPL_PSMODE, _ps_mode_cb);
+
+       return 0;
+}
+
+
+
+#ifdef _SUPPORT_SCREEN_READER
+static void _apptray_access_cb(void *data, Evas_Object *obj, Elm_Object_Item *item)
+{
+       util_launch_search(data);
+}
+
+
+
+static char *_access_info_cb(void *data, Evas_Object *obj)
+{
+       Evas_Object *item = data;
+       char *tmp = NULL;
+       char buf[256] = {0,};
+       snprintf(buf, sizeof(buf), "%s, %s, %s", _("IDS_IDLE_SK_SMARTSEARCH_SEARCH"),_("IDS_COM_BODY_BUTTON_T_TTS"), _("IDS_IDLE_BODY_STATUS_BAR_ITEM"));
+
+       tmp = strdup(buf);
+       if (!tmp) return NULL;
+       return tmp;
+}
+
+
+
+static int register_search_tts(void *data)
+{
+       int r = 0, ret = -1;
+
+       retv_if(!data, 0);
+
+       Evas_Object *to = NULL;
+       Evas_Object *ao = NULL;
+       struct appdata *ad = data;
+
+       to = (Evas_Object *) edje_object_part_object_get(elm_layout_edje_get(ad->win.layout), "elm.swallow.fixed6.access");
+       ao = util_access_object_register(to, ad->win.layout);
+       util_access_object_info_cb_set(ao,ELM_ACCESS_INFO,_access_info_cb,data);
+       util_access_object_activate_cb_set(ao,_apptray_access_cb,data);
+
+       return 0;
+}
+#endif /* _SUPPORT_SCREEN_READER */
+#endif /* _INDICATOR_REMOVE_SEARCH */
old mode 100755 (executable)
new mode 100644 (file)
index cbfcc38..286e000
@@ -1,65 +1,58 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ *  Indicator
  *
- * Licensed under the Flora License, Version 1.1 (the "License");
+ * Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.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/
+ * http://www.apache.org/licenses/LICENSE-2.0
  *
  * 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 <stdio.h>
 #include <stdlib.h>
 #include <vconf.h>
 #include "common.h"
 #include "indicator.h"
-#include "indicator_ui.h"
+#include "main.h"
 #include "modules.h"
-#include "indicator_icon_util.h"
+#include "icon.h"
 
-#define ICON_PRIORITY  INDICATOR_PRIORITY_SYSTEM_3
+#define ICON_PRIORITY  INDICATOR_PRIORITY_SYSTEM_1
 #define MODULE_NAME            "alarm"
 
+static int bShown = 0;
 static int register_alarm_module(void *data);
 static int unregister_alarm_module(void);
+#ifdef _SUPPORT_SCREEN_READER
+static char *access_info_cb(void *data, Evas_Object *obj);
+#endif
 
-Indicator_Icon_Object useralarm[INDICATOR_WIN_MAX] = {
-{
-       .win_type = INDICATOR_WIN_PORT,
+icon_s useralarm = {
        .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_SYSTEM,
        .init = register_alarm_module,
        .fini = unregister_alarm_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_SYSTEM,
-       .init = register_alarm_module,
-       .fini = unregister_alarm_module,
-}
-
+#ifdef _SUPPORT_SCREEN_READER
+       .tts_enable = EINA_TRUE,
+       .access_cb = access_info_cb,
+#endif
 };
 
 static char *icon_path[] = {
@@ -67,36 +60,39 @@ static char *icon_path[] = {
        NULL
 };
 
+
+
 static void set_app_state(void* data)
 {
-       int i = 0;
+       useralarm.ad = data;
+}
 
-       for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
-       {
-               useralarm[i].ad = data;
-       }
 
-}
 
 static void show_image_icon(void *data)
 {
-       int i = 0;
-       for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
+       if(bShown == 1)
        {
-               useralarm[i].img_obj.data = icon_path[0];
-               indicator_util_icon_show(&useralarm[i]);
+               return;
        }
+
+       useralarm.img_obj.data = icon_path[0];
+       icon_show(&useralarm);
+
+       bShown = 1;
 }
 
+
+
 static void hide_image_icon(void)
 {
-       int i = 0;
-       for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
-       {
-               indicator_util_icon_hide(&useralarm[i]);
-       }
+       icon_hide(&useralarm);
+
+       bShown = 0;
 }
 
+
+
 static void indicator_alarm_change_cb(keynode_t *node, void *data)
 {
        int status = 0;
@@ -107,11 +103,11 @@ static void indicator_alarm_change_cb(keynode_t *node, void *data)
        ret = vconf_get_int(VCONFKEY_ALARM_STATE, &status);
        if (ret == OK) {
                if (status > 0) {
-                       INFO("ALARM COUNT: %d", status);
+                       DBG("ALARM COUNT: %d", status);
                        show_image_icon(data);
                        return;
                }
-               INFO("ALARM COUNT: %d", status);
+               DBG("ALARM COUNT: %d", status);
                hide_image_icon();
                return;
        }
@@ -119,32 +115,60 @@ static void indicator_alarm_change_cb(keynode_t *node, void *data)
        return;
 }
 
+
+
+#ifdef _SUPPORT_SCREEN_READER
+static char *access_info_cb(void *data, Evas_Object *obj)
+{
+       char *tmp = NULL;
+       char buf[256] = {0,};
+
+       int status = 0;
+
+       vconf_get_int(VCONFKEY_ALARM_STATE, &status);
+
+       if(status>0)
+       {
+               snprintf(buf, sizeof(buf), "%s, %s, %s", _("IDS_COM_BODY_ALARM"),_("IDS_IDLE_BODY_ICON"),_("IDS_IDLE_BODY_STATUS_BAR_ITEM"));
+       }
+
+       tmp = strdup(buf);
+       if (!tmp) return NULL;
+       return tmp;
+}
+#endif
+
+
+
 static int register_alarm_module(void *data)
 {
-       int ret;
+       int ret = -1;
 
        retif(data == NULL, FAIL, "Invalid parameter!");
 
        set_app_state(data);
+       if (ret < 0)
+       {
+               ERR("Fail to init alarmdb.");
+               return FAIL;
+       }
 
        ret = vconf_notify_key_changed(VCONFKEY_ALARM_STATE,
-                                      indicator_alarm_change_cb, data);
-       if (ret != OK)
-               ERR("Failed to register callback!");
+                                       indicator_alarm_change_cb, data);
 
        indicator_alarm_change_cb(NULL, data);
 
        return ret;
 }
 
+
+
 static int unregister_alarm_module(void)
 {
        int ret;
 
        ret = vconf_ignore_key_changed(VCONFKEY_ALARM_STATE,
-                                      indicator_alarm_change_cb);
-       if (ret != OK)
-               ERR("Failed to unregister callback!");
+                                       indicator_alarm_change_cb);
 
-       return OK;
+       return ret;
 }
old mode 100755 (executable)
new mode 100644 (file)
index ce40d81..240cf8c
@@ -1,9 +1,7 @@
 /*
- *  indicator
+ *  Indicator
  *
- * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
- *
- * Contact: Junghyun Kim <jh1114.kim@samsung.com> Kangwon Lee <newton.lee@samsung.com>
+ * Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd. All rights reserved.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  */
 
 
+
 #include <stdio.h>
 #include <stdlib.h>
 #include <vconf.h>
+#include <notification.h>
 #include "common.h"
 #include "indicator.h"
-#include "indicator_ui.h"
+#include "main.h"
 #include "modules.h"
-#include "indicator_icon_util.h"
+#include "icon.h"
 
 #define ICON_PRIORITY  INDICATOR_PRIORITY_NOTI_2
 #define MODULE_NAME            "earphone"
 #define TIMER_INTERVAL 0.3
 
+//#define _(str) gettext(str)
+
 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] = {
-{
-       .win_type = INDICATOR_WIN_PORT,
+icon_s earphone = {
        .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_earphone_module,
        .fini = unregister_earphone_module,
        .wake_up = wake_up_cb
-},
-{
-       .win_type = INDICATOR_WIN_LAND,
-       .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_earphone_module,
-       .fini = unregister_earphone_module,
-       .wake_up = wake_up_cb
-}
-
 };
 
 static const char *icon_path[] = {
-       "Earphone/B03_Earphone.png",
+       "Earphone/B03_BT_Headset.png",
        NULL
 };
 static int updated_while_lcd_off = 0;
+static int bShown = 0;
+
 
 
 static void set_app_state(void* data)
 {
-       int i = 0;
-
-       for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
-       {
-               earphone[i].ad = data;
-       }
+       earphone.ad = data;
 }
 
+
+
 static void show_image_icon(void)
 {
-       int i = 0;
 
-       for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
+       if(bShown == 1)
        {
-               earphone[i].img_obj.data = icon_path[0];
-               indicator_util_icon_show(&earphone[i]);
+               return;
        }
+
+       earphone.img_obj.data = icon_path[0];
+       icon_show(&earphone);
+
+       bShown = 1;
 }
 
+
+
 static void hide_image_icon(void)
 {
-       int i = 0;
-       for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
-       {
-               indicator_util_icon_hide(&earphone[i]);
-       }
+       icon_hide(&earphone);
+
+       bShown = 0;
 }
 
+
+
 static void indicator_earphone_change_cb(keynode_t *node, void *data)
 {
        int status = 0;
@@ -113,17 +100,15 @@ static void indicator_earphone_change_cb(keynode_t *node, void *data)
 
        retif(data == NULL, , "Invalid parameter!");
 
-       if(indicator_util_get_update_flag()==0)
+       if(icon_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!");
                return;
        }
 
@@ -131,7 +116,7 @@ static void indicator_earphone_change_cb(keynode_t *node, void *data)
        case VCONFKEY_SYSMAN_EARJACK_3WIRE:
        case VCONFKEY_SYSMAN_EARJACK_4WIRE:
        case VCONFKEY_SYSMAN_EARJACK_TVOUT:
-               INFO("Earphone connected");
+               DBG("Earphone connected");
                show_image_icon();
                break;
 
@@ -141,11 +126,12 @@ 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;
        }
 
@@ -153,6 +139,8 @@ static int wake_up_cb(void *data)
        return OK;
 }
 
+
+
 static int register_earphone_module(void *data)
 {
        int ret;
@@ -163,22 +151,20 @@ static int register_earphone_module(void *data)
 
        ret = vconf_notify_key_changed(VCONFKEY_SYSMAN_EARJACK,
                                       indicator_earphone_change_cb, data);
-       if (ret != OK)
-               ERR("Failed to register earphoneback!");
 
        indicator_earphone_change_cb(NULL, data);
 
        return ret;
 }
 
+
+
 static int unregister_earphone_module(void)
 {
        int ret;
 
        ret = vconf_ignore_key_changed(VCONFKEY_SYSMAN_EARJACK,
                                       indicator_earphone_change_cb);
-       if (ret != OK)
-               ERR("Failed to unregister earphoneback!");
 
-       return OK;
+       return ret;
 }
old mode 100755 (executable)
new mode 100644 (file)
similarity index 62%
rename from test/indicator_debug_util.h
rename to modules/information/felica_lock.c
index 9221fb4..71e5cca
@@ -1,22 +1,20 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ *  Indicator
  *
- * Licensed under the Flora License, Version 1.1 (the "License");
+ * Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.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/
+ * http://www.apache.org/licenses/LICENSE-2.0
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
+ *
  */
 
-#ifndef __INDICATOR_DEBUG_UTIL_H_
-#define __INDICATOR_DEBUG_UTIL_H_
-
-extern void debug_printf(const char *msg, ...);
 
-#endif
diff --git a/modules/information/fm_radio.c b/modules/information/fm_radio.c
new file mode 100644 (file)
index 0000000..56da023
--- /dev/null
@@ -0,0 +1,130 @@
+/*
+ *  Indicator
+ *
+ * Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * 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 <stdio.h>
+#include <stdlib.h>
+#include <vconf.h>
+#include "common.h"
+#include "indicator.h"
+#include "icon.h"
+#include "modules.h"
+#include "main.h"
+
+#define ICON_PRIORITY  INDICATOR_PRIORITY_MINICTRL2
+#define MODULE_NAME            "FM_Radio"
+
+static int register_fm_radio_module(void *data);
+static int unregister_fm_radio_module(void);
+
+icon_s fm_radio = {
+       .type = INDICATOR_IMG_ICON,
+       .name = MODULE_NAME,
+       .priority = ICON_PRIORITY,
+       .always_top = EINA_FALSE,
+       .exist_in_view = EINA_FALSE,
+       .img_obj = {0,},
+       .obj_exist = EINA_FALSE,
+       .area = INDICATOR_ICON_AREA_MINICTRL,
+       .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)
+{
+       fm_radio.ad = data;
+}
+
+
+
+static void show_image_icon(void *data)
+{
+       fm_radio.img_obj.data = icon_path[0];
+       icon_show(&fm_radio);
+}
+
+
+
+static void hide_image_icon(void)
+{
+       icon_hide(&fm_radio);
+}
+
+
+
+static void indicator_fm_radio_change_cb(keynode_t *node, void *data)
+{
+       int status = 0;
+       int ret = -1;
+
+       DBG("indicator_fm_radio_change_cb called!");
+       retif(data == NULL, , "Invalid parameter!");
+
+       if (ret == OK) {
+               INFO("FM_RADIO state: %d", status);
+               if (status == 1)
+                       show_image_icon(data);
+               else
+                       hide_image_icon();
+       }
+       else
+       {
+               DBG("Fail to get vconfkey (ret:%d)", ret);
+       }
+       return;
+}
+
+
+
+void hide_fm_radio_icon(void)
+{
+       hide_image_icon();
+}
+
+
+
+static int register_fm_radio_module(void *data)
+{
+       int ret = -1;
+
+       DBG("register_fm_radio_module called!");
+       retif(data == NULL, FAIL, "Invalid parameter!");
+
+       set_app_state(data);
+
+       indicator_fm_radio_change_cb(NULL, data);
+
+       return ret;
+}
+
+
+
+static int unregister_fm_radio_module(void)
+{
+       DBG("unregister_fm_radio_module called!");
+
+       return OK;
+}
diff --git a/modules/information/lowmem.c b/modules/information/lowmem.c
new file mode 100644 (file)
index 0000000..6669a3d
--- /dev/null
@@ -0,0 +1,286 @@
+/*
+ *  Indicator
+ *
+ * Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * 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 <stdio.h>
+#include <stdlib.h>
+#include <vconf.h>
+#include "common.h"
+#include "indicator.h"
+#include "main.h"
+#include "modules.h"
+#include "icon.h"
+#include <E_DBus.h>
+#include <sys/statvfs.h>
+
+#define BUS_NAME       "org.tizen.system.deviced"
+#define PATH_NAME    "/Org/Tizen/System/DeviceD/Lowmem"
+#define INTERFACE_NAME BUS_NAME".lowmem"
+#define MEMBER_NAME    "ChangeState"
+
+static E_DBus_Connection *edbus_conn=NULL;
+static E_DBus_Signal_Handler *edbus_handler=NULL;
+
+#define ICON_PRIORITY  INDICATOR_PRIORITY_NOTI_2
+#define MODULE_NAME            "lowmem"
+#define TIMER_INTERVAL 0.3
+
+static int register_lowmem_module(void *data);
+static int unregister_lowmem_module(void);
+static int wake_up_cb(void *data);
+void check_storage();
+void get_internal_storage_status(double *total, double *avail);
+
+icon_s lowmem = {
+       .name = MODULE_NAME,
+       .priority = ICON_PRIORITY,
+       .always_top = EINA_FALSE,
+       .exist_in_view = EINA_FALSE,
+       .img_obj = {0,},
+       .obj_exist = EINA_FALSE,
+       .area = INDICATOR_ICON_AREA_NOTI,
+       .init = register_lowmem_module,
+       .fini = unregister_lowmem_module,
+       .wake_up = wake_up_cb
+};
+
+static const char *icon_path[] = {
+       "Storage/B03_storage_memoryfull.png",
+       NULL
+};
+
+
+static int updated_while_lcd_off = 0;
+static int bShown = 0;
+
+
+
+static void set_app_state(void* data)
+{
+       lowmem.ad = data;
+}
+
+
+
+static void show_image_icon(void)
+{
+       if(bShown == 1)
+       {
+               return;
+       }
+
+       lowmem.img_obj.data = icon_path[0];
+       icon_show(&lowmem);
+
+       bShown = 1;
+}
+
+static void hide_image_icon(void)
+{
+       icon_hide(&lowmem);
+
+       bShown = 0;
+}
+
+
+
+static void indicator_lowmem_pm_state_change_cb(keynode_t *node, void *data)
+{
+}
+
+
+
+static int wake_up_cb(void *data)
+{
+       if(updated_while_lcd_off==0 && lowmem.obj_exist == EINA_FALSE)
+       {
+               return OK;
+       }
+
+       return OK;
+}
+
+
+
+static void on_changed_receive(void *data, DBusMessage *msg)
+{
+       DBusError err;
+       int response;
+       int r;
+
+       DBG("edbus signal Received");
+
+       r = dbus_message_is_signal(msg, INTERFACE_NAME, MEMBER_NAME);
+       if (!r) {
+               ERR("dbus_message_is_signal error");
+               return;
+       }
+
+       SECURE_ERR("%s - %s", INTERFACE_NAME, MEMBER_NAME);
+
+       dbus_error_init(&err);
+       r = dbus_message_get_args(msg, &err, DBUS_TYPE_INT32, &response, DBUS_TYPE_INVALID);
+       if (!r) {
+               ERR("dbus_message_get_args error");
+               return;
+       }
+
+       SECURE_ERR("receive data : %d", response);
+
+       if(response==1)
+       {
+               show_image_icon();
+       }
+       else
+       {
+               hide_image_icon();
+       }
+}
+
+
+
+static void edbus_cleaner(void)
+{
+       if(edbus_conn==NULL)
+       {
+               DBG("already unregistered");
+               return;
+       }
+
+       if (edbus_handler)
+       {
+               e_dbus_signal_handler_del(edbus_conn, edbus_handler);
+               edbus_handler = NULL;
+       }
+       if (edbus_conn)
+       {
+               e_dbus_connection_close(edbus_conn);
+               edbus_conn = NULL;
+       }
+       e_dbus_shutdown();
+}
+
+
+
+static int edbus_listener(void)
+{
+       if(edbus_conn!=NULL)
+       {
+               DBG("alreay exist");
+               return -1;
+       }
+       // Init
+       e_dbus_init();
+
+       edbus_conn = e_dbus_bus_get(DBUS_BUS_SYSTEM);
+       if (edbus_conn == NULL) {
+               ERR("e_dbus_bus_get error");
+               return -1;
+       }
+       edbus_handler = e_dbus_signal_handler_add(edbus_conn, NULL, PATH_NAME,
+                                                               INTERFACE_NAME, MEMBER_NAME,
+                                                               on_changed_receive, NULL);
+       if (edbus_handler == NULL) {
+               ERR("e_dbus_signal_handler_add error");
+               return -1;
+       }
+       DBG("dbus listener run");
+       return 0;
+
+}
+
+
+
+static int register_lowmem_module(void *data)
+{
+       int ret;
+
+       retif(data == NULL, FAIL, "Invalid parameter!");
+
+       set_app_state(data);
+
+       ret = vconf_notify_key_changed(VCONFKEY_PM_STATE,
+                                               indicator_lowmem_pm_state_change_cb, data);
+
+       check_storage();
+       edbus_listener();
+
+       return ret;
+}
+
+
+
+static int unregister_lowmem_module(void)
+{
+       int ret;
+
+
+       ret = vconf_ignore_key_changed(VCONFKEY_PM_STATE,
+                                               indicator_lowmem_pm_state_change_cb);
+
+       edbus_cleaner();
+
+       return ret;
+}
+
+
+
+void check_storage()
+{
+       double total = 0.0;
+       double available = 0.0;
+       double percentage = 0.0;
+       get_internal_storage_status(&total, &available);
+       percentage = (available/total) * 100.0;
+       DBG("check_storage : Total : %lf, Available : %lf Percentage : %lf", total, available, percentage);
+       if(percentage <= 5.0)
+       {
+               show_image_icon();
+       }
+}
+
+
+
+void get_internal_storage_status(double *total, double *avail)
+{
+       int ret;
+       double tmp_total;
+       struct statvfs s;
+       const double sz_32G = 32. * 1073741824;
+       const double sz_16G = 16. * 1073741824;
+       const double sz_8G = 8. * 1073741824;
+
+       retif(total == NULL, , "Invalid parameter!");
+       retif(avail == NULL, , "Invalid parameter!");
+
+       ret = statvfs("/opt/usr", &s);
+       if (0 == ret)
+       {
+               tmp_total = (double)s.f_frsize * s.f_blocks;
+               *avail = (double)s.f_bsize * s.f_bavail;
+
+               if (sz_16G < tmp_total)
+                       *total = sz_32G;
+               else if (sz_8G < tmp_total)
+                       *total = sz_16G;
+               else
+                       *total = sz_8G;
+       }
+}
old mode 100755 (executable)
new mode 100644 (file)
index cbf1d15..3ae6172
@@ -1,29 +1,34 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ *  Indicator
  *
- * Licensed under the Flora License, Version 1.1 (the "License");
+ * Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.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/
+ * http://www.apache.org/licenses/LICENSE-2.0
  *
  * 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 <stdio.h>
 #include <stdlib.h>
 #include <vconf.h>
 #include "common.h"
 #include "indicator.h"
-#include "indicator_ui.h"
+#include "main.h"
 #include "modules.h"
-#include "indicator_icon_util.h"
+#include "icon.h"
 
-#define ICON_PRIORITY  INDICATOR_PRIORITY_NOTI_2
+#define ICON_PRIORITY  INDICATOR_PRIORITY_SYSTEM_3
 #define MODULE_NAME            "mmc"
 #define TIMER_INTERVAL 0.3
 
@@ -31,137 +36,125 @@ static int register_mmc_module(void *data);
 static int unregister_mmc_module(void);
 static int wake_up_cb(void *data);
 
-Indicator_Icon_Object mmc[INDICATOR_WIN_MAX] = {
-{
-       .win_type = INDICATOR_WIN_PORT,
-       .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_mmc_module,
-       .fini = unregister_mmc_module,
-       .wake_up = wake_up_cb
-},
-{
-       .win_type = INDICATOR_WIN_LAND,
+icon_s mmc = {
        .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,
+       .area = INDICATOR_ICON_AREA_SYSTEM,
        .init = register_mmc_module,
        .fini = unregister_mmc_module,
        .wake_up = wake_up_cb
-}
-
 };
 
 static const char *icon_path[] = {
-       "Background playing/B03_Memorycard.png",
+       "Storage/B03_storage_t_flash.png",
        NULL
 };
 static int updated_while_lcd_off = 0;
+static int bShown = 0;
+
+
 
 static void set_app_state(void* data)
 {
-       int i = 0;
-
-       for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
-       {
-               mmc[i].ad = data;
-       }
+       mmc.ad = data;
 }
 
+
+
 static void show_image_icon(void)
 {
-       int i = 0;
-
-       for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
+       if(bShown == 1)
        {
-               mmc[i].img_obj.data = icon_path[0];
-               indicator_util_icon_show(&mmc[i]);
+               return;
        }
+
+       mmc.img_obj.data = icon_path[0];
+       icon_show(&mmc);
+
+       bShown = 1;
 }
 
+
+
 static void hide_image_icon(void)
 {
-       int i = 0;
-       for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
-       {
-               indicator_util_icon_hide(&mmc[i]);
-       }
-}
+       icon_hide(&mmc);
 
-static void icon_animation_set(enum indicator_icon_ani type)
-{
-       int i = 0;
-       for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
-       {
-               indicator_util_icon_animation_set(&mmc[i], type);
-       }
+       bShown = 0;
 }
 
+
+
 static void indicator_mmc_change_cb(keynode_t *node, void *data)
 {
-       int status = 0;
+       int status = 0, mmc_status = 0;
        int ret;
 
        retif(data == NULL, , "Invalid parameter!");
-
-       if(indicator_util_get_update_flag()==0)
+       DBG("indicator_mmc_change_cb");
+       if(icon_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_FILEMANAGER_DB_STATUS, &status);
-       if (ret == FAIL) {
-               ERR("Failed to get VCONFKEY_MMC_STATE!");
+       ret = vconf_get_int(VCONFKEY_FILEMANAGER_MMC_STATUS, &status);
+       if (ret != OK) {
                return;
        }
 
        switch (status) {
-       case VCONFKEY_FILEMANAGER_DB_UPDATING:
-               INFO("MMC loading");
-               show_image_icon();
-               icon_animation_set(ICON_ANI_BLINK);
+       case VCONFKEY_FILEMANAGER_MMC_LOADING:
+               DBG("MMC loading");
+               ret = vconf_get_int(VCONFKEY_SYSMAN_MMC_STATUS, &mmc_status);
+               if (ret != OK) {
+                       return;
+               }
+               if(mmc_status == VCONFKEY_SYSMAN_MMC_MOUNTED)
+               {
+                       DBG("Mounting");
+                       show_image_icon();
+               }
+               else
+               {
+                       DBG("Unmounting");
+               }
                break;
-
-       case VCONFKEY_FILEMANAGER_DB_UPDATED:
        default:
                hide_image_icon();
                break;
        }
 }
 
+
+
 static void indicator_mmc_pm_state_change_cb(keynode_t *node, void *data)
 {
        int status = 0;
-       int ret = 0;
        retif(data == NULL, , "Invalid parameter!");
 
-       vconf_get_int(VCONFKEY_PM_STATE, &status);
+       if (vconf_get_int(VCONFKEY_PM_STATE, &status) < 0)
+       {
+               ERR("Error getting VCONFKEY_PM_STATE value");
+               return;
+       }
 
        if(status == VCONFKEY_PM_STATE_LCDOFF)
        {
                int sos_status = 0;
-               ret = vconf_get_int(VCONFKEY_FILEMANAGER_DB_STATUS, &sos_status);
-               if (ret < 0)
-                       ERR("fail to get [%s]", VCONFKEY_FILEMANAGER_DB_STATUS);
+               if (vconf_get_int(VCONFKEY_FILEMANAGER_MMC_STATUS, &sos_status) < 0)
+               {
+                       ERR("Error getting VCONFKEY_FILEMANAGER_MMC_STATUS value");
+                       return;
+               }
 
-               INFO("mmc STATUS: %d", sos_status);
                switch (sos_status) {
-               case VCONFKEY_FILEMANAGER_DB_UPDATING:
-                       icon_animation_set(ICON_ANI_NONE);
+               case VCONFKEY_FILEMANAGER_MMC_LOADING:
                        break;
                default:
                        break;
@@ -169,11 +162,12 @@ static void indicator_mmc_pm_state_change_cb(keynode_t *node, void *data)
        }
 }
 
+
+
 static int wake_up_cb(void *data)
 {
-       if(updated_while_lcd_off==0 && mmc[0].obj_exist == EINA_FALSE)
+       if(updated_while_lcd_off==0 )
        {
-               DBG("ICON WAS NOT UPDATED");
                return OK;
        }
 
@@ -181,6 +175,8 @@ static int wake_up_cb(void *data)
        return OK;
 }
 
+
+
 static int register_mmc_module(void *data)
 {
        int ret;
@@ -189,36 +185,28 @@ static int register_mmc_module(void *data)
 
        set_app_state(data);
 
-       ret = vconf_notify_key_changed(VCONFKEY_FILEMANAGER_DB_STATUS,
-                                      indicator_mmc_change_cb, data);
-       if (ret != OK)
-               ERR("Failed to register mmcback!");
-
-       ret = vconf_notify_key_changed(VCONFKEY_PM_STATE,
-                                              indicator_mmc_pm_state_change_cb, data);
-       if (ret != OK)
-               ERR("Failed to register callback! : VCONFKEY_PM_STATE");
+       ret = vconf_notify_key_changed(VCONFKEY_FILEMANAGER_MMC_STATUS,
+                                       indicator_mmc_change_cb, data);
 
+       ret = ret | vconf_notify_key_changed(VCONFKEY_PM_STATE,
+                                               indicator_mmc_pm_state_change_cb, data);
 
        indicator_mmc_change_cb(NULL, data);
 
        return ret;
 }
 
+
+
 static int unregister_mmc_module(void)
 {
        int ret;
 
-       ret = vconf_ignore_key_changed(VCONFKEY_FILEMANAGER_DB_STATUS,
-                                      indicator_mmc_change_cb);
-       if (ret != OK)
-               ERR("Failed to unregister mmcback!");
+       ret = vconf_ignore_key_changed(VCONFKEY_FILEMANAGER_MMC_STATUS,
+                                       indicator_mmc_change_cb);
 
+       ret = ret | vconf_ignore_key_changed(VCONFKEY_PM_STATE,
+                                               indicator_mmc_pm_state_change_cb);
 
-       ret = vconf_ignore_key_changed(VCONFKEY_PM_STATE,
-                                              indicator_mmc_pm_state_change_cb);
-       if (ret != OK)
-               ERR("Failed to unregister callback!");
-
-       return OK;
+       return ret;
 }
diff --git a/modules/information/more_notify.c b/modules/information/more_notify.c
new file mode 100644 (file)
index 0000000..b1755c6
--- /dev/null
@@ -0,0 +1,177 @@
+/*
+ *  Indicator
+ *
+ * Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * 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 <stdio.h>
+#include <stdlib.h>
+#include <vconf.h>
+#include <minicontrol-monitor.h>
+#include <app_preference.h>
+
+#include "common.h"
+#include "indicator.h"
+#include "icon.h"
+#include "modules.h"
+#include "main.h"
+
+#define ICON_PRIORITY  INDICATOR_PRIORITY_NOTI_MIN
+#define MODULE_NAME            "more_notify"
+
+static int register_more_notify_module(void *data);
+static int unregister_more_notify_module(void);
+static int wake_up_cb(void *data);
+
+static int updated_while_lcd_off = 0;
+
+static int bShow = 0;
+
+icon_s more_notify = {
+       .name = MODULE_NAME,
+       .priority = ICON_PRIORITY,
+       .always_top = EINA_TRUE,
+       .exist_in_view = EINA_FALSE,
+       .img_obj = {0,},
+       .obj_exist = EINA_FALSE,
+       .area = INDICATOR_ICON_AREA_NOTI,
+       .init = register_more_notify_module,
+       .fini = unregister_more_notify_module,
+       .wake_up = wake_up_cb
+};
+
+enum {
+       MUSIC_PLAY,
+       MUSIC_PAUSED,
+};
+
+static char *icon_path[] = {
+       "Notify/B03_notify_more.png",
+       NULL
+};
+
+
+
+static void set_app_state(void* data)
+{
+       more_notify.ad = data;
+}
+
+
+
+static void show_image_icon_by_win(win_info* win)
+{
+       more_notify.img_obj.data = icon_path[0];
+       icon_show(&more_notify);
+}
+
+
+
+static void hide_image_icon_by_win(win_info* win)
+{
+       icon_hide(&more_notify);
+}
+
+
+
+static void _handle_more_notify_icon(win_info* win,int val)
+{
+       retif(win == NULL, , "Invalid parameter!");
+
+       if(bShow == val)
+       {
+               return;
+       }
+
+       bShow = val;
+
+       DBG("val %d", val);
+
+       if(val==1)
+       {
+               show_image_icon_by_win(win);
+               DBG("_handle_more_notify_show");
+       }
+       else
+       {
+               hide_image_icon_by_win(win);
+               DBG("_handle_more_notify_hide");
+       }
+}
+
+
+
+static void indicator_more_notify_change_cb(const char *key, void *data)
+{
+       struct appdata *ad = (struct appdata *)(more_notify.ad);
+       int val = 0;
+
+       retif(data == NULL, , "Invalid parameter!");
+
+       DBG("indicator_more_notify_change_cb");
+       win_info* win = NULL;
+
+       preference_get_int(key, &val);
+
+       if (strcmp(key, INDICATOR_SHOW_MORE_NOTI_PORT) == 0) {
+               win = &(ad->win);
+       } else {
+               SECURE_ERR("invalid val %s",key);
+               return;
+       }
+
+       _handle_more_notify_icon(win,val);
+
+       return;
+}
+
+
+
+static int wake_up_cb(void *data)
+{
+       if(updated_while_lcd_off==0)
+       {
+               return OK;
+       }
+
+       indicator_more_notify_change_cb(NULL, data);
+       return OK;
+}
+
+
+
+static int register_more_notify_module(void *data)
+{
+
+       retif(data == NULL, FAIL, "Invalid parameter!");
+
+       set_app_state(data);
+
+       preference_set_changed_cb(INDICATOR_SHOW_MORE_NOTI_PORT, indicator_more_notify_change_cb, data);
+
+       return OK;
+}
+
+
+
+static int unregister_more_notify_module(void)
+{
+       preference_unset_changed_cb(INDICATOR_SHOW_MORE_NOTI_PORT);
+
+       return OK;
+}
old mode 100755 (executable)
new mode 100644 (file)
index 8d05ba8..119ddf9
@@ -1,74 +1,61 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ *  Indicator
  *
- * Licensed under the Flora License, Version 1.1 (the "License");
+ * Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.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/
+ * http://www.apache.org/licenses/LICENSE-2.0
  *
  * 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 <stdio.h>
 #include <stdlib.h>
 #include <vconf.h>
 #include <minicontrol-monitor.h>
+
 #include "common.h"
-#include "indicator.h"
-#include "indicator_icon_util.h"
 #include "modules.h"
-#include "indicator_ui.h"
+#include "indicator.h"
+#include "main.h"
+#include "util.h"
+#include "icon.h"
 
-#define ICON_PRIORITY  INDICATOR_PRIORITY_NOTI_1
+#define ICON_PRIORITY  INDICATOR_PRIORITY_MINICTRL2
 #define MODULE_NAME            "MP3_PLAY"
 #define MINICONTROL_NAME       "[musicplayer-mini]"
+#define MUSIC_STATUS_FILE_PATH "/opt/usr/apps/org.tizen.music-player-lite/shared/data/MusicPlayStatus.ini"
+#define MAX_NAM_LEN 640
+#define MP_APP_ID "org.tizen.music-player-lite"
 
 static int register_mp3_play_module(void *data);
 static int unregister_mp3_play_module(void);
-static int mctrl_monitor_cb(int action, const char *name, void *data);
 static int wake_up_cb(void *data);
 
-static int mp_registerd = 0;
 static int updated_while_lcd_off = 0;
+static Ecore_File_Monitor *pFileMonitor = NULL;
 
-
-Indicator_Icon_Object mp3_play[INDICATOR_WIN_MAX] = {
-{
-       .win_type = INDICATOR_WIN_PORT,
-       .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_mp3_play_module,
-       .fini = unregister_mp3_play_module,
-       .minictrl_control = mctrl_monitor_cb,
-       .wake_up = wake_up_cb
-},
-{
-       .win_type = INDICATOR_WIN_LAND,
+icon_s mp3_play = {
        .name = MODULE_NAME,
        .priority = ICON_PRIORITY,
-       .always_top = EINA_TRUE,
+       .always_top = EINA_FALSE,
        .exist_in_view = EINA_FALSE,
-       .txt_obj = {0,},
        .img_obj = {0,},
        .obj_exist = EINA_FALSE,
-       .area = INDICATOR_ICON_AREA_NOTI,
+       .area = INDICATOR_ICON_AREA_MINICTRL,
        .init = register_mp3_play_module,
        .fini = unregister_mp3_play_module,
-       .minictrl_control = mctrl_monitor_cb,
        .wake_up = wake_up_cb
-}
 };
 
 enum {
@@ -77,76 +64,101 @@ enum {
 };
 
 static char *icon_path[] = {
-       "Background playing/B03_Backgroundplaying_MP3playing.png",
-       "Background playing/B03_Backgroundplaying_Music_paused.png",
+       "Background playing/B03_Backgroundplaying_music_playing.png",
+       "Background playing/B03_Backgroundplaying_music_paused.png",
        NULL
 };
 
+static int prevIndex = -1;
+
+
+
 static void set_app_state(void* data)
 {
-       int i = 0;
-
-       for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
-       {
-               mp3_play[i].ad = data;
-       }
+       mp3_play.ad = data;
 }
 
+
+
 static void show_image_icon(void *data, int status)
 {
-       int i = 0;
-       for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
-       {
-               mp3_play[i].img_obj.data = icon_path[status];
-               indicator_util_icon_show(&mp3_play[i]);
+       if (prevIndex == status) {
+               return;
        }
+
+       mp3_play.img_obj.data = icon_path[status];
+       icon_show(&mp3_play);
+
+       prevIndex = status;
 }
 
+
+
 static void hide_image_icon(void)
 {
-       int i = 0;
-       for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
-       {
-               indicator_util_icon_hide(&mp3_play[i]);
-       }
+       icon_hide(&mp3_play);
+
+       prevIndex = -1;
 }
 
+
+
 static void show_mp_icon(void* data)
 {
-       int status;
-       int ret;
+       FILE* fp = fopen(MUSIC_STATUS_FILE_PATH, "r");
+       char line[MAX_NAM_LEN+1];
 
        retif(data == NULL, , "Invalid parameter!");
+       if(fp == NULL)
+       {
+               ERR("Invalid file path !!");
+               return;
+       }
 
-       if(indicator_util_get_update_flag()==0)
+       if(icon_get_update_flag()==0)
        {
                updated_while_lcd_off = 1;
                DBG("need to update %d",updated_while_lcd_off);
+               fclose(fp);
                return;
        }
+
        updated_while_lcd_off = 0;
 
-       ret = vconf_get_int(VCONFKEY_MUSIC_STATE, &status);
-       if (ret == OK) {
-               INFO("MUSIC state: %d", status);
-               switch (status) {
-               case VCONFKEY_MUSIC_PLAY:
+       if(fgets(line, MAX_NAM_LEN, fp))
+       {
+               if(strstr(line, "play"))
+               {
+                       DBG("Music state : PLAY");
                        show_image_icon(data, MUSIC_PLAY);
-                       break;
-               case VCONFKEY_MUSIC_PAUSE:
+               }
+               else if(strstr(line, "pause"))
+               {
+                       DBG("Music state : PAUSED");
                        show_image_icon(data, MUSIC_PAUSED);
-                       break;
-               default:
-                       break;
+               }
+               else if(strstr(line, "stop") || strstr(line, "off"))
+               {
+                       DBG("Music state : STOP or OFF");
+                       hide_image_icon();
                }
        }
+       retif(fclose(fp), , "File close error!");
+
+}
+
+
+
+void hide_mp_icon(void)
+{
+       hide_image_icon();
 }
 
 
-static void indicator_mp3_play_change_cb(keynode_t *node, void *data)
+
+static void indicator_mp3_play_change_cb(void *data, Ecore_File_Monitor *em, Ecore_File_Event event, const char* path)
 {
        retif(data == NULL, , "Invalid parameter!");
-
        DBG("indicator_mp3_play_change_cb");
 
        show_mp_icon(data);
@@ -154,71 +166,44 @@ static void indicator_mp3_play_change_cb(keynode_t *node, void *data)
        return;
 }
 
-static int mctrl_monitor_cb(int action, const char *name, void *data)
-{
-       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 mp %s",name);
-               return FAIL;
-       }
-
-       DBG("_mctrl_monitor_cb:%s %d",name,action);
-
-       switch (action) {
-       case MINICONTROL_ACTION_START:
-               vconf_notify_key_changed(VCONFKEY_MUSIC_STATE, indicator_mp3_play_change_cb, data);
-               mp_registerd = 1;
-               show_mp_icon(data);
-               break;
-       case MINICONTROL_ACTION_STOP:
-               mp_registerd = 0;
-               if(indicator_util_get_update_flag()==1)
-               {
-                       hide_image_icon();
-                       return OK;
-               }
-               vconf_ignore_key_changed(VCONFKEY_MUSIC_STATE, indicator_mp3_play_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(mp_registerd==1)
-       {
-               indicator_mp3_play_change_cb(NULL, data);
-       }
-       else
-       {
-               hide_image_icon();
-       }
+       indicator_mp3_play_change_cb(data, pFileMonitor, (Ecore_File_Event)NULL, MUSIC_STATUS_FILE_PATH);
        return OK;
 }
 
+
+
 static int register_mp3_play_module(void *data)
 {
-
+       DBG("Music file monitor added !!");
        retif(data == NULL, FAIL, "Invalid parameter!");
 
        set_app_state(data);
 
+       ECORE_FILE_MONITOR_DELIF(pFileMonitor);
+       pFileMonitor = util_file_monitor_add(MUSIC_STATUS_FILE_PATH, (Ecore_File_Monitor_Cb)indicator_mp3_play_change_cb, data);
+       retif(pFileMonitor == NULL, FAIL, "util_file_monitor_add return NULL!!");
+
        return OK;
 }
 
+
+
 static int unregister_mp3_play_module(void)
 {
+       DBG("Music file monitor removed !!");
+       retif(pFileMonitor == NULL, FAIL, "File Monitor do not exist !");
+
+       util_file_monitor_remove(pFileMonitor);
+       pFileMonitor = NULL;
+
        return OK;
 }
old mode 100755 (executable)
new mode 100644 (file)
index 524bfe5..2c61ce5
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ *  Indicator
  *
- * Licensed under the Flora License, Version 1.1 (the "License");
+ * Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.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/
+ * http://www.apache.org/licenses/LICENSE-2.0
  *
  * 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 <stdio.h>
 #include <stdlib.h>
 #include <vconf.h>
 #include <notification.h>
+#include <notification_list.h>
+//#include <notification_internal.h>
+#include <pkgmgr-info.h>
+#include <app_preference.h>
+
 #include "common.h"
 #include "indicator.h"
-#include "indicator_icon_util.h"
-#include "indicator_ui.h"
-#include "indicator_icon_list.h"
+#include "main.h"
+#include "box.h"
+#include "icon.h"
+#include "list.h"
+#include "util.h"
+#include "log.h"
 
 #define ICON_PRIORITY  INDICATOR_PRIORITY_NOTI_2
 #define MODULE_NAME            "notification"
 
+#define MSG_SERVER "/usr/bin/msg-server"
+#define MSG_ICON "/usr/share/icons/default/small/org.tizen.message-lite.png"
+
+static int noti_ready = 0;
+static Eina_List *status_list;
+
 static int register_noti_module(void *data);
 static int unregister_noti_module(void);
 
-Indicator_Icon_Object noti[INDICATOR_WIN_MAX] = {
-{
-       .win_type = INDICATOR_WIN_PORT,
-       .type = INDICATOR_IMG_ICON,
-       .name = MODULE_NAME,
-       .priority = ICON_PRIORITY,
-       .always_top = EINA_FALSE,
-       .txt_obj = {0,},
-       .img_obj = {0,},
-       .obj_exist = EINA_FALSE,
-       .area = INDICATOR_ICON_AREA_NOTI,
-       .exist_in_view = EINA_FALSE,
-       .init = register_noti_module,
-       .fini = unregister_noti_module
-},
-{
-       .win_type = INDICATOR_WIN_LAND,
+icon_s noti = {
        .type = INDICATOR_IMG_ICON,
        .name = MODULE_NAME,
        .priority = ICON_PRIORITY,
        .always_top = EINA_FALSE,
-       .txt_obj = {0,},
        .img_obj = {0,},
        .obj_exist = EINA_FALSE,
        .area = INDICATOR_ICON_AREA_NOTI,
        .exist_in_view = EINA_FALSE,
        .init = register_noti_module,
        .fini = unregister_noti_module
-}
 };
 
 struct noti_status {
        notification_h noti;
        int type;
        int cnt;
-       Indicator_Icon_Object *icon[INDICATOR_WIN_MAX];
+       icon_s *icon;
 };
 
 
-static Eina_List *status_list;
 
 static void set_app_state(void* data)
 {
-       int i = 0;
-
-       for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
-       {
-               noti[i].ad = data;
-       }
+       noti.ad = data;
 }
 
+
+
 static void show_icon_with_path(struct noti_status *data, char* icon_path)
 {
-       int i = 0;
        retif(data == NULL, , "Invalid parameter!");
-       for(i=0 ; i<INDICATOR_WIN_MAX ; i++)
-       {
-               data->icon[i]->img_obj.data = strdup(icon_path);
-               indicator_util_icon_show(data->icon[i]);
-       }
+       DBG("%s",icon_path);
+
+       data->icon->img_obj.data = strdup(icon_path);
+       icon_show(data->icon);
 }
 
+
+
 static void hide_image_icon(struct noti_status *data)
 {
-       int i = 0;
        retif(data == NULL, , "Invalid parameter!");
-       for(i=0 ; i<INDICATOR_WIN_MAX ; i++)
-       {
-               indicator_util_icon_hide(data->icon[i]);
-       }
+
+       icon_hide(data->icon);
 }
 
+
+
 static void free_image_icon(struct noti_status *data)
 {
-       int i = 0;
        retif(data == NULL, , "Invalid parameter!");
-       for(i=0 ; i<INDICATOR_WIN_MAX ; i++)
-       {
-               indicator_icon_list_remove(data->icon[i]);
 
-               if (data->icon[i])
-               {
-                       if (data->icon[i]->img_obj.data)
-                       {
-                               free(data->icon[i]->img_obj.data);
-                       }
+       list_remove_icon(data->icon);
 
-                       if (data->icon[i]->name)
-                       {
-                               free(data->icon[i]->name);
-                       }
+       if (data->icon)
+       {
+               if (data->icon->img_obj.data)
+               {
+                       free((char*)data->icon->img_obj.data);
+                       data->icon->img_obj.data = NULL;
+               }
 
-                       free(data->icon[i]);
+               if (data->icon->name)
+               {
+                       free(data->icon->name);
+                       data->icon->name = NULL;
                }
 
+               free(data->icon);
+               data->icon = NULL;
        }
 
+
        if(data!=NULL)
        {
-               INFO("noti data free!");
                free(data);
                data = NULL;
        }
 }
 
+
+
 static void insert_icon_list(struct noti_status *data)
 {
-       int i = 0;
        retif(data == NULL, , "Invalid parameter!");
-       for(i=0 ; i<INDICATOR_WIN_MAX ; i++)
-       {
-               indicator_icon_list_insert(data->icon[i]);
+
+       list_insert_icon(data->icon);
+}
+
+
+
+char* __indicator_ui_get_pkginfo_icon(const char *pkgid)
+{
+       int ret = 0;
+       char *icon_path = NULL;
+       char *icon_ret = NULL;
+       retif(pkgid == NULL, NULL, "invalid parameter");
+
+       pkgmgrinfo_appinfo_h appinfo_h = NULL;
+
+       ret = pkgmgrinfo_appinfo_get_appinfo(pkgid, &appinfo_h);
+       if (ret < 0) {
+               ERR("pkgmgrinfo_appinfo_get_appinfo is failed %d %s", ret,pkgid);
        }
+
+       /* Icon path */
+       ret = pkgmgrinfo_appinfo_get_icon(appinfo_h, &icon_path);
+
+       if (ret < 0) {
+               ERR("pkgmgrinfo_appinfo_get_icon is failed %d", ret);
+       }
+       if(icon_path) {
+               icon_ret = (char*)strdup(icon_path);
+       }
+       if (appinfo_h) {
+               pkgmgrinfo_appinfo_destroy_appinfo(appinfo_h);
+       }
+
+       return icon_ret;
 }
 
+
+
 static void show_image_icon(struct noti_status *data)
 {
        retif(data == NULL, , "Invalid parameter!");
 
-       char *icon_path;
+       char* icon_path=NULL;
+
        notification_h noti = NULL;
 
        if (data->noti) {
                noti = data->noti;
                if (noti) {
                        notification_get_image(noti, NOTIFICATION_IMAGE_TYPE_ICON_FOR_INDICATOR, &icon_path);
-                       if(icon_path == NULL)
-                       {
-                               DBG("no indicator icon");
-                               notification_get_icon(noti, &icon_path);
-                       }
-                       DBG("Get Path of Notication %s : %s",data->icon[0]->name, icon_path);
-                       if (icon_path == NULL
-                               || !ecore_file_exists(icon_path))
+
+                       if (icon_path == NULL||!ecore_file_exists(icon_path))
                        {
-                               int i = 0;
-                               for(i=0 ; i<INDICATOR_WIN_MAX ; i++)
+                               if(icon_path != NULL&&util_check_noti_ani(icon_path))
                                {
-                                       data->icon[i]->img_obj.data = NULL;
+                                       show_icon_with_path(data, icon_path);
+                               }
+                               else
+                               {
+                                       notification_get_image(noti, NOTIFICATION_IMAGE_TYPE_ICON, &icon_path);
+
+                                       if (icon_path == NULL||!ecore_file_exists(icon_path))
+                                       {
+                                               char* pkgname = NULL;
+                                               char* icon_path_second=NULL;
+                                               notification_get_pkgname(noti, &pkgname);
+                                               icon_path_second = __indicator_ui_get_pkginfo_icon(pkgname);
+
+                                               if(icon_path_second==NULL || !ecore_file_exists(icon_path_second))
+                                               {
+                                                       data->icon->img_obj.data = NULL;
+                                               }
+                                               else
+                                               {
+                                                       show_icon_with_path(data, icon_path_second);
+                                               }
+
+                                               if(icon_path_second!=NULL)
+                                                       free(icon_path_second);
+                                       }
+                                       else
+                                       {
+                                               show_icon_with_path(data, icon_path);
+                                       }
                                }
                        }
                        else
@@ -178,12 +227,15 @@ static void show_image_icon(struct noti_status *data)
                        }
                }
        }
+
 }
 
+
+
 static void show_image_icon_all( void )
 {
-       Eina_List *l;
-       struct noti_status *data;
+       Eina_List *l = NULL;
+       struct noti_status *data = NULL;
 
        EINA_LIST_REVERSE_FOREACH(status_list, l, data) {
                if (data) {
@@ -193,41 +245,39 @@ static void show_image_icon_all( void )
 }
 
 
+
 static void _icon_add(struct noti_status *noti_data, const char *name, void *data)
 {
-       int i = 0;
-       DBG("noti_data %x",noti_data);
        retif(noti_data == NULL || data == NULL, , "Invalid parameter!");
 
-       for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
-       {
-               Indicator_Icon_Object *obj = NULL;
-               obj = calloc(1, sizeof(Indicator_Icon_Object));
-
-               if (obj) {
-                       memset(obj, 0, sizeof(Indicator_Icon_Object));
-                       obj->win_type = i;
-                       obj->type = INDICATOR_IMG_ICON;
-                       obj->name = strdup(name);
-                       obj->priority = ICON_PRIORITY;
-                       obj->always_top = EINA_FALSE;
-                       obj->ad = data;
-                       obj->area = INDICATOR_ICON_AREA_NOTI;
-                       obj->exist_in_view = EINA_FALSE;
-
-                       noti_data->icon[i] = obj;
-               }
+       icon_s *obj = NULL;
+       obj = calloc(1, sizeof(icon_s));
+
+       if (obj) {
+               memset(obj, 0, sizeof(icon_s));
+               obj->type = INDICATOR_IMG_ICON;
+               obj->name = strdup(name);
+               obj->priority = ICON_PRIORITY;
+               obj->always_top = EINA_FALSE;
+               obj->ad = data;
+               obj->area = INDICATOR_ICON_AREA_NOTI;
+               obj->exist_in_view = EINA_FALSE;
+
+               noti_data->icon = obj;
        }
 
        return;
 }
 
+
+
 static void _remove_all_noti(void)
 {
-       Eina_List *l;
-       struct noti_status *n_data;
+       Eina_List *l = NULL;
+       struct noti_status *n_data = NULL;
+
+       /* Clear List and objects in list */
        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);
@@ -236,6 +286,186 @@ static void _remove_all_noti(void)
 
 }
 
+
+
+static int _is_exist_by_privid(const char* privid)
+{
+       Eina_List *l = NULL;
+       struct noti_status *n_data = NULL;
+       retif(privid == NULL ,0 , "Invalid parameter!");
+
+       /* Clear List and objects in list */
+       EINA_LIST_FOREACH(status_list, l, n_data) {
+               if (!strcmp(n_data->icon->name, privid))
+               {
+                       return EINA_TRUE;
+                       break;
+               }
+       }
+       return EINA_FALSE;
+}
+
+
+
+static int _indicator_noti_display_check(notification_h noti)
+{
+       int applist = 0;
+       int noti_ret = 0;
+
+       noti_ret = notification_get_display_applist(noti, &applist);
+       if (noti_ret != NOTIFICATION_ERROR_NONE) {
+               return 0;
+       }
+
+       if (!(applist & NOTIFICATION_DISPLAY_APP_INDICATOR))
+       {
+               return 0;
+       }
+       return 1;
+}
+
+
+
+static void _remove_noti_by_privid(int priv_id)
+{
+       Eina_List *l = NULL;
+       struct noti_status *n_data = NULL;
+       char priv_id_str[256] = {0,};
+
+       snprintf(priv_id_str,sizeof(priv_id_str),"%d",priv_id);
+
+       EINA_LIST_FOREACH(status_list, l, n_data) {
+
+               if (strcmp(n_data->icon->name, priv_id_str)==0)
+               {
+                       DBG("remove %s", priv_id_str);
+                       status_list = eina_list_remove(status_list, n_data);
+                       hide_image_icon(n_data);
+                       free_image_icon(n_data);
+                       break;
+               }
+       }
+}
+
+
+
+static void _insert_noti_by_privid(notification_h noti,void* data)
+{
+       int exist = 0;
+       struct noti_status *status = NULL;
+       int prev_id = -1;
+       char* pkgname = NULL;
+       char prev_id_str[256] = {0,};
+
+       retif(noti == NULL , , "Invalid parameter!");
+
+       notification_get_pkgname(noti, &pkgname);
+       notification_get_id(noti,NULL,&prev_id);
+
+       if(_indicator_noti_display_check(noti)==0)
+       {
+               return ;
+       }
+
+       snprintf(prev_id_str,sizeof(prev_id_str),"%d",prev_id);
+
+       exist = _is_exist_by_privid(prev_id_str);
+
+       if (exist != EINA_TRUE) {
+               DBG("Make New Event Icon : %s %s", pkgname,prev_id_str);
+               status = calloc(1, sizeof(struct noti_status));
+               status->type = 0;
+               _icon_add(status,prev_id_str, data);
+               status->noti = noti;
+               insert_icon_list(status);
+               status_list = eina_list_append(status_list, status);
+               show_image_icon(status);
+       }
+
+}
+
+
+
+static void _update_noti_by_privid(notification_h noti)
+{
+       Eina_List *l = NULL;
+       struct noti_status *n_data = NULL;
+       int priv_id = -1;
+       char priv_id_str[256] = {0,};
+       char* pkgname = NULL;
+
+       retif(noti == NULL , , "Invalid parameter!");
+
+       notification_get_pkgname(noti, &pkgname);
+       notification_get_id(noti,NULL,&priv_id);
+
+       if(_indicator_noti_display_check(noti)==0)
+       {
+               return ;
+       }
+
+       snprintf(priv_id_str,sizeof(priv_id_str),"%d",priv_id);
+
+       char* indicator_path = NULL;
+       char* icon_path = NULL;
+       notification_get_image(noti, NOTIFICATION_IMAGE_TYPE_ICON_FOR_INDICATOR, &indicator_path);
+       if(indicator_path==NULL||!ecore_file_exists(indicator_path))
+       {
+               char* noti_path = NULL;
+               notification_get_image(noti, NOTIFICATION_IMAGE_TYPE_ICON, &noti_path);
+
+               if (noti_path == NULL||!ecore_file_exists(noti_path))
+               {
+                       char* pkgname = NULL;
+                       char* icon_path_second=NULL;
+                       notification_get_pkgname(noti, &pkgname);
+                       icon_path_second = __indicator_ui_get_pkginfo_icon(pkgname);
+                       if(icon_path_second!=NULL)
+                               icon_path = strdup(icon_path_second);
+                       if(icon_path_second!=NULL)
+                               free(icon_path_second);
+               }
+               else
+               {
+                       icon_path = strdup(noti_path);
+               }
+       }
+       else
+       {
+               icon_path = strdup(indicator_path);
+       }
+
+       EINA_LIST_FOREACH(status_list, l, n_data) {
+
+               if (strcmp(n_data->icon->name, priv_id_str)==0)
+               {
+                       DBG("Update Event Icon : %s %s, %s", priv_id_str,pkgname,icon_path);
+                       if(icon_path!=NULL)
+                       {
+                               if(n_data->icon->img_obj.data!=NULL)
+                               {
+                                       if(strcmp(n_data->icon->img_obj.data,icon_path)==0)
+                                       {
+                                               DBG("same icon with exsting noti");
+                                               goto __CATCH;
+                                       }
+                               }
+                       }
+                       n_data->noti = noti;
+                       show_image_icon(n_data);
+               }
+       }
+__CATCH:
+       if(icon_path!=NULL)
+       {
+               free(icon_path);
+               icon_path = NULL;
+       }
+       return;
+}
+
+
+
 static void _change_icon_status(void *data, notification_list_h noti_list)
 {
        int new_cnt = 0;
@@ -244,66 +474,53 @@ static void _change_icon_status(void *data, notification_list_h noti_list)
        struct noti_status *n_data = NULL;
        int noti_count = 0, ongoing_count = 0;
 
-       notification_get_count(NOTIFICATION_TYPE_NOTI, NULL,
-               NOTIFICATION_GROUP_ID_NONE, NOTIFICATION_PRIV_ID_NONE,
-               &noti_count);
-       notification_get_count(NOTIFICATION_TYPE_ONGOING, NULL,
-               NOTIFICATION_GROUP_ID_NONE, NOTIFICATION_PRIV_ID_NONE,
-               &ongoing_count);
+       /* TODO: 2014/07/16 notification_get_count will be deprecated.
+          If this function is using, use another solution. */
 
        new_cnt = noti_count + ongoing_count;
 
-       retif(noti_list == NULL, , "Invalid parameter!");
+       ret_if(!noti_list);
 
+       /* Clear List and objects in list */
        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);
 
-       while (noti_list != NULL) {
+       while (noti_list) {
                char *pkgname = NULL;
-               Eina_List *l = NULL;
-               struct noti_status *n_data = NULL;
                struct noti_status *status = NULL;
                Eina_Bool status_exist = EINA_FALSE;
                notification_error_e noti_ret = NOTIFICATION_ERROR_NONE;
                int applist;
+               int prev_id = -1;
+               char prev_id_str[256] = {0,};
 
                noti = notification_list_get_data(noti_list);
                noti_list = notification_list_get_next(noti_list);
 
                noti_ret = notification_get_display_applist(noti, &applist);
-               if (noti_ret != NOTIFICATION_ERROR_NONE) {
-                       INFO("Cannot Get display app of notication! : %p ",
-                                       noti);
-                       continue;
-               }
-               if (!(applist & NOTIFICATION_DISPLAY_APP_INDICATOR))
-                       continue;
+               if (noti_ret != NOTIFICATION_ERROR_NONE) continue;
+               if (!(applist & NOTIFICATION_DISPLAY_APP_INDICATOR)) continue;
 
                noti_ret = notification_get_pkgname(noti, &pkgname);
+               noti_ret = notification_get_id(noti, NULL, &prev_id);
+               snprintf(prev_id_str,sizeof(prev_id_str),"%d",prev_id);
 
-               if (noti_ret != NOTIFICATION_ERROR_NONE)
-                       DBG("Cannot Get pkgname of notication! : %p %p",
-                                       noti, pkgname);
-               else {
-                       EINA_LIST_FOREACH(status_list, l, n_data) {
-                               if (!strcmp(n_data->icon[0]->name, pkgname)) {
-                                       DBG("%s is already existed", pkgname);
-                                       status_exist = EINA_TRUE;
-                                       break;
-                               }
-                       }
+               if (noti_ret != NOTIFICATION_ERROR_NONE) {
+                       _D("Cannot Get pkgname of notication! : %p %p", noti, pkgname);
+               } else {
+                       status_exist = _is_exist_by_privid(prev_id_str);
 
                        if (status_exist != EINA_TRUE) {
-                               DBG("Make New Event Icon : %s", pkgname);
                                status = calloc(1, sizeof(struct noti_status));
+                               ret_if(!status);
+
                                status->type = 0;
                                status->cnt = new_cnt;
-                               _icon_add(status,pkgname, data);
+                               _icon_add(status,prev_id_str, data);
                                status->noti = noti;
                                insert_icon_list(status);
                                status_list = eina_list_append(status_list, status);
@@ -314,24 +531,23 @@ static void _change_icon_status(void *data, notification_list_h noti_list)
        show_image_icon_all();
 }
 
+
+
 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);
+       int get_event_count = box_get_max_count_in_non_fixed_list();
 
        retif(data == NULL, , "Invalid parameter!");
 
-       INFO("update_noti_module_new %d", type);
-
-       noti_err = notification_get_list(NOTIFICATION_TYPE_NONE,
-                               get_event_count, &list);
+       /* Get ongoing + noti count */
+       noti_err = notification_get_list(NOTIFICATION_TYPE_NONE, get_event_count, &list);
 
        noti_list_head = list;
 
        if (noti_err != NOTIFICATION_ERROR_NONE || list == NULL) {
-               INFO("update_noti_module_new %d %x", noti_err, list);
                _remove_all_noti();
                notification_free_list(noti_list_head);
                return;
@@ -342,96 +558,115 @@ void update_noti_module_new(void *data, notification_type_e type)
        notification_free_list(noti_list_head);
 }
 
-
-static int _indicator_check_first_start(void)
+static void _indicator_noti_detailed_changed_cb(void *data, notification_type_e type, notification_op *op_list, int num_op)
 {
-       int status = 0;
-       int ret = 0;
+       int i =0;
+       int op_type = 0;
+       int priv_id = 0;
 
-       ret = vconf_get_bool(VCONFKEY_INDICATOR_STARTED, &status);
-       if (ret) {
-               INFO("fail to get %s", VCONFKEY_INDICATOR_STARTED);
-               ret = vconf_set_bool(VCONFKEY_INDICATOR_STARTED, 1);
-               INFO("set : %s, result : %d", VCONFKEY_INDICATOR_STARTED, ret);
+       notification_h noti_new = NULL;
+
+       if(num_op<0)
+       {
+               ERR("invalid parameter %d",num_op);
+               return;
        }
 
-       if (status)
-               return 0;
+       for (i = 0; i < num_op; i++)
+       {
+               if(noti_ready==0)
+               {
+                       notification_op_get_data(op_list + i, NOTIFICATION_OP_DATA_TYPE, &op_type);
+                       if(op_type ==NOTIFICATION_OP_SERVICE_READY)
+                       {
+                               noti_ready = 1;
+                               DBG("noti ready");
+                               update_noti_module_new(data,type);
+                       }
+               }
+               else
+               {
+                       notification_op_get_data(op_list + i, NOTIFICATION_OP_DATA_TYPE, &op_type);
+                       notification_op_get_data(op_list + i, NOTIFICATION_OP_DATA_PRIV_ID, &priv_id);
+                       notification_op_get_data(op_list + i, NOTIFICATION_OP_DATA_NOTI, &noti_new);
 
-       return 1;
-}
+                       if(type!=-1)
+                       {
+                               switch(op_type)
+                               {
+                                       case NOTIFICATION_OP_INSERT:
+                                               _insert_noti_by_privid(noti_new,data);
+                                               break;
+                                       case NOTIFICATION_OP_UPDATE:
+                                               _update_noti_by_privid(noti_new);
+                                               break;
+                                       case NOTIFICATION_OP_DELETE:
+                                               _remove_noti_by_privid(priv_id);
+                                               break;
+                                       default:
+                                               break;
+                               }
+                       }
+               }
 
-static void _indicator_noti_delete_volatile_data(void)
-{
-       notification_list_h noti_list = NULL;
-       notification_list_h noti_list_head = NULL;
-       notification_h noti = NULL;
-       int property = 0;
+       }
+}
 
-       notification_get_grouping_list(NOTIFICATION_TYPE_NONE, -1, &noti_list);
 
-       noti_list_head = noti_list;
 
-       while (noti_list != NULL) {
-               noti = notification_list_get_data(noti_list);
-               notification_get_property(noti, &property);
+static void indicator_noti_sim_slot_cb(keynode_t *node, void *data)
+{
+       int status = 0;
+       int ret;
 
-               if (property & NOTIFICATION_PROP_VOLATILE_DISPLAY) {
-                       notification_set_property(noti,
-                               property |
-                               NOTIFICATION_PROP_DISABLE_UPDATE_ON_DELETE);
-                       notification_delete(noti);
-               }
+       retif(data == NULL, , "Invalid parameter!");
 
-               noti_list = notification_list_get_next(noti_list);
+       ret = vconf_get_int(VCONFKEY_TELEPHONY_SIM_SLOT, &status);
+       if (ret == OK)
+       {
+               update_noti_module_new(data,NOTIFICATION_TYPE_NONE);
        }
-
-       notification_free_list(noti_list_head);
-
-       notification_update(NULL);
+       return;
 }
 
 
+
 static int register_noti_module(void *data)
 {
 
        retif(data == NULL, FAIL, "Invalid parameter!");
-       notification_error_e ret = NOTIFICATION_ERROR_NONE;
-       int is_first = 0;
+       static int bRegisterd = 0;
 
        set_app_state(data);
 
-       is_first = _indicator_check_first_start();
+       if(bRegisterd==0)
        {
-               notifiation_clear(NOTIFICATION_TYPE_ONGOING);
-               _indicator_noti_delete_volatile_data();
+               notification_register_detailed_changed_cb(_indicator_noti_detailed_changed_cb, data);
+               bRegisterd = 1;
        }
 
-       ret = notification_resister_changed_cb(update_noti_module_new, data);
-
-       if (ret != NOTIFICATION_ERROR_NONE)
-               DBG("Fail to Register notification_resister_changed_cb!");
-
-       update_noti_module_new(data, NOTIFICATION_TYPE_NOTI);
+       vconf_notify_key_changed(VCONFKEY_TELEPHONY_SIM_SLOT, indicator_noti_sim_slot_cb, data);
 
        return OK;
 }
 
+
+
 static int unregister_noti_module(void)
 {
-       Eina_List *l;
+       Eina_List *l = NULL;
        struct noti_status *data = NULL;
-       notification_error_e ret = NOTIFICATION_ERROR_NONE;
-
-       ret = notification_unresister_changed_cb(update_noti_module_new);
 
-       if (ret != NOTIFICATION_ERROR_NONE)
-               DBG("Fail to unregister notification_resister_changed_cb!");
+       notification_unregister_detailed_changed_cb(_indicator_noti_detailed_changed_cb, noti.ad);
 
        EINA_LIST_FOREACH(status_list, l, data) {
-               free_image_icon(data);
-               status_list = eina_list_remove_list(status_list, l);
+               if(data!=NULL)
+               {
+                       free_image_icon(data);
+                       status_list = eina_list_remove_list(status_list, l);
+               }
        }
+       vconf_ignore_key_changed(VCONFKEY_TELEPHONY_SIM_SLOT, indicator_noti_sim_slot_cb);
 
        eina_list_free(status_list);
        return OK;
diff --git a/modules/information/video_play.c b/modules/information/video_play.c
new file mode 100644 (file)
index 0000000..d2457f3
--- /dev/null
@@ -0,0 +1,161 @@
+/*
+ *  Indicator
+ *
+ * Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * 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 <stdio.h>
+#include <stdlib.h>
+#include <vconf.h>
+#include "common.h"
+#include "indicator.h"
+#include "icon.h"
+#include "modules.h"
+#include "main.h"
+
+#define ICON_PRIORITY  INDICATOR_PRIORITY_NOTI_1
+#define MODULE_NAME            "VIDEO_PLAY"
+
+static int register_video_play_module(void *data);
+static int unregister_video_play_module(void);
+static int wake_up_cb(void *data);
+
+static int updated_while_lcd_off = 0;
+
+
+#define VCONF_VIDEO_PLAY_PLAYSTATUS "memory/private/org.tizen.videos/extern_mode"
+
+icon_s video_play = {
+       .name = MODULE_NAME,
+       .priority = ICON_PRIORITY,
+       .always_top = EINA_TRUE,
+       .exist_in_view = EINA_FALSE,
+       .img_obj = {0,},
+       .obj_exist = EINA_FALSE,
+       .area = INDICATOR_ICON_AREA_NOTI,
+       .init = register_video_play_module,
+       .fini = unregister_video_play_module,
+       .wake_up = wake_up_cb
+};
+
+static char *icon_path[] = {
+       "Notification/B03_video.png",
+       NULL
+};
+
+static int prevIndex = -1;
+
+
+
+static void set_app_state(void* data)
+{
+       video_play.ad = data;
+}
+
+
+
+static void show_image_icon(void *data)
+{
+       video_play.img_obj.data = icon_path[0];
+       icon_show(&video_play);
+}
+
+
+
+static void hide_image_icon(void)
+{
+       icon_hide(&video_play);
+       prevIndex = -1;
+}
+
+
+
+static void show_video_icon(void* data)
+{
+       int status;
+       int ret;
+
+       retif(data == NULL, , "Invalid parameter!");
+
+
+       if(icon_get_update_flag()==0)
+       {
+               updated_while_lcd_off = 1;
+               return;
+       }
+       updated_while_lcd_off = 0;
+
+       ret = vconf_get_bool(VCONF_VIDEO_PLAY_PLAYSTATUS, &status);
+       if (ret == OK) {
+               DBG("VIDEO PLAY state: %d", status);
+               if(status == 1)
+                       show_image_icon(data);
+               else
+                       hide_image_icon();
+       }
+}
+
+
+
+static void indicator_video_play_change_cb(keynode_t *node, void *data)
+{
+       retif(data == NULL, , "Invalid parameter!");
+
+       show_video_icon(data);
+
+       return;
+}
+
+
+
+static int wake_up_cb(void *data)
+{
+       if(updated_while_lcd_off==0)
+       {
+               return OK;
+       }
+
+       indicator_video_play_change_cb(NULL, data);
+
+       return OK;
+}
+
+
+
+static int register_video_play_module(void *data)
+{
+
+       retif(data == NULL, FAIL, "Invalid parameter!");
+
+       set_app_state(data);
+
+       vconf_notify_key_changed(VCONF_VIDEO_PLAY_PLAYSTATUS, indicator_video_play_change_cb, data);
+
+       show_video_icon(data);
+
+       return OK;
+}
+
+
+
+static int unregister_video_play_module(void)
+{
+       vconf_ignore_key_changed(VCONF_VIDEO_PLAY_PLAYSTATUS, indicator_video_play_change_cb);
+
+       return OK;
+}
old mode 100755 (executable)
new mode 100644 (file)
index ff8b570..c689b0e
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ *  Indicator
  *
- * Licensed under the Flora License, Version 1.1 (the "License");
+ * Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.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/
+ * http://www.apache.org/licenses/LICENSE-2.0
  *
  * 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 <stdio.h>
 #include <stdlib.h>
 #include <vconf.h>
 #include <minicontrol-monitor.h>
+#include <stdbool.h>
+#include <message-port.h>
 #include "common.h"
 #include "indicator.h"
-#include "indicator_icon_util.h"
+#include "icon.h"
 #include "modules.h"
-#include "indicator_ui.h"
+#include "main.h"
 
-#define ICON_PRIORITY  INDICATOR_PRIORITY_NOTI_1
+#define ICON_PRIORITY  INDICATOR_PRIORITY_MINICTRL1
 #define MODULE_NAME            "VOICE_RECORDER"
 #define MINICONTROL_NAME       "[voicerecorder_mini_controller]"
 
+#define INDICATOR_REMOTE_PORT "voicerecorder_indicator_port"
+#define INDICATOR_APP_ID  "org.tizen.indicator"
+#define INDICATOR_BUNDLE_KEY "voicerecorder_indicator_data"
+#define BG_NONE     "voicerecorder_none"
+#define BG_RECORING_START  "bg_recording_start"
+#define BG_RECORING_PAUSE  "bg_recording_pause"
+#define BG_PLAYING_START  "bg_playing_start"
+#define BG_PLAYING_PAUSE  "bg_playing_pause"
 
 static int register_voice_recorder_module(void *data);
 static int unregister_voice_recorder_module(void);
-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;
+static int prevIndex = -1;
+static int vr_state = -1;
 
-Indicator_Icon_Object voice_recorder[INDICATOR_WIN_MAX] = {
-{
-       .win_type = INDICATOR_WIN_PORT,
+icon_s voice_recorder = {
        .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,
+       .area = INDICATOR_ICON_AREA_MINICTRL,
        .init = register_voice_recorder_module,
        .fini = unregister_voice_recorder_module,
-       .minictrl_control = mctrl_monitor_cb,
+       .minictrl_control = NULL,//mctrl_monitor_cb,
        .wake_up = wake_up_cb
-},
-{
-       .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_voice_recorder_module,
-       .fini = unregister_voice_recorder_module,
-       .minictrl_control = mctrl_monitor_cb,
-       .wake_up = wake_up_cb
-}
-
 };
 
 enum {
        VOICE_RECORDER_RECORDING,
-       VOICE_RECORDER_PAUSED,
-       VOICE_RECORDER_READY
+       VOICE_RECORDER_RECORDING_PAUSED,
+       VOICE_RECORDER_PLAYING,
+       VOICE_RECORDER_PLAYING_PAUSED
 };
 
 static char *icon_path[] = {
-       "Background playing/B03_Backgroundplaying_voicerecorder_Recording.png",
-       "Background playing/B03_Backgroundplaying_voicerecorder_paused.png",
-       "Background playing/B03_Backgroundplaying_Voicerecording.png",
+       "Background playing/B03_Backgroundplaying_Voicerecorder.png",
+       "Background playing/B03_Backgroundplaying_Voicerecorder.png",
+       "Background playing/B03_Backgroundplaying_voicerecorder_player_play.png",
+       "Background playing/B03_Backgroundplaying_voicerecorder_player_pause.png",
        NULL
 };
 
+
+
 static void set_app_state(void* data)
 {
-       int i = 0;
-
-       for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
-       {
-               voice_recorder[i].ad = data;
-       }
+       voice_recorder.ad = data;
 }
 
+
+
 static void show_image_icon(void *data, int status)
 {
-       int i = 0;
-
-       for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
+       if(prevIndex == status)
        {
-               voice_recorder[i].img_obj.data = icon_path[status];
-               indicator_util_icon_show(&voice_recorder[i]);
+               return;
        }
+
+       voice_recorder.img_obj.data = icon_path[status];
+       icon_show(&voice_recorder);
+
+       prevIndex = status;
 }
 
+
+
 static void hide_image_icon(void)
 {
-       int i = 0;
+       icon_hide(&voice_recorder);
 
-       for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
-       {
-               indicator_util_icon_hide(&voice_recorder[i]);
-       }
+       prevIndex = -1;
 }
 
+
+
 static void show_voicerecoder_icon(void *data)
 {
-       int status;
-       int ret;
-
        retif(data == NULL, , "Invalid parameter!");
 
-       if(indicator_util_get_update_flag()==0)
-       {
+       if(icon_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);
-               switch (status) {
-               case VCONFKEY_VOICERECORDER_RECORDING:
-                       show_image_icon(data, VOICE_RECORDER_RECORDING);
-                       break;
-               case VCONFKEY_VOICERECORDER_PAUSED:
-                       show_image_icon(data, VOICE_RECORDER_PAUSED);
-                       break;
-               case VCONFKEY_VOICERECORDER_READY:
-                       show_image_icon(data, VOICE_RECORDER_READY);
-                       break;
-               default:
-                       break;
-               }
+       DBG("VOICE RECORDER state: %d", vr_state);
+       switch (vr_state) {
+       case VOICE_RECORDER_RECORDING:
+               show_image_icon(data, VOICE_RECORDER_RECORDING);
+               break;
+       case VOICE_RECORDER_RECORDING_PAUSED:
+               show_image_icon(data, VOICE_RECORDER_RECORDING_PAUSED);
+               break;
+       case VOICE_RECORDER_PLAYING:
+               show_image_icon(data, VOICE_RECORDER_PLAYING);
+               break;
+       case VOICE_RECORDER_PLAYING_PAUSED:
+               show_image_icon(data, VOICE_RECORDER_PLAYING_PAUSED);
+               break;
+       default:
+               hide_image_icon();
+               break;
        }
        return;
 }
 
 
+#if 0
 static void indicator_voice_recorder_change_cb(keynode_t *node, void *data)
 {
        retif(data == NULL, , "Invalid parameter!");
@@ -161,75 +155,43 @@ static void indicator_voice_recorder_change_cb(keynode_t *node, void *data)
        show_voicerecoder_icon(data);
        return;
 }
+#endif
 
-static int mctrl_monitor_cb(int action, const char *name, void *data)
-{
-       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 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:
-               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();
-       }
+       show_voicerecoder_icon(voice_recorder.ad);
+
        return OK;
 }
 
 
+
+void hide_voice_recorder_icon(void)
+{
+       hide_image_icon();;
+}
+
+
+
 static int register_voice_recorder_module(void *data)
 {
 
        retif(data == NULL, FAIL, "Invalid parameter!");
 
        set_app_state(data);
-
+       show_voicerecoder_icon(data);
        return OK;
 }
 
+
+
 static int unregister_voice_recorder_module(void)
 {
-
        return OK;
 }
old mode 100755 (executable)
new mode 100644 (file)
index 0aca791..75e9229
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ *  Indicator
  *
- * Licensed under the Flora License, Version 1.1 (the "License");
+ * Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.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/
+ * http://www.apache.org/licenses/LICENSE-2.0
  *
  * 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 "common.h"
 #include "modules.h"
 
-#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 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 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 mmc[INDICATOR_WIN_MAX];
-extern Indicator_Icon_Object noti[INDICATOR_WIN_MAX];
-extern Indicator_Icon_Object useralarm[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 gps[INDICATOR_WIN_MAX];
-extern Indicator_Icon_Object nfc[INDICATOR_WIN_MAX];
-extern Indicator_Icon_Object wifi_direct[INDICATOR_WIN_MAX];
-extern Indicator_Icon_Object sysclock[INDICATOR_WIN_MAX];
-extern Indicator_Icon_Object battery[INDICATOR_WIN_MAX];
-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],
-       &sos[0],
-       &usb[0],
-       &mobile_hotspot[0],
-       &conn[0],
-       &call[0],
-       &call_divert[0],
-       &mmc[0],
-       &noti[0],
-       &useralarm[0],
-       &mp3_play[0],
-       &voice_recorder[0],
-       &silent[0],
-       &bluetooth[0],
-       &gps[0],
-       &nfc[0],
-       &wifi_direct[0],
-       &earphone[0],
+#define INDICATOR_MODULE_NUMBERS 32
+
+/* search */
+#ifndef _INDICATOR_REMOVE_SEARCH
+extern icon_s search;
+#endif
+/* Network */
+extern icon_s rssi;
+
+/* Connection */
+extern icon_s usb;
+extern icon_s wifi;
+extern icon_s mobile_hotspot;
+extern icon_s conn;
+
+/* Processing */
+extern icon_s call;
+extern icon_s call_divert;
+
+/* Information */
+extern icon_s mmc;
+extern icon_s noti;
+
+/* alarm */
+extern icon_s useralarm;
+
+/* playing */
+extern icon_s fm_radio;
+extern icon_s mp3_play;
+extern icon_s voice_recorder;
+
+/* Setting */
+extern icon_s silent;
+extern icon_s bluetooth;
+extern icon_s gps;
+extern icon_s nfc;
+extern icon_s wifi_direct;
+
+/* Clock */
+extern icon_s sysclock;
+
+/* Power */
+extern icon_s battery;
+
+/* Smart stay */
+/* earphone */
+extern icon_s earphone;
+
+/* always */
+extern icon_s lowmem;
+extern icon_s dock;
+
+extern icon_s video_play;
+extern icon_s more_notify;
+
+
+
+static icon_s *modules[INDICATOR_MODULE_NUMBERS] = {
+       /* search */
+#ifndef _INDICATOR_REMOVE_SEARCH
+       &search,
+#endif
+       /* Clock */
+       &sysclock,
+       /* Power */
+       &battery,
+       /* Network */
+       &wifi,
+       &rssi,
+       /* Connection */
+       &usb,
+       &mobile_hotspot,
+       &conn,
+       /* Processing */
+       &call,
+       &call_divert,
+
+       /* Information */
+       /* &message, */
+       /* &voice_mail, */
+       &mmc,
+       &noti,
+       &useralarm,
+       &fm_radio,
+       &mp3_play,
+       &voice_recorder,
+
+       /* Setting */
+       &silent,
+       &bluetooth,
+       &gps,
+       &wifi_direct,
+       &nfc,
+
+       /*Smart Stay*/
+       &earphone,
+       &lowmem,
+       &dock,
+       &video_play,
+       &more_notify,
+/* Add your module object here */
        NULL
-},
+};
+
+void modules_init(void *data)
 {
-       &sysclock[1],
-       &battery[1],
-       &wifi[1],
-       &rssi[1],
-       &sos[1],
-       &usb[1],
-       &mobile_hotspot[1],
-       &conn[1],
-       &call[1],
-       &call_divert[1],
-       &mmc[1],
-       &noti[1],
-       &useralarm[1],
-       &mp3_play[1],
-       &voice_recorder[1],
-       &silent[1],
-       &bluetooth[1],
-       &gps[1],
-       &nfc[1],
-       &wifi_direct[1],
-       &earphone[1],
-       NULL
+       int i;
+       /* add items to list */
+       for (i = 0; modules[i]; i++) {
+               list_insert_icon(modules[i]);
+               modules[i]->ad = data;
+               if (modules[i]->init)
+               {
+                       modules[i]->init(data);
+               }
+       }
 }
 
-};
 
-void indicator_init_modules(void *data)
+
+void modules_init_first(void *data)
 {
        int i;
-       int j = 0;
-
-       for(j=0;j<INDICATOR_WIN_MAX;j++)
-       {
-               for (i = 0; modules[j][i]; i++) {
-                       indicator_icon_list_insert(modules[j][i]);
-                       modules[j][i]->ad = data;
-                       if (modules[j][i]->init)
-                               modules[j][i]->init(data);
+       /* add items to list */
+       for (i = 0; i < 5; i++) {
+               list_insert_icon(modules[i]);
+               modules[i]->ad = data;
+               if (modules[i]->init)
+               {
+                       modules[i]->init(data);
                }
        }
 }
 
-void indicator_fini_modules(void *data)
+
+
+void modules_fini(void *data)
 {
        int i;
-       int j = 0;
-
-       for(j=0;j<INDICATOR_WIN_MAX;j++)
-       {
-               for (i = 0; modules[j][i]; i++) {
-                       if (modules[j][i]->fini)
-                               modules[j][i]->fini();
-               }
+       /* add items to list */
+       for (i = 0; modules[i]; i++) {
+               if (modules[i]->fini)
+                       modules[i]->fini();
        }
 
-       indicator_icon_all_list_free();
+       /* delete modules */
+       list_free_all();
 }
 
-void indicator_lang_changed_modules(void *data)
+
+
+void modules_lang_changed(void *data)
 {
        int i;
-       int j = 0;
-
-       for(j=0;j<INDICATOR_WIN_MAX;j++)
-       {
-               for (i = 0; modules[j][i]; i++) {
-                       if (modules[j][i]->lang_changed)
-                               modules[j][i]->lang_changed(data);
-               }
+       /* add items to list */
+       for (i = 0; modules[i]; i++) {
+               if (modules[i]->lang_changed)
+                       modules[i]->lang_changed(data);
        }
 }
 
-void indicator_region_changed_modules(void *data)
+
+
+void modules_region_changed(void *data)
 {
        int i;
-       int j = 0;
-
-       for(j=0;j<INDICATOR_WIN_MAX;j++)
-       {
-               for (i = 0; modules[j][i]; i++) {
-                       if (modules[j][i]->region_changed)
-                               modules[j][i]->region_changed(data);
-               }
+       /* add items to list */
+       for (i = 0; modules[i]; i++) {
+               if (modules[i]->region_changed)
+                       modules[i]->region_changed(data);
        }
 }
 
-void indicator_minictrl_control_modules(int action, const char* name, void *data)
+
+
+void modules_minictrl_control(int action, const char* name, void *data)
 {
        int i;
-       int j = 0;
-
-       for(j=0;j<INDICATOR_WIN_MAX;j++)
-       {
-               for (i = 0; modules[j][i]; i++) {
-                       if (modules[j][i]->minictrl_control)
-                               modules[j][i]->minictrl_control(action, name, data);
-               }
+       /* add items to list */
+       for (i = 0; modules[i]; i++) {
+               if (modules[i]->minictrl_control)
+                       modules[i]->minictrl_control(action, name, data);
        }
 }
 
-void indicator_wake_up_modules(void *data)
+
+
+void modules_wake_up(void *data)
 {
        int i;
-       int j = 0;
+       /* add items to list */
+       for (i = 0; modules[i]; i++) {
+               if (modules[i]->wake_up)
+                       modules[i]->wake_up(data);
+       }
+}
 
-       for(j=0;j<INDICATOR_WIN_MAX;j++)
-       {
-               for (i = 0; modules[j][i]; i++) {
-                       if (modules[j][i]->wake_up)
-                               modules[j][i]->wake_up(data);
+
+
+#ifdef _SUPPORT_SCREEN_READER
+void modules_register_tts(void *data)
+{
+       int i;
+       /* add items to list */
+       for (i = 0; modules[i]; i++) {
+               modules[i]->ad = data;
+               if (modules[i]->register_tts)
+               {
+                       modules[i]->register_tts(data);
                }
        }
 }
+#endif
 
old mode 100755 (executable)
new mode 100644 (file)
index 4f1c7e1..4fafc78
@@ -1,17 +1,20 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ *  Indicator
  *
- * Licensed under the Flora License, Version 1.1 (the "License");
+ * Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.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/
+ * http://www.apache.org/licenses/LICENSE-2.0
  *
  * 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.
+ *
  */
 
 
 #define __INDICATOR_MODULES_H__
 
 #include <Ecore.h>
-#include "indicator_ui.h"
-#include "indicator_icon_list.h"
+
+#include "main.h"
+#include "list.h"
 
 #define TIMER_STOP     ECORE_CALLBACK_CANCEL
 #define TIMER_CONTINUE ECORE_CALLBACK_RENEW
 
-void indicator_init_modules(void *data);
-void indicator_fini_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);
+extern void modules_init(void *data);
+extern void modules_fini(void *data);
+extern void modules_lang_changed(void *data);
+extern void modules_region_changed(void *data);
+extern void modules_minictrl_control(int action, const char* name, void *data);
+extern void modules_wake_up(void *data);
+extern void modules_init_first(void *data);
+
+#ifdef _SUPPORT_SCREEN_READER
+extern void modules_register_tts(void *data);
+#endif
 #endif
old mode 100755 (executable)
new mode 100644 (file)
index e585ecd..8b96b44
@@ -1,17 +1,20 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ *  Indicator
  *
- * Licensed under the Flora License, Version 1.1 (the "License");
+ * Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.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/
+ * http://www.apache.org/licenses/LICENSE-2.0
  *
  * 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.
+ *
  */
 
 
@@ -20,9 +23,9 @@
 #include <vconf.h>
 #include "common.h"
 #include "indicator.h"
-#include "indicator_icon_util.h"
+#include "icon.h"
 #include "modules.h"
-#include "indicator_ui.h"
+#include "main.h"
 
 #define ICON_PRIORITY  INDICATOR_PRIORITY_FIXED3
 #define MODULE_NAME            "ROAMING"
 static int register_roaming_module(void *data);
 static int unregister_roaming_module(void);
 
-Indicator_Icon_Object roaming[INDICATOR_WIN_MAX] = {
-{
-       .win_type = INDICATOR_WIN_PORT,
+icon_s roaming = {
        .type = INDICATOR_IMG_ICON,
        .name = MODULE_NAME,
        .priority = ICON_PRIORITY,
        .always_top = EINA_FALSE,
        .exist_in_view = EINA_FALSE,
        .area = INDICATOR_ICON_AREA_FIXED,
-       .txt_obj = {0,},
        .img_obj = {0,},
        .obj_exist = EINA_FALSE,
        .init = register_roaming_module,
        .fini = unregister_roaming_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,
-       .area = INDICATOR_ICON_AREA_FIXED,
-       .txt_obj = {0,},
-       .img_obj = {0,},
-       .obj_exist = EINA_FALSE,
-       .init = register_roaming_module,
-       .fini = unregister_roaming_module
-}
 };
 
 static const char *icon_path[] = {
@@ -68,33 +53,18 @@ static const char *icon_path[] = {
 
 static void set_app_state(void* data)
 {
-       int i = 0;
-
-       for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
-       {
-               roaming[i].ad = data;
-       }
+       roaming.ad = data;
 }
 
 static void show_image_icon(void)
 {
-       int i = 0;
-
-       for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
-       {
-               roaming[i].img_obj.data = icon_path[0];
-               indicator_util_icon_show(&roaming[i]);
-       }
+       roaming.img_obj.data = icon_path[0];
+       icon_show(&roaming);
 }
 
 static void hide_image_icon(void)
 {
-       int i = 0;
-
-       for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
-       {
-               indicator_util_icon_hide(&roaming[i]);
-       }
+       icon_hide(&roaming);
 }
 
 static void indicator_roaming_change_cb(keynode_t *node, void *data)
@@ -104,15 +74,17 @@ static void indicator_roaming_change_cb(keynode_t *node, void *data)
 
        retif(data == NULL, , "Invalid parameter!");
 
+       /* First, check NOSIM mode */
        ret = vconf_get_int(VCONFKEY_TELEPHONY_SIM_SLOT, &status);
        if (ret == OK && status != VCONFKEY_TELEPHONY_SIM_INSERTED) {
-               INFO("ROAMING Status: No SIM Mode");
+               DBG("ROAMING Status: No SIM Mode");
                hide_image_icon();
                return;
        }
 
+       /* Second, check Roaming mode */
        ret = vconf_get_int(VCONFKEY_TELEPHONY_SVC_ROAM, &status);
-       INFO("ROAMING Status: %d", status);
+       DBG("ROAMING Status: %d", status);
        if (ret == OK) {
                if (status == VCONFKEY_TELEPHONY_SVC_ROAM_ON) {
                        show_image_icon();
@@ -139,14 +111,12 @@ static int register_roaming_module(void *data)
        ret = vconf_notify_key_changed(VCONFKEY_TELEPHONY_SVC_ROAM,
                                       indicator_roaming_change_cb, data);
        if (ret != OK) {
-               ERR("Failed to register callback!");
                r = ret;
        }
 
        ret = vconf_notify_key_changed(VCONFKEY_TELEPHONY_SIM_SLOT,
                                       indicator_roaming_change_cb, data);
        if (ret != OK) {
-               ERR("Failed to register callback!");
                r = r | ret;
        }
 
@@ -161,13 +131,9 @@ static int unregister_roaming_module(void)
 
        ret = vconf_ignore_key_changed(VCONFKEY_TELEPHONY_SVC_ROAM,
                                       indicator_roaming_change_cb);
-       if (ret != OK)
-               ERR("Failed to unregister callback!");
 
-       ret = vconf_ignore_key_changed(VCONFKEY_TELEPHONY_SIM_SLOT,
+       ret = ret | vconf_ignore_key_changed(VCONFKEY_TELEPHONY_SIM_SLOT,
                                       indicator_roaming_change_cb);
-       if (ret != OK)
-               ERR("Failed to unregister callback!");
 
-       return OK;
+       return ret;
 }
old mode 100755 (executable)
new mode 100644 (file)
index 7685b3c..b1a4ed4
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ *  Indicator
  *
- * Licensed under the Flora License, Version 1.1 (the "License");
+ * Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.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/
+ * http://www.apache.org/licenses/LICENSE-2.0
  *
  * 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 <tapi_common.h>
+#include <TelNetwork.h>
+#include <TelSim.h>
+#include <ITapiSim.h>
+#include <TelCall.h>
+#include <ITapiCall.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <vconf.h>
+#include <ITapiNetwork.h>
+
 #include "common.h"
 #include "indicator.h"
-#include "indicator_icon_util.h"
+#include "icon.h"
 #include "modules.h"
-#include "indicator_ui.h"
+#include "main.h"
 #include "indicator_gui.h"
+#include "util.h"
+#include "connection/connection.h"
+#include "processing/call_divert.h"
+
+#define VCONFKEY_TELEPHONY_PREFERRED_VOICE_SUBSCRIPTION        "db/telephony/dualsim/preferred_voice_subscription"
+
+#define RSSI1_ICON_PRIORITY            INDICATOR_PRIORITY_FIXED2
+#define RSSI2_ICON_PRIORITY            INDICATOR_PRIORITY_FIXED3
+#define SIMCARD_ICON_PRIORITY  INDICATOR_PRIORITY_FIXED4
 
-#define ICON_PRIORITY  INDICATOR_PRIORITY_FIXED3
-#define MODULE_NAME            "RSSI"
+#define MODULE_NAME                    "RSSI"
+#define MODULE_NAME_SIM2               "RSSI2"
+#define MODULE_NAME_DUAL_SIM   "RSSI_DS"
 
 #define ICON_NOSIM             _("IDS_COM_BODY_NO_SIM")
 #define ICON_SEARCH            _("IDS_COM_BODY_SEARCHING")
 #define ICON_NOSVC             _("IDS_CALL_POP_NOSERVICE")
 
+#define TAPI_HANDLE_MAX  2
+
 static int register_rssi_module(void *data);
 static int unregister_rssi_module(void);
 static int language_changed_cb(void *data);
 static int wake_up_cb(void *data);
+static void on_noti(TapiHandle *handle_obj, const char *noti_id, void *data, void *user_data);
+static int _get_sim_icon(int sim_number);
+static void _flight_mode(keynode_t *key, void *data);
+#ifdef _SUPPORT_SCREEN_READER
+static char *access_info_cb(void *data, Evas_Object *obj);
+#endif
 
-Indicator_Icon_Object rssi[INDICATOR_WIN_MAX] = {
-{
-       .win_type = INDICATOR_WIN_PORT,
+TapiHandle *tapi_handle[TAPI_HANDLE_MAX+1] = {0, };
+
+static int registered = 0;
+
+
+icon_s rssi_ds = {
        .type = INDICATOR_IMG_ICON,
-       .name = MODULE_NAME,
-       .priority = ICON_PRIORITY,
+       .name = MODULE_NAME_DUAL_SIM,
+       .priority = SIMCARD_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_FIXED,
-       .init = register_rssi_module,
-       .fini = unregister_rssi_module,
-       .lang_changed = language_changed_cb,
-       .wake_up = wake_up_cb
-},
-{
-       .win_type = INDICATOR_WIN_LAND,
+#ifdef _SUPPORT_SCREEN_READER
+       .tts_enable = EINA_TRUE,
+       .access_cb = access_info_cb
+#endif
+};
+
+icon_s rssi = {
        .type = INDICATOR_IMG_ICON,
        .name = MODULE_NAME,
-       .priority = ICON_PRIORITY,
+       .priority = RSSI1_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_FIXED,
        .init = register_rssi_module,
        .fini = unregister_rssi_module,
        .lang_changed = language_changed_cb,
-       .wake_up = wake_up_cb
-}
+       .wake_up = wake_up_cb,
+#ifdef _SUPPORT_SCREEN_READER
+       .tts_enable = EINA_TRUE,
+       .access_cb = access_info_cb
+#endif
+};
+
+icon_s rssi2 = {
+       .type = INDICATOR_IMG_ICON,
+       .name = MODULE_NAME_SIM2,
+       .priority = RSSI2_ICON_PRIORITY,
+       .always_top = EINA_FALSE,
+       .exist_in_view = EINA_FALSE,
+       .img_obj = {0,},
+       .obj_exist = EINA_FALSE,
+       .area = INDICATOR_ICON_AREA_FIXED,
+#ifdef _SUPPORT_SCREEN_READER
+       .tts_enable = EINA_TRUE,
+       .access_cb = access_info_cb
+#endif
+};
+
+enum {
+       SIM_1 = 1,
+       SIM_2
 };
 
 enum {
        LEVEL_RSSI_MIN = 0,
-       LEVEL_RSSI_0 = LEVEL_RSSI_MIN,
-       LEVEL_RSSI_1,
-       LEVEL_RSSI_2,
-       LEVEL_RSSI_3,
-       LEVEL_RSSI_4,
-       LEVEL_RSSI_MAX = LEVEL_RSSI_4,
        LEVEL_FLIGHT,
        LEVEL_NOSIM,
        LEVEL_SEARCH,
        LEVEL_NOSVC,
-       LEVEL_MAX,
+       LEVEL_LIMITED,
+       LEVEL_RSSI_SIM1_0,
+       LEVEL_RSSI_SIM1_1,
+       LEVEL_RSSI_SIM1_2,
+       LEVEL_RSSI_SIM1_3,
+       LEVEL_RSSI_SIM1_4,
+       LEVEL_RSSI_SIM2_0,
+       LEVEL_RSSI_SIM2_1,
+       LEVEL_RSSI_SIM2_2,
+       LEVEL_RSSI_SIM2_3,
+       LEVEL_RSSI_SIM2_4,
+       LEVEL_RSSI_ROAMING_0,
+       LEVEL_RSSI_ROAMING_1,
+       LEVEL_RSSI_ROAMING_2,
+       LEVEL_RSSI_ROAMING_3,
+       LEVEL_RSSI_ROAMING_4,
+       LEVEL_RSSI_ROAMING2_0,
+       LEVEL_RSSI_ROAMING2_1,
+       LEVEL_RSSI_ROAMING2_2,
+       LEVEL_RSSI_ROAMING2_3,
+       LEVEL_RSSI_ROAMING2_4,
+       LEVEL_SIM_ICON_SIM1,
+       LEVEL_SIM_ICON_SIM2,
+       LEVEL_SIM_ICON_CALL,
+       LEVEL_SIM_ICON_SMS,
+       LEVEL_SIM_ICON_MMS,
+       LEVEL_SIM_ICON_INTERNET,
+       LEVEL_SIM_ICON_HOME,
+       LEVEL_SIM_ICON_OFFICE,
+       LEVEL_SIM_ICON_HEART,
+       LEVEL_MAX
 };
 
 static int bRoaming = 0;
 static int updated_while_lcd_off = 0;
-
+static int prevIndex = -1;
+static int prevRoam = -1;
+#ifdef _SUPPORT_SCREEN_READER
+static int bRssiShown = 0;
+#endif
 static const char *icon_path[LEVEL_MAX] = {
-       [LEVEL_RSSI_0] = "RSSI/B03_RSSI_Sim_00.png",
-       [LEVEL_RSSI_1] = "RSSI/B03_RSSI_Sim_01.png",
-       [LEVEL_RSSI_2] = "RSSI/B03_RSSI_Sim_02.png",
-       [LEVEL_RSSI_3] = "RSSI/B03_RSSI_Sim_03.png",
-       [LEVEL_RSSI_4] = "RSSI/B03_RSSI_Sim_04.png",
        [LEVEL_FLIGHT] = "RSSI/B03_RSSI_Flightmode.png",
        [LEVEL_NOSIM] = "RSSI/B03_RSSI_NoSim.png",
        [LEVEL_SEARCH] = "RSSI/B03_RSSI_Searching.png",
        [LEVEL_NOSVC] = "RSSI/B03_RSSI_NoService.png",
+       [LEVEL_LIMITED] = "RSSI/B03_Network_LimitedService.png",
+       [LEVEL_RSSI_SIM1_0] = "RSSI/B03_RSSI_Sim_00.png",
+       [LEVEL_RSSI_SIM1_1] = "RSSI/B03_RSSI_Sim_01.png",
+       [LEVEL_RSSI_SIM1_2] = "RSSI/B03_RSSI_Sim_02.png",
+       [LEVEL_RSSI_SIM1_3] = "RSSI/B03_RSSI_Sim_03.png",
+       [LEVEL_RSSI_SIM1_4] = "RSSI/B03_RSSI_Sim_04.png",
+       [LEVEL_RSSI_SIM2_0] = "RSSI/B03_RSSI_Dual_Sim_00.png",
+       [LEVEL_RSSI_SIM2_1] = "RSSI/B03_RSSI_Dual_Sim_01.png",
+       [LEVEL_RSSI_SIM2_2] = "RSSI/B03_RSSI_Dual_Sim_02.png",
+       [LEVEL_RSSI_SIM2_3] = "RSSI/B03_RSSI_Dual_Sim_03.png",
+       [LEVEL_RSSI_SIM2_4] = "RSSI/B03_RSSI_Dual_Sim_04.png",
+       [LEVEL_RSSI_ROAMING_0] = "RSSI/B03_RSSI_roaming_00.png",
+       [LEVEL_RSSI_ROAMING_1] = "RSSI/B03_RSSI_roaming_01.png",
+       [LEVEL_RSSI_ROAMING_2] = "RSSI/B03_RSSI_roaming_02.png",
+       [LEVEL_RSSI_ROAMING_3] = "RSSI/B03_RSSI_roaming_03.png",
+       [LEVEL_RSSI_ROAMING_4] = "RSSI/B03_RSSI_roaming_04.png",
+       [LEVEL_RSSI_ROAMING2_0] = "RSSI/B03_RSSI_Dual_Sim_roaming_00.png",
+       [LEVEL_RSSI_ROAMING2_1] = "RSSI/B03_RSSI_Dual_Sim_roaming_01.png",
+       [LEVEL_RSSI_ROAMING2_2] = "RSSI/B03_RSSI_Dual_Sim_roaming_02.png",
+       [LEVEL_RSSI_ROAMING2_3] = "RSSI/B03_RSSI_Dual_Sim_roaming_03.png",
+       [LEVEL_RSSI_ROAMING2_4] = "RSSI/B03_RSSI_Dual_Sim_roaming_04.png",
+       [LEVEL_SIM_ICON_SIM1] = "Dual SIM/B03_Dual_Sim_00.png",
+       [LEVEL_SIM_ICON_SIM2] = "Dual SIM/B03_Dual_Sim_01.png",
+       [LEVEL_SIM_ICON_CALL] = "Dual SIM/B03_Dual_Sim_phone.png",
+       [LEVEL_SIM_ICON_SMS] = "Dual SIM/B03_Dual_Sim_messages.png",
+       [LEVEL_SIM_ICON_MMS] = "Dual SIM/B03_Dual_Sim_data.png",
+       [LEVEL_SIM_ICON_INTERNET] = "Dual SIM/B03_Dual_Sim_global.png",
+       [LEVEL_SIM_ICON_HOME] = "Dual SIM/B03_Dual_Sim_home.png",
+       [LEVEL_SIM_ICON_OFFICE] = "Dual SIM/B03_Dual_Sim_office.png",
+       [LEVEL_SIM_ICON_HEART] = "Dual SIM/B03_Dual_Sim_heart.png"
 };
 
-static const char *roaming_icon_path[LEVEL_MAX] = {
-       [LEVEL_RSSI_0] = "RSSI/B03_RSSI_roaming_00.png",
-       [LEVEL_RSSI_1] = "RSSI/B03_RSSI_roaming_01.png",
-       [LEVEL_RSSI_2] = "RSSI/B03_RSSI_roaming_02.png",
-       [LEVEL_RSSI_3] = "RSSI/B03_RSSI_roaming_03.png",
-       [LEVEL_RSSI_4] = "RSSI/B03_RSSI_roaming_04.png",
-       [LEVEL_FLIGHT] = "RSSI/B03_RSSI_Flightmode.png",
-       [LEVEL_NOSIM] = "RSSI/B03_RSSI_NoSim.png",
-       [LEVEL_SEARCH] = "RSSI/B03_RSSI_Searching.png",
-       [LEVEL_NOSVC] = "RSSI/B03_RSSI_NoService.png",
-};
-
-
 static void set_app_state(void* data)
 {
-       int i = 0;
-
-       for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
-       {
-               rssi[i].ad = data;
-       }
+       rssi_ds.ad = data;
+       rssi.ad = data;
+       rssi2.ad = data;
 }
 
-static int level_check(int *level)
+static void show_sim_ds_image_icon(void *data, int index)
 {
-       if (*level < LEVEL_RSSI_MIN) {
-               *level = LEVEL_RSSI_MIN;
-               return -1;
-       } else if (*level > LEVEL_RSSI_MAX) {
-               *level = LEVEL_RSSI_MAX;
-               return 1;
-       }
-       return 0;
+       if (index < LEVEL_RSSI_MIN)
+               index = LEVEL_RSSI_MIN;
+       else if (index >= LEVEL_MAX)
+               index = LEVEL_NOSVC;
+
+       rssi_ds.img_obj.width = DEFAULT_ICON_WIDTH;
+
+       rssi_ds.img_obj.data = icon_path[index];
+
+       icon_show(&rssi_ds);
+
+       prevRoam = bRoaming;
+       prevIndex = index;
+       isSimShowing = 1;   // It is for judgement to show S1 icon(Sound, Wi-fi direct, bluetooth) or not.
+       util_signal_emit(rssi_ds.ad,"indicator.simicon.show","indicator.prog");
 }
 
 static void show_image_icon(void *data, int index)
 {
-       int i = 0;
+       if (index < LEVEL_RSSI_MIN)
+               index = LEVEL_RSSI_MIN;
+       else if (index >= LEVEL_MAX)
+               index = LEVEL_NOSVC;
+
+       rssi.img_obj.width = DEFAULT_ICON_WIDTH;
+
+       rssi.img_obj.data = icon_path[index];
 
+       icon_show(&rssi);
+
+       prevRoam = bRoaming;
+       prevIndex = index;
+       isRSSI1Showing = 1;
+       util_signal_emit(rssi.ad,"indicator.rssi1.show","indicator.prog");
+}
+
+static void show_sim2_image_icon(void *data, int index)
+{
        if (index < LEVEL_RSSI_MIN)
                index = LEVEL_RSSI_MIN;
        else if (index >= LEVEL_MAX)
                index = LEVEL_NOSVC;
 
-       for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
-       {
-               rssi[i].img_obj.width = DEFAULT_ICON_WIDTH;
+       rssi2.img_obj.width = DEFAULT_ICON_WIDTH;
 
-               if(bRoaming == 1)
-               {
-                       rssi[i].img_obj.data = roaming_icon_path[index];
-               }
-               else
-               {
-                       rssi[i].img_obj.data = icon_path[index];
-               }
+       rssi2.img_obj.data = icon_path[index];
 
-               indicator_util_icon_show(&rssi[i]);
-       }
+       icon_show(&rssi2);
+
+       prevRoam = bRoaming;
+       prevIndex = index;
+       isRSSI2Showing = 1;
+       util_signal_emit(rssi2.ad,"indicator.rssi2.show","indicator.prog");
 }
 
-static void hide_icon(void)
+static void hide_sim_ds_image_icon(void)
 {
-       int i = 0;
+       icon_hide(&rssi_ds);
+
+       isSimShowing = 0;    // It is for judgement to show S1 icon(Sound, Wi-fi direct, bluetooth) or not.
+       util_signal_emit(rssi_ds.ad,"indicator.simicon.hide","indicator.prog");
+}
+
+static void hide_sim_image_icon(void)
+{
+       icon_hide(&rssi);
+
+       isRSSI1Showing = 0;
+       util_signal_emit(rssi.ad,"indicator.rssi1.hide","indicator.prog");
+}
 
-       for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
+static void hide_sim2_image_icon(void)
+{
+       icon_hide(&rssi2);
+
+       isRSSI2Showing = 0;
+       util_signal_emit(rssi2.ad,"indicator.rssi2.hide","indicator.prog");
+}
+
+static int language_changed_cb(void *data)
+{
+       on_noti(NULL, NULL, NULL, data);
+       return OK;
+}
+
+static int wake_up_cb(void *data)
+{
+       if(updated_while_lcd_off==0)
        {
-               indicator_util_icon_hide(&rssi[i]);
+               return OK;
        }
+
+       on_noti(NULL, NULL, NULL, data);
+       return OK;
 }
 
-static void indicator_rssi_change_cb(keynode_t *node, void *data)
+#ifdef _SUPPORT_SCREEN_READER
+static char *access_info_cb(void *data, Evas_Object *obj)
 {
+       Evas_Object *item = data;
+       char *tmp = NULL;
+       char buf[256] = {0,};
+       char buf1[256] = {0,};
        int status = 0;
-       int ret;
 
-       retif(data == NULL, , "Invalid parameter!");
+       if(bRssiShown == 0)
+       {
+               ERR("No rssi level");
+               return NULL;
+       }
+
+       vconf_get_int(VCONFKEY_TELEPHONY_RSSI, &status);
+       snprintf(buf1, sizeof(buf1), _("IDS_IDLE_BODY_PD_OUT_OF_4_BARS_OF_SIGNAL_STRENGTH"), status);
 
-       if(indicator_util_get_update_flag()==0)
+       snprintf(buf, sizeof(buf), "%s, %s", buf1,_("IDS_IDLE_BODY_STATUS_BAR_ITEM"));
+
+       INFO("buf: %s", buf);
+       tmp = strdup(buf);
+       if (!tmp) return NULL;
+       return tmp;
+}
+#endif
+
+static void on_noti(TapiHandle *handle_obj, const char *noti_id, void *data, void *user_data)
+{
+       DBG("On noti funtion");
+       int sim1_service = 0;
+       int sim2_service = 0;
+       int status = 0;
+       int sim_slot_count = 0;
+       int ret = 0;
+       int val = 0;
+       int preferred_subscription = 0;
+       struct appdata *ad = (struct appdata *)user_data;
+
+       if(icon_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");
-               show_image_icon(data, LEVEL_FLIGHT);
+               DBG("RSSI Status: Flight Mode");
+               show_image_icon(user_data, LEVEL_FLIGHT);
+               hide_sim2_image_icon();
+               hide_sim_ds_image_icon();
                return;
        }
+       ret = vconf_get_int(VCONFKEY_TELEPHONY_SIM_SLOT_COUNT, &sim_slot_count);
+       if (ret != OK)
+               LOGE("Failed to get dual_sim vconf");
+       DBG("Target's Sim Slot COUNT : %d", sim_slot_count);
 
-       ret = vconf_get_int(VCONFKEY_TELEPHONY_SIM_SLOT, &status);
-       if (ret == OK && status != VCONFKEY_TELEPHONY_SIM_INSERTED) {
-               INFO("RSSI Status: No SIM Mode");
-               show_image_icon(data, LEVEL_NOSIM);
-               return;
+       TelSimCardStatus_t sim_status_sim1 = 0x00;
+       TelSimCardStatus_t sim_status_sim2 = 0x00;
+
+       sim_status_sim1 = ad->tel_info[0].sim_status;
+       if(sim_slot_count == 1)
+       {
+               DBG("Single Sim target");
+               sim_status_sim2 = TAPI_SIM_STATUS_CARD_NOT_PRESENT;
+       }
+       else if(sim_slot_count == 2)
+       {
+               DBG("Dual Sim target");
+               sim_status_sim2 = ad->tel_info[1].sim_status;
+       }
+
+       // Sim 2
+       if(sim_status_sim2 != TAPI_SIM_STATUS_CARD_NOT_PRESENT)
+       {
+               DBG("Sim2 inserted");
+               val = ad->tel_info[1].network_service_type;
+               DBG("Get SIM2 service type : %d", val);
+               switch(val)
+               {
+                       case TAPI_NETWORK_SERVICE_TYPE_NO_SERVICE:
+                               DBG("Service type: NO_SERVICE");
+                               show_sim2_image_icon(user_data, LEVEL_NOSVC);
+                               break;
+                       case TAPI_NETWORK_SERVICE_TYPE_EMERGENCY:
+                               DBG("Service type: EMERGENCY : Signal-strength level : %d", val);
+                               val = ad->tel_info[1].signal_level;
+                               if(ret != OK)
+                               {
+                                       ERR("Can not get signal strength level");
+                               }
+                               show_sim2_image_icon(user_data, LEVEL_RSSI_SIM1_0+val);
+                               break;
+                       case TAPI_NETWORK_SERVICE_TYPE_SEARCH:
+                               DBG("Service type: SEARCH");
+                               show_sim2_image_icon(user_data, LEVEL_SEARCH);
+                               break;
+                       case TAPI_NETWORK_SERVICE_TYPE_UNKNOWN: DBG("Service type : UNKNOWN");
+                       default:
+                               sim2_service = 1;
+                               break;
+               }
+               if(sim2_service)
+               {
+                       val = ad->tel_info[1].signal_level;
+                       DBG("Get SIM2 signal strength level: %d", val);
+                       int roaming = 0;
+                       roaming = ad->tel_info[1].roaming_status;
+                       preferred_subscription = ad->tel_info[1].default_network;
+                       if(roaming)
+                       {
+                               if(preferred_subscription == TAPI_NETWORK_DEFAULT_SUBS_SIM2  && sim_status_sim1 == TAPI_SIM_STATUS_SIM_INIT_COMPLETED)
+                               {
+                                       show_sim2_image_icon(user_data, LEVEL_RSSI_ROAMING2_0+val);
+                               }
+                               else
+                               {
+                                       show_sim2_image_icon(user_data, LEVEL_RSSI_ROAMING_0+val);
+                               }
+                       }
+                       else
+                       {
+                               if(preferred_subscription == TAPI_NETWORK_DEFAULT_SUBS_SIM2  && sim_status_sim1 == TAPI_SIM_STATUS_SIM_INIT_COMPLETED)
+                               {
+                                       show_sim2_image_icon(user_data, LEVEL_RSSI_SIM2_0+val);
+                               }
+                               else
+                               {
+                                       show_sim2_image_icon(user_data, LEVEL_RSSI_SIM1_0+val);
+                               }
+                       }
+               }
        }
 
-       ret = vconf_get_int(VCONFKEY_TELEPHONY_SVCTYPE, &status);
-       if (ret == OK) {
-               if (status == VCONFKEY_TELEPHONY_SVCTYPE_NOSVC) {
-                       INFO("RSSI Status: No Service");
-                       show_image_icon(data, LEVEL_NOSVC);
-                       return;
+       // SIM 1
+       if(sim_status_sim1 != TAPI_SIM_STATUS_CARD_NOT_PRESENT)
+       {
+               DBG("Sim1 inserted");
+               val = ad->tel_info[0].network_service_type;
+               DBG("Get SIM1 service type : %d", val);
+               switch(val)
+               {
+                       case TAPI_NETWORK_SERVICE_TYPE_NO_SERVICE:
+                               DBG("Service type: NO_SERVICE");
+                               show_image_icon(user_data, LEVEL_NOSVC);
+                               break;
+                       case TAPI_NETWORK_SERVICE_TYPE_EMERGENCY:
+                               DBG("Service type: EMERGENCY : Signal-strength level : %d", val);
+                               val = ad->tel_info[0].signal_level;
+                               if(ret != OK)
+                               {
+                                       ERR("Can not get signal strength level");
+                               }
+                               show_image_icon(user_data, LEVEL_RSSI_SIM1_0+val);
+                               break;
+                       case TAPI_NETWORK_SERVICE_TYPE_SEARCH:
+                               DBG("Service type: SEARCH");
+                               show_image_icon(user_data, LEVEL_SEARCH);
+                               break;
+                       case TAPI_NETWORK_SERVICE_TYPE_UNKNOWN: DBG("Service type : UNKNOWN");
+                       default:
+                               DBG("Service type : UNKNOWN (%d)", val);
+                               sim1_service = 1;
+                               break;
                }
-               if (status == VCONFKEY_TELEPHONY_SVCTYPE_SEARCH) {
-                       INFO("RSSI Status: Searching Service");
-                       show_image_icon(data, LEVEL_SEARCH);
-                       return;
+               if(sim1_service)
+               {
+                       val = ad->tel_info[0].signal_level;
+                       DBG("Get SIM1 signal strength level: %d", val);
+                       int roaming = 0;
+                       roaming = ad->tel_info[0].roaming_status;
+                       preferred_subscription = ad->tel_info[0].default_network;
+                       if(roaming)
+                       {
+                               if(preferred_subscription == TAPI_NETWORK_DEFAULT_SUBS_SIM1  && sim_status_sim2 == TAPI_SIM_STATUS_SIM_INIT_COMPLETED)
+                               {
+                                       show_image_icon(user_data, LEVEL_RSSI_ROAMING2_0+val);
+                               }
+                               else
+                               {
+                                       show_image_icon(user_data, LEVEL_RSSI_ROAMING_0+val);
+                               }
+                       }
+                       else
+                       {
+                               if(preferred_subscription == TAPI_NETWORK_DEFAULT_SUBS_SIM1 && sim_status_sim2 == TAPI_SIM_STATUS_SIM_INIT_COMPLETED)
+                               {
+                                       show_image_icon(user_data, LEVEL_RSSI_SIM2_0+val);
+                               }
+                               else
+                               {
+                                       show_image_icon(user_data, LEVEL_RSSI_SIM1_0+val);
+                               }
+                       }
+
                }
        }
 
-       ret = vconf_get_int(VCONFKEY_TELEPHONY_SVC_ROAM, &status);
-       if (ret == OK) {
-               if (status == VCONFKEY_TELEPHONY_SVC_ROAM_ON) {
-                       INFO("ROAMING Status: %d", status);
-                       bRoaming = 1;
-               } else {
-                       bRoaming = 0;
+       if(sim_status_sim1 == TAPI_SIM_STATUS_SIM_INIT_COMPLETED && sim_status_sim2 == TAPI_SIM_STATUS_SIM_INIT_COMPLETED)
+       {
+               DBG("Dual Sim : Check preferred network subscription");
+               if(preferred_subscription == TAPI_NETWORK_DEFAULT_SUBS_SIM1)
+               {
+                       DBG("Preferred voice subscription set to sim1 : %d", preferred_subscription);
+                       show_sim_ds_image_icon(user_data, _get_sim_icon(SIM_1));
+
+               }
+               else if(preferred_subscription == TAPI_NETWORK_DEFAULT_SUBS_SIM2)
+               {
+                       DBG("Preferred voice subscription set to sim2 : %d", preferred_subscription);
+                       show_sim_ds_image_icon(user_data, _get_sim_icon(SIM_2));
                }
+               else
+               {
+                       hide_sim_ds_image_icon();
+                       ERR("Preferred voice subscription is: %d", preferred_subscription);
+               }
+       }
+       else if(sim_status_sim1 == TAPI_SIM_STATUS_SIM_INIT_COMPLETED && sim_status_sim2 != TAPI_SIM_STATUS_SIM_INIT_COMPLETED)
+       {
+               DBG("Single Sim : Show Sim card 1 icon");
+               hide_sim2_image_icon();
+               show_sim_ds_image_icon(user_data, _get_sim_icon(SIM_1));
+       }
+       else if(sim_status_sim1 != TAPI_SIM_STATUS_SIM_INIT_COMPLETED && sim_status_sim2 == TAPI_SIM_STATUS_SIM_INIT_COMPLETED)
+       {
+               DBG("Single Sim : Show Sim card 2 icon");
+               hide_sim_image_icon();
+               show_sim_ds_image_icon(user_data, _get_sim_icon(SIM_2));
        }
 
-       ret = vconf_get_int(VCONFKEY_TELEPHONY_RSSI, &status);
-       if (ret == OK) {
-               INFO("RSSI Level: %d", status);
-               level_check(&status);
-               show_image_icon(data, status);
-               return;
+       if(sim_status_sim1 == TAPI_SIM_STATUS_CARD_NOT_PRESENT &&
+               sim_status_sim2 == TAPI_SIM_STATUS_CARD_NOT_PRESENT)
+       {
+               hide_sim_image_icon();
+               hide_sim2_image_icon();
+               hide_sim_ds_image_icon();
+               val = ad->tel_info[0].signal_level;
+               DBG("No sim card : Signal-strength level : %d", val);
+               if(ret != OK)
+               {
+                       ERR("Can not get signal strength level");
+               }
+               show_image_icon(user_data, LEVEL_RSSI_SIM1_0+val);
        }
+       else if(sim_slot_count !=2 )
+       {
+               DBG("Single Sim target");
+               hide_sim2_image_icon();
+               hide_sim_ds_image_icon();
+       }
+}
 
+static int _get_sim_icon(int sim_number)
+{
+       int status = 0;
+       int ret = 0;
 
-       ERR("Failed to get rssi status! Set as No Service.");
-       show_image_icon(data, LEVEL_NOSVC);
-       return;
+       if(sim_number == SIM_1)
+       {
+//             ret = vconf_get_int(VCONFKEY_SETAPPL_SIM1_ICON, &status);
+               if (ret == OK)
+               {
+                       LOGD("Sim 1 icon: %d", status);
+               }
+       }
+       else
+       {
+//             ret = vconf_get_int(VCONFKEY_SETAPPL_SIM2_ICON, &status);
+               if (ret == OK)
+               {
+                       LOGD("Sim 2 icon: %d", status);
+               }
+       }
+
+       return status+LEVEL_SIM_ICON_SIM1;
 }
 
-static int language_changed_cb(void *data)
+static void _sim_icon_update(keynode_t *key, void *data)
 {
-       indicator_rssi_change_cb(NULL, data);
-       return OK;
+       on_noti(NULL, NULL, NULL, data);
 }
 
-static int wake_up_cb(void *data)
+static void _flight_mode(keynode_t *key, void *data)
 {
-       if(updated_while_lcd_off==0)
+       on_noti(NULL, NULL, NULL, data);
+}
+
+int rssi_get_sim_number(TapiHandle *handle_obj)
+{
+       DBG("tapi_handle[0](%x),tapi_handle[1](%x),current(%x)",tapi_handle[0],tapi_handle[1],handle_obj);
+
+       int ret = -1;
+       if(tapi_handle[0]!=NULL)
        {
-               DBG("ICON WAS NOT UPDATED");
-               return OK;
+               if(tapi_handle[0]==handle_obj)
+                       ret = 0;
        }
 
-       indicator_rssi_change_cb(NULL, data);
-       return OK;
-}
+       if(tapi_handle[1]!=NULL)
+       {
+               if(tapi_handle[1]==handle_obj)
+                       ret = 1;
+       }
 
+       if(ret == -1)
+       {
+               ERR("no handle %x",handle_obj);
+               ret = 0;
+       }
 
-static int register_rssi_module(void *data)
+       DBG("sim %d",ret);
+
+       return ret;
+}
+static void init_tel_info(void* data)
 {
-       int r = 0, ret = -1;
+       int ret = 0;
+       struct appdata *ad = (struct appdata *)data;
+       int i = 0;
+       int val = 0;
+       TelSimCardStatus_t sim_status;
+       retif(data == NULL, , "invalid parameter !!");
 
-       retif(data == NULL, FAIL, "Invalid parameter!");
+       for(i=0;i<2;i++)
+       {
+               if(tapi_handle[i]==NULL)
+               {
+                       DBG("i %d,NULL");
+                       continue;
+               }
+               DBG("tapi handle %x %d",tapi_handle[i],i);
+               ret = tel_get_property_int(tapi_handle[i], TAPI_PROP_NETWORK_ROAMING_STATUS, &val);
+               if(ret != OK)
+               {
+                       ERR("Can not get %s",TAPI_PROP_NETWORK_ROAMING_STATUS);
+               }
+               DBG("TAPI_PROP_NETWORK_ROAMING_STATUS %d",val);
+               ad->tel_info[i].roaming_status = val;
 
-       set_app_state(data);
+               ret = tel_get_property_int(tapi_handle[i], TAPI_PROP_NETWORK_SIGNALSTRENGTH_LEVEL, &val);
+               if(ret != OK)
+               {
+                       ERR("Can not get %s",TAPI_PROP_NETWORK_SIGNALSTRENGTH_LEVEL);
+               }
+               DBG("TAPI_PROP_NETWORK_SIGNALSTRENGTH_LEVEL %d",val);
+               ad->tel_info[i].signal_level = val;
+
+               ret = tel_get_property_int(tapi_handle[i], TAPI_PROP_NETWORK_SERVICE_TYPE, &val);
+               if(ret != OK)
+               {
+                       ERR("Can not get %s",TAPI_PROP_NETWORK_SERVICE_TYPE);
+               }
+               DBG("TAPI_PROP_NETWORK_SERVICE_TYPE %d",val);
+               ad->tel_info[i].network_service_type = val;
+
+               ret = tel_get_property_int(tapi_handle[i], TAPI_PROP_NETWORK_PS_TYPE, &val);
+               if(ret != OK)
+               {
+                       ERR("Can not get %s",TAPI_PROP_NETWORK_SERVICE_TYPE);
+               }
+               DBG("TAPI_PROP_NETWORK_PS_TYPE %d",val);
+               ad->tel_info[i].network_ps_type = val;
+
+
+               TelCallPreferredVoiceSubs_t preferred_sub = TAPI_CALL_PREFERRED_VOICE_SUBS_UNKNOWN;
+               ret = tel_get_call_preferred_voice_subscription(tapi_handle[i], &preferred_sub);
+               if(ret != OK)
+               {
+                       ERR("Can not get %s",TAPI_NOTI_CALL_PREFERRED_VOICE_SUBSCRIPTION);
+               }
+               DBG("TAPI_NOTI_CALL_PREFERRED_VOICE_SUBSCRIPTION %d",preferred_sub);
+               ad->tel_info[i].prefered_voice = preferred_sub;
+#ifdef DEVICE_BUILD
+               TelNetworkDefaultDataSubs_t preferred_data = TAPI_NETWORK_DEFAULT_DATA_SUBS_UNKNOWN;
+               ret =  tel_get_network_default_data_subscription(tapi_handle[i], &preferred_data);
+               if(ret != OK)
+               {
+                       ERR("Can not get %s",TAPI_NOTI_NETWORK_DEFAULT_DATA_SUBSCRIPTION);
+               }
+               DBG("TAPI_NOTI_NETWORK_DEFAULT_DATA_SUBSCRIPTION %d",preferred_data);
+               ad->tel_info[i].prefered_data = preferred_data;
+
+               TelNetworkDefaultSubs_t default_subs = TAPI_NETWORK_DEFAULT_SUBS_UNKNOWN;
+               ret =  tel_get_network_default_subscription(tapi_handle[i], &default_subs);
+               if(ret != OK)
+               {
+                       ERR("Can not get %s",TAPI_NOTI_NETWORK_DEFAULT_SUBSCRIPTION);
+               }
+               DBG("TAPI_NOTI_NETWORK_DEFAULT_SUBSCRIPTION %d",default_subs);
+
+               ad->tel_info[i].default_network = default_subs;
+
+               ret = tel_get_property_int(tapi_handle[i], TAPI_PROP_SIM_CALL_FORWARD_STATE, &val);
+               if(ret != OK)
+               {
+                       ERR("Can not get %s",TAPI_PROP_SIM_CALL_FORWARD_STATE);
+               }
+               ad->tel_info[i].call_forward = val;
+               DBG("TAPI_PROP_SIM_CALL_FORWARD_STATE %d",val);
+#endif // DEVICE_BUILD
 
-       ret = vconf_notify_key_changed(VCONFKEY_TELEPHONY_RSSI,
-                                      indicator_rssi_change_cb, data);
-       if (ret != OK) {
-               ERR("Failed to register callback!");
-               r = ret;
+               int changed = 0;
+               ret = tel_get_sim_init_info(tapi_handle[i], &sim_status, &changed);
+               if(ret != OK)
+               {
+                       ERR("Can not get sim init info");
+               }
+               DBG("sim info %d",sim_status);
+               ad->tel_info[i].sim_status = sim_status;
        }
+}
+static void signal_strength_cb(TapiHandle *handle_obj, const char *noti_id, void *data, void *user_data)
+{
+       int *sig_level = data;
+       struct appdata *ad = (struct appdata *)user_data;
+       retif(user_data == NULL, , "invalid parameter!!");
+       int sim_number = 0;
+       sim_number = rssi_get_sim_number(handle_obj);
+       DBG ("sim %d",sim_number);
+       DBG ("property(%s) receive !!", TAPI_PROP_NETWORK_SIGNALSTRENGTH_LEVEL);
+       DBG (" - sig_level = %d", *sig_level);
+
+       ad->tel_info[sim_number].signal_level= *sig_level;
+
+       on_noti(handle_obj,noti_id,data,user_data);
+}
+
+static void sim_status_cb(TapiHandle *handle_obj, const char *noti_id, void *data, void *user_data)
+{
+       int *sim_status = data;
+
+       struct appdata *ad = (struct appdata *)user_data;
+       retif(user_data == NULL, , "invalid parameter!!");
+       int sim_number = 0;
+       sim_number = rssi_get_sim_number(handle_obj);
+       ERR ("sim %d",sim_number);
+
+       ERR ("property(%s) receive !!", TAPI_NOTI_SIM_STATUS);
+       ERR (" - sim_status = %d", *sim_status);
+
+       ad->tel_info[sim_number].sim_status= *sim_status;
+
+       on_noti(handle_obj,noti_id,data,user_data);
+       connection_icon_on_noti(handle_obj,noti_id,data,user_data);
+}
+
+static void network_service_type_cb(TapiHandle *handle_obj, const char *noti_id, void *data, void *user_data)
+{
+       int *service_type = data;
+
+       struct appdata *ad = (struct appdata *)user_data;
+       retif(user_data == NULL, , "invalid parameter!!");
+       int sim_number = 0;
+       sim_number = rssi_get_sim_number(handle_obj);
+       DBG ("sim %d",sim_number);
+
+       DBG ("property(%s) receive !!", TAPI_PROP_NETWORK_SERVICE_TYPE);
+       DBG (" - service_type = %d", *service_type);
+
+       ad->tel_info[sim_number].network_service_type= *service_type;
+
+       on_noti(handle_obj,noti_id,data,user_data);
+       connection_icon_on_noti(handle_obj,noti_id,data,user_data);
+}
+
+static void network_ps_type_cb(TapiHandle *handle_obj, const char *noti_id, void *data, void *user_data)
+{
+       int *ps_type = data;
+
+       struct appdata *ad = (struct appdata *)user_data;
+       retif(user_data == NULL, , "invalid parameter!!");
+       int sim_number = 0;
+       sim_number = rssi_get_sim_number(handle_obj);
+       DBG ("sim %d",sim_number);
+
+       DBG ("property(%s) receive !!", TAPI_PROP_NETWORK_PS_TYPE);
+       DBG (" - ps_type = %d", *ps_type);
+
+       ad->tel_info[sim_number].network_ps_type= *ps_type;
+
+       connection_icon_on_noti(handle_obj,noti_id,data,user_data);
+}
+
+static void roaming_status_cb(TapiHandle *handle_obj, const char *noti_id, void *data, void *user_data)
+{
+       int *roaming_status = data;
+
+       struct appdata *ad = (struct appdata *)user_data;
+       retif(user_data == NULL, , "invalid parameter!!");
+       int sim_number = 0;
+       sim_number = rssi_get_sim_number(handle_obj);
+       DBG ("sim %d",sim_number);
+
+       DBG ("property(%s) receive !!", TAPI_PROP_NETWORK_ROAMING_STATUS);
+       DBG (" - roaming_status = %d", *roaming_status);
 
-       ret = vconf_notify_key_changed(VCONFKEY_TELEPHONY_SIM_SLOT,
-                                      indicator_rssi_change_cb, data);
-       if (ret != OK) {
-               ERR("Failed to register callback!");
-               r = r | ret;
+       ad->tel_info[sim_number].roaming_status= *roaming_status;
+
+       on_noti(handle_obj,noti_id,data,user_data);
+}
+
+
+#if 0
+static void preferred_voice_cb(TapiHandle *handle_obj, const char *noti_id, void *data, void *user_data)
+{
+       int *prefered_voice = data;
+
+       struct appdata *ad = (struct appdata *)user_data;
+       retif(user_data == NULL, , "invalid parameter!!");
+       int sim_number = 0;
+       sim_number = rssi_get_sim_number(handle_obj);
+       DBG ("sim %d",sim_number);
+
+       DBG ("property(%s) receive !!", TAPI_NOTI_CALL_PREFERRED_VOICE_SUBSCRIPTION);
+       DBG (" - preferred_voice = %d", *prefered_voice);
+
+       ad->tel_info[sim_number].prefered_voice = *prefered_voice;
+
+       on_noti(handle_obj,noti_id,data,user_data);
+}
+#endif
+
+
+static void preferred_data_cb(TapiHandle *handle_obj, const char *noti_id, void *data, void *user_data)
+{
+       struct appdata *ad = (struct appdata *)user_data;
+       retif(user_data == NULL, , "invalid parameter!!");
+       int sim_number = 0;
+       struct tel_noti_network_default_data_subs *noti = data;
+       sim_number = rssi_get_sim_number(handle_obj);
+       DBG ("sim %d",sim_number);
+
+       DBG ("property(%s) receive !!", TAPI_NOTI_NETWORK_DEFAULT_DATA_SUBSCRIPTION);
+       DBG (" - preferred_data = %d", noti->default_subs);
+
+       //Data preferred calback comes from only the sim handle which changed
+       //SIM1->SIM2 , callback comes only for SIM2 handle
+       ad->tel_info[0].prefered_data = noti->default_subs;
+       ad->tel_info[1].prefered_data = noti->default_subs;
+       //data prefered is not controllered
+
+       connection_icon_on_noti(handle_obj,noti_id,data,user_data);
+}
+
+static void default_network_cb(TapiHandle *handle_obj, const char *noti_id, void *data, void *user_data)
+{
+       struct appdata *ad = (struct appdata *)user_data;
+       retif(user_data == NULL, , "invalid parameter!!");
+       int sim_number = 0;
+       struct tel_noti_network_default_subs *noti = data;
+       sim_number = rssi_get_sim_number(handle_obj);
+       DBG ("sim %d",sim_number);
+
+       DBG ("property(%s) receive !!", TAPI_NOTI_NETWORK_DEFAULT_SUBSCRIPTION);
+       DBG (" - default_network = %d", noti->default_subs);
+
+       ad->tel_info[sim_number].default_network = noti->default_subs;
+
+       on_noti(handle_obj,noti_id,data,user_data);
+}
+
+static void call_forward_cb(TapiHandle *handle_obj, const char *noti_id, void *data, void *user_data)
+{
+       int *call_forward = data;
+
+       struct appdata *ad = (struct appdata *)user_data;
+       retif(user_data == NULL, , "invalid parameter!!");
+       int sim_number = 0;
+       sim_number = rssi_get_sim_number(handle_obj);
+
+       DBG ("sim %d",sim_number);
+#ifdef DEVICE_BUILD
+       DBG ("property(%s) receive !!", TAPI_PROP_SIM_CALL_FORWARD_STATE);
+#endif // DEVICE_BUILD
+       DBG (" - call_forward = %d", *call_forward);
+
+       ad->tel_info[sim_number].call_forward = *call_forward;
+
+       call_forward_on_noti(handle_obj,noti_id,data,user_data);
+}
+
+
+/* Initialize TAPI */
+static void __init_tel(void *data)
+{
+       DBG("__init_tel");
+       char **cp_list = NULL;
+       unsigned int modem_num = 0;
+
+       if(registered ==1)
+       {
+               ERR("already registered");
+               return;
        }
 
-       ret = vconf_notify_key_changed(VCONFKEY_TELEPHONY_SVCTYPE,
-                                      indicator_rssi_change_cb, data);
-       if (ret != OK) {
-               ERR("Failed to register callback!");
-               r = r | ret;
+       cp_list = tel_get_cp_name_list();
+       retif(cp_list == NULL, , "tel_get_cp_name_list() return NULL !!");
+       while (cp_list[modem_num]) {
+               tapi_handle[modem_num] = tel_init(cp_list[modem_num]);
+               if(!tapi_handle[modem_num])
+               {
+                       ERR("tapi_handle[%d] is null !!", modem_num);
+               }
+               else
+               {
+                       tel_register_noti_event(tapi_handle[modem_num], TAPI_PROP_NETWORK_SIGNALSTRENGTH_LEVEL, signal_strength_cb, data);
+                       tel_register_noti_event(tapi_handle[modem_num], TAPI_NOTI_SIM_STATUS, sim_status_cb, data);
+                       tel_register_noti_event(tapi_handle[modem_num], TAPI_PROP_NETWORK_SERVICE_TYPE, network_service_type_cb, data);
+                       tel_register_noti_event(tapi_handle[modem_num], TAPI_PROP_NETWORK_PS_TYPE, network_ps_type_cb, data);
+                       tel_register_noti_event(tapi_handle[modem_num], TAPI_PROP_NETWORK_ROAMING_STATUS, roaming_status_cb, data);
+                       tel_register_noti_event(tapi_handle[modem_num], TAPI_NOTI_NETWORK_DEFAULT_DATA_SUBSCRIPTION, preferred_data_cb, data);
+                       tel_register_noti_event(tapi_handle[modem_num], TAPI_NOTI_NETWORK_DEFAULT_SUBSCRIPTION, default_network_cb, data);
+#ifdef DEVICE_BUILD
+                       tel_register_noti_event(tapi_handle[modem_num], TAPI_PROP_SIM_CALL_FORWARD_STATE , call_forward_cb, data);
+#endif // DEVICE_BUILD
+               }
+               modem_num++;
        }
+       DBG("Model num: %d", modem_num);
+       tapi_handle[modem_num] = NULL;
+       g_strfreev(cp_list);
+       init_tel_info(data);
+       on_noti(NULL, NULL, NULL, data);
+
+       registered = 1;
+}
+
+/* De-initialize TAPI */
+static void __deinit_tel()
+{
+       DBG("__deinit_tel");
+       unsigned int i = 0;
+
+       while (tapi_handle[i]) {
+               /* De-initialize TAPI handle */
+               if(tapi_handle[i])
+               {
+                       tel_deregister_noti_event(tapi_handle[i], TAPI_PROP_NETWORK_SIGNALSTRENGTH_LEVEL);
+                       tel_deregister_noti_event(tapi_handle[i], TAPI_NOTI_SIM_STATUS);
+                       tel_deregister_noti_event(tapi_handle[i], TAPI_PROP_NETWORK_SERVICE_TYPE);
+                       tel_deregister_noti_event(tapi_handle[i], TAPI_PROP_NETWORK_ROAMING_STATUS);
+                       tel_deregister_noti_event(tapi_handle[i], TAPI_NOTI_NETWORK_DEFAULT_DATA_SUBSCRIPTION);
+                       tel_deregister_noti_event(tapi_handle[i], TAPI_NOTI_NETWORK_DEFAULT_SUBSCRIPTION);
+#ifdef DEVICE_BUILD
+                       tel_deregister_noti_event(tapi_handle[i], TAPI_PROP_SIM_CALL_FORWARD_STATE);
+#endif // DEVICE_BUILD
+               }
+               tel_deinit(tapi_handle[i]);
+               tapi_handle[i] = NULL;
 
-       ret = vconf_notify_key_changed(VCONFKEY_TELEPHONY_FLIGHT_MODE,
-                                      indicator_rssi_change_cb, data);
-       if (ret != OK) {
-               ERR("Failed to register callback!");
-               r = r | ret;
+               /* Move to next handle */
+               i++;
        }
+       registered = 0;
+}
+
+static void tel_ready_cb(keynode_t *key, void *data)
+{
+       gboolean status = FALSE;
 
-       ret = vconf_notify_key_changed(VCONFKEY_TELEPHONY_SVC_ROAM,
-                                      indicator_rssi_change_cb, data);
-       if (ret != OK) {
-               ERR("Failed to register callback!");
-               r = ret;
+       status = vconf_keynode_get_bool(key);
+       if (status == TRUE) {    /* Telephony State - READY */
+               __init_tel(data);
        }
+       else {                   /* Telephony State – NOT READY */
+               /* De-initialization is optional here (ONLY if required) */
+               __deinit_tel();
+       }
+}
 
-       indicator_rssi_change_cb(NULL, data);
+static int register_rssi_module(void *data)
+{
+       int r = 0;
 
+       gboolean state = FALSE;
+
+       retif(data == NULL, FAIL, "Invalid parameter!");
+
+       set_app_state(data);
+
+       DBG("RSSI initialization");
+       vconf_notify_key_changed(VCONFKEY_TELEPHONY_FLIGHT_MODE, _flight_mode, data);
+//     vconf_notify_key_changed(VCONFKEY_SETAPPL_SIM1_ICON, _sim_icon_update, data);
+//     vconf_notify_key_changed(VCONFKEY_SETAPPL_SIM2_ICON, _sim_icon_update, data);
+
+       vconf_get_bool(VCONFKEY_TELEPHONY_READY, &state);
+
+       if(state)
+       {
+               DBG("Telephony ready");
+               __init_tel(data);
+       }
+       else
+       {
+               DBG("Telephony not ready");
+               vconf_notify_key_changed(VCONFKEY_TELEPHONY_READY, tel_ready_cb, data);
+       }
+
+       r = OK;
        return r;
 }
 
@@ -311,30 +1024,25 @@ static int unregister_rssi_module(void)
 {
        int ret;
 
-       ret = vconf_ignore_key_changed(VCONFKEY_TELEPHONY_RSSI,
-                                      indicator_rssi_change_cb);
+       ret = vconf_ignore_key_changed(VCONFKEY_TELEPHONY_READY,
+                                          tel_ready_cb);
        if (ret != OK)
                ERR("Failed to unregister callback!");
 
-       ret = vconf_ignore_key_changed(VCONFKEY_TELEPHONY_SIM_SLOT,
-                                      indicator_rssi_change_cb);
+       ret = vconf_ignore_key_changed(VCONFKEY_TELEPHONY_FLIGHT_MODE,
+                                          _flight_mode);
        if (ret != OK)
                ERR("Failed to unregister callback!");
-
-       ret = vconf_ignore_key_changed(VCONFKEY_TELEPHONY_SVCTYPE,
-                                      indicator_rssi_change_cb);
+#if 0
+       ret = vconf_ignore_key_changed(VCONFKEY_SETAPPL_SIM1_ICON, _sim_icon_update);
        if (ret != OK)
                ERR("Failed to unregister callback!");
 
-       ret = vconf_ignore_key_changed(VCONFKEY_TELEPHONY_FLIGHT_MODE,
-                                      indicator_rssi_change_cb);
+       ret = vconf_ignore_key_changed(VCONFKEY_SETAPPL_SIM2_ICON, _sim_icon_update);
        if (ret != OK)
                ERR("Failed to unregister callback!");
-
-       ret = vconf_ignore_key_changed(VCONFKEY_TELEPHONY_SVC_ROAM,
-                                      indicator_rssi_change_cb);
-       if (ret != OK)
-               ERR("Failed to unregister callback!");
-
-       return OK;
+#endif
+       __deinit_tel();
+       ret = OK;
+       return ret;
 }
old mode 100755 (executable)
new mode 100644 (file)
similarity index 57%
rename from test/indicator_test_util.h
rename to modules/network/rssi.h
index 414148a..0ace0dd
@@ -1,23 +1,26 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ *  Indicator
  *
- * Licensed under the Flora License, Version 1.1 (the "License");
+ * Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.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/
+ * http://www.apache.org/licenses/LICENSE-2.0
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
+ *
  */
 
-#ifndef __INDICATOR_TEST_UTIL_H__
-#define __INDICATOR_TEST_UTIL_H__
 
-extern int print_indicator_icon_object(Indicator_Icon_Object *obj);
-extern int print_indicator_icon_list(Eina_List *list);
+#ifndef __INDICATOR_RSSI_H__
+#define __INDICATOR_RSSI_H__
+
+extern int rssi_get_sim_number(TapiHandle *handle_obj);
 
 #endif
old mode 100755 (executable)
new mode 100644 (file)
index e049672..f5f2ef6
@@ -1,17 +1,20 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ *  Indicator
  *
- * Licensed under the Flora License, Version 1.1 (the "License");
+ * Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.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/
+ * http://www.apache.org/licenses/LICENSE-2.0
  *
  * 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 <runtime_info.h>
 #include "common.h"
 #include "indicator.h"
-#include "indicator_ui.h"
+#include "main.h"
 #include "modules.h"
-#include "indicator_icon_util.h"
+#include "icon.h"
 #include "indicator_gui.h"
+#include "util.h"
+#include "box.h"
+#include "log.h"
 
-#define ICON_PRIORITY  INDICATOR_PRIORITY_FIXED4
+#define ICON_PRIORITY  INDICATOR_PRIORITY_FIXED9
 #define MODULE_NAME            "battery"
+#define MODULE_NAME_DIGIT      "battery"
+#define MODULE_NAME_DIGIT2     "battery"
 #define TIMER_INTERVAL 0.7
-#define BATTERY_TEXTWIDTH      62
-#define BATTERY_VALUE_FONT_SIZE        20
-#define BATTERY_PERCENT_FONT_SIZE      20
-#define BATTERY_PERCENT_FONT_STYLE "Bold"
+
 
 static int register_battery_module(void *data);
 static int unregister_battery_module(void);
 static int wake_up_cb(void *data);
+static void _resize_battery_digits_icons_box(void);
 
-Indicator_Icon_Object battery[INDICATOR_WIN_MAX] = {
-{
-       .win_type = INDICATOR_WIN_PORT,
+
+icon_s battery = {
        .type = INDICATOR_IMG_ICON,
        .name = MODULE_NAME,
        .priority = ICON_PRIORITY,
        .area = INDICATOR_ICON_AREA_FIXED,
        .always_top = EINA_FALSE,
        .exist_in_view = EINA_FALSE,
-       .txt_obj = {0,},
        .img_obj = {0,0,BATTERY_ICON_WIDTH,BATTERY_ICON_HEIGHT},
        .obj_exist = EINA_FALSE,
        .init = register_battery_module,
        .fini = unregister_battery_module,
-       .wake_up = wake_up_cb
-},
-{
-       .win_type = INDICATOR_WIN_LAND,
-       .type = INDICATOR_IMG_ICON,
+       .wake_up = wake_up_cb,
+       .digit_area = -1
+};
+
+icon_s digit = {
+       .type = INDICATOR_DIGIT_ICON,
+       .name = MODULE_NAME_DIGIT,
+       .priority = ICON_PRIORITY,
+       .area = INDICATOR_ICON_AREA_FIXED,
+       .always_top = EINA_FALSE,
+       .exist_in_view = EINA_FALSE,
+       .img_obj = {0,0,7,10},
+       .obj_exist = EINA_FALSE,
+       .wake_up = wake_up_cb,
+       .digit_area = DIGIT_UNITY
+};
+
+icon_s digit_additional = {
+       .type = INDICATOR_DIGIT_ICON,
        .name = MODULE_NAME,
        .priority = ICON_PRIORITY,
        .area = INDICATOR_ICON_AREA_FIXED,
        .always_top = EINA_FALSE,
        .exist_in_view = EINA_FALSE,
-       .txt_obj = {0,},
-       .img_obj = {0,0,BATTERY_ICON_WIDTH,BATTERY_ICON_HEIGHT},
+       .img_obj = {0,0,7,10},
        .obj_exist = EINA_FALSE,
-       .init = register_battery_module,
-       .fini = unregister_battery_module,
-       .wake_up = wake_up_cb
-}
+       .wake_up = wake_up_cb,
+       .digit_area = DIGIT_DOZENS_UNITY
 };
 
 enum {
@@ -77,7 +92,6 @@ enum {
        INDICATOR_CLOCK_MODE_MAX
 };
 
-static int clock_mode = INDICATOR_CLOCK_MODE_12H;
 
 enum {
        BATTERY_ICON_WIDTH_12H,
@@ -86,41 +100,161 @@ enum {
 };
 
 enum {
-       BATTERY_LEVEL_6,
+       BATTERY_LEVEL_8,
        BATTERY_LEVEL_20,
 };
 
 enum {
        LEVEL_MIN = 0,
-       LEVEL_0 = LEVEL_MIN,
-       LEVEL_1,
-       LEVEL_2,
-       LEVEL_3,
-       LEVEL_4,
-       LEVEL_5,
-       LEVEL_6,
-       LEVEL_MAX = LEVEL_6,
+       LEVEL_0 = LEVEL_MIN,    /* 0% */
+       LEVEL_1,                /* 1  ~   5% */
+       LEVEL_2,                /* 6  ~  10% */
+       LEVEL_3,                /* 11 ~  15% */
+       LEVEL_4,                /* 16 ~  20% */
+       LEVEL_5,                /* 21 ~  25 % */
+       LEVEL_6,                /* 25 ~  30 % */
+       LEVEL_7,                /* 31 ~  35 % */
+       LEVEL_8,                /* 36 ~  40 % */
+       LEVEL_9,                /* 41 ~  45 % */
+       LEVEL_10,               /* 46 ~  50 % */
+       LEVEL_11,               /* 51 ~  55 % */
+       LEVEL_12,               /* 56 ~  60 % */
+       LEVEL_13,               /* 61 ~  65 % */
+       LEVEL_14,               /* 66 ~  70 % */
+       LEVEL_15,               /* 71 ~  75 % */
+       LEVEL_16,               /* 76 ~  80 % */
+       LEVEL_17,               /* 81 ~  85 % */
+       LEVEL_18,               /* 86 ~  90 % */
+       LEVEL_19,               /* 91 ~  95 % */
+       LEVEL_20,               /* 96 ~  100 % */
+       LEVEL_MAX = LEVEL_20,
        LEVEL_NUM,
+       LEVEL_FULL
+};
+
+enum {
+       LEVEL_PERCENTAGE_MIN = 0,
+       LEVEL_PERCENTAGE_0 = LEVEL_PERCENTAGE_MIN,      /* 0% */
+       LEVEL_PERCENTAGE_1,             /* 1  ~  10% */
+       LEVEL_PERCENTAGE_2,             /* 11 ~  20% */
+       LEVEL_PERCENTAGE_3,             /* 21 ~  30% */
+       LEVEL_PERCENTAGE_4,             /* 31 ~  40% */
+       LEVEL_PERCENTAGE_5,             /* 41 ~  50 % */
+       LEVEL_PERCENTAGE_6,             /* 51 ~  60 % */
+       LEVEL_PERCENTAGE_7,             /* 61 ~  70 % */
+       LEVEL_PERCENTAGE_8,             /* 71 ~  80 % */
+       LEVEL_PERCENTAGE_9,             /* 81 ~  90 % */
+       LEVEL_PERCENTAGE_10,    /* 91 ~  100 % */
+       LEVEL_PERCENTAGE_MAX = LEVEL_PERCENTAGE_10,
+       LEVEL_PERCENTAGE_NUM
 };
 
+enum {
+       BATTERY_PERCENT_1_DIGIT = 0,
+       BATTERY_PERCENT_2_DIGITS,
+       BATTERY_PERCENT_DIGITS
+};
+
+enum {
+       BATTERY_ETC_STATE_FULL,
+       BATTERY_ETC_STATE_MAX,
+};
+
+static int batt_full = 0;
+
 static const char *icon_path[LEVEL_NUM] = {
-       [LEVEL_0] = "Power/battery_6/B03_Power_battery_00.png",
-       [LEVEL_1] = "Power/battery_6/B03_Power_battery_01.png",
-       [LEVEL_2] = "Power/battery_6/B03_Power_battery_02.png",
-       [LEVEL_3] = "Power/battery_6/B03_Power_battery_03.png",
-       [LEVEL_4] = "Power/battery_6/B03_Power_battery_04.png",
-       [LEVEL_5] = "Power/battery_6/B03_Power_battery_05.png",
-       [LEVEL_6] = "Power/battery_6/B03_Power_battery_06.png",
+       [LEVEL_0] = "Power/B03_stat_sys_battery_4.png",
+       [LEVEL_1] = "Power/B03_stat_sys_battery_5.png",
+       [LEVEL_2] = "Power/B03_stat_sys_battery_10.png",
+       [LEVEL_3] = "Power/B03_stat_sys_battery_15.png",
+       [LEVEL_4] = "Power/B03_stat_sys_battery_20.png",
+       [LEVEL_5] = "Power/B03_stat_sys_battery_25.png",
+       [LEVEL_6] = "Power/B03_stat_sys_battery_30.png",
+       [LEVEL_7] = "Power/B03_stat_sys_battery_35.png",
+       [LEVEL_8] = "Power/B03_stat_sys_battery_40.png",
+       [LEVEL_9] = "Power/B03_stat_sys_battery_45.png",
+       [LEVEL_10] = "Power/B03_stat_sys_battery_50.png",
+       [LEVEL_11] = "Power/B03_stat_sys_battery_55.png",
+       [LEVEL_12] = "Power/B03_stat_sys_battery_60.png",
+       [LEVEL_13] = "Power/B03_stat_sys_battery_65.png",
+       [LEVEL_14] = "Power/B03_stat_sys_battery_70.png",
+       [LEVEL_15] = "Power/B03_stat_sys_battery_75.png",
+       [LEVEL_16] = "Power/B03_stat_sys_battery_80.png",
+       [LEVEL_17] = "Power/B03_stat_sys_battery_85.png",
+       [LEVEL_18] = "Power/B03_stat_sys_battery_90.png",
+       [LEVEL_19] = "Power/B03_stat_sys_battery_95.png",
+       [LEVEL_20] = "Power/B03_stat_sys_battery_100.png"
 };
 
 static const char *charging_icon_path[LEVEL_NUM] = {
-       [LEVEL_0] = "Power/battery_6/B03_Power_connected_00.png",
-       [LEVEL_1] = "Power/battery_6/B03_Power_connected_01.png",
-       [LEVEL_2] = "Power/battery_6/B03_Power_connected_02.png",
-       [LEVEL_3] = "Power/battery_6/B03_Power_connected_03.png",
-       [LEVEL_4] = "Power/battery_6/B03_Power_connected_04.png",
-       [LEVEL_5] = "Power/battery_6/B03_Power_connected_05.png",
-       [LEVEL_6] = "Power/battery_6/B03_Power_connected_06.png",
+       [LEVEL_0] = "Power/B03_stat_sys_battery_charge_anim4.png",
+       [LEVEL_1] = "Power/B03_stat_sys_battery_charge_anim5.png",
+       [LEVEL_2] = "Power/B03_stat_sys_battery_charge_anim10.png",
+       [LEVEL_3] = "Power/B03_stat_sys_battery_charge_anim15.png",
+       [LEVEL_4] = "Power/B03_stat_sys_battery_charge_anim20.png",
+       [LEVEL_5] = "Power/B03_stat_sys_battery_charge_anim25.png",
+       [LEVEL_6] = "Power/B03_stat_sys_battery_charge_anim30.png",
+       [LEVEL_7] = "Power/B03_stat_sys_battery_charge_anim35.png",
+       [LEVEL_8] = "Power/B03_stat_sys_battery_charge_anim40.png",
+       [LEVEL_9] = "Power/B03_stat_sys_battery_charge_anim45.png",
+       [LEVEL_10] = "Power/B03_stat_sys_battery_charge_anim50.png",
+       [LEVEL_11] = "Power/B03_stat_sys_battery_charge_anim55.png",
+       [LEVEL_12] = "Power/B03_stat_sys_battery_charge_anim60.png",
+       [LEVEL_13] = "Power/B03_stat_sys_battery_charge_anim65.png",
+       [LEVEL_14] = "Power/B03_stat_sys_battery_charge_anim70.png",
+       [LEVEL_15] = "Power/B03_stat_sys_battery_charge_anim75.png",
+       [LEVEL_16] = "Power/B03_stat_sys_battery_charge_anim80.png",
+       [LEVEL_17] = "Power/B03_stat_sys_battery_charge_anim85.png",
+       [LEVEL_18] = "Power/B03_stat_sys_battery_charge_anim90.png",
+       [LEVEL_19] = "Power/B03_stat_sys_battery_charge_anim95.png",
+       [LEVEL_20] = "Power/B03_stat_sys_battery_charge_anim100.png"
+};
+#if 0
+static const char *percentage_bg_icon_path[BATTERY_PERCENT_DIGITS] = {
+       [BATTERY_PERCENT_1_DIGIT] = "Power/battery_text/B03_stat_sys_battery_bg_1.png",
+       [BATTERY_PERCENT_2_DIGITS] = "Power/battery_text/B03_stat_sys_battery_bg_2.png"
+};
+#endif
+static const char *percentage_battery_digit_icon_path[11] = {
+       [0]  = "Power/battery_text/B03_stat_sys_battery_num_0.png",
+       [1]  = "Power/battery_text/B03_stat_sys_battery_num_1.png",
+       [2]  = "Power/battery_text/B03_stat_sys_battery_num_2.png",
+       [3]  = "Power/battery_text/B03_stat_sys_battery_num_3.png",
+       [4]  = "Power/battery_text/B03_stat_sys_battery_num_4.png",
+       [5]  = "Power/battery_text/B03_stat_sys_battery_num_5.png",
+       [6]  = "Power/battery_text/B03_stat_sys_battery_num_6.png",
+       [7]  = "Power/battery_text/B03_stat_sys_battery_num_7.png",
+       [8]  = "Power/battery_text/B03_stat_sys_battery_num_8.png",
+       [9]  = "Power/battery_text/B03_stat_sys_battery_num_9.png",
+       [10] = "Power/battery_text/B03_stat_sys_battery_num_100.png"
+};
+
+static const char *percentage_battery_icon_path[LEVEL_PERCENTAGE_NUM] = {
+       [LEVEL_PERCENTAGE_0] = "Power/B03_stat_sys_battery_percent_0.png",
+       [LEVEL_PERCENTAGE_1] = "Power/B03_stat_sys_battery_percent_10.png",
+       [LEVEL_PERCENTAGE_2] = "Power/B03_stat_sys_battery_percent_20.png",
+       [LEVEL_PERCENTAGE_3] = "Power/B03_stat_sys_battery_percent_30.png",
+       [LEVEL_PERCENTAGE_4] = "Power/B03_stat_sys_battery_percent_40.png",
+       [LEVEL_PERCENTAGE_5] = "Power/B03_stat_sys_battery_percent_50.png",
+       [LEVEL_PERCENTAGE_6] = "Power/B03_stat_sys_battery_percent_60.png",
+       [LEVEL_PERCENTAGE_7] = "Power/B03_stat_sys_battery_percent_70.png",
+       [LEVEL_PERCENTAGE_8] = "Power/B03_stat_sys_battery_percent_80.png",
+       [LEVEL_PERCENTAGE_9] = "Power/B03_stat_sys_battery_percent_90.png",
+       [LEVEL_PERCENTAGE_10] = "Power/B03_stat_sys_battery_percent_100.png"
+};
+
+static const char *percentage_battery_charging_icon_path[LEVEL_PERCENTAGE_NUM] = {
+       [LEVEL_PERCENTAGE_0] = "Power/B03_stat_sys_battery_percent_charge_anim0.png",
+       [LEVEL_PERCENTAGE_1] = "Power/B03_stat_sys_battery_percent_charge_anim10.png",
+       [LEVEL_PERCENTAGE_2] = "Power/B03_stat_sys_battery_percent_charge_anim20.png",
+       [LEVEL_PERCENTAGE_3] = "Power/B03_stat_sys_battery_percent_charge_anim30.png",
+       [LEVEL_PERCENTAGE_4] = "Power/B03_stat_sys_battery_percent_charge_anim40.png",
+       [LEVEL_PERCENTAGE_5] = "Power/B03_stat_sys_battery_percent_charge_anim50.png",
+       [LEVEL_PERCENTAGE_6] = "Power/B03_stat_sys_battery_percent_charge_anim60.png",
+       [LEVEL_PERCENTAGE_7] = "Power/B03_stat_sys_battery_percent_charge_anim70.png",
+       [LEVEL_PERCENTAGE_8] = "Power/B03_stat_sys_battery_percent_charge_anim80.png",
+       [LEVEL_PERCENTAGE_9] = "Power/B03_stat_sys_battery_percent_charge_anim90.png",
+       [LEVEL_PERCENTAGE_10] = "Power/B03_stat_sys_battery_percent_charge_anim100.png"
 };
 
 enum {
@@ -150,51 +284,6 @@ enum {
        FUEL_GAUGE_LV_NUM,
 };
 
-static const char *fuel_guage_icon_path[BATTERY_ICON_WIDTH_NUM][FUEL_GAUGE_LV_NUM] = {
-       [BATTERY_ICON_WIDTH_12H][FUEL_GAUGE_LV_0] = "Power/12H/B03_battery_animation_12h_00.png",
-       [BATTERY_ICON_WIDTH_12H][FUEL_GAUGE_LV_1] = "Power/12H/B03_battery_animation_12h_01.png",
-       [BATTERY_ICON_WIDTH_12H][FUEL_GAUGE_LV_2] = "Power/12H/B03_battery_animation_12h_02.png",
-       [BATTERY_ICON_WIDTH_12H][FUEL_GAUGE_LV_3] = "Power/12H/B03_battery_animation_12h_03.png",
-       [BATTERY_ICON_WIDTH_12H][FUEL_GAUGE_LV_4] = "Power/12H/B03_battery_animation_12h_04.png",
-       [BATTERY_ICON_WIDTH_12H][FUEL_GAUGE_LV_5] = "Power/12H/B03_battery_animation_12h_05.png",
-       [BATTERY_ICON_WIDTH_12H][FUEL_GAUGE_LV_6] = "Power/12H/B03_battery_animation_12h_06.png",
-       [BATTERY_ICON_WIDTH_12H][FUEL_GAUGE_LV_7] = "Power/12H/B03_battery_animation_12h_07.png",
-       [BATTERY_ICON_WIDTH_12H][FUEL_GAUGE_LV_8] = "Power/12H/B03_battery_animation_12h_08.png",
-       [BATTERY_ICON_WIDTH_12H][FUEL_GAUGE_LV_9] = "Power/12H/B03_battery_animation_12h_09.png",
-       [BATTERY_ICON_WIDTH_12H][FUEL_GAUGE_LV_10] = "Power/12H/B03_battery_animation_12h_10.png",
-       [BATTERY_ICON_WIDTH_12H][FUEL_GAUGE_LV_11] = "Power/12H/B03_battery_animation_12h_11.png",
-       [BATTERY_ICON_WIDTH_12H][FUEL_GAUGE_LV_12] = "Power/12H/B03_battery_animation_12h_12.png",
-       [BATTERY_ICON_WIDTH_12H][FUEL_GAUGE_LV_13] = "Power/12H/B03_battery_animation_12h_13.png",
-       [BATTERY_ICON_WIDTH_12H][FUEL_GAUGE_LV_14] = "Power/12H/B03_battery_animation_12h_14.png",
-       [BATTERY_ICON_WIDTH_12H][FUEL_GAUGE_LV_15] = "Power/12H/B03_battery_animation_12h_15.png",
-       [BATTERY_ICON_WIDTH_12H][FUEL_GAUGE_LV_16] = "Power/12H/B03_battery_animation_12h_16.png",
-       [BATTERY_ICON_WIDTH_12H][FUEL_GAUGE_LV_17] = "Power/12H/B03_battery_animation_12h_17.png",
-       [BATTERY_ICON_WIDTH_12H][FUEL_GAUGE_LV_18] = "Power/12H/B03_battery_animation_12h_18.png",
-       [BATTERY_ICON_WIDTH_12H][FUEL_GAUGE_LV_19] = "Power/12H/B03_battery_animation_12h_19.png",
-       [BATTERY_ICON_WIDTH_12H][FUEL_GAUGE_LV_20] = "Power/12H/B03_battery_animation_12h_20.png",
-       [BATTERY_ICON_WIDTH_24H][FUEL_GAUGE_LV_0] = "Power/24H/B03_battery_animation_24h_00.png",
-       [BATTERY_ICON_WIDTH_24H][FUEL_GAUGE_LV_1] = "Power/24H/B03_battery_animation_24h_01.png",
-       [BATTERY_ICON_WIDTH_24H][FUEL_GAUGE_LV_2] = "Power/24H/B03_battery_animation_24h_02.png",
-       [BATTERY_ICON_WIDTH_24H][FUEL_GAUGE_LV_3] = "Power/24H/B03_battery_animation_24h_03.png",
-       [BATTERY_ICON_WIDTH_24H][FUEL_GAUGE_LV_4] = "Power/24H/B03_battery_animation_24h_04.png",
-       [BATTERY_ICON_WIDTH_24H][FUEL_GAUGE_LV_5] = "Power/24H/B03_battery_animation_24h_05.png",
-       [BATTERY_ICON_WIDTH_24H][FUEL_GAUGE_LV_6] = "Power/24H/B03_battery_animation_24h_06.png",
-       [BATTERY_ICON_WIDTH_24H][FUEL_GAUGE_LV_7] = "Power/24H/B03_battery_animation_24h_07.png",
-       [BATTERY_ICON_WIDTH_24H][FUEL_GAUGE_LV_8] = "Power/24H/B03_battery_animation_24h_08.png",
-       [BATTERY_ICON_WIDTH_24H][FUEL_GAUGE_LV_9] = "Power/24H/B03_battery_animation_24h_09.png",
-       [BATTERY_ICON_WIDTH_24H][FUEL_GAUGE_LV_10] = "Power/24H/B03_battery_animation_24h_10.png",
-       [BATTERY_ICON_WIDTH_24H][FUEL_GAUGE_LV_11] = "Power/24H/B03_battery_animation_24h_11.png",
-       [BATTERY_ICON_WIDTH_24H][FUEL_GAUGE_LV_12] = "Power/24H/B03_battery_animation_24h_12.png",
-       [BATTERY_ICON_WIDTH_24H][FUEL_GAUGE_LV_13] = "Power/24H/B03_battery_animation_24h_13.png",
-       [BATTERY_ICON_WIDTH_24H][FUEL_GAUGE_LV_14] = "Power/24H/B03_battery_animation_24h_14.png",
-       [BATTERY_ICON_WIDTH_24H][FUEL_GAUGE_LV_15] = "Power/24H/B03_battery_animation_24h_15.png",
-       [BATTERY_ICON_WIDTH_24H][FUEL_GAUGE_LV_16] = "Power/24H/B03_battery_animation_24h_16.png",
-       [BATTERY_ICON_WIDTH_24H][FUEL_GAUGE_LV_17] = "Power/24H/B03_battery_animation_24h_17.png",
-       [BATTERY_ICON_WIDTH_24H][FUEL_GAUGE_LV_18] = "Power/24H/B03_battery_animation_24h_18.png",
-       [BATTERY_ICON_WIDTH_24H][FUEL_GAUGE_LV_19] = "Power/24H/B03_battery_animation_24h_19.png",
-       [BATTERY_ICON_WIDTH_24H][FUEL_GAUGE_LV_20] = "Power/24H/B03_battery_animation_24h_20.png",
-};
-
 struct battery_level_info {
        int current_level;
        int current_capa;
@@ -204,19 +293,20 @@ struct battery_level_info {
 
 static struct battery_level_info _level;
 static Ecore_Timer *timer;
-static int battery_level_type = BATTERY_LEVEL_20;
-static Eina_Bool battery_percentage_on = EINA_FALSE;
-static Eina_Bool battery_charging = EINA_FALSE;
+static int battery_level_type = BATTERY_LEVEL_8;
+static int battery_charging = EINA_FALSE;
 static int aniIndex = -1;
+static int prev_mode = -1;
+static int prev_level = -1;
+static int prev_full = -1;
+static int battery_percentage = -1;
+static Eina_Bool is_battery_percentage_shown = EINA_FALSE;
 
 static void set_app_state(void* data)
 {
-       int i = 0;
-
-       for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
-       {
-               battery[i].ad = data;
-       }
+       battery.ad = data;
+       digit.ad = data;
+       digit_additional.ad = data;
 }
 
 static void delete_timer(void)
@@ -231,136 +321,193 @@ static int __battery_capa_to_level(int capacity)
 {
        int level = 0;
 
-       if (battery_level_type == BATTERY_LEVEL_20) {
-               if (capacity >= 100)
-                       level = FUEL_GAUGE_LV_MAX;
-               else if (capacity < 3)
-                       level = FUEL_GAUGE_LV_0;
-               else
-                       level = (int)((capacity + 2) / 5);
-       } else {
-               if (capacity > 100)
-                       level = LEVEL_MAX;
-               else if (capacity >= 80)
-                       level = LEVEL_6;
-               else if (capacity >= 60)
-                       level = LEVEL_5;
-               else if (capacity >= 40)
-                       level = LEVEL_4;
-               else if (capacity >= 25)
-                       level = LEVEL_3;
-               else if (capacity >= 15)
-                       level = LEVEL_2;
-               else if (capacity >= 5)
-                       level = LEVEL_1;
+       if(is_battery_percentage_shown)
+       {
+               if (battery_level_type == BATTERY_LEVEL_20) {
+                       if (capacity >= 100)
+                               level = FUEL_GAUGE_LV_MAX;
+                       else if (capacity < 3)
+                               level = FUEL_GAUGE_LV_0;
+                       else
+                               level = (int)((capacity + 2) / 5);
+               }
                else
-                       level = LEVEL_0;
+               {
+                       if (capacity >= 91)
+                               level = LEVEL_PERCENTAGE_10;
+                       else if (capacity >= 81)
+                               level = LEVEL_PERCENTAGE_9;
+                       else if (capacity >= 71)
+                               level = LEVEL_PERCENTAGE_8;
+                       else if (capacity >= 61)
+                               level = LEVEL_PERCENTAGE_7;
+                       else if (capacity >= 51)
+                               level = LEVEL_PERCENTAGE_6;
+                       else if (capacity >= 41)
+                               level = LEVEL_PERCENTAGE_5;
+                       else if (capacity >= 31)
+                               level = LEVEL_PERCENTAGE_4;
+                       else if (capacity >= 21)
+                               level = LEVEL_PERCENTAGE_3;
+                       else if (capacity >= 11)
+                               level = LEVEL_PERCENTAGE_2;
+                       else if (capacity >= 1)
+                               level = LEVEL_PERCENTAGE_1;
+                       else
+                               level = LEVEL_PERCENTAGE_0;
+               }
+       }
+       else
+       {
+               if (battery_level_type == BATTERY_LEVEL_20) {
+                       if (capacity >= 100)
+                               level = FUEL_GAUGE_LV_MAX;
+                       else if (capacity < 3)
+                               level = FUEL_GAUGE_LV_0;
+                       else
+                               level = (int)((capacity + 2) / 5);
+               } else {
+                       if (capacity >= 96)
+                               level = LEVEL_20;
+                       else if (capacity >= 91)
+                               level = LEVEL_19;
+                       else if (capacity >= 86)
+                               level = LEVEL_18;
+                       else if (capacity >= 81)
+                               level = LEVEL_17;
+                       else if (capacity >= 76)
+                               level = LEVEL_16;
+                       else if (capacity >= 71)
+                               level = LEVEL_15;
+                       else if (capacity >= 66)
+                               level = LEVEL_14;
+                       else if (capacity >= 61)
+                               level = LEVEL_13;
+                       else if (capacity >= 56)
+                               level = LEVEL_12;
+                       else if (capacity >= 51)
+                               level = LEVEL_11;
+                       else if (capacity >= 46)
+                               level = LEVEL_10;
+                       else if (capacity >= 41)
+                               level = LEVEL_9;
+                       else if (capacity >= 36)
+                               level = LEVEL_8;
+                       else if (capacity >= 31)
+                               level = LEVEL_7;
+                       else if (capacity >= 26)
+                               level = LEVEL_6;
+                       else if (capacity >= 21)
+                               level = LEVEL_5;
+                       else if (capacity >= 16)
+                               level = LEVEL_4;
+                       else if (capacity >= 11)
+                               level = LEVEL_3;
+                       else if (capacity >= 6)
+                               level = LEVEL_2;
+                       else if (capacity >= 1)
+                               level = LEVEL_1;
+                       else
+                               level = LEVEL_0;
+               }
        }
-
        return level;
 }
 
-static void show_battery_icon(void)
+
+#if 0
+static void icon_animation_set(enum indicator_icon_ani type)
 {
-       int i = 0;
-       for(i=0 ; i<INDICATOR_WIN_MAX ; i++)
-       {
-               indicator_util_icon_show(&battery[i]);
-       }
+       icon_ani_set(&battery, type);
 }
+#endif
 
-static void hide_battery_icon(void)
+
+static void show_battery_icon(int mode, int level)
 {
-       int i = 0;
-       for(i=0 ; i<INDICATOR_WIN_MAX ; i++)
-       {
-               indicator_util_icon_hide(&battery[i]);
+       if (is_battery_percentage_shown) {
+               if (batt_full == 1) {
+                       battery.img_obj.data = percentage_battery_icon_path[LEVEL_PERCENTAGE_MAX];
+               } else if (battery_charging==EINA_TRUE) {
+                       battery.img_obj.data = percentage_battery_charging_icon_path[level];
+               } else {
+                       battery.img_obj.data = percentage_battery_icon_path[level];
+               }
+               icon_show(&battery);
+       } else {
+               if(batt_full == 1) {
+                       battery.img_obj.data = icon_path[LEVEL_MAX];
+               } else if(battery_charging==EINA_TRUE) {
+                       battery.img_obj.data = charging_icon_path[level];
+               } else {
+                       battery.img_obj.data = icon_path[level];
+               }
+               icon_show(&battery);
        }
+
+       prev_full = batt_full;
+       prev_mode = mode;
+       prev_level = level;
 }
 
-static void icon_animation_set(enum indicator_icon_ani type)
+static void show_digits()
 {
-       int i = 0;
-       for(i=0 ; i<INDICATOR_WIN_MAX ; i++)
-       {
-               indicator_util_icon_animation_set(&battery[i],type);
+       DBG("Show digits: %d", battery_percentage);
+
+       if (battery_percentage < 10) {
+               digit.img_obj.data = percentage_battery_digit_icon_path[battery_percentage];
+               digit.digit_area = DIGIT_UNITY;
+               digit.img_obj.width = 7;
+               icon_show(&digit);
+               icon_hide(&digit_additional);
+
+       } else if (battery_percentage < 100) {
+               digit.img_obj.data = percentage_battery_digit_icon_path[battery_percentage/10];
+               digit.digit_area = DIGIT_DOZENS;
+               digit.img_obj.width = 7;
+               digit_additional.img_obj.data = percentage_battery_digit_icon_path[battery_percentage%10];
+               digit_additional.digit_area = DIGIT_DOZENS_UNITY;
+               digit_additional.img_obj.width = 7;
+               icon_show(&digit);
+               icon_show(&digit_additional);
+       } else {
+               digit.img_obj.data = percentage_battery_digit_icon_path[10];
+               digit.digit_area = DIGIT_HUNDREDS;
+               digit.img_obj.width = 17;
+               icon_show(&digit);
+               icon_hide(&digit_additional);
        }
 }
 
-static void indicator_battery_get_time_format( void)
+
+
+static void hide_digits()
 {
-       int r = -1;
+       DBG("Hide digits");
 
-       bool is_24hour_enabled = false;
+       icon_hide(&digit);
+       icon_hide(&digit_additional);
+}
 
-       r = runtime_info_get_value_bool(
-                       RUNTIME_INFO_KEY_24HOUR_CLOCK_FORMAT_ENABLED, &is_24hour_enabled);
 
-       if( r==RUNTIME_INFO_ERROR_NONE&&is_24hour_enabled==true)
-       {
-               clock_mode = INDICATOR_CLOCK_MODE_24H;
-       }
-       else
-       {
-               clock_mode = INDICATOR_CLOCK_MODE_12H;
-       }
 
+static void indicator_battery_get_time_format( void)
+{
 }
 
 static void indicator_battery_level_init(void)
 {
-       battery_level_type = BATTERY_LEVEL_20;
-       _level.min_level = FUEL_GAUGE_LV_MIN;
+       /* Currently, kernel not support level 6, So We use only level 20 */
+       battery_level_type = BATTERY_LEVEL_8;
+       _level.min_level = LEVEL_MIN;
        _level.current_level = -1;
        _level.current_capa = -1;
-       _level.max_level = FUEL_GAUGE_LV_MAX;
+       _level.max_level = LEVEL_MAX;
        indicator_battery_get_time_format();
 }
 
-static void indicator_battery_text_set(void *data, int value, Indicator_Icon_Object *icon)
-{
-       Eina_Strbuf *temp_buf = NULL;
-       Eina_Strbuf *percent_buf = NULL;
-       char *temp_str = NULL;
-
-       retif(data == NULL, , "Invalid parameter!");
-
-       icon->type = INDICATOR_TXT_WITH_IMG_ICON;
-       temp_buf = eina_strbuf_new();
-       percent_buf = eina_strbuf_new();
-
-       eina_strbuf_append_printf(temp_buf, "%d", value);
-       temp_str = eina_strbuf_string_steal(temp_buf);
-       eina_strbuf_append_printf(percent_buf, "%s",
-                                 indicator_util_icon_label_set
-                                 (temp_str, NULL, NULL,
-                                  BATTERY_VALUE_FONT_SIZE,
-                                  data));
-       free(temp_str);
-
-       eina_strbuf_append_printf(temp_buf, "%%");
-       temp_str = eina_strbuf_string_steal(temp_buf);
-       eina_strbuf_append_printf(percent_buf, "%s",
-                                 indicator_util_icon_label_set
-                                 (temp_str, NULL,
-                                  BATTERY_PERCENT_FONT_STYLE,
-                                  BATTERY_PERCENT_FONT_SIZE,
-                                  data));
-       free(temp_str);
-
-       if (icon->txt_obj.data != NULL)
-               free(icon->txt_obj.data);
-
-       icon->txt_obj.data = eina_strbuf_string_steal(percent_buf);
-
-       if (temp_buf != NULL)
-               eina_strbuf_free(temp_buf);
-
-       if (percent_buf != NULL)
-               eina_strbuf_free(percent_buf);
-
-}
 
+#if 0
 static Eina_Bool indicator_battery_charging_ani_cb(void *data)
 {
 
@@ -368,9 +515,7 @@ static Eina_Bool indicator_battery_charging_ani_cb(void *data)
 
        if (_level.current_level == _level.max_level) {
                aniIndex = _level.max_level;
-               battery[0].img_obj.data = fuel_guage_icon_path[clock_mode][aniIndex];
-               battery[1].img_obj.data = fuel_guage_icon_path[clock_mode][aniIndex];
-               show_battery_icon();
+               show_battery_icon(battery_charging,aniIndex);
                timer = NULL;
                return TIMER_STOP;
        }
@@ -380,73 +525,64 @@ static Eina_Bool indicator_battery_charging_ani_cb(void *data)
        else
                aniIndex++;
 
-       battery[0].img_obj.data = fuel_guage_icon_path[clock_mode][aniIndex];
-       battery[1].img_obj.data = fuel_guage_icon_path[clock_mode][aniIndex];
-       show_battery_icon();
+       show_battery_icon(battery_charging,aniIndex);
 
        return TIMER_CONTINUE;
 }
+#endif
+
 
 static int indicator_change_battery_image_level(void *data, int level)
 {
        retif(data == NULL, FAIL, "Invalid parameter!");
 
-       if (battery_level_type == BATTERY_LEVEL_20) {
-               if (level < FUEL_GAUGE_LV_MIN)
-                       level = FUEL_GAUGE_LV_MIN;
-               else if (level > FUEL_GAUGE_LV_MAX)
-                       level = FUEL_GAUGE_LV_MAX;
-       } else {
-               if (level < LEVEL_MIN)
-                       level = LEVEL_MIN;
-               else if (level > LEVEL_MAX)
-                       level = LEVEL_MAX;
+       if(is_battery_percentage_shown)
+       {
+               if (battery_level_type == BATTERY_LEVEL_20) {
+                       if (level < FUEL_GAUGE_LV_MIN)
+                               level = FUEL_GAUGE_LV_MIN;
+                       else if (level > FUEL_GAUGE_LV_MAX)
+                               level = FUEL_GAUGE_LV_MAX;
+               }
+               else {
+                       if (level < LEVEL_PERCENTAGE_MIN)
+                               level = LEVEL_PERCENTAGE_MIN;
+               }
+       }
+       else
+       {
+               if (battery_level_type == BATTERY_LEVEL_20) {
+                       if (level < FUEL_GAUGE_LV_MIN)
+                               level = FUEL_GAUGE_LV_MIN;
+                       else if (level > FUEL_GAUGE_LV_MAX)
+                               level = FUEL_GAUGE_LV_MAX;
+               } else {
+                       if (level < LEVEL_MIN)
+                               level = LEVEL_MIN;
+               }
        }
 
-       DBG("level = %d",level);
-       battery[0].img_obj.data = fuel_guage_icon_path[clock_mode][level];
-       battery[1].img_obj.data = fuel_guage_icon_path[clock_mode][level];
-       show_battery_icon();
+       /* Set arg for display image only or text with image */
+       show_battery_icon(battery_charging,level);
        return OK;
 }
 
-static void indicator_battery_check_percentage_option(void *data)
+static void indicator_bttery_update_by_charging_state(void *data)
 {
-       int ret = FAIL;
-       int status = 0;
-
-       retif(data == NULL, , "Invalid parameter!");
-
-       ret = vconf_get_bool(VCONFKEY_SETAPPL_BATTERY_PERCENTAGE_BOOL, &status);
-       if (ret != OK)
-               ERR("Fail to get [%s: %d]",
-                       VCONFKEY_SETAPPL_BATTERY_PERCENTAGE_BOOL, ret);
-
-       int i = 0;
-       for(i=0 ; i<INDICATOR_WIN_MAX ; i++)
-       {
-               battery_percentage_on = EINA_FALSE;
-               battery[i].img_obj.width = BATTERY_ICON_WIDTH;
-               battery[i].type = INDICATOR_IMG_ICON;
-       }
+       aniIndex = -1;
+       indicator_change_battery_image_level(data,
+                                                 _level.current_level);
 }
 
-static void indicator_bttery_update_by_charging_state(void *data)
+static void indicator_battery_resize_percengate(void* data)
 {
-       if (battery_charging == EINA_TRUE) {
-               if (!timer) {
-                       icon_animation_set(ICON_ANI_NONE);
-                       timer = ecore_timer_add(TIMER_INTERVAL,
-                                       indicator_battery_charging_ani_cb,
-                                       data);
-               }
-       } else {
-               aniIndex = -1;
-               delete_timer();
-               icon_animation_set(ICON_ANI_NONE);
-               indicator_change_battery_image_level(data,
-                               _level.current_level);
+       if(!is_battery_percentage_shown)
+       {
+               hide_digits();
+               return;
        }
+
+       show_digits();
 }
 
 static void indicator_battery_update_display(void *data)
@@ -457,40 +593,45 @@ static void indicator_battery_update_display(void *data)
 
        retif(data == NULL, , "Invalid parameter!");
 
-       if(indicator_util_get_update_flag()==0)
+       if(icon_get_update_flag()==0)
        {
-               DBG("need to update");
                return;
        }
 
        ret = vconf_get_int(VCONFKEY_SYSMAN_BATTERY_CAPACITY, &battery_capa);
        if (ret != OK)
        {
-               ERR("Fail to get [VCONFKEY_SYSMAN_BATTERY_CAPACITY:%d]", ret);
                return;
        }
 
        if (battery_capa < 0)
        {
-               INFO("Invalid Battery Capacity: %d", battery_capa);
+               ERR("Invalid Battery Capacity: %d", battery_capa);
                return;
        }
 
-       INFO("Battery Capacity: %d", battery_capa);
+       DBG("Battery Capacity: %d", battery_capa);
 
        if (battery_capa > 100)
                battery_capa = 100;
 
+       battery_percentage = battery_capa;
+
+       _resize_battery_digits_icons_box();
+
        _level.current_capa = battery_capa;
 
-       indicator_battery_check_percentage_option(data);
 
+       /* Check Battery Level */
        level = __battery_capa_to_level(battery_capa);
        if (level == _level.current_level)
-               DBG("battery level is not changed");
+       {
+       }
        else {
                _level.current_level = level;
        }
+
+       indicator_battery_resize_percengate(data);
        indicator_bttery_update_by_charging_state(data);
 
 }
@@ -498,14 +639,14 @@ static void indicator_battery_update_display(void *data)
 
 static void indicator_battery_check_charging(void *data)
 {
-       int ret = -1;
        int status = 0;
 
-       ret = vconf_get_int(VCONFKEY_SYSMAN_BATTERY_CHARGE_NOW, &status);
-       if (ret != OK)
-               ERR("Fail to get [VCONFKEY_SYSMAN_BATTERY_CHARGE_NOW:%d]", ret);
-
-       INFO("Battery charge Status: %d", status);
+       if (vconf_get_int(VCONFKEY_SYSMAN_BATTERY_CHARGE_NOW, &status) < 0)
+       {
+               ERR("Fail to get VCONFKEY_SYSMAN_BATTERY_CHARGE_NOW");
+       } else {
+               DBG("Battery charge Status: %d", status);
+       }
 
        battery_charging = status;
 
@@ -517,11 +658,6 @@ static void indicator_battery_charging_cb(keynode_t *node, void *data)
        indicator_battery_check_charging(data);
 }
 
-static void indicator_battery_percentage_option_cb(keynode_t *node, void *data)
-{
-
-}
-
 static void indicator_battery_change_cb(keynode_t *node, void *data)
 {
        indicator_battery_update_display(data);
@@ -531,8 +667,6 @@ static void indicator_battery_clock_format_changed_cb(keynode_t *node, void *dat
 {
        retif(data == NULL, , "Invalid parameter!");
 
-       INFO("[Enter] indicator_battery_clock_format_changed_cb");
-
        indicator_battery_get_time_format();
 
        indicator_battery_update_display(data);
@@ -551,9 +685,57 @@ static void indicator_battery_pm_state_change_cb(keynode_t *node, void *data)
        }
 }
 
+static void indicator_battery_batt_percentage_cb(keynode_t *node, void *data)
+{
+       struct appdata* ad = NULL;
+       int status = 0;
+
+       ret_if(!data);
+
+       ad = (struct appdata*)data;
+
+       vconf_get_bool(VCONFKEY_SETAPPL_BATTERY_PERCENTAGE_BOOL, &status);
+
+       if(status == 1)
+       {
+               is_battery_percentage_shown = EINA_TRUE;
+               _level.max_level = LEVEL_PERCENTAGE_MAX;
+               indicator_battery_update_display(data);
+               show_digits();
+               box_update_display(&(ad->win));
+       }
+       else
+       {
+               //remove battery percentage
+               is_battery_percentage_shown = EINA_FALSE;
+               _level.max_level = LEVEL_MAX;
+               indicator_battery_update_display(data);
+               hide_digits();
+               box_update_display(&(ad->win));
+       }
+}
+
+static void indicator_battery_batt_low_state_change_cb(keynode_t *node, void *data)
+{
+       int status = 0;
+       retif(data == NULL, , "Invalid parameter!");
+
+       vconf_get_int(VCONFKEY_SYSMAN_BATTERY_STATUS_LOW, &status);
+
+       if(status == VCONFKEY_SYSMAN_BAT_FULL)
+       {
+               DBG("batt full");
+               batt_full = 1;
+       }
+       else
+       {
+               batt_full = 0;
+       }
+       indicator_battery_update_display(data);
+}
+
 static int wake_up_cb(void *data)
 {
-       INFO("BATTERY wake_up_cb");
        indicator_battery_clock_format_changed_cb(NULL, data);
        return OK;
 }
@@ -564,51 +746,52 @@ static int register_battery_module(void *data)
 
        retif(data == NULL, FAIL, "Invalid parameter!");
 
+       /* DO NOT change order of below fuctions */
        set_app_state(data);
        indicator_battery_level_init();
 
        ret = vconf_notify_key_changed(VCONFKEY_SYSMAN_BATTERY_CAPACITY,
-                                      indicator_battery_change_cb, data);
+                                       indicator_battery_change_cb, data);
        if (ret != OK) {
-               ERR("Failed to register callback!");
                r = ret;
        }
 
        ret = vconf_notify_key_changed(VCONFKEY_SYSMAN_BATTERY_STATUS_LOW,
-                                      indicator_battery_change_cb, data);
+                                       indicator_battery_change_cb, data);
        if (ret != OK) {
-               ERR("Failed to register callback!");
                r = r | ret;
        }
 
        ret = vconf_notify_key_changed(VCONFKEY_SYSMAN_BATTERY_CHARGE_NOW,
-                                      indicator_battery_charging_cb, data);
+                                       indicator_battery_charging_cb, data);
        if (ret != OK) {
-               ERR("Failed to register callback!");
                r = r | ret;
        }
 
-       ret = vconf_notify_key_changed(VCONFKEY_SETAPPL_BATTERY_PERCENTAGE_BOOL,
-                              indicator_battery_percentage_option_cb, data);
+       ret = vconf_notify_key_changed(VCONFKEY_REGIONFORMAT_TIME1224,
+                                               indicator_battery_clock_format_changed_cb, data);
        if (ret != OK) {
-               ERR("Failed to register callback!");
                r = r | ret;
        }
-
-       ret = vconf_notify_key_changed(VCONFKEY_REGIONFORMAT_TIME1224,
-                                              indicator_battery_clock_format_changed_cb, data);
+       ret = vconf_notify_key_changed(VCONFKEY_PM_STATE,
+                                               indicator_battery_pm_state_change_cb, data);
        if (ret != OK) {
-               ERR("Fail: register VCONFKEY_REGIONFORMAT_TIME1224");
                r = r | ret;
        }
-       ret = vconf_notify_key_changed(VCONFKEY_PM_STATE,
-                                              indicator_battery_pm_state_change_cb, data);
+       ret = vconf_notify_key_changed(VCONFKEY_SETAPPL_BATTERY_PERCENTAGE_BOOL,
+                                               indicator_battery_batt_percentage_cb, data);
        if (ret != OK) {
-               ERR("Fail: register VCONFKEY_PM_STATE");
                r = r | ret;
        }
 
-       indicator_battery_update_display(data);
+       ret = vconf_notify_key_changed(VCONFKEY_SYSMAN_BATTERY_STATUS_LOW,
+                                               indicator_battery_batt_low_state_change_cb, data);
+       if (ret != OK) {
+               r = r | ret;
+       }
+
+       indicator_battery_batt_percentage_cb(NULL,data);
+       indicator_battery_check_charging(data);
 
        return r;
 }
@@ -616,40 +799,38 @@ static int register_battery_module(void *data)
 static int unregister_battery_module(void)
 {
        int ret;
-       int i = 0;
 
        ret = vconf_ignore_key_changed(VCONFKEY_SYSMAN_BATTERY_CAPACITY,
-                                      indicator_battery_change_cb);
-       if (ret != OK)
-               ERR("Failed to unregister callback!");
+                                       indicator_battery_change_cb);
 
-       ret = vconf_ignore_key_changed(VCONFKEY_SYSMAN_BATTERY_STATUS_LOW,
-                                      indicator_battery_change_cb);
-       if (ret != OK)
-               ERR("Failed to unregister callback!");
+       ret = ret | vconf_ignore_key_changed(VCONFKEY_SYSMAN_BATTERY_STATUS_LOW,
+                                       indicator_battery_change_cb);
 
-       ret = vconf_ignore_key_changed(VCONFKEY_SYSMAN_BATTERY_CHARGE_NOW,
-                                      indicator_battery_charging_cb);
-       if (ret != OK)
-               ERR("Failed to unregister callback!");
+       ret = ret | vconf_ignore_key_changed(VCONFKEY_SYSMAN_BATTERY_CHARGE_NOW,
+                                       indicator_battery_charging_cb);
+
+       ret = ret | vconf_ignore_key_changed(VCONFKEY_PM_STATE,
+                                       indicator_battery_pm_state_change_cb);
+
+       ret = ret | vconf_ignore_key_changed(VCONFKEY_SETAPPL_BATTERY_PERCENTAGE_BOOL,
+                                       indicator_battery_batt_percentage_cb);
+       ret = ret | vconf_ignore_key_changed(VCONFKEY_SYSMAN_BATTERY_STATUS_LOW,
+                                       indicator_battery_batt_low_state_change_cb);
 
-       ret = vconf_ignore_key_changed(VCONFKEY_SETAPPL_BATTERY_PERCENTAGE_BOOL,
-                                      indicator_battery_percentage_option_cb);
-       if (ret != OK)
-               ERR("Failed to unregister callback!");
 
-       ret = vconf_ignore_key_changed(VCONFKEY_PM_STATE,
-                                      indicator_battery_pm_state_change_cb);
-       if (ret != OK)
-               ERR("Failed to unregister callback!");
 
        delete_timer();
 
-       for(i=0 ; i<INDICATOR_WIN_MAX ; i++)
-       {
-               if (battery[i].txt_obj.data != NULL)
-                       free(battery[i].txt_obj.data);
-       }
+       return ret;
+}
 
-       return OK;
+static void _resize_battery_digits_icons_box()
+{
+       if (battery_percentage < 10) {
+               util_signal_emit(digit.ad, "indicator.battery.percentage.one.digit.show", "indicator.prog");
+       } else if(battery_percentage < 100) {
+               util_signal_emit(digit.ad, "indicator.battery.percentage.two.digits.show", "indicator.prog");
+       } else {
+               util_signal_emit(digit.ad, "indicator.battery.percentage.full.show", "indicator.prog");
+       }
 }
diff --git a/modules/processing/active_sync.c b/modules/processing/active_sync.c
deleted file mode 100755 (executable)
index 5d8cf7b..0000000
+++ /dev/null
@@ -1,199 +0,0 @@
-/*
- * Copyright 2012  Samsung Electronics Co., Ltd
- *
- * Licensed under the Flora License, Version 1.1 (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 <stdio.h>
-#include <stdlib.h>
-#include <vconf.h>
-#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            "active_sync"
-#define TIMER_INTERVAL 0.5
-#define SYNC_ICON_NUM 4
-
-static int register_active_sync_module(void *data);
-static int unregister_active_sync_module(void);
-static int wake_up_cb(void *data);
-
-Indicator_Icon_Object active_sync[INDICATOR_WIN_MAX] = {
-{
-       .type = INDICATOR_IMG_ICON,
-       .win_type = INDICATOR_WIN_PORT,
-       .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_active_sync_module,
-       .fini = unregister_active_sync_module,
-       .wake_up = wake_up_cb
-},
-{
-       .type = INDICATOR_IMG_ICON,
-       .win_type = INDICATOR_WIN_LAND,
-       .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_active_sync_module,
-       .fini = unregister_active_sync_module,
-       .wake_up = wake_up_cb
-}
-};
-
-static const char *icon_path[] = {
-       "Processing/B03_Processing_Syncing_01.png",
-       "Processing/B03_Processing_Syncing_02.png",
-       "Processing/B03_Processing_Syncing_03.png",
-       "Processing/B03_Processing_Syncing_04.png",
-       NULL
-};
-
-static Ecore_Timer *timer;
-static int icon_index = 0;
-static int updated_while_lcd_off = 0;
-
-static void set_app_state(void* data)
-{
-       int i = 0;
-
-       for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
-       {
-               active_sync[i].ad = data;
-       }
-
-}
-
-static void show_image_icon(void* data, int index)
-{
-       int i = 0;
-       for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
-       {
-               active_sync[i].img_obj.data = icon_path[index];
-               indicator_util_icon_show(&active_sync[i]);
-       }
-}
-
-static void hide_image_icon(void)
-{
-       int i = 0;
-       for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
-       {
-               indicator_util_icon_hide(&active_sync[i]);
-       }
-}
-
-static Eina_Bool show_sync_icon_cb(void* data)
-{
-       DBG("show_sync_icon_cb!, %d",icon_index);
-       show_image_icon(data,icon_index);
-       icon_index = (++icon_index % SYNC_ICON_NUM) ? icon_index : 0;
-
-       return ECORE_CALLBACK_RENEW;
-}
-
-static void show_sync_icon(void* data)
-{
-       if(timer==NULL)
-       {
-               timer = ecore_timer_add(TIMER_INTERVAL, show_sync_icon_cb, data);
-       }
-       else
-       {
-               ERR("show_sync_icon!, timer");
-       }
-}
-
-static void hide_sync_icon(void)
-{
-       DBG("hide_sync_icon!, %d",icon_index);
-       if (timer != NULL) {
-               ecore_timer_del(timer);
-               timer = NULL;
-               icon_index = 0;
-       }
-
-       hide_image_icon();
-}
-
-
-static void indicator_active_sync_change_cb(keynode_t *node, void *data)
-{
-       int status = 0;
-       int ret = 0;
-       int result = 0;
-
-       retif(data == NULL, , "Invalid parameter!");
-
-}
-
-static void indicator_active_sync_pm_state_change_cb(keynode_t *node, void *data)
-{
-       int status = 0;
-       retif(data == NULL, , "Invalid parameter!");
-
-       vconf_get_int(VCONFKEY_PM_STATE, &status);
-
-       if(status == VCONFKEY_PM_STATE_LCDOFF)
-       {
-               if (timer != NULL) {
-                       ecore_timer_del(timer);
-                       timer = NULL;
-               }
-       }
-}
-
-static int wake_up_cb(void *data)
-{
-       if(updated_while_lcd_off==0&&active_sync[0].obj_exist==EINA_FALSE)
-       {
-               DBG("ICON WAS NOT UPDATED");
-               return OK;
-       }
-
-       indicator_active_sync_change_cb(NULL, data);
-       return OK;
-}
-
-static int register_active_sync_module(void *data)
-{
-       int ret = 0;
-
-       retif(data == NULL, FAIL, "Invalid parameter!");
-
-       set_app_state(data);
-
-       return ret;
-}
-
-static int unregister_active_sync_module(void)
-{
-       int ret = 0;
-
-       return OK;
-}
old mode 100755 (executable)
new mode 100644 (file)
index ac782a4..b6aa592
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ *  Indicator
  *
- * Licensed under the Flora License, Version 1.1 (the "License");
+ * Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.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/
+ * http://www.apache.org/licenses/LICENSE-2.0
  *
  * 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 <stdio.h>
 #include <stdlib.h>
 #include <vconf.h>
-#include <Ecore_X.h>
+//#include <Ecore_X.h>
 #include <minicontrol-monitor.h>
+#include <bluetooth.h>
+//#include <bluetooth_extention.h>
+
 #include "common.h"
 #include "indicator.h"
-#include "indicator_ui.h"
+#include "main.h"
 #include "modules.h"
-#include "indicator_icon_util.h"
+#include "icon.h"
+#include "util.h"
+#include "log.h"
 
-#define ICON_PRIORITY  INDICATOR_PRIORITY_NOTI_1
+#define ICON_PRIORITY  INDICATOR_PRIORITY_MINICTRL3
 #define MODULE_NAME            "call"
 #define MINICONTROL_VOICE_NAME "[voicecall-quickpanel]"
 #define MINICONTROL_VIDEO_NAME "[videocall-quickpanel]"
 
 static int register_call_module(void *data);
 static int unregister_call_module(void);
-static int mctrl_monitor_cb(int action, const char *name, void *data);
+static void show_call_icon( void *data);
+
+enum {
+       CALL_UI_STATUS_NONE = 0,
+       CALL_UI_STATUS_INCOM,
+       CALL_UI_STATUS_OUTGOING,
+       CALL_UI_STATUS_ACTIVE,
+       CALL_UI_STATUS_HOLD,
+       CALL_UI_STATUS_END,
+};
 
-Indicator_Icon_Object call[INDICATOR_WIN_MAX] = {
-{
-       .win_type = INDICATOR_WIN_PORT,
+icon_s call = {
        .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,
+       .area = INDICATOR_ICON_AREA_MINICTRL,
        .init = register_call_module,
        .fini = unregister_call_module,
-       .minictrl_control = mctrl_monitor_cb
-},
-{
-       .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_call_module,
-       .fini = unregister_call_module,
-       .minictrl_control = mctrl_monitor_cb
-}
+       .minictrl_control = NULL //mctrl_monitor_cb
 };
 
+static int bt_state = 0;
+
 static const char *icon_path[] = {
        "Call/B03_Call_Duringcall.png",
+       "Call/B03_Call_bluetooth.png",
        NULL
 };
 
 static void set_app_state(void* data)
 {
-       int i = 0;
-
-       for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
-       {
-               call[i].ad = data;
-       }
+       call.ad = data;
 }
 
 static void show_image_icon(void *data)
 {
-       int i = 0;
-       for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
-       {
-               call[i].img_obj.data = icon_path[0];
-               indicator_util_icon_show(&call[i]);
+       if (bt_state == 1) {
+               call.img_obj.data = icon_path[1];
+       } else {
+               call.img_obj.data = icon_path[0];
        }
+       icon_show(&call);
 }
 
 static void hide_image_icon(void)
 {
-       int i = 0;
-       for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
-       {
-               indicator_util_icon_hide(&call[i]);
-       }
+       icon_hide(&call);
 }
 
 static void icon_animation_set(enum indicator_icon_ani type)
 {
-       int i = 0;
-       for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
-       {
-               indicator_util_icon_animation_set(&call[i], type);
-       }
+       icon_ani_set(&call, type);
+}
+
+static void __bt_ag_sco_state_changed_cb(int result, bool opened, void *user_data)
+{
+       int status = 0;
+
+       if (opened) bt_state=1;
+       else bt_state=0;
+
+       vconf_get_int(VCONFKEY_CALL_STATE, &status);
+
+       if (status != VCONFKEY_CALL_OFF) show_call_icon(user_data);
+}
+
+static void register_bt_state( void *data)
+{
+       int error = -1;
+
+       error = bt_initialize();
+       if (error != BT_ERROR_NONE) _E("bt_initialize return [%d]", error);
+
+       error = bt_audio_initialize();
+       if (error != BT_ERROR_NONE) _E("bt_audio_initialize return [%d]", error);
+
+       error = bt_ag_set_sco_state_changed_cb(__bt_ag_sco_state_changed_cb, data);   // callback µî·Ï
+       if (error != BT_ERROR_NONE) _E("bt_ag_set_sco_state_changed_cb return [%d]", error);
+
+}
+
+static void unregister_bt_state( void )
+{
+       int error = -1;
+
+       error = bt_ag_unset_sco_state_changed_cb();
+       if (error != BT_ERROR_NONE) _E("bt_ag_unset_sco_state_changed_cb return [%d]", error);
+
+       error = bt_audio_deinitialize();
+       if (error != BT_ERROR_NONE) _E("bt_audio_deinitialize return [%d]", error);
+
+       error = bt_deinitialize();
+       if (error != BT_ERROR_NONE) _E("bt_audio_deinitialize return [%d]", error);
 }
 
 static void show_call_icon( void *data)
@@ -116,15 +145,14 @@ static void show_call_icon( void *data)
        int status = 0;
        int ret = 0;
 
-       retif(data == NULL, , "Invalid parameter!");
+       ret_if(!data);
 
        ret = vconf_get_int(VCONFKEY_CALL_STATE, &status);
-       if (ret == FAIL) {
-               ERR("Failed to get VCONFKEY_CALL_STATE!");
+       if (ret != OK) {
+               _E("Failed to get VCONFKEY_CALL_STATE!");
                return;
        }
 
-       INFO("Call state = %d", status);
        switch (status) {
        case VCONFKEY_CALL_VOICE_CONNECTING:
        case VCONFKEY_CALL_VIDEO_CONNECTING:
@@ -137,11 +165,10 @@ static void show_call_icon( void *data)
                icon_animation_set(ICON_ANI_NONE);
                break;
        case VCONFKEY_CALL_OFF:
-               INFO("Call off");
                hide_image_icon();
                break;
        default:
-               ERR("Invalid value %d", status);
+               _E("Invalid value %d", status);
                break;
        }
 }
@@ -150,14 +177,23 @@ static void indicator_call_change_cb(keynode_t *node, void *data)
 {
        int status = 0;
        int ret = 0;
+       int error = 0;
+       bool bt_opened = 0;
 
-       retif(data == NULL, , "Invalid parameter!");
+       ret_if(!data);
 
        ret = vconf_get_int(VCONFKEY_CALL_STATE, &status);
-       if (ret == FAIL) {
-               ERR("Failed to get VCONFKEY_CALL_STATE!");
+       if (ret != OK) {
+               _E("Failed to get VCONFKEY_CALL_STATE!");
                return;
        }
+
+       error = bt_ag_is_sco_opened(&bt_opened);         // ÇöÀç SCO status checkÇÔ¼ö.
+       if (error != BT_ERROR_NONE) _E("bt_ag_is_sco_opened return [%d]", error);
+
+       if (bt_opened == 1) bt_state=1;
+       else bt_state=0;
+
        switch (status) {
        case VCONFKEY_CALL_VOICE_CONNECTING:
        case VCONFKEY_CALL_VIDEO_CONNECTING:
@@ -166,83 +202,31 @@ static void indicator_call_change_cb(keynode_t *node, void *data)
                break;
        case VCONFKEY_CALL_VOICE_ACTIVE:
        case VCONFKEY_CALL_VIDEO_ACTIVE:
-               hide_image_icon();
+               show_image_icon(data);
+               icon_animation_set(ICON_ANI_NONE);
                break;
        case VCONFKEY_CALL_OFF:
-               INFO("Call off");
                hide_image_icon();
                break;
        default:
-               ERR("Invalid value %d", status);
-               break;
-       }
-
-}
-
-static int mctrl_monitor_cb(int action, const char *name, void *data)
-{
-       int ret = 0;
-       int status = 0;
-
-       retif(!data, FAIL, "data is NULL");
-       retif(!name, FAIL, "name is NULL");
-
-       if(strncmp(name,MINICONTROL_VOICE_NAME,strlen(MINICONTROL_VOICE_NAME))!=0
-               &&strncmp(name,MINICONTROL_VIDEO_NAME,strlen(MINICONTROL_VIDEO_NAME))!=0)
-       {
-               ERR("_mctrl_monitor_cb: no call%s",name);
-               return FAIL;
-       }
-
-       DBG("_mctrl_monitor_cb:%s %d",name,action);
-
-       switch (action) {
-       case MINICONTROL_ACTION_START:
-               show_call_icon(data);
-               break;
-       case MINICONTROL_ACTION_STOP:
-               ret = vconf_get_int(VCONFKEY_CALL_STATE, &status);
-               if (ret == FAIL) {
-                       ERR("Failed to get VCONFKEY_CALL_STATE!");
-                       return FAIL;
-               }
-               INFO("Call state = %d", status);
-               switch (status) {
-               case VCONFKEY_CALL_VOICE_CONNECTING:
-               case VCONFKEY_CALL_VIDEO_CONNECTING:
-                       break;
-               case VCONFKEY_CALL_VOICE_ACTIVE:
-               case VCONFKEY_CALL_VIDEO_ACTIVE:
-               case VCONFKEY_CALL_OFF:
-                       INFO("Call off");
-                       icon_animation_set(ICON_ANI_NONE);
-                       hide_image_icon();
-                       break;
-               default:
-                       ERR("Invalid value %d", status);
-                       break;
-               }
-               break;
-       default:
+               _E("Invalid value %d", status);
                break;
        }
-       return OK;
 }
 
 static int register_call_module(void *data)
 {
        int ret = 0;
 
-       retif(data == NULL, FAIL, "Invalid parameter!");
+       retv_if(!data, 0);
 
        set_app_state(data);
 
        ret = vconf_notify_key_changed(VCONFKEY_CALL_STATE, indicator_call_change_cb, data);
+       register_bt_state(data);
+       if (ret != OK) _E("Failed to register VCONFKEY_CALL_STATE callback!");
 
-       if (ret != OK)
-               ERR("Failed to register callback!");
-
-       return OK;
+       return ret;
 }
 
 static int unregister_call_module(void)
@@ -250,9 +234,9 @@ static int unregister_call_module(void)
        int ret = 0;
 
        ret = vconf_ignore_key_changed(VCONFKEY_CALL_STATE, indicator_call_change_cb);
+       unregister_bt_state();
+       if (ret != OK) _E("Failed to register VCONFKEY_CALL_STATE callback!");
 
-       if (ret != OK)
-               ERR("Failed to register callback!");
-
-       return OK;
+       return ret;
 }
+/* End of file */
old mode 100755 (executable)
new mode 100644 (file)
index 45fa8a1..0973d03
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ *  Indicator
  *
- * Licensed under the Flora License, Version 1.1 (the "License");
+ * Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.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/
+ * http://www.apache.org/licenses/LICENSE-2.0
  *
  * 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 <tapi_common.h>
+#include <TelNetwork.h>
+#include <TelSim.h>
+#include <ITapiSim.h>
+#include <TelCall.h>
+#include <ITapiCall.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <vconf.h>
 #include "common.h"
 #include "indicator.h"
-#include "indicator_ui.h"
+#include "main.h"
 #include "modules.h"
-#include "indicator_icon_util.h"
+#include "icon.h"
 
-#define ICON_PRIORITY  INDICATOR_PRIORITY_SYSTEM_5
+#define ICON_PRIORITY  INDICATOR_PRIORITY_SYSTEM_2
 #define MODULE_NAME            "call_divert"
+#define MODULE_NAME_SIM2               "call_divert2"
+
+#define TAPI_HANDLE_MAX  2
 
 static int register_call_divert_module(void *data);
 static int unregister_call_divert_module(void);
+#ifdef _SUPPORT_SCREEN_READER
+static char *access_info_cb(void *data, Evas_Object *obj);
+#endif
 
-Indicator_Icon_Object call_divert[INDICATOR_WIN_MAX] = {
-{
-       .win_type = INDICATOR_WIN_PORT,
+static void on_noti(TapiHandle *handle_obj, const char *noti_id, void *data, void *user_data);
+
+icon_s call_divert = {
        .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,
        .init = register_call_divert_module,
        .fini = unregister_call_divert_module,
        .area = INDICATOR_ICON_AREA_SYSTEM,
-},
-{
-       .win_type = INDICATOR_WIN_LAND,
+#ifdef _SUPPORT_SCREEN_READER
+       .tts_enable = EINA_TRUE,
+       .access_cb = access_info_cb
+#endif
+};
+
+icon_s call_divert2 = {
        .type = INDICATOR_IMG_ICON,
-       .name = MODULE_NAME,
+       .name = MODULE_NAME_SIM2,
        .priority = ICON_PRIORITY,
        .always_top = EINA_FALSE,
        .exist_in_view = EINA_FALSE,
-       .txt_obj = {0,},
        .img_obj = {0,},
        .obj_exist = EINA_FALSE,
-       .init = register_call_divert_module,
-       .fini = unregister_call_divert_module,
        .area = INDICATOR_ICON_AREA_SYSTEM,
-}
+#ifdef _SUPPORT_SCREEN_READER
+       .tts_enable = EINA_TRUE,
+       .access_cb = access_info_cb
+#endif
+};
+
+/*FIXME*/
+enum {
+       SIM_ICON_SIM1 = 0,
+       SIM_ICON_SIM2,
+       SIM_ICON_CALL,
+       SIM_ICON_SMS,
+       SIM_ICON_MMS,
+       SIM_ICON_INTERNET,
+       SIM_ICON_HOME,
+       SIM_ICON_OFFICE,
+       SIM_ICON_HEART,
+       SIM_ICON_MAX
+};
 
+static const char *icon_path[SIM_ICON_MAX] = {
+       [SIM_ICON_SIM1] = "Processing/B03_Call_divert_Sim_1.png",
+       [SIM_ICON_SIM2] = "Processing/B03_Call_divert_Sim_2.png",
+       [SIM_ICON_CALL] = "Processing/B03_Call_divert_Sim_phone.png",
+       [SIM_ICON_SMS] = "Processing/B03_Call_divert_Sim_SMS.png",
+       [SIM_ICON_MMS] = "Processing/B03_Call_divert_Sim_MMS.png",
+       [SIM_ICON_INTERNET] = "Processing/B03_Call_divert_Sim_global.png",
+       [SIM_ICON_HOME] = "Processing/B03_Call_divert_Sim_home.png",
+       [SIM_ICON_OFFICE] = "Processing/B03_Call_divert_Sim_office.png",
+       [SIM_ICON_HEART] = "Processing/B03_Call_divert_Sim_heart.png",
 };
 
-static const char *icon_path[] = {
-       "Processing/B03_Processing_calldivert.png",
-       NULL
+enum {
+       SIM_1 = 1,
+       SIM_2
 };
 
+
+
 static void set_app_state(void* data)
 {
-       int i = 0;
+       call_divert.ad = data;
+       call_divert2.ad = data;
+}
 
-       for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
-       {
-               call_divert[i].ad = data;
-       }
+
+
+static void show_image_icon(void *data, int icon)
+{
+       call_divert.img_obj.data = icon_path[icon];
+       icon_show(&call_divert);
+}
+
+
+
+static void hide_image_icon(void)
+{
+       icon_hide(&call_divert);
+}
+
+
+
+static void show_sim2_image_icon(void *data, int icon)
+{
+       call_divert2.img_obj.data = icon_path[icon];
+       icon_show(&call_divert2);
 }
 
-static void show_image_icon(void *data)
+
+
+static void hide_sim2_image_icon(void)
 {
-       int i = 0;
-       for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
+       icon_hide(&call_divert2);
+}
+
+
+
+#ifdef _SUPPORT_SCREEN_READER
+static char *access_info_cb(void *data, Evas_Object *obj)
+{
+       char *tmp = NULL;
+       char buf[256] = {0,};
+       int status = 0;
+
+       switch (status)
        {
-               call_divert[i].img_obj.data = icon_path[0];
-               indicator_util_icon_show(&call_divert[i]);
+       case VCONFKEY_TELEPHONY_CALL_FORWARD_ON:
+               snprintf(buf, sizeof(buf), "%s, %s, %s",_("IDS_CST_BODY_CALL_FORWARDING"),_("IDS_IDLE_BODY_ICON"),_("IDS_IDLE_BODY_STATUS_BAR_ITEM"));
+               break;
+       default:
+               break;
        }
+
+       tmp = strdup(buf);
+       if (!tmp) return NULL;
+       return tmp;
 }
+#endif
 
-static void hide_image_icon(void)
+static int _get_sim_icon(int sim_number)
 {
-       int i = 0;
-       for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
+       int status = 0;
+//     int ret = 0;
+
+       if(sim_number == SIM_1)
        {
-               indicator_util_icon_hide(&call_divert[i]);
+       /*      ret = vconf_get_int(VCONFKEY_SETAPPL_SIM1_ICON, &status);
+               if (ret == OK)
+               {
+                       LOGD("Sim 1 icon: %d", status);
+               }*/
        }
+       else
+       {
+       /*      ret = vconf_get_int(VCONFKEY_SETAPPL_SIM2_ICON, &status);
+               if (ret == OK)
+               {
+                       LOGD("Sim 2 icon: %d", status);
+               }*/
+       }
+
+       return status;
 }
 
-static void indicator_call_divert_change_cb(keynode_t *node, void *data)
+static void on_noti(TapiHandle *handle_obj, const char *noti_id, void *data, void *user_data)
 {
+       DBG("on_noti");
        int status = 0;
-       int ret;
+       int ret = 0;
+       int ret_for_sim1 = 0;
+       int ret_for_sim2 = 0;
+       int icon = 0;
+       retif(user_data == NULL, , "invalid parameter!!");
 
-       retif(data == NULL, , "Invalid parameter!");
-
-       ret = vconf_get_int(VCONFKEY_TELEPHONY_CALL_FORWARD_STATE, &status);
-       if (ret == FAIL) {
-               ERR("Failed to get VCONFKEY_TELEPHONY_CALL_FORWARD_STATE!");
+       ret = vconf_get_bool(VCONFKEY_TELEPHONY_FLIGHT_MODE, &status);
+       if (ret == OK && status == TRUE) {
+               DBG("Flight Mode");
+               hide_sim2_image_icon();
+               hide_image_icon();
                return;
        }
 
-       if (status == VCONFKEY_TELEPHONY_CALL_FORWARD_ON) {
-               INFO("Call diverting is set!");
-               show_image_icon(data);
-       } else {
-               INFO("Call diverting is unset!");
+       if(ret_for_sim1 == VCONFKEY_TELEPHONY_CALL_FORWARD_ON)
+       {
+               DBG("Show call_farward 1 icon.");
+               icon = _get_sim_icon(SIM_1);
+               show_image_icon(data, icon);
+       }
+       else    // VCONFKEY_TELEPHONY_CALL_FORWARD_OFF
+       {
+               DBG("Hide call_farward 1 icon.");
                hide_image_icon();
        }
+
+       if(ret_for_sim2 == VCONFKEY_TELEPHONY_CALL_FORWARD_ON)
+       {
+               DBG("Show call_farward 2 icon.");
+               icon = _get_sim_icon(SIM_2);
+               show_sim2_image_icon(data, icon);
+       }
+       else    // VCONFKEY_TELEPHONY_CALL_FORWARD_OFF
+       {
+               DBG("Hide call_farward 2 icon.");
+               hide_sim2_image_icon();
+       }
 }
 
+void call_forward_on_noti(TapiHandle *handle_obj, const char *noti_id, void *data, void *user_data)
+{
+       DBG("");
+       on_noti(NULL, NULL, NULL, user_data);
+
+}
+
+/* Initialize TAPI */
+static void __init_tel(void *data)
+{
+       on_noti(NULL, NULL, NULL, data);
+}
+
+/* De-initialize TAPI */
+static void __deinit_tel()
+{
+       DBG("__deinit_tel");
+}
+
+static void tel_ready_cb(keynode_t *key, void *data)
+{
+       gboolean status = FALSE;
+
+       status = vconf_keynode_get_bool(key);
+       if (status == TRUE) {    /* Telephony State - READY */
+               __init_tel(data);
+       }
+       else {                   /* Telephony State – NOT READY */
+               /* De-initialization is optional here (ONLY if required) */
+               __deinit_tel();
+       }
+}
+
+static void _flight_mode(keynode_t *key, void *data)
+{
+       on_noti(NULL, NULL, NULL, data);
+}
+#if 0
+static void _sim_icon_update(keynode_t *key, void *data)
+{
+       on_noti(NULL, NULL, NULL, data);
+}
+#endif
 static int register_call_divert_module(void *data)
 {
-       int ret;
+       int ret = 0;
 
        retif(data == NULL, FAIL, "Invalid parameter!");
 
+       gboolean state = FALSE;
+
        set_app_state(data);
+       vconf_notify_key_changed(VCONFKEY_TELEPHONY_FLIGHT_MODE, _flight_mode, data);
 
-       ret = vconf_notify_key_changed(VCONFKEY_TELEPHONY_CALL_FORWARD_STATE,
-                                      indicator_call_divert_change_cb, data);
-       if (ret != OK)
-               ERR("Failed to register callback!");
+       vconf_get_bool(VCONFKEY_TELEPHONY_READY, &state);
 
-       indicator_call_divert_change_cb(NULL, data);
+       if(state)
+       {
+               DBG("Telephony ready");
+               __init_tel(data);
+       }
+       else
+       {
+               DBG("Telephony not ready");
+               vconf_notify_key_changed(VCONFKEY_TELEPHONY_READY, tel_ready_cb, data);
+       }
 
        return ret;
 }
 
 static int unregister_call_divert_module(void)
 {
-       int ret;
+       int ret = 0;
 
-       ret = vconf_ignore_key_changed(VCONFKEY_TELEPHONY_CALL_FORWARD_STATE,
-                                      indicator_call_divert_change_cb);
-       if (ret != OK)
-               ERR("Failed to unregister callback!");
+       __deinit_tel();
 
-       return OK;
+       vconf_ignore_key_changed(VCONFKEY_TELEPHONY_FLIGHT_MODE, _flight_mode);
+       //vconf_ignore_key_changed(VCONFKEY_SETAPPL_SIM1_ICON, _sim_icon_update);
+       //vconf_ignore_key_changed(VCONFKEY_SETAPPL_SIM2_ICON, _sim_icon_update);
+
+       return ret;
 }
diff --git a/modules/processing/call_divert.h b/modules/processing/call_divert.h
new file mode 100644 (file)
index 0000000..9d70f17
--- /dev/null
@@ -0,0 +1,26 @@
+/*
+ *  Indicator
+ *
+ * Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+
+#ifndef __INDICATOR_CALL_DIVERT_H__
+#define __INDICATOR_CALL_DIVERT_H__
+
+extern void call_forward_on_noti(TapiHandle *handle_obj, const char *noti_id, void *data, void *user_data);
+
+#endif
diff --git a/modules/processing/downloading.c b/modules/processing/downloading.c
new file mode 100644 (file)
index 0000000..e7bb37a
--- /dev/null
@@ -0,0 +1,213 @@
+/*
+ *  Indicator
+ *
+ * Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * 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 <stdio.h>
+#include <stdlib.h>
+#include <vconf.h>
+#include "common.h"
+#include "indicator.h"
+#include "main.h"
+#include "modules.h"
+#include "icon.h"
+
+#define ICON_PRIORITY  INDICATOR_PRIORITY_NOTI_1
+#define MODULE_NAME            "downloading"
+#define TIMER_INTERVAL 0.3
+#define ICON_NUM 7
+
+static int register_downloading_module(void *data);
+static int unregister_downloading_module(void);
+static int wake_up_cb(void *data);
+
+icon_s downloading = {
+       .type = INDICATOR_IMG_ICON,
+       .name = MODULE_NAME,
+       .priority = ICON_PRIORITY,
+       .always_top = EINA_FALSE,
+       .exist_in_view = EINA_FALSE,
+       .img_obj = {0,},
+       .obj_exist = EINA_FALSE,
+       .area = INDICATOR_ICON_AREA_NOTI,
+       .init = register_downloading_module,
+       .fini = unregister_downloading_module,
+       .wake_up = wake_up_cb
+};
+
+static const char *icon_path[] = {
+       "Processing/B03_Processing_download_ani_00.png",
+       "Processing/B03_Processing_download_ani_01.png",
+       "Processing/B03_Processing_download_ani_02.png",
+       "Processing/B03_Processing_download_ani_03.png",
+       "Processing/B03_Processing_download_ani_04.png",
+       "Processing/B03_Processing_download_ani_05.png",
+       "Processing/B03_Processing_download_ani_06.png",
+       NULL
+};
+
+static Ecore_Timer *timer;
+static int icon_index = 0;
+static int updated_while_lcd_off = 0;
+
+static void set_app_state(void* data)
+{
+       downloading.ad = data;
+}
+
+static void show_image_icon(void* data, int index)
+{
+       downloading.img_obj.data = icon_path[index];
+       icon_show(&downloading);
+}
+
+static void hide_image_icon(void)
+{
+       icon_hide(&downloading);
+}
+
+static Eina_Bool show_downloading_icon_cb(void* data)
+{
+
+       show_image_icon(data,icon_index);
+       icon_index = (++icon_index % ICON_NUM) ? icon_index : 0;
+
+       return ECORE_CALLBACK_RENEW;
+}
+
+static void show_downloading_icon(void* data)
+{
+       if(timer==NULL)
+       {
+               timer = ecore_timer_add(TIMER_INTERVAL, show_downloading_icon_cb, data);
+       }
+       else
+       {
+               ERR("show_downloading_icon!, timer");
+       }
+}
+
+static void hide_downloading_icon(void)
+{
+       if (timer != NULL) {
+               ecore_timer_del(timer);
+               timer = NULL;
+               icon_index = 0;
+       }
+
+       hide_image_icon();
+}
+
+
+static void indicator_downloading_change_cb(keynode_t *node, void *data)
+{
+       int status = 0;
+       int result = 0;
+
+       retif(data == NULL, , "Invalid parameter!");
+
+       if(icon_get_update_flag()==0)
+       {
+               updated_while_lcd_off = 1;
+               return;
+       }
+       updated_while_lcd_off = 0;
+
+/*     if (vconf_get_int(VCONFKEY_WIFI_DIRECT_RECEIVING_STATE, &status) == 0)
+       {
+               result = result | status;
+       } else {
+               ERR("Error getting VCONFKEY_WIFI_DIRECT_RECEIVING_STATE value");
+       }*/
+
+       if (result == 1) {
+               show_downloading_icon(data);
+
+       } else {
+               hide_downloading_icon();
+       }
+}
+
+static void indicator_downloading_pm_state_change_cb(keynode_t *node, void *data)
+{
+       int status = 0;
+
+       retif(data == NULL, , "Invalid parameter!");
+
+       if (vconf_get_int(VCONFKEY_PM_STATE, &status) < 0)
+       {
+               ERR("Error getting VCONFKEY_PM_STATE value");
+
+               if (timer != NULL)
+               {
+                       ecore_timer_del(timer);
+                       timer = NULL;
+               }
+
+               return;
+       }
+
+       if(status == VCONFKEY_PM_STATE_LCDOFF)
+       {
+               if (timer != NULL) {
+                       ecore_timer_del(timer);
+                       timer = NULL;
+               }
+       }
+}
+
+static int wake_up_cb(void *data)
+{
+       if(updated_while_lcd_off == 0 && downloading.obj_exist == EINA_FALSE)
+       {
+               return OK;
+       }
+
+       indicator_downloading_change_cb(NULL, data);
+       return OK;
+}
+
+static int register_downloading_module(void *data)
+{
+       int ret = 0;
+
+       retif(data == NULL, FAIL, "Invalid parameter!");
+
+       set_app_state(data);
+
+//     ret = ret | vconf_notify_key_changed(VCONFKEY_WIFI_DIRECT_RECEIVING_STATE, indicator_downloading_change_cb, data);
+
+       ret = ret | vconf_notify_key_changed(VCONFKEY_PM_STATE,
+                                       indicator_downloading_pm_state_change_cb, data);
+
+       indicator_downloading_change_cb(NULL, data);
+
+       return ret;
+}
+
+static int unregister_downloading_module(void)
+{
+       int ret = 0;
+
+//     ret = ret | vconf_ignore_key_changed(VCONFKEY_WIFI_DIRECT_RECEIVING_STATE, indicator_downloading_change_cb);
+
+       ret = ret | vconf_ignore_key_changed(VCONFKEY_PM_STATE,
+                                               indicator_downloading_pm_state_change_cb);
+
+       return ret;
+}
diff --git a/modules/processing/sos.c b/modules/processing/sos.c
deleted file mode 100755 (executable)
index 7764f36..0000000
+++ /dev/null
@@ -1,245 +0,0 @@
-/*
- * Copyright 2012  Samsung Electronics Co., Ltd
- *
- * Licensed under the Flora License, Version 1.1 (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 <stdio.h>
-#include <stdlib.h>
-#include <vconf.h>
-#include <Ecore_X.h>
-#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            "sos"
-
-static int register_sos_module(void *data);
-static int unregister_sos_module(void);
-static int wake_up_cb(void *data);
-
-
-Indicator_Icon_Object sos[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_sos_module,
-       .fini = unregister_sos_module,
-       .wake_up = wake_up_cb
-},
-{
-       .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_sos_module,
-       .fini = unregister_sos_module,
-       .wake_up = wake_up_cb
-}
-};
-
-static const char *icon_path[] = {
-       "Call/B03_Call_SOSmessge_active.png",
-       NULL
-};
-static int updated_while_lcd_off = 0;
-
-static void set_app_state(void* data)
-{
-       int i = 0;
-
-       for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
-       {
-               sos[i].ad = data;
-       }
-}
-
-static void show_image_icon(void *data)
-{
-       int i = 0;
-
-       for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
-       {
-               sos[i].img_obj.data = icon_path[0];
-               indicator_util_icon_show(&sos[i]);
-       }
-}
-
-static void hide_image_icon(void)
-{
-       int i = 0;
-
-       for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
-       {
-               indicator_util_icon_hide(&sos[i]);
-       }
-}
-
-static void icon_animation_set(enum indicator_icon_ani type)
-{
-       int i = 0;
-
-       for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
-       {
-               indicator_util_icon_animation_set(&sos[i],type);
-       }
-}
-
-static void indicator_sos_pm_state_change_cb(keynode_t *node, void *data)
-{
-       int status = 0;
-       int ret = 0;
-       retif(data == NULL, , "Invalid parameter!");
-
-       vconf_get_int(VCONFKEY_PM_STATE, &status);
-
-       if(status == VCONFKEY_PM_STATE_LCDOFF)
-       {
-               int sos_status = 0;
-               ret = vconf_get_int(VCONFKEY_MESSAGE_SOS_STATE, &sos_status);
-               if (ret < 0)
-                       ERR("fail to get [%s]", VCONFKEY_MESSAGE_SOS_STATE);
-
-               INFO("SOS STATUS: %d", sos_status);
-               switch (sos_status) {
-               case VCONFKEY_MESSAGE_SOS_STANDBY:
-                       icon_animation_set(ICON_ANI_NONE);
-                       break;
-               default:
-                       break;
-               }
-       }
-}
-
-static void indicator_sos_change_cb(keynode_t *node, void *data)
-{
-       int send_option = 0;
-       int sos_state = VCONFKEY_MESSAGE_SOS_IDLE;
-       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_bool(VCONFKEY_MESSAGE_SOS_SEND_OPTION, &send_option);
-       if (ret == FAIL)
-               ERR("Failed to get VCONFKEY_MESSAGE_SOS_SEND_OPTION!");
-
-       INFO("sos send option = %d", send_option);
-
-       if (!send_option) {
-               hide_image_icon();
-               return;
-       }
-
-       show_image_icon(data);
-
-       ret = vconf_get_int(VCONFKEY_MESSAGE_SOS_STATE, &sos_state);
-       if (ret == FAIL)
-               ERR("Failed to get VCONFKEY_MESSAGE_SOS_SEND_OPTION!");
-
-       if (sos_state == VCONFKEY_MESSAGE_SOS_STANDBY)
-               icon_animation_set(ICON_ANI_BLINK);
-       else
-               icon_animation_set(ICON_ANI_NONE);
-}
-static int wake_up_cb(void *data)
-{
-       if(updated_while_lcd_off==0&&sos[0].obj_exist==EINA_FALSE)
-       {
-               DBG("ICON WAS NOT UPDATED");
-               return OK;
-       }
-
-       indicator_sos_change_cb(NULL, data);
-       return OK;
-}
-
-static int register_sos_module(void *data)
-{
-       int ret;
-
-       retif(data == NULL, FAIL, "Invalid parameter!");
-
-       set_app_state(data);
-
-       ret = vconf_notify_key_changed(VCONFKEY_MESSAGE_SOS_SEND_OPTION,
-                                      indicator_sos_change_cb, data);
-       if (ret != OK)
-               ERR("Failed to register callback! [%s]",
-                               VCONFKEY_MESSAGE_SOS_SEND_OPTION);
-
-       ret = vconf_notify_key_changed(VCONFKEY_MESSAGE_SOS_STATE,
-                                      indicator_sos_change_cb, data);
-       if (ret != OK)
-               ERR("Failed to register callback! [%s]",
-                               VCONFKEY_MESSAGE_SOS_STATE);
-
-       ret = vconf_notify_key_changed(VCONFKEY_PM_STATE,
-                                              indicator_sos_pm_state_change_cb, data);
-       if (ret != OK)
-               ERR("Failed to register callback! : VCONFKEY_PM_STATE");
-
-       indicator_sos_change_cb(NULL, data);
-
-       return ret;
-}
-
-static int unregister_sos_module(void)
-{
-       int ret;
-
-       ret = vconf_ignore_key_changed(VCONFKEY_MESSAGE_SOS_SEND_OPTION,
-                                      indicator_sos_change_cb);
-       if (ret != OK)
-               ERR("Failed to unregister callback!  [%s]",
-                               VCONFKEY_MESSAGE_SOS_SEND_OPTION);
-
-       ret = vconf_ignore_key_changed(VCONFKEY_MESSAGE_SOS_STATE,
-                                      indicator_sos_change_cb);
-       if (ret != OK)
-               ERR("Failed to unregister callback!  [%s]",
-                               VCONFKEY_MESSAGE_SOS_STATE);
-
-       ret = vconf_ignore_key_changed(VCONFKEY_PM_STATE,
-                                              indicator_sos_pm_state_change_cb);
-       if (ret != OK)
-               ERR("Failed to unregister callback!");
-
-       return OK;
-}
-
diff --git a/modules/processing/transfer.c b/modules/processing/transfer.c
new file mode 100644 (file)
index 0000000..36e0e19
--- /dev/null
@@ -0,0 +1,164 @@
+/*
+ *  Indicator
+ *
+ * Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * 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 <stdio.h>
+#include <stdlib.h>
+#include <vconf.h>
+//#include <Ecore_X.h>
+#include <wifi.h>
+
+#include "common.h"
+#include "main.h"
+#include "modules.h"
+#include "icon.h"
+#include "util.h"
+
+#define ICON_PRIORITY  INDICATOR_PRIORITY_FIXED8
+#define MODULE_NAME    "transfer"
+#define TIMER_INTERVAL 0.03
+
+static int register_transfer_module(void *data);
+static int unregister_transfer_module(void);
+#ifdef _SUPPORT_SCREEN_READER
+static char *access_info_cb(void *data, Evas_Object *obj);
+#endif
+
+static int transfer_type = -1;
+
+static const char *icon_path[TRANSFER_MAX] = {
+       [TRANSFER_NONE] = "Connection/B03_conection_not_UPdownload.png",
+       [TRANSFER_UP] = "Connection/B03_connection_UPload.png",
+       [TRANSFER_DOWN] = "Connection/B03_connection_download.png",
+       [TRANSFER_UPDOWN] = "Connection/B03_conection_UPdownload.png"
+};
+
+icon_s transfer = {
+       .type = INDICATOR_IMG_ICON,
+       .name = MODULE_NAME,
+       .priority = ICON_PRIORITY,
+       .always_top = EINA_FALSE,
+       .exist_in_view = EINA_FALSE,
+       .area = INDICATOR_ICON_AREA_FIXED,
+       .img_obj = {0,},
+       .obj_exist = EINA_FALSE,
+       .init = register_transfer_module,
+       .fini = unregister_transfer_module,
+#ifdef _SUPPORT_SCREEN_READER
+       .tts_enable = EINA_TRUE,
+       .access_cb = access_info_cb,
+#endif
+};
+
+static int prevIndex = -1;
+
+static void set_app_state(void* data)
+{
+       transfer.ad = data;
+}
+
+static void hide_image_icon(void)
+{
+       icon_hide(&transfer);
+
+       prevIndex = -1;
+       transfer_type = -1;
+}
+
+static void show_image_icon(void *data, int index)
+{
+       if(prevIndex == index)
+       {
+               return;
+       }
+
+       if(index == -1) {
+               hide_image_icon();
+       } else {
+               transfer.img_obj.data = icon_path[index];
+               icon_show(&transfer);
+
+               util_signal_emit(transfer.ad,"indicator.connection.show","indicator.prog");
+       }
+
+       prevIndex = index;
+
+}
+
+void show_transfer_icon(void *data,int index,int type)
+{
+       transfer_type = type;
+       show_image_icon(data,index);
+
+}
+
+void hide_transfer_icon(int type)
+{
+       if(transfer_type!=-1 && transfer_type!=type)
+       {
+               return;
+       }
+
+       hide_image_icon();
+       util_signal_emit(transfer.ad,"indicator.connection.hide","indicator.prog");
+       transfer_type = -1;
+}
+
+#ifdef _SUPPORT_SCREEN_READER
+static char *access_info_cb(void *data, Evas_Object *obj)
+{
+       char *tmp = NULL;
+       char buf[256] = {0,};
+       int svc_type = 0;
+       int status = 0;
+
+       wifi_get_connection_state(&status);
+
+       if (status == WIFI_CONNECTION_STATE_CONNECTED) {
+               snprintf(buf, sizeof(buf), "%s, %s, %s", _("IDS_IDLE_BODY_WI_FI"),_("Data network"),_("IDS_IDLE_BODY_STATUS_BAR_ITEM"));
+       } else {
+               vconf_get_int(VCONFKEY_TELEPHONY_SVCTYPE, &svc_type);
+
+               switch(svc_type)
+               {
+                       case VCONFKEY_TELEPHONY_SVCTYPE_3G:
+                               snprintf(buf, sizeof(buf), "%s, %s, %s", _("IDS_IDLE_BODY_3G"),_("Data network"),_("IDS_IDLE_BODY_STATUS_BAR_ITEM"));
+                               break;
+                       case VCONFKEY_TELEPHONY_SVCTYPE_LTE:
+                               snprintf(buf, sizeof(buf), "%s, %s, %s", _("4G"),_("Data network"),_("IDS_IDLE_BODY_STATUS_BAR_ITEM"));
+                               break;
+                       default:
+                               break;
+               }
+       }
+       tmp = strdup(buf);
+       if (!tmp) return NULL;
+       return tmp;
+}
+#endif
+static int register_transfer_module(void *data)
+{
+       set_app_state(data);
+       return OK;
+}
+
+static int unregister_transfer_module(void)
+{
+       return OK;
+}
diff --git a/modules/processing/uploading.c b/modules/processing/uploading.c
new file mode 100644 (file)
index 0000000..e31ebb3
--- /dev/null
@@ -0,0 +1,202 @@
+/*
+ *  Indicator
+ *
+ * Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * 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 <stdio.h>
+#include <stdlib.h>
+#include <vconf.h>
+#include "common.h"
+#include "indicator.h"
+#include "main.h"
+#include "modules.h"
+#include "icon.h"
+
+#define ICON_PRIORITY  INDICATOR_PRIORITY_NOTI_1
+#define MODULE_NAME            "uploading"
+#define TIMER_INTERVAL 0.3
+#define ICON_NUM 7
+
+static int register_uploading_module(void *data);
+static int unregister_uploading_module(void);
+static int wake_up_cb(void *data);
+
+icon_s uploading = {
+       .type = INDICATOR_IMG_ICON,
+       .name = MODULE_NAME,
+       .priority = ICON_PRIORITY,
+       .always_top = EINA_FALSE,
+       .exist_in_view = EINA_FALSE,
+       .img_obj = {0,},
+       .obj_exist = EINA_FALSE,
+       .area = INDICATOR_ICON_AREA_NOTI,
+       .init = register_uploading_module,
+       .fini = unregister_uploading_module,
+       .wake_up = wake_up_cb
+};
+
+static const char *icon_path[] = {
+       "Processing/B03_Processing_upload_ani_00.png",
+       "Processing/B03_Processing_upload_ani_01.png",
+       "Processing/B03_Processing_upload_ani_02.png",
+       "Processing/B03_Processing_upload_ani_03.png",
+       "Processing/B03_Processing_upload_ani_04.png",
+       "Processing/B03_Processing_upload_ani_05.png",
+       "Processing/B03_Processing_upload_ani_06.png",
+       NULL
+};
+
+static Ecore_Timer *timer;
+static int icon_index = 0;
+static int updated_while_lcd_off = 0;
+
+static void set_app_state(void* data)
+{
+       uploading.ad = data;
+}
+
+static void show_image_icon(void* data, int index)
+{
+       uploading.img_obj.data = icon_path[index];
+       icon_show(&uploading);
+}
+
+static void hide_image_icon(void)
+{
+       icon_hide(&uploading);
+}
+
+static Eina_Bool show_uploading_icon_cb(void* data)
+{
+
+       show_image_icon(data,icon_index);
+       icon_index = (++icon_index % ICON_NUM) ? icon_index : 0;
+
+       return ECORE_CALLBACK_RENEW;
+}
+
+static void show_uploading_icon(void* data)
+{
+       if(timer==NULL)
+       {
+               timer = ecore_timer_add(TIMER_INTERVAL, show_uploading_icon_cb, data);
+       }
+       else
+       {
+               ERR("show_uploading_icon!, timer");
+       }
+}
+
+static void hide_uploading_icon(void)
+{
+       if (timer != NULL) {
+               ecore_timer_del(timer);
+               timer = NULL;
+               icon_index = 0;
+       }
+
+       hide_image_icon();
+}
+
+
+static void indicator_uploading_change_cb(keynode_t *node, void *data)
+{
+       int status = 0;
+       int result = 0;
+
+       retif(data == NULL, , "Invalid parameter!");
+
+       if(icon_get_update_flag()==0)
+       {
+               updated_while_lcd_off = 1;
+               return;
+       }
+       updated_while_lcd_off = 0;
+
+/*     if (vconf_get_int(VCONFKEY_WIFI_DIRECT_SENDING_STATE, &status) == 0)
+       {
+               result = result | status;
+       } else {
+               ERR("Failed to get VCONFKEY_WIFI_DIRECT_SENDING_STATE value");
+       }*/
+
+       if (result == 1) {
+               show_uploading_icon(data);
+
+       } else {
+               hide_uploading_icon();
+       }
+}
+
+static void indicator_uploading_pm_state_change_cb(keynode_t *node, void *data)
+{
+       int status = 0;
+
+       retif(data == NULL, , "Invalid parameter!");
+
+       vconf_get_int(VCONFKEY_PM_STATE, &status);
+
+       if(status == VCONFKEY_PM_STATE_LCDOFF)
+       {
+               if (timer != NULL) {
+                       ecore_timer_del(timer);
+                       timer = NULL;
+               }
+       }
+}
+
+static int wake_up_cb(void *data)
+{
+       if(updated_while_lcd_off == 0 && uploading.obj_exist == EINA_FALSE)
+       {
+               return OK;
+       }
+
+       indicator_uploading_change_cb(NULL, data);
+       return OK;
+}
+
+static int register_uploading_module(void *data)
+{
+       int ret = 0;
+
+       retif(data == NULL, FAIL, "Invalid parameter!");
+
+       set_app_state(data);
+
+//     ret = ret | vconf_notify_key_changed(VCONFKEY_WIFI_DIRECT_SENDING_STATE, indicator_uploading_change_cb, data);
+
+       ret = ret | vconf_notify_key_changed(VCONFKEY_PM_STATE,
+                                       indicator_uploading_pm_state_change_cb, data);
+
+       indicator_uploading_change_cb(NULL, data);
+
+       return ret;
+}
+
+static int unregister_uploading_module(void)
+{
+       int ret = 0;
+
+//     ret = ret | vconf_ignore_key_changed(VCONFKEY_WIFI_DIRECT_SENDING_STATE, indicator_uploading_change_cb);
+
+       ret = ret | vconf_ignore_key_changed(VCONFKEY_PM_STATE,
+                                               indicator_uploading_pm_state_change_cb);
+
+       return OK;
+}
old mode 100755 (executable)
new mode 100644 (file)
index 422655e..7179372
@@ -1,69 +1,66 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ *  Indicator
  *
- * Licensed under the Flora License, Version 1.1 (the "License");
+ * Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.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/
+ * http://www.apache.org/licenses/LICENSE-2.0
  *
  * 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 <stdio.h>
 #include <stdlib.h>
 #include <vconf.h>
+#include <bluetooth.h>
 #include "common.h"
 #include "indicator.h"
-#include "indicator_icon_util.h"
+#include "icon.h"
 #include "modules.h"
-#include "indicator_ui.h"
+#include "main.h"
+#include "util.h"
 
-#define ICON_PRIORITY  INDICATOR_PRIORITY_SYSTEM_4
+#define ICON_PRIORITY  INDICATOR_PRIORITY_FIXED7
 #define MODULE_NAME            "bluetooth"
 #define TIMER_INTERVAL 0.5
 
+Ecore_Timer *timer_bt = NULL;
+
 static int register_bluetooth_module(void *data);
 static int unregister_bluetooth_module(void);
 static int wake_up_cb(void *data);
+static void show_image_icon(void *data, int index);
+static void hide_image_icon(void);
+#ifdef _SUPPORT_SCREEN_READER
+static char *access_info_cb(void *data, Evas_Object *obj);
+#endif
 
-Indicator_Icon_Object bluetooth[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_SYSTEM,
-       .init = register_bluetooth_module,
-       .fini = unregister_bluetooth_module,
-       .wake_up = wake_up_cb
-},
-{
-       .win_type = INDICATOR_WIN_LAND,
+
+icon_s bluetooth = {
        .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_SYSTEM,
+       .area = INDICATOR_ICON_AREA_FIXED,
        .init = register_bluetooth_module,
        .fini = unregister_bluetooth_module,
-       .wake_up = wake_up_cb
-}
-
+       .wake_up = wake_up_cb,
+#ifdef _SUPPORT_SCREEN_READER
+       .tts_enable = EINA_TRUE,
+       .access_cb = access_info_cb
+#endif
 };
 
 enum {
@@ -76,68 +73,42 @@ enum {
 
 static const char *icon_path[LEVEL_MAX] = {
        [LEVEL_BT_NOT_CONNECTED] =
-               "Bluetooth, NFC, GPS/B03_BT_On&Notconnected.png",
-       [LEVEL_BT_CONNECTED] = "Bluetooth, NFC, GPS/B03_BT_On&Connected.png",
+               "Bluetooth, NFC, GPS/B03_BT_On&Connected.png",
+       [LEVEL_BT_CONNECTED] = "Bluetooth, NFC, GPS/B03-4_BT_activated_on.png",
        [LEVEL_BT_HEADSET] =
                "Bluetooth, NFC, GPS/B03_BT_On&Connected&headset.png",
 };
 
-static Ecore_Timer *timer;
-static Eina_Bool bt_transferring = EINA_FALSE;
 static int updated_while_lcd_off = 0;
-
+static int prevIndex = -1;
 
 static void set_app_state(void* data)
 {
-       int i = 0;
-
-       for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
-       {
-               bluetooth[i].ad = data;
-       }
-}
-
-static void delete_timer(void)
-{
-       if (timer != NULL) {
-               ecore_timer_del(timer);
-               timer = NULL;
-       }
+       bluetooth.ad = data;
 }
 
 static void show_image_icon(void *data, int index)
 {
-       int i = 0;
-
        if (index < LEVEL_MIN || index >= LEVEL_MAX)
                index = LEVEL_MIN;
 
-       for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
+       if(prevIndex == index)
        {
-               bluetooth[i].img_obj.data = icon_path[index];
-               indicator_util_icon_show(&bluetooth[i]);
+               return;
        }
-}
+       bluetooth.img_obj.data = icon_path[index];
+       icon_show(&bluetooth);
 
-static void hide_image_icon(void)
-{
-       int i = 0;
-       for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
-       {
-               indicator_util_icon_hide(&bluetooth[i]);
-       }
+       prevIndex = index;
+       util_signal_emit(bluetooth.ad,"indicator.bluetooth.show","indicator.prog");
 }
 
-static Eina_Bool indicator_bluetooth_multidev_cb(void *data)
+static void hide_image_icon(void)
 {
-       static int i = 0;
-
-       retif(data == NULL, ECORE_CALLBACK_CANCEL, "Invalid parameter!");
+       icon_hide(&bluetooth);
 
-       show_image_icon(data, LEVEL_BT_CONNECTED + i);
-       i = (++i % 2) ? i : 0;
-
-       return ECORE_CALLBACK_RENEW;
+       prevIndex = -1;
+       util_signal_emit(bluetooth.ad,"indicator.bluetooth.hide","indicator.prog");
 }
 
 #define NO_DEVICE                      (0x00)
@@ -147,75 +118,55 @@ static Eina_Bool indicator_bluetooth_multidev_cb(void *data)
 
 static void show_bluetooth_icon(void *data, int status)
 {
-       INFO("Bluetooth status = %d", status);
-
        if (status == NO_DEVICE) {
                show_image_icon(data, LEVEL_BT_NOT_CONNECTED);
                return;
        }
-       if (status & DATA_TRANSFER) {
-               if(bt_transferring != EINA_TRUE) {
-                       bt_transferring = EINA_TRUE;
-               }
-               return;
-       }
-
-       if ((status & HEADSET_CONNECTED) && (status & DEVICE_CONNECTED)) {
-               INFO("BT_MULTI_DEVICE_CONNECTED");
-               timer = ecore_timer_add(TIMER_INTERVAL,
-                                       indicator_bluetooth_multidev_cb, data);
-               return;
-       }
 
        if (status & HEADSET_CONNECTED) {
-               INFO("BT_HEADSET_CONNECTED");
                show_image_icon(data, LEVEL_BT_HEADSET);
        } else if (status & DEVICE_CONNECTED) {
-               INFO("BT_DEVICE_CONNECTED");
                show_image_icon(data, LEVEL_BT_CONNECTED);
        }
        return;
 }
 
+static void indicator_bluetooth_adapter_state_changed_cb(int result, bt_adapter_state_e adapter_state, void *user_data)
+{
+       DBG("BT STATUS: %d", adapter_state);
+       if (adapter_state != BT_ADAPTER_ENABLED)    // If adapter_state is NULL. hide_image_icon().
+       {
+               DBG("BT is not enabled. So hide BT icon.");
+               hide_image_icon();
+       }
+}
+
 static void indicator_bluetooth_change_cb(keynode_t *node, void *data)
 {
-       int status, dev;
-       int ret;
+       DBG("indicator_bluetooth_change_cb");
+       int dev = 0;
+       int ret = 0;
        int result = NO_DEVICE;
+       bt_adapter_state_e adapter_state = BT_ADAPTER_DISABLED;
 
        retif(data == NULL, , "Invalid parameter!");
 
-       if(indicator_util_get_update_flag()==0)
-       {
+       if (icon_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_BT_STATUS, &status);
-       if (ret == OK) {
-               INFO("BT STATUS: %d", status);
-               if (!(status & VCONFKEY_BT_STATUS_TRANSFER)) {
-                       if (bt_transferring == EINA_TRUE) {
-                               bt_transferring = EINA_FALSE;
-                       }
-               }
-
-               if (status == VCONFKEY_BT_STATUS_OFF) {
-                       hide_image_icon();
-                       return;
-               } else if (status & VCONFKEY_BT_STATUS_TRANSFER) {
-                       INFO("BT TRASFER!");
-                       result = (result | DATA_TRANSFER);
-                       show_bluetooth_icon(data, result);
-                       return;
-               }
+       ret = bt_adapter_get_state(&adapter_state);
+       retif(ret != BT_ERROR_NONE, , "bt_adapter_get_state failed");
+       if (adapter_state != BT_ADAPTER_ENABLED) {  // If adapter_state is NULL. hide_image_icon().
+               DBG("BT is not enabled. So don't need to update BT icon.");
+               return;
        }
 
        ret = vconf_get_int(VCONFKEY_BT_DEVICE, &dev);
        if (ret == OK) {
-               INFO("BT DEVICE: %d", dev);
+               DBG("Show BT ICON (BT DEVICE: %d)", dev);
 
                if (dev == VCONFKEY_BT_DEVICE_NONE) {
                        show_bluetooth_icon(data, NO_DEVICE);
@@ -224,40 +175,25 @@ static void indicator_bluetooth_change_cb(keynode_t *node, void *data)
                if ((dev & VCONFKEY_BT_DEVICE_HEADSET_CONNECTED) ||
                    (dev & VCONFKEY_BT_DEVICE_A2DP_HEADSET_CONNECTED)) {
                        result = (result | HEADSET_CONNECTED);
-                       INFO("BT_HEADSET_CONNECTED(%x)", result);
+                       DBG("BT_HEADSET_CONNECTED(%x)", result);
                }
-               if (((dev & VCONFKEY_BT_DEVICE_SAP_CONNECTED)) ||
-                   (dev & VCONFKEY_BT_DEVICE_PBAP_CONNECTED)) {
+               if ((dev & VCONFKEY_BT_DEVICE_SAP_CONNECTED)
+               || (dev & VCONFKEY_BT_DEVICE_PBAP_CONNECTED)
+               || (dev & VCONFKEY_BT_DEVICE_HID_CONNECTED)
+               || (dev & VCONFKEY_BT_DEVICE_PAN_CONNECTED)) {
                        result = (result | DEVICE_CONNECTED);
-                       INFO("BT_DEVICE_CONNECTED(%x)", result);
+                       DBG("BT_DEVICE_CONNECTED(%x)", result);
                }
                show_bluetooth_icon(data, result);
        }
        return;
 }
 
-static void indicator_bluetooth_pm_state_change_cb(keynode_t *node, void *data)
-{
-       int status = 0;
-
-       retif(data == NULL, , "Invalid parameter!");
-
-       vconf_get_int(VCONFKEY_PM_STATE, &status);
 
-       if(status == VCONFKEY_PM_STATE_LCDOFF)
-       {
-               if (timer != NULL) {
-                       ecore_timer_del(timer);
-                       timer = NULL;
-               }
-       }
-}
 
 static int wake_up_cb(void *data)
 {
-       if(updated_while_lcd_off==0&&bluetooth[0].obj_exist==EINA_FALSE)
-       {
-               DBG("ICON WAS NOT UPDATED");
+       if(updated_while_lcd_off == 0 && bluetooth.obj_exist == EINA_FALSE) {
                return OK;
        }
 
@@ -265,65 +201,74 @@ static int wake_up_cb(void *data)
        return OK;
 }
 
+#ifdef _SUPPORT_SCREEN_READER
+static char *access_info_cb(void *data, Evas_Object *obj)
+{
+       char *tmp = NULL;
+       char buf[256] = {0,};
+
+       switch(prevIndex)
+       {
+               case LEVEL_BT_NOT_CONNECTED:
+                       snprintf(buf, sizeof(buf), "%s, %s", _("IDS_IDLE_BODY_BLUETOOTH_ON"),_("IDS_IDLE_BODY_STATUS_BAR_ITEM"));
+                       break;
+               case LEVEL_BT_CONNECTED:
+                       snprintf(buf, sizeof(buf), "%s, %s", _("Bluetooth On and Connected"),_("IDS_IDLE_BODY_STATUS_BAR_ITEM"));
+                       break;
+               case LEVEL_BT_HEADSET:
+                       snprintf(buf, sizeof(buf), "%s, %s", _("Bluetooth On and Connected headset"),_("IDS_IDLE_BODY_STATUS_BAR_ITEM"));
+                       break;
+       }
+
+       tmp = strdup(buf);
+       if (!tmp) return NULL;
+       return tmp;
+}
+#endif
+
 static int register_bluetooth_module(void *data)
 {
        int r = 0, ret = -1;
+       bt_adapter_state_e adapter_state = BT_ADAPTER_DISABLED;
 
        retif(data == NULL, FAIL, "Invalid parameter!");
 
        set_app_state(data);
 
-       ret = vconf_notify_key_changed(VCONFKEY_BT_STATUS,
-                                      indicator_bluetooth_change_cb, data);
-       if (ret != OK) {
-               ERR("Failed to register callback!");
-               r = ret;
-       }
+       // Register bluetooth adapter state call-back.
+       ret = bt_initialize();
+       if(ret != BT_ERROR_NONE) ERR("bt_initialize failed");
+       ret = bt_adapter_set_state_changed_cb(indicator_bluetooth_adapter_state_changed_cb, data);
+       if(ret != BT_ERROR_NONE) ERR("bt_adapter_set_state_changed_cb failed");
 
        ret = vconf_notify_key_changed(VCONFKEY_BT_DEVICE,
-                                      indicator_bluetooth_change_cb, data);
+                                       indicator_bluetooth_change_cb, data);
        if (ret != OK) {
-               ERR("Failed to register callback!");
                r = r | ret;
        }
 
-       ret = vconf_notify_key_changed(VCONFKEY_PM_STATE,
-                                      indicator_bluetooth_pm_state_change_cb, data);
-       if (ret != OK) {
-               ERR("Failed to register callback!");
-               r = r | ret;
-       }
+       ret = bt_adapter_get_state(&adapter_state);
+       retif(ret != BT_ERROR_NONE, -1, "bt_adapter_get_state failed");
 
        indicator_bluetooth_change_cb(NULL, data);
+       indicator_bluetooth_adapter_state_changed_cb(0, adapter_state, data);
 
        return r;
 }
 
 static int unregister_bluetooth_module(void)
 {
-       int ret;
+       int ret = 0;
 
-       ret = vconf_ignore_key_changed(VCONFKEY_BT_STATUS,
-                                      indicator_bluetooth_change_cb);
-       if (ret != OK)
-               ERR("Failed to unregister callback!");
+       // Unregister bluetooth adapter state call-back.
+       ret = bt_adapter_unset_state_changed_cb();
+       if(ret != BT_ERROR_NONE) ERR("bt_adapter_unset_state_changed_cb failed");
+       ret = bt_deinitialize();
+       if(ret != BT_ERROR_NONE) ERR("bt_deinitialize failed");
 
-       ret = vconf_ignore_key_changed(VCONFKEY_BT_DEVICE,
-                                      indicator_bluetooth_change_cb);
-       if (ret != OK)
-               ERR("Failed to unregister callback!");
 
-       ret = vconf_ignore_key_changed(VCONFKEY_PM_STATE,
-                                      indicator_bluetooth_pm_state_change_cb);
-       if (ret != OK)
-               ERR("Failed to unregister callback!");
+       ret = ret | vconf_ignore_key_changed(VCONFKEY_BT_DEVICE,
+                                       indicator_bluetooth_change_cb);
 
-
-       delete_timer();
-
-       if (bt_transferring == EINA_TRUE) {
-               bt_transferring = EINA_FALSE;
-       }
-
-       return OK;
+       return ret;
 }
old mode 100755 (executable)
new mode 100644 (file)
index 97fde3b..99e9dda
@@ -1,68 +1,55 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ *  Indicator
  *
- * Licensed under the Flora License, Version 1.1 (the "License");
+ * Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.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/
+ * http://www.apache.org/licenses/LICENSE-2.0
  *
  * 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 <stdio.h>
 #include <stdlib.h>
 #include <vconf.h>
+#include <runtime_info.h>
+
 #include "common.h"
 #include "indicator.h"
-#include "indicator_icon_util.h"
+#include "icon.h"
 #include "modules.h"
-#include "indicator_ui.h"
+#include "main.h"
+#include "log.h"
 
-#define ICON_PRIORITY  INDICATOR_PRIORITY_NOTI_2
+#define ICON_PRIORITY  INDICATOR_PRIORITY_SYSTEM_4
 #define MODULE_NAME            "gps"
 #define TIMER_INTERVAL 0.3
 
 static int register_gps_module(void *data);
 static int unregister_gps_module(void);
-static int wake_up_cb(void *data);
+static int _wake_up_cb(void *data);
 
-Indicator_Icon_Object gps[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_gps_module,
-       .fini = unregister_gps_module,
-       .wake_up = wake_up_cb
-},
-{
-       .win_type = INDICATOR_WIN_LAND,
+icon_s gps = {
        .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,
+       .area = INDICATOR_ICON_AREA_SYSTEM,
        .init = register_gps_module,
        .fini = unregister_gps_module,
-       .wake_up = wake_up_cb
-}
+       .wake_up = _wake_up_cb
 };
 
 enum {
@@ -80,65 +67,58 @@ enum {
 
 static const char *icon_path[LEVEL_MAX] = {
        [LEVEL_GPS_ON] = "Bluetooth, NFC, GPS/B03_GPS_On.png",
-       [LEVEL_GPS_SEARCHING] = "Bluetooth, NFC, GPS/B03_GPS_Searching.png",
+       [LEVEL_GPS_SEARCHING] = "Bluetooth, NFC, GPS/B03_GPS_On.png",
 };
 static int updated_while_lcd_off = 0;
+static int prevIndex = -1;
+
+
 
 static void set_app_state(void* data)
 {
-       int i = 0;
-
-       for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
-       {
-               gps[i].ad = data;
-       }
+       gps.ad = data;
 }
 
 static void show_image_icon(void *data, int index)
 {
-       int i = 0;
-
        if (index < LEVEL_MIN)
                index = LEVEL_MIN;
        else if (index >= LEVEL_MAX)
                index = LEVEL_GPS_SEARCHING;
 
-       for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
+       if(prevIndex == index)
        {
-               gps[i].img_obj.data = icon_path[index];
-               indicator_util_icon_show(&gps[i]);
+               return;
        }
+
+       gps.img_obj.data = icon_path[index];
+       icon_show(&gps);
+
+       prevIndex = index;
 }
 
 static void hide_image_icon(void)
 {
-       int i = 0;
-       for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
-       {
-               indicator_util_icon_hide(&gps[i]);
-       }
+       icon_hide(&gps);
+
+       prevIndex = -1;
 }
 
 static void icon_animation_set(enum indicator_icon_ani type)
 {
-       int i = 0;
-       for(i=0 ; i<INDICATOR_WIN_MAX ; i++)
-       {
-               indicator_util_icon_animation_set(&gps[i],type);
-       }
+       icon_ani_set(&gps,type);
 }
 
 static int indicator_gps_state_get(void)
 {
-       int ret = 0;
        int gps_status = 0;
        int status = 0;
 
-       ret = vconf_get_int(VCONFKEY_LOCATION_GPS_STATE, &gps_status);
-       if (ret < 0)
-               ERR("fail to get [%s]", VCONFKEY_LOCATION_GPS_STATE);
-
-       INFO("GPS STATUS: %d", gps_status);
+       if (runtime_info_get_value_int(RUNTIME_INFO_KEY_GPS_STATUS, &gps_status) < 0)
+       {
+               ERR("Error getting RUNTIME_INFO_KEY_GPS_STATUS value");
+               return 0;
+       }
 
        if(gps_status == VCONFKEY_LOCATION_GPS_CONNECTED)
        {
@@ -156,9 +136,9 @@ static int indicator_gps_state_get(void)
        return status;
 }
 
-static void indicator_gps_state_icon_set(int status, void *data)
+static void _gps_state_icon_set(int status, void *data)
 {
-       INFO("GPS STATUS: %d", status);
+       DBG("GPS STATUS: %d", status);
 
        switch (status) {
        case IND_POSITION_STATE_OFF:
@@ -181,40 +161,45 @@ static void indicator_gps_state_icon_set(int status, void *data)
        return;
 }
 
-static void indicator_gps_change_cb(keynode_t *node, void *data)
-{
 
-       retif(data == NULL, , "Invalid parameter!");
 
-       if(indicator_util_get_update_flag()==0)
-       {
+void _gps_status_changed_cb(runtime_info_key_e key, void *data)
+{
+       ret_if(!data);
+
+       if (icon_get_update_flag() == 0) {
                updated_while_lcd_off = 1;
-               DBG("need to update %d",updated_while_lcd_off);
                return;
        }
        updated_while_lcd_off = 0;
 
-       indicator_gps_state_icon_set(indicator_gps_state_get(), data);
+       _gps_state_icon_set(indicator_gps_state_get(), data);
 
        return;
 }
 
+
+
 static void indicator_gps_pm_state_change_cb(keynode_t *node, void *data)
 {
        int status = 0;
-       int ret = 0;
        retif(data == NULL, , "Invalid parameter!");
 
-       vconf_get_int(VCONFKEY_PM_STATE, &status);
+       if (vconf_get_int(VCONFKEY_PM_STATE, &status) < 0)
+       {
+               ERR("Error getting VCONFKEY_PM_STATE value");
+               return;
+       }
 
        if(status == VCONFKEY_PM_STATE_LCDOFF)
        {
                int gps_status = 0;
-               ret = vconf_get_int(VCONFKEY_LOCATION_GPS_STATE, &gps_status);
-               if (ret < 0)
-                       ERR("fail to get [%s]", VCONFKEY_LOCATION_GPS_STATE);
+               if (runtime_info_get_value_int(RUNTIME_INFO_KEY_GPS_STATUS, &gps_status) < 0)
+               {
+                       ERR("Error getting RUNTIME_INFO_KEY_GPS_STATUS value");
+                       return;
+               }
 
-               INFO("GPS STATUS: %d", gps_status);
                switch (gps_status) {
                case IND_POSITION_STATE_SEARCHING:
                        show_image_icon(data, LEVEL_GPS_SEARCHING);
@@ -228,18 +213,37 @@ static void indicator_gps_pm_state_change_cb(keynode_t *node, void *data)
        }
 }
 
-static int wake_up_cb(void *data)
+
+
+static int _wake_up_cb(void *data)
 {
-       if(updated_while_lcd_off==0 && gps[0].obj_exist==EINA_FALSE)
-       {
-               DBG("ICON WAS NOT UPDATED");
+       if (updated_while_lcd_off == 0 && gps.obj_exist == EINA_FALSE) {
+               return OK;
+       }
+
+       if (updated_while_lcd_off == 0 && gps.obj_exist == EINA_TRUE) {
+               int gps_status = 0;
+               runtime_info_get_value_int(RUNTIME_INFO_KEY_GPS_STATUS, &gps_status);
+
+               switch (gps_status) {
+               case IND_POSITION_STATE_SEARCHING:
+                       icon_animation_set(ICON_ANI_BLINK);
+                       break;
+               case IND_POSITION_STATE_OFF:
+               case IND_POSITION_STATE_CONNECTED:
+               default:
+                       break;
+               }
+
                return OK;
        }
 
-       indicator_gps_change_cb(NULL, data);
+       _gps_status_changed_cb(RUNTIME_INFO_KEY_GPS_STATUS, data);
        return OK;
 }
 
+
+
 static int register_gps_module(void *data)
 {
        int ret;
@@ -248,17 +252,12 @@ static int register_gps_module(void *data)
 
        set_app_state(data);
 
-       ret = vconf_notify_key_changed(VCONFKEY_LOCATION_GPS_STATE,
-                                      indicator_gps_change_cb, data);
-       if (ret != OK)
-               ERR("Failed to register callback! : VCONFKEY_LOCATION_GPS_STATE");
+       ret = runtime_info_set_changed_cb(RUNTIME_INFO_KEY_GPS_STATUS, _gps_status_changed_cb, data);
 
        ret = vconf_notify_key_changed(VCONFKEY_PM_STATE,
-                                      indicator_gps_pm_state_change_cb, data);
-       if (ret != OK)
-               ERR("Failed to register callback! : VCONFKEY_LOCATION_GPS_STATE");
+                                       indicator_gps_pm_state_change_cb, data);
 
-       indicator_gps_state_icon_set(indicator_gps_state_get(), data);
+       _gps_state_icon_set(indicator_gps_state_get(), data);
 
        return ret;
 }
@@ -267,15 +266,10 @@ static int unregister_gps_module(void)
 {
        int ret;
 
-       ret = vconf_ignore_key_changed(VCONFKEY_LOCATION_GPS_STATE,
-                                      indicator_gps_change_cb);
-       if (ret != OK)
-               ERR("Failed to unregister callback!");
+       ret = runtime_info_unset_changed_cb(RUNTIME_INFO_KEY_GPS_STATUS);
 
-       ret = vconf_ignore_key_changed(VCONFKEY_PM_STATE,
-                                      indicator_gps_pm_state_change_cb);
-       if (ret != OK)
-               ERR("Failed to unregister callback!");
+       ret = ret | vconf_ignore_key_changed(VCONFKEY_PM_STATE,
+                                       indicator_gps_pm_state_change_cb);
 
-       return OK;
+       return ret;
 }
diff --git a/modules/setting/network-restriction.c b/modules/setting/network-restriction.c
new file mode 100644 (file)
index 0000000..71e5cca
--- /dev/null
@@ -0,0 +1,20 @@
+/*
+ *  Indicator
+ *
+ * Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * 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.
+ *
+ */
+
+
old mode 100755 (executable)
new mode 100644 (file)
index 2b87a50..b5c5c89
@@ -1,17 +1,20 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ *  Indicator
  *
- * Licensed under the Flora License, Version 1.1 (the "License");
+ * Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.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/
+ * http://www.apache.org/licenses/LICENSE-2.0
  *
  * 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 <vconf.h>
 #include "common.h"
 #include "indicator.h"
-#include "indicator_icon_util.h"
+#include "icon.h"
 #include "modules.h"
-#include "indicator_ui.h"
+#include "main.h"
+#include "util.h"
 
-#define ICON_PRIORITY  INDICATOR_PRIORITY_SYSTEM_4
+#define ICON_PRIORITY  INDICATOR_PRIORITY_NOTI_2
 #define MODULE_NAME            "nfc"
 
 static int register_nfc_module(void *data);
@@ -32,37 +36,18 @@ static int unregister_nfc_module(void);
 static int wake_up_cb(void *data);
 
 
-Indicator_Icon_Object nfc[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_SYSTEM,
-       .init = register_nfc_module,
-       .fini = unregister_nfc_module,
-       .wake_up = wake_up_cb
-},
-{
-       .win_type = INDICATOR_WIN_LAND,
+icon_s nfc = {
        .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_SYSTEM,
+       .area = INDICATOR_ICON_AREA_NOTI,
        .init = register_nfc_module,
        .fini = unregister_nfc_module,
        .wake_up = wake_up_cb
-}
 };
 
 enum {
@@ -75,39 +60,39 @@ static const char *icon_path[NFC_NUM] = {
        [NFC_ON] = "Bluetooth, NFC, GPS/B03_NFC_On.png",
 };
 static int updated_while_lcd_off = 0;
+static int prevIndex = -1;
+
+
 
 static void set_app_state(void* data)
 {
-       int i = 0;
-
-       for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
-       {
-               nfc[i].ad = data;
-       }
+       nfc.ad = data;
 }
 
+
+
 static void show_image_icon(void *data, int index)
 {
-       int i = 0;
-
        if (index < NFC_ON || index >= NFC_NUM)
                index = NFC_ON;
 
-       for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
+       if(prevIndex == index)
        {
-               nfc[i].img_obj.data = icon_path[index];
-               indicator_util_icon_show(&nfc[i]);
+               DBG("same icon");
+               return;
        }
+
+       nfc.img_obj.data = icon_path[index];
+       icon_show(&nfc);
+
+       prevIndex = index;
 }
 
 static void hide_image_icon(void)
 {
-       int i = 0;
+       icon_hide(&nfc);
 
-       for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
-       {
-               indicator_util_icon_hide(&nfc[i]);
-       }
+       prevIndex = -1;
 }
 
 static void indicator_nfc_change_cb(keynode_t *node, void *data)
@@ -117,7 +102,13 @@ static void indicator_nfc_change_cb(keynode_t *node, void *data)
 
        retif(data == NULL, , "Invalid parameter!");
 
-       if(indicator_util_get_update_flag()==0)
+       if(util_is_orf()==0)
+       {
+               DBG("does not support in this bin");
+               return;
+       }
+
+       if(icon_get_update_flag()==0)
        {
                updated_while_lcd_off = 1;
                DBG("need to update %d",updated_while_lcd_off);
@@ -130,6 +121,7 @@ static void indicator_nfc_change_cb(keynode_t *node, void *data)
                INFO("NFC STATUS: %d", status);
 
                if (status == 1) {
+                       /* Show NFC Icon */
                        show_image_icon(data, NFC_ON);
                        return;
                }
@@ -143,7 +135,6 @@ static int wake_up_cb(void *data)
 {
        if(updated_while_lcd_off==0)
        {
-               DBG("ICON WAS NOT UPDATED");
                return OK;
        }
 
@@ -160,7 +151,7 @@ static int register_nfc_module(void *data)
        set_app_state(data);
 
        ret = vconf_notify_key_changed(VCONFKEY_NFC_STATE,
-                                      indicator_nfc_change_cb, data);
+                                       indicator_nfc_change_cb, data);
        if (ret != OK)
                ERR("Failed to register callback!");
 
@@ -174,7 +165,7 @@ static int unregister_nfc_module(void)
        int ret;
 
        ret = vconf_ignore_key_changed(VCONFKEY_NFC_STATE,
-                                      indicator_nfc_change_cb);
+                                       indicator_nfc_change_cb);
        if (ret != OK)
                ERR("Failed to unregister callback!");
 
diff --git a/modules/setting/rotation-lock.c b/modules/setting/rotation-lock.c
new file mode 100644 (file)
index 0000000..71e5cca
--- /dev/null
@@ -0,0 +1,20 @@
+/*
+ *  Indicator
+ *
+ * Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * 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.
+ *
+ */
+
+
old mode 100755 (executable)
new mode 100644 (file)
index 5719a05..88bb7b0
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ *  Indicator
  *
- * Licensed under the Flora License, Version 1.1 (the "License");
+ * Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.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/
+ * http://www.apache.org/licenses/LICENSE-2.0
  *
  * 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 <stdio.h>
 #include <stdlib.h>
 #include <vconf.h>
+#include <system_settings.h>
+
 #include "common.h"
 #include "indicator.h"
-#include "indicator_ui.h"
+#include "main.h"
 #include "modules.h"
-#include "indicator_icon_util.h"
+#include "icon.h"
+#include "log.h"
 
-#define ICON_PRIORITY  INDICATOR_PRIORITY_SYSTEM_1
+#define ICON_PRIORITY  INDICATOR_PRIORITY_SYSTEM_6
 #define MODULE_NAME            "silent"
 
 static int register_silent_module(void *data);
 static int unregister_silent_module(void);
+#ifdef _SUPPORT_SCREEN_READER
+static char *access_info_cb(void *data, Evas_Object *obj);
+#endif
 
-Indicator_Icon_Object silent[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_SYSTEM,
-       .init = register_silent_module,
-       .fini = unregister_silent_module
-},
-{
-       .win_type = INDICATOR_WIN_LAND,
+
+icon_s silent = {
        .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_SYSTEM,
        .init = register_silent_module,
-       .fini = unregister_silent_module
-}
+       .fini = unregister_silent_module,
+#ifdef _SUPPORT_SCREEN_READER
+       .tts_enable = EINA_TRUE,
+       .access_cb = access_info_cb
+#endif
 };
 
 enum {
-       PROFILE_SOUND_VIBRATION,
        PROFILE_MUTE,
        PROFILE_VIBRATION,
        PROFILE_NUM,
 };
 
 static const char *icon_path[PROFILE_NUM] = {
-       [PROFILE_SOUND_VIBRATION] = "Profile/B03_Profile_Sound&Vibration.png",
        [PROFILE_MUTE] = "Profile/B03_Profile_Mute.png",
        [PROFILE_VIBRATION] = "Profile/B03_Profile_Vibration.png",
 };
 
+static int prevIndex = -1;
+
 static void set_app_state(void* data)
 {
-       int i = 0;
-
-       for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
-       {
-               silent[i].ad = data;
-       }
+       silent.ad = data;
 }
 
 static void show_image_icon(int index)
 {
-       int i = 0;
-
-       for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
+       if(prevIndex == index)
        {
-               silent[i].img_obj.data = icon_path[index];
-               indicator_util_icon_show(&silent[i]);
+               return;
        }
+
+       silent.img_obj.data = icon_path[index];
+       icon_show(&silent);
+
+       prevIndex = index;
 }
 
 static void hide_image_icon(void)
 {
-       int i = 0;
-
-       for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
+       if(prevIndex == -1)
        {
-               indicator_util_icon_hide(&silent[i]);
+               DBG("ALREADY HIDE");
+               return;
        }
+
+       icon_hide(&silent);
+
+       prevIndex = -1;
 }
 
-static void indicator_silent_change_cb(keynode_t *node, void *data)
+
+
+static void _silent_change_cb(keynode_t *node, void *data)
 {
-       int sound_status = 0;
+       bool silent_mode = 0;
        int vib_status = 0;
        int ret;
 
        retif(data == NULL, , "Invalid parameter!");
 
-       ret = vconf_get_bool(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, &sound_status);
-       ret =
-           vconf_get_bool(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL, &vib_status);
+//     ret = system_settings_get_value_bool(SYSTEM_SETTINGS_KEY_SOUND_SILENT_MODE, &silent_mode);
+       ret = vconf_get_bool(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL, &vib_status);
 
        if (ret == OK)
        {
-               INFO("CURRENT Sound Status: %d vib_status: %d", sound_status,
-                    vib_status);
+               DBG("CURRENT Sound Status: %d vib_status: %d", silent_mode, vib_status);
 
-               if (sound_status == TRUE && vib_status == TRUE)
+               if(silent_mode == TRUE && vib_status==FALSE)
                {
-                       show_image_icon(PROFILE_SOUND_VIBRATION);
+                       /* Mute Mode */
+                       show_image_icon(PROFILE_MUTE);
+               }
+               else if(silent_mode == FALSE && vib_status==TRUE)
+               {
+                       /* Vibration Only Mode */
+                       show_image_icon(PROFILE_VIBRATION);
+               }
+               else
+               {
+                       hide_image_icon();
                }
-               else if(sound_status == FALSE && vib_status==FALSE)
+       }
+       else
+       {
+               ERR("Failed to get current profile!");
+       }
+
+       return;
+}
+
+
+
+static void _system_setting_silent_change_cb(system_settings_key_e key, void *user_data)
+{
+       bool silent_mode = 0;
+       int vib_status = 0;
+       int ret;
+
+//     ret = system_settings_get_value_bool(SYSTEM_SETTINGS_KEY_SOUND_SILENT_MODE, &silent_mode);
+       ret = vconf_get_bool(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL, &vib_status);
+
+       if (ret == OK)
+       {
+               DBG("CURRENT Sound Status: %d vib_status: %d", silent_mode, vib_status);
+
+               if(silent_mode == TRUE && vib_status==FALSE)
                {
                        /* Mute Mode */
                        show_image_icon(PROFILE_MUTE);
                }
-               else if(sound_status == FALSE && vib_status==TRUE)
+               else if(silent_mode == FALSE && vib_status==TRUE)
                {
                        /* Vibration Only Mode */
                        show_image_icon(PROFILE_VIBRATION);
@@ -149,41 +179,64 @@ static void indicator_silent_change_cb(keynode_t *node, void *data)
        return;
 }
 
+
+#ifdef _SUPPORT_SCREEN_READER
+static char *access_info_cb(void *data, Evas_Object *obj)
+{
+       char *tmp = NULL;
+       char buf[256] = {0,};
+       int slient_mode = 0;
+       int vib_status = 0;
+//     system_settings_get_value_bool(SYSTEM_SETTINGS_KEY_SOUND_SILENT_MODE, &slient_mode);
+       vconf_get_bool(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL, &vib_status);
+
+       if(slient_mode == TRUE && vib_status==FALSE)
+       {
+               /* Mute Mode */
+               snprintf(buf, sizeof(buf), "%s, %s, %s", _("IDS_IDLE_BODY_MUTE"),_("Sound profile"),_("IDS_IDLE_BODY_STATUS_BAR_ITEM"));
+       }
+       else if(slient_mode == FALSE && vib_status==TRUE)
+       {
+               /* Vibration Only Mode */
+               snprintf(buf, sizeof(buf), "%s, %s, %s", _("IDS_IDLE_BODY_VIBRATE"),_("Sound profile"),_("IDS_IDLE_BODY_STATUS_BAR_ITEM"));
+       }
+       else
+       {
+               //do nothing;
+       }
+       tmp = strdup(buf);
+       if (!tmp) return NULL;
+       return tmp;
+}
+#endif
+
+
+
 static int register_silent_module(void *data)
 {
        int ret;
 
-       retif(data == NULL, FAIL, "Invalid parameter!");
+       retv_if(!data, 0);
 
        set_app_state(data);
 
-       ret = vconf_notify_key_changed(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL,
-                                      indicator_silent_change_cb, data);
-       if (ret != OK)
-               ERR("Fail: register VCONFKEY_SETAPPL_SOUND_STATUS_BOOL");
+//     ret = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_SOUND_SILENT_MODE, _system_setting_silent_change_cb, data);
+       ret = vconf_notify_key_changed(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL, _silent_change_cb, data);
 
-       ret = vconf_notify_key_changed(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL,
-                                      indicator_silent_change_cb, data);
-       if (ret != OK)
-               ERR("Fail: register VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL");
-
-       indicator_silent_change_cb(NULL, data);
+       _silent_change_cb(NULL, data);
 
        return ret;
 }
 
+
+
 static int unregister_silent_module(void)
 {
        int ret;
 
-       ret = vconf_ignore_key_changed(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL,
-                                      indicator_silent_change_cb);
-       if (ret != OK)
-               ERR("Fail: ignore VCONFKEY_SETAPPL_SOUND_STATUS_BOOL");
+//     ret = system_settings_unset_changed_cb(SYSTEM_SETTINGS_KEY_SOUND_SILENT_MODE);
+       ret = ret | vconf_ignore_key_changed(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL, _silent_change_cb);
 
-       ret = vconf_ignore_key_changed(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL,
-                                      indicator_silent_change_cb);
-       if (ret != OK)
-               ERR("Fail: ignore VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL");
-       return OK;
+       return ret;
 }
+/* End of file */
old mode 100755 (executable)
new mode 100644 (file)
index bb363cd..e19158e
@@ -1,17 +1,20 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ *  Indicator
  *
- * Licensed under the Flora License, Version 1.1 (the "License");
+ * Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.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/
+ * http://www.apache.org/licenses/LICENSE-2.0
  *
  * 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 <vconf.h>
 #include "common.h"
 #include "indicator.h"
-#include "indicator_icon_util.h"
+#include "icon.h"
 #include "modules.h"
-#include "indicator_ui.h"
+#include "main.h"
+#include "util.h"
 
-#define ICON_PRIORITY  INDICATOR_PRIORITY_SYSTEM_4
+#define ICON_PRIORITY  INDICATOR_PRIORITY_FIXED8
 #define MODULE_NAME            "wifi_direct"
 
 static int register_wifi_direct_module(void *data);
 static int unregister_wifi_direct_module(void);
 static int wake_up_cb(void *data);
+static void show_icon(void *data, int index);
+static void hide_icon(void);
 
+#ifdef _SUPPORT_SCREEN_READER
+static char *access_info_cb(void *data, Evas_Object *obj);
+#endif
 
-Indicator_Icon_Object wifi_direct[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_SYSTEM,
-       .init = register_wifi_direct_module,
-       .fini = unregister_wifi_direct_module,
-       .wake_up = wake_up_cb
-},
-{
-       .win_type = INDICATOR_WIN_LAND,
+icon_s wifi_direct = {
        .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_SYSTEM,
+       .area = INDICATOR_ICON_AREA_FIXED,
        .init = register_wifi_direct_module,
        .fini = unregister_wifi_direct_module,
-       .wake_up = wake_up_cb
-}
-
+       .wake_up = wake_up_cb,
+#ifdef _SUPPORT_SCREEN_READER
+       .tts_enable = EINA_TRUE,
+       .access_cb = access_info_cb
+#endif
 };
 
-static Eina_Bool wifi_direct_transferring = EINA_FALSE;
 static int updated_while_lcd_off = 0;
+static int prevIndex = -1;
+Ecore_Timer *timer_wifi = NULL;
 
 enum {
-       WIFI_DIRECT_ACTIVATE = 0,
-       WIFI_DIRECT_CONNECTED,
-       WIFI_DIRECT_DISCOVERING,
-       WIFI_DIRECT_GROUP_OWNER,
+       WIFI_DIRECT_CONNECTED = 0,
        WIFI_DIRECT_MAX,
 };
 
-#define WIFI_D_ICON_NOT_CONNECTED \
-       "Bluetooth, NFC, GPS/B03_Wi-fi_direct On_not connected.png"
-
 #define WIFI_D_ICON_CONNECTED \
-       "Bluetooth, NFC, GPS/B03_Wi-fi_direct On_connected.png"
+       "Bluetooth, NFC, GPS/B03_Wi-fi_direct-On_connected.png"
 
 static const char *icon_path[WIFI_DIRECT_MAX] = {
-       [WIFI_DIRECT_ACTIVATE] = WIFI_D_ICON_NOT_CONNECTED,
-       [WIFI_DIRECT_CONNECTED] = WIFI_D_ICON_CONNECTED,
-       [WIFI_DIRECT_DISCOVERING] = NULL,
-       [WIFI_DIRECT_GROUP_OWNER] = WIFI_D_ICON_CONNECTED,
+       [WIFI_DIRECT_CONNECTED] = WIFI_D_ICON_CONNECTED
 };
 
+
+
 static void set_app_state(void* data)
 {
-       int i = 0;
-
-       for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
-       {
-               wifi_direct[i].ad = data;
-       }
+       wifi_direct.ad = data;
 }
 
+
+
 static void show_icon(void *data, int index)
 {
-       int i = 0;
-
-       if (index < WIFI_DIRECT_ACTIVATE || index >= WIFI_DIRECT_MAX)
-               index = WIFI_DIRECT_ACTIVATE;
+       if (index < WIFI_DIRECT_CONNECTED || index >= WIFI_DIRECT_MAX)
+               index = WIFI_DIRECT_CONNECTED;
 
-       for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
-       {
-               wifi_direct[i].img_obj.data = icon_path[index];
-               indicator_util_icon_show(&wifi_direct[i]);
+       if(prevIndex == index) {
+               return;
        }
+
+       wifi_direct.img_obj.data = icon_path[index];
+       icon_show(&wifi_direct);
+
+       prevIndex = index;
+       util_signal_emit(wifi_direct.ad,"indicator.wifidirect.show","indicator.prog");
 }
 
 static void hide_icon(void)
 {
-       int i = 0;
+       icon_hide(&wifi_direct);
 
-       for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
-       {
-               indicator_util_icon_hide(&wifi_direct[i]);
-       }
+       prevIndex = -1;
+       util_signal_emit(wifi_direct.ad,"indicator.wifidirect.hide","indicator.prog");
 }
 
 static void indicator_wifi_direct_change_cb(keynode_t *node, void *data)
@@ -131,10 +115,9 @@ static void indicator_wifi_direct_change_cb(keynode_t *node, void *data)
 
        retif(data == NULL, , "Invalid parameter!");
 
-       if(indicator_util_get_update_flag()==0)
+       if(icon_get_update_flag()==0)
        {
                updated_while_lcd_off = 1;
-               DBG("need to update %d",updated_while_lcd_off);
                return;
        }
        updated_while_lcd_off = 0;
@@ -142,20 +125,13 @@ static void indicator_wifi_direct_change_cb(keynode_t *node, void *data)
        ret = vconf_get_int(VCONFKEY_WIFI_DIRECT_STATE, &status);
 
        if (ret == OK) {
-               INFO("wifi_direct STATUS: %d", status);
+               DBG("wifi_direct STATUS: %d", status);
 
                switch (status) {
-               case VCONFKEY_WIFI_DIRECT_ACTIVATED:
-                       show_icon(data, WIFI_DIRECT_ACTIVATE);
-                       break;
+               case VCONFKEY_WIFI_DIRECT_GROUP_OWNER:
                case VCONFKEY_WIFI_DIRECT_CONNECTED:
                        show_icon(data, WIFI_DIRECT_CONNECTED);
                        break;
-               case VCONFKEY_WIFI_DIRECT_DISCOVERING:
-                       break;
-               case VCONFKEY_WIFI_DIRECT_GROUP_OWNER:
-                       show_icon(data, WIFI_DIRECT_GROUP_OWNER);
-                       break;
                default:
                        hide_icon();
                        break;
@@ -171,7 +147,6 @@ static int wake_up_cb(void *data)
 {
        if(updated_while_lcd_off==0)
        {
-               DBG("ICON WAS NOT UPDATED");
                return OK;
        }
 
@@ -179,37 +154,30 @@ static int wake_up_cb(void *data)
        return OK;
 }
 
-static void
-indicator_wifi_direct_transfer_change_cb(keynode_t *node, void *data)
+#ifdef _SUPPORT_SCREEN_READER
+static char *access_info_cb(void *data, Evas_Object *obj)
 {
-       int status;
-       int ret;
+       char *tmp = NULL;
+       char buf[256] = {0,};
+       int status = 0;
 
-       retif(data == NULL, , "Invalid parameter!");
-
-       ret = vconf_get_int(VCONFKEY_WIFI_DIRECT_TRANSFER_STATE, &status);
+       vconf_get_int(VCONFKEY_WIFI_DIRECT_STATE, &status);
 
-       if (ret == OK) {
-               INFO("wifi_direct transferring STATUS: %d", status);
-               switch (status) {
-               case VCONFKEY_WIFI_DIRECT_TRANSFER_START:
-                       if (wifi_direct_transferring != EINA_TRUE) {
-                               wifi_direct_transferring = EINA_TRUE;
-                       }
-                       break;
-               case VCONFKEY_WIFI_DIRECT_TRANSFER_FAIL:
-                       if (wifi_direct_transferring == EINA_TRUE) {
-                               wifi_direct_transferring = EINA_FALSE;
-                       }
-                       break;
-               case VCONFKEY_WIFI_DIRECT_TRANSFER_FINISH:
-                       if (wifi_direct_transferring == EINA_TRUE) {
-                               wifi_direct_transferring = EINA_FALSE;
-                       }
-                       break;
-               }
+       switch (status)
+       {
+       case VCONFKEY_WIFI_DIRECT_GROUP_OWNER:
+       case VCONFKEY_WIFI_DIRECT_CONNECTED:
+               snprintf(buf, sizeof(buf), "%s, %s", _("Wi-Fi direct On and Connected"),_("IDS_IDLE_BODY_STATUS_BAR_ITEM"));
+               break;
+       default:
+               break;
        }
+
+       tmp = strdup(buf);
+       if (!tmp) return NULL;
+       return tmp;
 }
+#endif
 
 static int register_wifi_direct_module(void *data)
 {
@@ -220,16 +188,9 @@ static int register_wifi_direct_module(void *data)
        set_app_state(data);
 
        ret = vconf_notify_key_changed(VCONFKEY_WIFI_DIRECT_STATE,
-                                      indicator_wifi_direct_change_cb, data);
-       if (ret != OK)
-               ERR("Failed to register callback! : %s",
-                       VCONFKEY_WIFI_DIRECT_STATE);
-
-       ret = vconf_notify_key_changed(VCONFKEY_WIFI_DIRECT_TRANSFER_STATE,
-                              indicator_wifi_direct_transfer_change_cb, data);
+                                       indicator_wifi_direct_change_cb, data);
 
        indicator_wifi_direct_change_cb(NULL, data);
-       indicator_wifi_direct_transfer_change_cb(NULL, data);
 
        return ret;
 }
@@ -239,18 +200,7 @@ static int unregister_wifi_direct_module(void)
        int ret;
 
        ret = vconf_ignore_key_changed(VCONFKEY_WIFI_DIRECT_STATE,
-                                      indicator_wifi_direct_change_cb);
-       if (ret != OK)
-               ERR("Failed to unregister callback!");
-
-       ret = vconf_ignore_key_changed(VCONFKEY_WIFI_DIRECT_TRANSFER_STATE,
-                              indicator_wifi_direct_transfer_change_cb);
-       if (ret != OK)
-               ERR("Failed to unregister callback!");
-
-       if (wifi_direct_transferring == EINA_TRUE) {
-               wifi_direct_transferring = EINA_FALSE;
-       }
+                                       indicator_wifi_direct_change_cb);
 
-       return OK;
+       return ret;
 }
diff --git a/org.tizen.indicator.efl b/org.tizen.indicator.efl
new file mode 100644 (file)
index 0000000..a536e20
--- /dev/null
@@ -0,0 +1,74 @@
+org.tizen.indicator org.tizen.fm-radio-lite rwx--- ------
+org.tizen.indicator org.tizen.call-ui::vconf rwx--- ------
+org.tizen.indicator deviced::haptic rwx--- ------
+org.tizen.indicator bt-service rw---- ------
+org.tizen.indicator system::use_internet r----l ------
+org.tizen.indicator org.tizen.pwlock rwx--l ------
+org.tizen.indicator org.tizen.oma-dm r-x--l ------
+org.tizen.indicator ail::db rw---l ------
+org.tizen.indicator notification::db rw---l ------
+org.tizen.indicator dbus rwx--l ------
+org.tizen.indicator immvibed rw---l ------
+org.tizen.indicator svi-data r-x--l ------
+org.tizen.indicator sound_server -w---- ------
+org.tizen.indicator email-service --x--- ------
+org.tizen.indicator xorg rwx--- ------
+org.tizen.indicator org.tizen.quickpanel r-x--- ------
+org.tizen.indicator isf r-x--- ------
+org.tizen.indicator stest-service -w---- ------
+org.tizen.indicator libslp-alarm::db rw---- ------
+org.tizen.indicator data-provider-master::notification rw---l ------
+org.tizen.indicator data-provider-master::notification.client -w---- ------
+org.tizen.indicator data-provider-master rw---l ------
+org.tizen.indicator device::sys_logging -w---- ------
+stest-service org.tizen.indicator r-x--l ------
+dbus org.tizen.indicator rwx--- ------
+org.tizen.indicator eas-engine::vconf r----l ------
+org.tizen.indicator system::vconf_inhouse rw---l ------
+org.tizen.indicator system::vconf_setting rw---l ------
+org.tizen.indicator system::vconf_network rw---l ------
+org.tizen.indicator system::vconf_multimedia rw---l ------
+org.tizen.indicator system::vconf_system rw---l ------
+org.tizen.indicator org.tizen.facebook::vconf_sync rw---l ------
+org.tizen.indicator system::vconf_deviced r----l ------
+org.tizen.indicator location_fw::vconf r----l ------
+org.tizen.indicator felicalock r----l ------
+org.tizen.indicator starter::vconf r----l ------
+org.tizen.indicator org.tizen.music-player r----l ------
+org.tizen.indicator org.tizen.voicerecorder r----l ------
+org.tizen.indicator csc-feature r----l ------
+org.tizen.indicator tts-server rwx--l ------
+org.tizen.indicator org.tizen.download-manager::vconf_public r----l ------
+org.tizen.indicator download-provider::vconf_public r----l ------
+org.tizen.indicator pkgmgr::db rw---l ------
+org.tizen.indicator google-pim-sync::vconf_sync_status r----l ------
+org.tizen.indicator cloud-pdm::vconf_sync r----l ------
+org.tizen.indicator org.tizen.setting::private r----l ------
+org.tizen.indicator aul::launch --x--- ------
+org.tizen.indicator bt-service::public -wx--- ------
+org.tizen.indicator org.tizen.music-live-share r----l ------
+org.tizen.indicator app-svc::db rw---l ------
+org.tizen.indicator org.tizen.videos r----l ------
+org.tizen.indicator email::vconf_sync_status rw---l ------
+org.tizen.indicator telephony_framework::vconf rw---l ------
+org.tizen.indicator telephony_framework::api_sim rwx--- ------
+org.tizen.indicator telephony_framework::properties rw---- ------
+org.tizen.indicator telephony_framework::api_network rw---l ------
+org.tizen.indicator ug-setting-call-efl::vconf rw---l ------
+org.tizen.indicator location_fw::client r----l ------
+org.tizen.indicator contacts-service::svc --x--- ------
+org.tizen.indicator system::homedir rwxat- ------
+org.tizen.indicator system::vconf rwxat- ------
+org.tizen.indicator system::media rwxat- ------
+org.tizen.indicator system::share rwxat- ------
+org.tizen.indicator pulseaudio rwxat- ------
+e17 org.tizen.indicator -w---- ------
+org.tizen.indicator device::app_logging -w---- ------
+org.tizen.indicator sys-assert::core rwxat- ------
+org.tizen.indicator privacy-manager::db r----l ------
+org.tizen.indicator system::vconf_privacy rw---- ------
+org.tizen.indicator system::vconf_misc rw---- ------
+org.tizen.indicator ecore::lock rwxat- ------
+org.tizen.indicator tizen::vconf::platform::rw r----- ------
+org.tizen.indicator connman::get rw---- ------ 
+org.tizen.indicator telephony_framework::api_ps_public rw---- ------ 
diff --git a/org.tizen.indicator.manifest b/org.tizen.indicator.manifest
new file mode 100644 (file)
index 0000000..5fa680d
--- /dev/null
@@ -0,0 +1,13 @@
+<manifest>
+       <define>
+               <domain name="org.tizen.indicator"/>
+       </define>
+       <assign>
+               <filesystem path="/etc/init.d/indicator" label="_" exec_label="none"/>
+               <filesystem path="/etc/rc.d/rc5.d/S01indicator" label="_" exec_label="none"/>
+               <filesystem path="/etc/rc.d/rc3.d/S44indicator" label="_" exec_label="none"/>
+       </assign>
+       <request>
+               <domain name="org.tizen.indicator"/>
+       </request>
+</manifest>
diff --git a/org.tizen.indicator.rule b/org.tizen.indicator.rule
new file mode 100755 (executable)
index 0000000..734f432
--- /dev/null
@@ -0,0 +1,43 @@
+org.tizen.indicator system::vconf arwxt
+org.tizen.indicator system::homedir arwxt
+org.tizen.indicator system::use_internet r
+org.tizen.indicator system::media rwxat
+org.tizen.indicator system::share rwxat
+org.tizen.indicator sys-assert::core rwxat
+org.tizen.indicator org.tizen.pwlock rwx
+org.tizen.indicator org.tizen.oma-dm rx
+org.tizen.indicator pulseaudio rwxat
+org.tizen.indicator ail::db rw
+org.tizen.indicator notification::db rw
+org.tizen.indicator dbus rwx
+org.tizen.indicator immvibed rw
+org.tizen.indicator svi-data rx
+org.tizen.indicator sound_server w
+org.tizen.indicator email-service x
+org.tizen.indicator xorg rw
+org.tizen.indicator isf rx
+org.tizen.indicator stest-service w
+org.tizen.indicator libslp-alarm::db rw
+org.tizen.indicator data-provider-master::notification rw
+org.tizen.indicator data-provider-master::notification.client w
+org.tizen.indicator data-provider-master rw
+e17 org.tizen.indicator rw
+stest-service org.tizen.indicator rx
+dbus org.tizen.indicator rwx
+org.tizen.indicator eas-engine::vconf r
+org.tizen.indicator system::vconf_inhouse rwx
+org.tizen.indicator system::vconf_misc rw
+org.tizen.indicator system::vconf_setting r
+org.tizen.indicator system::vconf_network r
+org.tizen.indicator system::vconf_multimedia r
+org.tizen.indicator system::vconf_system rw
+org.tizen.indicator system::vconf_deviced r
+org.tizen.indicator location_fw::vconf rwx
+org.tizen.indicator starter::vconf r
+org.tizen.indicator _ rw
+org.tizen.indicator device::app_logging w
+org.tizen.indicator device::sys_logging w
+org.tizen.indicator e17 rw
+org.tizen.indicator org.tizen.download-manager::vconf_public r
+org.tizen.indicator download-provider::vconf_public r
+org.tizen.indicator pkgmgr::db rw
index b1b53ab..4d9133c 100644 (file)
@@ -1,11 +1,12 @@
 [Unit]
 Description=Start the indicator
-Before=core-efl.target
-After=xorg.target starter.service e17.service
+After=starter.service wm_ready.service smack-default-labeling.service
+Requires=starter.service
 
 [Service]
 ExecStart=/usr/apps/org.tizen.indicator/bin/indicator
+KillSignal=SIGKILL
 
 [Install]
-WantedBy=core-efl.target
+WantedBy=multi-user.target
 
diff --git a/packaging/indicator.service.system b/packaging/indicator.service.system
new file mode 100644 (file)
index 0000000..3ca3e50
--- /dev/null
@@ -0,0 +1,13 @@
+[Unit]
+Description=Start the indicator
+After=launchpad-preload.service wm_ready.service
+
+[Service]
+ExecStart=/usr/apps/org.tizen.indicator/bin/indicator
+Restart=always
+RestartSec=0
+OOMScoreAdjust=200
+EnvironmentFile=/run/tizen-mobile-env
+
+[Install]
+WantedBy=multi-user.target
diff --git a/packaging/org.tizen.indicator.changes b/packaging/org.tizen.indicator.changes
deleted file mode 100644 (file)
index fa0d3b3..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-* Tue Dec 31 2013 Maciej Wereski <m.wereski@partner.samsung.com> accepted/tizen/20130530.164813@f5fb9b0
-- Remove initscripts, label systemd service file
-- smack merge
-- fix battery percentage bug while unlock
-- fix battery percentage display error
-- change notice file
-- Merge "change license version/file" into tizen_2.1
-- change license version/file
-- Merge "fix prevent issue" into tizen_2.1
-- fix prevent issue
-- change license file
-- change license file
-- remove unused vconf
-- remove unused vconf
-- fix indicator touch error
-- fix quickpanel open problem
-- sync with private
-- sync with master
-- merge with master
-- Tizen 2.1 base
-- Initial empty repository
-
diff --git a/packaging/org.tizen.indicator.manifest b/packaging/org.tizen.indicator.manifest
deleted file mode 100644 (file)
index 97e8c31..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<manifest>
-       <request>
-               <domain name="_"/>
-       </request>
-</manifest>
old mode 100755 (executable)
new mode 100644 (file)
index 3b695b0..ccc9b1f
@@ -1,39 +1,63 @@
-%define PREFIX    /usr/apps/%{name}
+%define PKGNAME org.tizen.indicator
+%define PREFIX    /usr/apps/%{PKGNAME}
 %define RESDIR    %{PREFIX}/res
-%define PREFIXRW  /opt/apps/%{name}
+%define PREFIXRW  /opt/usr/apps/%{PKGNAME}
 
 Name:       org.tizen.indicator
-Summary:    Indicator Window
-Version:    0.1.72
+Summary:    indicator window
+Version:    0.2.53
 Release:    1
-Group:      Application Framework/Utilities
-License:    Flora
+Group:      utils
+License:    Apache-2.0
 Source0:    %{name}-%{version}.tar.gz
+Source1:    indicator.service.system
 Source101:  indicator.service
-Source102:  org.tizen.indicator.manifest
-
-BuildRequires:  pkgconfig(capi-appfw-application)
-BuildRequires:  pkgconfig(capi-appfw-app-manager)
-BuildRequires:  pkgconfig(capi-system-runtime-info)
-BuildRequires:  pkgconfig(dlog)
-BuildRequires:  pkgconfig(elementary)
-BuildRequires:  pkgconfig(ecore)
-BuildRequires:  pkgconfig(ecore-x)
-BuildRequires:  pkgconfig(ecore-evas)
-BuildRequires:  pkgconfig(edje)
-BuildRequires:  pkgconfig(evas)
-BuildRequires:  pkgconfig(eina)
-BuildRequires:  pkgconfig(vconf)
-BuildRequires:  pkgconfig(libprivilege-control)
-BuildRequires:  pkgconfig(notification)
-BuildRequires:  pkgconfig(utilX)
-BuildRequires:  pkgconfig(minicontrol-monitor)
-BuildRequires:  pkgconfig(icu-io)
-BuildRequires:  pkgconfig(feedback)
+
+%if "%{?tizen_profile_name}" == "wearable"
+ExcludeArch: %{arm} %ix86 x86_64
+%endif
+
+%if "%{?tizen_profile_name}"=="tv"
+ExcludeArch: %{arm} %ix86 x86_64
+%endif
+
+BuildRequires: pkgconfig(capi-appfw-application)
+BuildRequires: pkgconfig(capi-appfw-app-manager)
+BuildRequires: pkgconfig(capi-system-runtime-info)
+BuildRequires: pkgconfig(capi-network-bluetooth)
+BuildRequires: pkgconfig(capi-appfw-preference)
+BuildRequires: pkgconfig(capi-system-system-settings)
+BuildRequires: pkgconfig(capi-media-player)
+BuildRequires: pkgconfig(capi-media-sound-manager)
+BuildRequires: pkgconfig(capi-media-metadata-extractor)
+BuildRequires: pkgconfig(capi-network-wifi)
+BuildRequires: pkgconfig(capi-ui-efl-util)
+BuildRequires: pkgconfig(appcore-common)
+BuildRequires: pkgconfig(dlog)
+BuildRequires: pkgconfig(elementary)
+BuildRequires: pkgconfig(ecore)
+#BuildRequires: pkgconfig(ecore-x)
+BuildRequires: pkgconfig(ecore-evas)
+BuildRequires: pkgconfig(edje)
+BuildRequires: pkgconfig(evas)
+BuildRequires: pkgconfig(eina)
+BuildRequires: pkgconfig(vconf)
+BuildRequires: pkgconfig(libprivilege-control)
+BuildRequires: pkgconfig(notification)
+#BuildRequires: pkgconfig(utilX)
+BuildRequires: pkgconfig(minicontrol-monitor)
+BuildRequires: pkgconfig(icu-io)
+BuildRequires: pkgconfig(feedback)
+BuildRequires: pkgconfig(pkgmgr-info)
+BuildRequires: pkgconfig(edbus)
+BuildRequires: pkgconfig(efl-assist)
+BuildRequires: pkgconfig(tapi)
+BuildRequires: pkgconfig(message-port)
 
 BuildRequires: cmake
 BuildRequires: edje-tools
 BuildRequires: gettext-tools
+BuildRequires: hash-signer
 
 Requires(post): /usr/bin/vconftool
 %description
@@ -41,42 +65,74 @@ indicator window.
 
 %prep
 %setup -q
-cp %{SOURCE102} .
 
 %build
+%if 0%{?tizen_build_binary_release_type_eng}
+export CFLAGS="$CFLAGS -DTIZEN_ENGINEER_MODE"
+export CXXFLAGS="$CXXFLAGS -DTIZEN_ENGINEER_MODE"
+export FFLAGS="$FFLAGS -DTIZEN_ENGINEER_MODE"
+%endif
+
+%if 0%{?sec_build_binary_debug_enable}
+export CFLAGS="$CFLAGS -DTIZEN_DEBUG_ENABLE"
+export CXXFLAGS="$CXXFLAGS -DTIZEN_DEBUG_ENABLE"
+export FFLAGS="$FFLAGS -DTIZEN_DEBUG_ENABLE"
+%endif
+
 LDFLAGS+="-Wl,--rpath=%{PREFIX}/lib -Wl,--as-needed";export LDFLAGS
-CFLAGS+=" -fvisibility=hidden -fvisibility-inlines-hidden"; export CFLAGS
+CFLAGS+=" -fvisibility=hidden"; export CFLAGS
 CXXFLAGS+=" -fvisibility=hidden -fvisibility-inlines-hidden"; export CXXFLAGS
 FFLAGS+=" -fvisibility=hidden -fvisibility-inlines-hidden"; export FFLAGS
 
-cmake . -DCMAKE_INSTALL_PREFIX=%{PREFIX} -DCMAKE_INSTALL_PREFIXRW=%{PREFIXRW}
+cmake . -DCMAKE_INSTALL_PREFIX=%{PREFIX} -DCMAKE_INSTALL_PREFIXRW=%{PREFIXRW} \
+
+
 make %{?jobs:-j%jobs}
 
 %install
 rm -rf %{buildroot}
 %make_install
 
+mkdir -p %{buildroot}/usr/share/license
+cp -f LICENSE %{buildroot}/usr/share/license/%{PKGNAME}
+
+%define tizen_sign 1
+%define tizen_sign_base /usr/apps/%{PKGNAME}
+%define tizen_sign_level public
+%define tizen_author_sign 1
+%define tizen_dist_sign 1
+
 install -d %{buildroot}%{_libdir}/systemd/user/core-efl.target.wants
 install -m0644 %{SOURCE101} %{buildroot}%{_libdir}/systemd/user/
 ln -sf ../indicator.service %{buildroot}%{_libdir}/systemd/user/core-efl.target.wants/indicator.service
+mkdir -p %{buildroot}%{_libdir}/systemd/system/multi-user.target.wants
+install -m 0644 %SOURCE1 %{buildroot}%{_libdir}/systemd/system/indicator.service
+ln -s ../indicator.service %{buildroot}%{_libdir}/systemd/system/multi-user.target.wants/indicator.service
 
 %clean
 rm -rf %{buildroot}
 
 %post
-vconftool set -t int memory/music/state 0 -i -g 6518 -f
-vconftool set -t bool memory/private/%{name}/started 0 -i -u 5000 -f
-vconftool set -t int memory/private/%{name}/battery_disp 0 -i -u 5000 -f
+vconftool set -t int memory/private/%{PKGNAME}/show_more_noti_port 0 -i -g 6518 -f -s %{PKGNAME}
+
+%postun -p /sbin/ldconfig
 
 %files
 %manifest org.tizen.indicator.manifest
 %defattr(-,root,root,-)
-%license LICENSE.Flora NOTICE
 %{PREFIX}/bin/*
-%{RESDIR}/locale/*
 %{RESDIR}/icons/*
 %{RESDIR}/edje/*
-/usr/share/packages/%{name}.xml
+/usr/share/packages/%{PKGNAME}.xml
 %attr(775,app,app) %{PREFIXRW}/data
+%attr(755,-,-) %{_sysconfdir}/init.d/indicator
 %{_libdir}/systemd/user/core-efl.target.wants/indicator.service
 %{_libdir}/systemd/user/indicator.service
+%{_libdir}/systemd/system/multi-user.target.wants/indicator.service
+%{_libdir}/systemd/system/indicator.service
+/usr/share/license/%{PKGNAME}
+/etc/smack/accesses.d/%{PKGNAME}.efl
+/usr/apps/%{PKGNAME}/author-signature.xml
+/usr/apps/%{PKGNAME}/signature1.xml
+/usr/apps/%{PKGNAME}/shared/res/tables/org.tizen.indicator_ChangeableColorInfo.xml
+/usr/apps/%{PKGNAME}/shared/res/tables/org.tizen.indicator_ChangeableFontInfo.xml
index 2a80bfb..8ebd451 100755 (executable)
--- a/po/hy.po
+++ b/po/hy.po
@@ -2,5 +2,5 @@ msgid "IDS_IDLE_OPT_AM_ABB"
 msgstr "AM"
 
 msgid "IDS_IDLE_OPT_PM_ABB"
-msgstr "PM"
+msgstr "ԿՀ"
 
diff --git a/test/indicator_debug_util.c b/test/indicator_debug_util.c
deleted file mode 100755 (executable)
index f03b8ab..0000000
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * Copyright 2012  Samsung Electronics Co., Ltd
- *
- * Licensed under the Flora License, Version 1.1 (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 <sys/stat.h>
-#include <fcntl.h>
-#include <unistd.h>
-#include <stdarg.h>
-#include <stdlib.h>
-#include <string.h>
-#include <stdio.h>
-#include <time.h>
-
-#ifndef LOGFILE
-#define LOGFILE                DATADIR"/indicator.log"
-#endif
-
-#define MAXSIZE                (1 << 17)
-
-static char buf[512];
-
-void debug_printf(const char *msg, ...)
-{
-       int fd;
-       va_list arg_list;
-       int len;
-       struct tm timeDate = { 0, };
-       time_t ctime;
-       int status;
-       struct stat buffer;
-
-       ctime = time(NULL);
-
-       if (localtime_r(&ctime, &timeDate)) {
-               snprintf(buf, 63, "[%04d/%02d/%02d %02d:%02d:%02d] ",
-                        timeDate.tm_year + 1900, timeDate.tm_mon + 1,
-                        timeDate.tm_mday, timeDate.tm_hour, timeDate.tm_min,
-                        timeDate.tm_sec);
-       }
-
-       len = strlen(buf);
-
-       va_start(arg_list, msg);
-
-       fd = open(LOGFILE, O_WRONLY | O_CREAT | O_APPEND,
-                 S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH);
-       if (fd == -1) {
-               fprintf(stderr, msg, arg_list);
-               goto __CATCH;
-       }
-       status = fstat(fd, &buffer);
-
-       if (!status && (buffer.st_size > MAXSIZE)) {
-               ftruncate(fd, 0);
-       }
-
-       if (len < 0) {
-               goto __CATCH;
-       }
-
-       len += vsnprintf(&buf[len], sizeof(buf), msg, arg_list);
-
-       write(fd, buf, strlen(buf));
-
-__CATCH:
-       if(fd != -1)
-       {
-               close(fd);
-       }
-       va_end(arg_list);
-}
diff --git a/test/indicator_test_util.c b/test/indicator_test_util.c
deleted file mode 100755 (executable)
index 59cda0f..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright 2012  Samsung Electronics Co., Ltd
- *
- * Licensed under the Flora License, Version 1.1 (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 <stdio.h>
-#include <stdlib.h>
-
-#include "common.h"
-#include "indicator_icon_util.h"
-#include "indicator_icon_list.h"
-#include "indicator_ui.h"
-#include "indicator_test_util.h"
-
-int print_indicator_icon_object(Indicator_Icon_Object *obj)
-{
-#ifdef DEBUG_MODE
-       retif(cond, ret, str, args...)(obj == NULL, FAIL, "Invalid parameter!");
-
-       INFO(str, args...)(%s : priority(%d) obj(%x), obj->name, obj->priority,
-                          (unsigned int)obj->obj);
-#endif
-       return OK;
-}
-
-int print_indicator_icon_list(Eina_List *list)
-{
-#ifdef DEBUG_MODE
-       Eina_List *l;
-       void *data;
-
-       retif(list == NULL, FAIL, "Invalid parameter!");
-
-       INFO("*******Indicator_Icon List(%x) *******", (unsigned int)list);
-       EINA_LIST_FOREACH(list, l, data) {
-               if (data) {
-                       print_indicator_icon_object(data);
-               }
-       }
-#endif
-       return OK;
-}