merge from 2.4 , block compile error 65/41065/4 accepted/tizen/mobile/20150623.052942 submit/tizen_mobile/20150623.021839
authorhoejoo lee <hoejoo.lee@samsung.com>
Thu, 11 Jun 2015 05:48:48 +0000 (14:48 +0900)
committerhoejoo lee <hoejoo.lee@samsung.com>
Fri, 12 Jun 2015 07:29:32 +0000 (16:29 +0900)
Change-Id: I2408a20ba7ce2de87ec104341cdb6cb2923017e8

559 files changed:
CMakeLists.txt
LICENSE [new file with mode: 0644]
LICENSE.Flora [deleted file]
NOTICE
daemon/accessibility.c [new file with mode: 0644]
daemon/accessibility.h [new file with mode: 0644]
daemon/common.c
daemon/common.h
daemon/common_uic.c [new file with mode: 0644]
daemon/common_uic.h [new file with mode: 0644]
daemon/common_uic_x11.c [new file with mode: 0644]
daemon/datetime/datetime.c [new file with mode: 0644]
daemon/datetime/datetime.h [new file with mode: 0644]
daemon/datetime/util-time.c [new file with mode: 0644]
daemon/datetime/util-time.h [new file with mode: 0644]
daemon/dbus_utility.c [new file with mode: 0644]
daemon/dbus_utility.h [new file with mode: 0644]
daemon/device/brightness.c
daemon/handler_controller.c [new file with mode: 0644]
daemon/handler_controller.h [new file with mode: 0644]
daemon/idletxt/idletxt.c [deleted file]
daemon/list_util.c
daemon/list_util.h
daemon/media.c
daemon/media.h
daemon/minictrl/minictrl.c
daemon/minictrl/minictrl.h [new file with mode: 0644]
daemon/modules.c
daemon/modules.h
daemon/notifications/activenoti.c [new file with mode: 0644]
daemon/notifications/animated_image.c
daemon/notifications/animated_image.h
daemon/notifications/noti.c
daemon/notifications/noti.h
daemon/notifications/noti_box.c
daemon/notifications/noti_box.h
daemon/notifications/noti_gridbox.c
daemon/notifications/noti_gridbox.h
daemon/notifications/noti_list_item.c
daemon/notifications/noti_list_item.h
daemon/notifications/noti_listbox.c
daemon/notifications/noti_listbox.h
daemon/notifications/noti_node.c
daemon/notifications/noti_node.h
daemon/notifications/noti_section.c
daemon/notifications/noti_section.h
daemon/notifications/noti_util.c
daemon/notifications/noti_util.h
daemon/notifications/noti_view.c [new file with mode: 0644]
daemon/notifications/noti_view.h [new file with mode: 0644]
daemon/notifications/noti_view_boxtype.c [new file with mode: 0644]
daemon/notifications/noti_view_listype.c [new file with mode: 0644]
daemon/notifications/noti_view_ongoing.c [new file with mode: 0644]
daemon/notifications/noti_win.c
daemon/notifications/noti_win.h
daemon/notifications/noti_win_x11.c [new file with mode: 0644]
daemon/notifications/status_msg.c [deleted file]
daemon/notifications/ticker.c [deleted file]
daemon/page/page_base.c [new file with mode: 0644]
daemon/page/page_base.h [new file with mode: 0644]
daemon/page/page_edit.c [new file with mode: 0644]
daemon/page/page_edit.h [new file with mode: 0644]
daemon/page/page_setting_all.c [new file with mode: 0644]
daemon/page/page_setting_all.h [new file with mode: 0644]
daemon/page/pager.c [new file with mode: 0644]
daemon/page/pager.h [new file with mode: 0644]
daemon/page/pager_common.c [new file with mode: 0644]
daemon/page/pager_common.h [new file with mode: 0644]
daemon/page/pager_common_x11.c [new file with mode: 0644]
daemon/preference.c [new file with mode: 0644]
daemon/preference.h [new file with mode: 0644]
daemon/quickpanel-ui.c
daemon/quickpanel-ui.h
daemon/quickpanel-ui_x11.c [new file with mode: 0644]
daemon/service/animated_icon.c [new file with mode: 0644]
daemon/service/animated_icon.h [new file with mode: 0644]
daemon/service/configuration.c [new file with mode: 0644]
daemon/service/configuration.h [new file with mode: 0644]
daemon/service/emergency_mode.c [new file with mode: 0644]
daemon/service/emergency_mode.h [new file with mode: 0644]
daemon/service/keyboard.c [new file with mode: 0644]
daemon/service/keyboard.h [new file with mode: 0644]
daemon/service/keyboard_x.c [new file with mode: 0644]
daemon/service/keyboard_x.h [new file with mode: 0644]
daemon/service/keyboard_x_x11.c [new file with mode: 0644]
daemon/service/noti_led.c
daemon/service/noti_led.h
daemon/service/reminder.c [new file with mode: 0644]
daemon/service/reminder.h [new file with mode: 0644]
daemon/service/smart_alert.c [new file with mode: 0644]
daemon/service/smart_alert.h [new file with mode: 0644]
daemon/service/uninstall.c [new file with mode: 0644]
daemon/service/uninstall.h [new file with mode: 0644]
daemon/settings/modules/assistive_light.c [new file with mode: 0644]
daemon/settings/modules/bluetooth.c [new file with mode: 0644]
daemon/settings/modules/flightmode.c [new file with mode: 0644]
daemon/settings/modules/gps.c [new file with mode: 0644]
daemon/settings/modules/mobile_data.c [new file with mode: 0644]
daemon/settings/modules/rotate-lock.c [new file with mode: 0644]
daemon/settings/modules/sound-profile.c [new file with mode: 0644]
daemon/settings/modules/tethering.c [new file with mode: 0644]
daemon/settings/modules/ultra_power_saving.c [new file with mode: 0644]
daemon/settings/modules/wifi.c [new file with mode: 0644]
daemon/settings/setting_module_api.c [new file with mode: 0644]
daemon/settings/setting_module_api.h [new file with mode: 0644]
daemon/settings/setting_utils.c [new file with mode: 0644]
daemon/settings/setting_utils.h [new file with mode: 0644]
daemon/settings/setting_utils_x11.c [new file with mode: 0644]
daemon/settings/settings.c [new file with mode: 0644]
daemon/settings/settings.h [new file with mode: 0644]
daemon/settings/settings_gridbox.c [new file with mode: 0644]
daemon/settings/settings_gridbox.h [new file with mode: 0644]
daemon/settings/settings_icon_common.c [new file with mode: 0644]
daemon/settings/settings_icon_common.h [new file with mode: 0644]
daemon/settings/settings_ipc.c [new file with mode: 0644]
daemon/settings/settings_ipc.h [new file with mode: 0644]
daemon/settings/settings_view_all.c [new file with mode: 0644]
daemon/settings/settings_view_all.h [new file with mode: 0644]
daemon/settings/settings_view_featured.c [new file with mode: 0644]
daemon/settings/settings_view_featured.h [new file with mode: 0644]
daemon/sim_controller.c [new file with mode: 0644]
daemon/sim_controller.h [new file with mode: 0644]
daemon/vi/vi_manager.c [new file with mode: 0644]
daemon/vi/vi_manager.h [new file with mode: 0644]
data/CMakeLists.txt
data/color_classes.edc [new file with mode: 0644]
data/images/B31_help_tap_1_default.png [new file with mode: 0644]
data/images/B32_help_start_right_01.png [new file with mode: 0644]
data/images/B32_help_start_right_02.png [new file with mode: 0644]
data/images/B32_help_start_right_03.png [new file with mode: 0644]
data/images/B32_help_start_right_04.png [new file with mode: 0644]
data/images/B32_notification_tray_effect_bg_01.png [new file with mode: 0644]
data/images/B32_notification_tray_effect_l_bg.png [new file with mode: 0644]
data/images/bg_press.#.png [new file with mode: 0644]
data/images/core_activity_Indicator_medium_00.png [new file with mode: 0644]
data/images/core_activity_Indicator_medium_01.png [new file with mode: 0644]
data/images/core_activity_Indicator_medium_02.png [new file with mode: 0644]
data/images/core_activity_Indicator_medium_03.png [new file with mode: 0644]
data/images/core_activity_Indicator_medium_04.png [new file with mode: 0644]
data/images/core_activity_Indicator_medium_05.png [new file with mode: 0644]
data/images/core_activity_Indicator_medium_06.png [new file with mode: 0644]
data/images/core_activity_Indicator_medium_07.png [new file with mode: 0644]
data/images/core_activity_Indicator_medium_08.png [new file with mode: 0644]
data/images/core_activity_Indicator_medium_09.png [new file with mode: 0644]
data/images/core_activity_Indicator_medium_10.png [new file with mode: 0644]
data/images/core_activity_Indicator_medium_11.png [new file with mode: 0644]
data/images/core_activity_Indicator_medium_12.png [new file with mode: 0644]
data/images/core_activity_Indicator_medium_13.png [new file with mode: 0644]
data/images/core_activity_Indicator_medium_14.png [new file with mode: 0644]
data/images/core_activity_Indicator_medium_15.png [new file with mode: 0644]
data/images/core_activity_Indicator_medium_16.png [new file with mode: 0644]
data/images/core_activity_Indicator_medium_17.png [new file with mode: 0644]
data/images/core_activity_Indicator_medium_18.png [new file with mode: 0644]
data/images/core_activity_Indicator_medium_19.png [new file with mode: 0644]
data/images/core_activity_Indicator_medium_20.png [new file with mode: 0644]
data/images/core_activity_Indicator_medium_21.png [new file with mode: 0644]
data/images/core_activity_Indicator_medium_22.png [new file with mode: 0644]
data/images/core_activity_Indicator_medium_23.png [new file with mode: 0644]
data/images/core_activity_Indicator_medium_24.png [new file with mode: 0644]
data/images/core_activity_Indicator_medium_25.png [new file with mode: 0644]
data/images/core_activity_Indicator_medium_26.png [new file with mode: 0644]
data/images/core_activity_Indicator_medium_27.png [new file with mode: 0644]
data/images/core_activity_Indicator_medium_28.png [new file with mode: 0644]
data/images/core_activity_Indicator_medium_29.png [new file with mode: 0644]
data/images/core_icon_badge_container.#.png [new file with mode: 0644]
data/images/core_list_button_bg.#.png [new file with mode: 0644]
data/images/core_probress_bar.#.png [new file with mode: 0644]
data/images/core_probress_bar.png [new file with mode: 0644]
data/images/core_probressbar_bg.#.png [new file with mode: 0644]
data/images/core_progress_bar.#.png [new file with mode: 0644]
data/images/core_progress_bar.png [new file with mode: 0644]
data/images/core_progressbar_bg.#.png [new file with mode: 0644]
data/images/core_progressbar_bg.png [new file with mode: 0644]
data/images/core_slider_center_point_bg.png [new file with mode: 0644]
data/images/core_slider_handle_normal.png [new file with mode: 0644]
data/images/core_slider_handle_press.png [new file with mode: 0644]
data/images/core_theme_bg_01.png [new file with mode: 0644]
data/images/handler_bg.#.png [new file with mode: 0644]
data/images/handler_bg_ef.#.png [new file with mode: 0644]
data/images/handler_btn.png [new file with mode: 0644]
data/images/handler_btn_02.png [new file with mode: 0644]
data/images/icon_arrow_down.png [new file with mode: 0644]
data/images/icon_arrow_up.png [new file with mode: 0644]
data/images/icon_bg.png [new file with mode: 0644]
data/images/icon_bg_press.png [new file with mode: 0644]
data/images/icon_bg_small.png [new file with mode: 0644]
data/images/icon_edit.png [new file with mode: 0644]
data/images/icon_indicator_setting.png [new file with mode: 0644]
data/images/icon_search.png [new file with mode: 0644]
data/images/icon_settings.png [new file with mode: 0644]
data/images/line_indicator_divider.png [new file with mode: 0644]
data/images/quick_btn_close_white_dim.png [new file with mode: 0644]
data/images/quick_btn_close_white_nor.png [new file with mode: 0644]
data/images/quick_btn_close_white_press.png [new file with mode: 0644]
data/images/quick_button_each_bg.png [new file with mode: 0644]
data/images/quick_button_each_bg_land.png [new file with mode: 0644]
data/images/quick_button_each_ef.png [new file with mode: 0644]
data/images/quick_button_each_ef_land.png [new file with mode: 0644]
data/images/quick_button_over.png [new file with mode: 0644]
data/images/quick_button_over_land.png [new file with mode: 0644]
data/images/quick_handle.png [new file with mode: 0644]
data/images/quick_icon_brightness.png [new file with mode: 0644]
data/images/quick_icon_brightness_00.png [new file with mode: 0644]
data/images/quick_icon_brightness_01.png [new file with mode: 0644]
data/images/quick_icon_brightness_02.png [new file with mode: 0644]
data/images/quick_icon_brightness_03.png [new file with mode: 0644]
data/images/quick_icon_brightness_04.png [new file with mode: 0644]
data/images/quick_icon_brightness_05.png [new file with mode: 0644]
data/images/quick_icon_brightness_06.png [new file with mode: 0644]
data/images/quick_icon_brightness_07.png [new file with mode: 0644]
data/images/quick_icon_brightness_08.png [new file with mode: 0644]
data/images/quick_icon_brightness_09.png [new file with mode: 0644]
data/images/quick_icon_brightness_10.png [new file with mode: 0644]
data/images/quick_icon_brightness_11.png [new file with mode: 0644]
data/images/quick_menu_divide.png [new file with mode: 0644]
data/images/quick_menu_divide_highlight.png [new file with mode: 0644]
data/images/quick_menu_touch.png [new file with mode: 0644]
data/images/quick_standard_btn_focus.9.png [new file with mode: 0644]
data/images/quick_standard_btn_nor.9.png [new file with mode: 0644]
data/images/quick_standard_btn_nor.png [new file with mode: 0644]
data/images/quick_standard_btn_press.9.png [new file with mode: 0644]
data/images/toggle_mw_bg_nor.png [new file with mode: 0644]
data/images/toggle_mw_bg_touch.png [new file with mode: 0644]
data/images_icon/Q02_Notification_brightness.png [moved from data/icons/Q02_Notification_brightness.png with 100% similarity, mode: 0644]
data/images_icon/Q02_Notification_multi_window.png [new file with mode: 0644]
data/images_icon/Q02_Notification_update.png [new file with mode: 0644]
data/images_icon/btn_mw_circlization_dim.png [new file with mode: 0644]
data/images_icon/btn_mw_circlization_nor.png [new file with mode: 0644]
data/images_icon/btn_mw_circlization_press.png [new file with mode: 0644]
data/images_icon/btn_mw_close_nor.png [new file with mode: 0644]
data/images_icon/btn_mw_close_press.png [new file with mode: 0644]
data/images_icon/btn_mw_squarization_dim.png [new file with mode: 0644]
data/images_icon/btn_mw_squarization_nor.png [new file with mode: 0644]
data/images_icon/btn_mw_squarization_press.png [new file with mode: 0644]
data/images_icon/noti_download_01.png [new file with mode: 0644]
data/images_icon/noti_download_02.png [new file with mode: 0644]
data/images_icon/noti_download_03.png [new file with mode: 0644]
data/images_icon/noti_download_04.png [new file with mode: 0644]
data/images_icon/noti_download_05.png [new file with mode: 0644]
data/images_icon/noti_download_complete.png [new file with mode: 0644]
data/images_icon/noti_install_01.png [new file with mode: 0644]
data/images_icon/noti_install_02.png [new file with mode: 0644]
data/images_icon/noti_install_03.png [new file with mode: 0644]
data/images_icon/noti_install_04.png [new file with mode: 0644]
data/images_icon/noti_install_05.png [new file with mode: 0644]
data/images_icon/noti_install_complete.png [new file with mode: 0644]
data/images_icon/noti_upload_01.png [new file with mode: 0644]
data/images_icon/noti_upload_02.png [new file with mode: 0644]
data/images_icon/noti_upload_03.png [new file with mode: 0644]
data/images_icon/noti_upload_04.png [new file with mode: 0644]
data/images_icon/noti_upload_05.png [new file with mode: 0644]
data/images_icon/noti_upload_complete.png [new file with mode: 0644]
data/images_icon/quick_button_icon_bg.png [new file with mode: 0644]
data/images_icon/quick_icon_allshare.png [new file with mode: 0644]
data/images_icon/quick_icon_auto_rotate.png [new file with mode: 0644]
data/images_icon/quick_icon_blocking_mode.png [new file with mode: 0644]
data/images_icon/quick_icon_bluetooth.png [new file with mode: 0644]
data/images_icon/quick_icon_command.png [new file with mode: 0644]
data/images_icon/quick_icon_downloadbooster_off.png [new file with mode: 0644]
data/images_icon/quick_icon_driving.png [new file with mode: 0644]
data/images_icon/quick_icon_flightmode.png [new file with mode: 0644]
data/images_icon/quick_icon_glovemode.png [new file with mode: 0644]
data/images_icon/quick_icon_gps.png [new file with mode: 0644]
data/images_icon/quick_icon_location.png [new file with mode: 0644]
data/images_icon/quick_icon_mirroring.png [new file with mode: 0644]
data/images_icon/quick_icon_mobile_data.png [new file with mode: 0644]
data/images_icon/quick_icon_multi_window.png [new file with mode: 0644]
data/images_icon/quick_icon_nfc.png [new file with mode: 0644]
data/images_icon/quick_icon_personal_mode.png [new file with mode: 0644]
data/images_icon/quick_icon_power_saving.png [new file with mode: 0644]
data/images_icon/quick_icon_private_mode.png [new file with mode: 0644]
data/images_icon/quick_icon_ready_to_share.png [new file with mode: 0644]
data/images_icon/quick_icon_sbeam.png [new file with mode: 0644]
data/images_icon/quick_icon_sf_vf.png [new file with mode: 0644]
data/images_icon/quick_icon_sf_vn.png [new file with mode: 0644]
data/images_icon/quick_icon_smart_stay.png [new file with mode: 0644]
data/images_icon/quick_icon_sn_vf.png [new file with mode: 0644]
data/images_icon/quick_icon_sn_vn.png [new file with mode: 0644]
data/images_icon/quick_icon_sync.png [new file with mode: 0644]
data/images_icon/quick_icon_torch.png [new file with mode: 0644]
data/images_icon/quick_icon_ultra_power_saving.png [new file with mode: 0644]
data/images_icon/quick_icon_wifi.png [new file with mode: 0644]
data/images_icon/quick_icon_wifi_tethering.png [new file with mode: 0644]
data/images_icon/quick_standard_btn_nor.png [moved from data/icons/quick_standard_btn_nor.png with 100% similarity, mode: 0644]
data/images_icon/quick_standard_btn_press.png [moved from data/icons/quick_standard_btn_press.png with 100% similarity, mode: 0644]
data/images_icon/toggle_mw_hide_nor.png [new file with mode: 0644]
data/images_icon/toggle_mw_hide_press.png [new file with mode: 0644]
data/images_icon/toggle_mw_show_nor.png [new file with mode: 0644]
data/images_icon/toggle_mw_show_press.png [new file with mode: 0644]
data/images_noti_icons/Account/noti_account_samsung.png [new file with mode: 0644]
data/images_noti_icons/Account/noti_account_tizen.png [new file with mode: 0644]
data/images_noti_icons/Bluetooth/noti_bluetooth.png [new file with mode: 0644]
data/images_noti_icons/Bluetooth/noti_bluetooth_activated.png [new file with mode: 0644]
data/images_noti_icons/Bluetooth/noti_bluetooth_fail.png [new file with mode: 0644]
data/images_noti_icons/Bluetooth/noti_bluetooth_not_connected.png [new file with mode: 0644]
data/images_noti_icons/Calendar/noti_calendar.png [new file with mode: 0644]
data/images_noti_icons/Calendar/noti_calendar_alarm.png [new file with mode: 0644]
data/images_noti_icons/Clock/noti_clock_snooze.png [new file with mode: 0644]
data/images_noti_icons/Common/noti_download_01.png [new file with mode: 0644]
data/images_noti_icons/Common/noti_download_02.png [new file with mode: 0644]
data/images_noti_icons/Common/noti_download_03.png [new file with mode: 0644]
data/images_noti_icons/Common/noti_download_04.png [new file with mode: 0644]
data/images_noti_icons/Common/noti_download_05.png [new file with mode: 0644]
data/images_noti_icons/Common/noti_download_complete.png [new file with mode: 0644]
data/images_noti_icons/Common/noti_download_failed.png [new file with mode: 0644]
data/images_noti_icons/Common/noti_syncing.png [new file with mode: 0644]
data/images_noti_icons/Common/noti_upload_01.png [new file with mode: 0644]
data/images_noti_icons/Common/noti_upload_02.png [new file with mode: 0644]
data/images_noti_icons/Common/noti_upload_03.png [new file with mode: 0644]
data/images_noti_icons/Common/noti_upload_04.png [new file with mode: 0644]
data/images_noti_icons/Common/noti_upload_05.png [new file with mode: 0644]
data/images_noti_icons/Common/noti_upload_complete.png [new file with mode: 0644]
data/images_noti_icons/Common/noti_upload_failed.png [new file with mode: 0644]
data/images_noti_icons/Contact/noti_contact_default.png [new file with mode: 0644]
data/images_noti_icons/Drop box/moti_dropbox.png [new file with mode: 0644]
data/images_noti_icons/E-mail/noti_email.png [new file with mode: 0644]
data/images_noti_icons/E-mail/noti_email_delivery_report.png [new file with mode: 0644]
data/images_noti_icons/E-mail/noti_email_read_report.png [new file with mode: 0644]
data/images_noti_icons/E-mail/noti_email_scheduled.png [new file with mode: 0644]
data/images_noti_icons/E-mail/noti_email_sent.png [new file with mode: 0644]
data/images_noti_icons/Etc/Icon_tethering_unknown_usb_fail.png [new file with mode: 0644]
data/images_noti_icons/Etc/noti_accessory_connected.png [new file with mode: 0644]
data/images_noti_icons/Etc/noti_all_connected.png [new file with mode: 0644]
data/images_noti_icons/Etc/noti_auto_rejected.png [new file with mode: 0644]
data/images_noti_icons/Etc/noti_backup.png [new file with mode: 0644]
data/images_noti_icons/Etc/noti_battery_charge.png [new file with mode: 0644]
data/images_noti_icons/Etc/noti_battery_loading.png [new file with mode: 0644]
data/images_noti_icons/Etc/noti_bluetooth_download.png [new file with mode: 0644]
data/images_noti_icons/Etc/noti_camera_connected.png [new file with mode: 0644]
data/images_noti_icons/Etc/noti_chat.png [new file with mode: 0644]
data/images_noti_icons/Etc/noti_data_usage_warning.png [new file with mode: 0644]
data/images_noti_icons/Etc/noti_desktop_mode.png [new file with mode: 0644]
data/images_noti_icons/Etc/noti_dormant_mode.png [new file with mode: 0644]
data/images_noti_icons/Etc/noti_download_booster.png [new file with mode: 0644]
data/images_noti_icons/Etc/noti_ecb_mode.png [new file with mode: 0644]
data/images_noti_icons/Etc/noti_error.png [new file with mode: 0644]
data/images_noti_icons/Etc/noti_firewall_activated.png [new file with mode: 0644]
data/images_noti_icons/Etc/noti_fm_radio.png [new file with mode: 0644]
data/images_noti_icons/Etc/noti_fota.png [new file with mode: 0644]
data/images_noti_icons/Etc/noti_fota_completion.png [new file with mode: 0644]
data/images_noti_icons/Etc/noti_fota_postpone.png [new file with mode: 0644]
data/images_noti_icons/Etc/noti_gqs_on.png [new file with mode: 0644]
data/images_noti_icons/Etc/noti_gqs_searching.png [new file with mode: 0644]
data/images_noti_icons/Etc/noti_im.png [new file with mode: 0644]
data/images_noti_icons/Etc/noti_install_01.png [new file with mode: 0644]
data/images_noti_icons/Etc/noti_install_02.png [new file with mode: 0644]
data/images_noti_icons/Etc/noti_install_03.png [new file with mode: 0644]
data/images_noti_icons/Etc/noti_install_04.png [new file with mode: 0644]
data/images_noti_icons/Etc/noti_install_05.png [new file with mode: 0644]
data/images_noti_icons/Etc/noti_install_complete.png [new file with mode: 0644]
data/images_noti_icons/Etc/noti_install_failed.png [new file with mode: 0644]
data/images_noti_icons/Etc/noti_keyboard.png [new file with mode: 0644]
data/images_noti_icons/Etc/noti_keyboard_connected.png [new file with mode: 0644]
data/images_noti_icons/Etc/noti_mms_delivery_report.png [new file with mode: 0644]
data/images_noti_icons/Etc/noti_mms_failed.png [new file with mode: 0644]
data/images_noti_icons/Etc/noti_mms_problem.png [new file with mode: 0644]
data/images_noti_icons/Etc/noti_multi_email.png [new file with mode: 0644]
data/images_noti_icons/Etc/noti_multi_window.png [new file with mode: 0644]
data/images_noti_icons/Etc/noti_multiple_devices_connected.png [new file with mode: 0644]
data/images_noti_icons/Etc/noti_near_by_device.png [new file with mode: 0644]
data/images_noti_icons/Etc/noti_no_sim_full.png [new file with mode: 0644]
data/images_noti_icons/Etc/noti_print.png [new file with mode: 0644]
data/images_noti_icons/Etc/noti_print_waiting.png [new file with mode: 0644]
data/images_noti_icons/Etc/noti_rcs_chat.png [new file with mode: 0644]
data/images_noti_icons/Etc/noti_rcs_file_transfer.png [new file with mode: 0644]
data/images_noti_icons/Etc/noti_safe_mode.png [new file with mode: 0644]
data/images_noti_icons/Etc/noti_screen_recorder.png [new file with mode: 0644]
data/images_noti_icons/Etc/noti_screen_recorder_dim.png [new file with mode: 0644]
data/images_noti_icons/Etc/noti_sd_card.png [new file with mode: 0644]
data/images_noti_icons/Etc/noti_sd_card_decryption.png [new file with mode: 0644]
data/images_noti_icons/Etc/noti_sd_card_encryption.png [new file with mode: 0644]
data/images_noti_icons/Etc/noti_sd_card_encryption_error.png [new file with mode: 0644]
data/images_noti_icons/Etc/noti_sd_card_error.png [new file with mode: 0644]
data/images_noti_icons/Etc/noti_sd_card_prepare.png [new file with mode: 0644]
data/images_noti_icons/Etc/noti_sd_card_removed.png [new file with mode: 0644]
data/images_noti_icons/Etc/noti_shareshot_receive.png [new file with mode: 0644]
data/images_noti_icons/Etc/noti_shareshot_receive_problem.png [new file with mode: 0644]
data/images_noti_icons/Etc/noti_shareshot_send.png [new file with mode: 0644]
data/images_noti_icons/Etc/noti_shareshot_send_problem.png [new file with mode: 0644]
data/images_noti_icons/Etc/noti_side_sync.png [new file with mode: 0644]
data/images_noti_icons/Etc/noti_sim_toolkit.png [new file with mode: 0644]
data/images_noti_icons/Etc/noti_smart_stay.png [new file with mode: 0644]
data/images_noti_icons/Etc/noti_smemo_sync.png [new file with mode: 0644]
data/images_noti_icons/Etc/noti_spen.png [new file with mode: 0644]
data/images_noti_icons/Etc/noti_sync_error.png [new file with mode: 0644]
data/images_noti_icons/Etc/noti_tethering_usb_fail.png [new file with mode: 0644]
data/images_noti_icons/Etc/noti_tty_mode.png [new file with mode: 0644]
data/images_noti_icons/Etc/noti_tv.png [new file with mode: 0644]
data/images_noti_icons/Etc/noti_updated_complete.png [new file with mode: 0644]
data/images_noti_icons/Etc/noti_updated_failed.png [new file with mode: 0644]
data/images_noti_icons/Etc/noti_usb_connected.png [new file with mode: 0644]
data/images_noti_icons/Etc/noti_usb_fail.png [new file with mode: 0644]
data/images_noti_icons/Etc/noti_usb_mass_storage_connected.png [new file with mode: 0644]
data/images_noti_icons/Etc/noti_usb_unknown_fail.png [new file with mode: 0644]
data/images_noti_icons/Etc/noti_video.png [new file with mode: 0644]
data/images_noti_icons/Etc/noti_voice_mail.png [new file with mode: 0644]
data/images_noti_icons/Etc/noti_voice_mail_01.png [new file with mode: 0644]
data/images_noti_icons/Etc/noti_voice_mail_02.png [new file with mode: 0644]
data/images_noti_icons/Etc/noti_voice_mail_03.png [new file with mode: 0644]
data/images_noti_icons/Etc/noti_voice_memo.png [new file with mode: 0644]
data/images_noti_icons/Etc/noti_voice_recorder_paused.png [new file with mode: 0644]
data/images_noti_icons/Etc/noti_voice_recorder_play.png [new file with mode: 0644]
data/images_noti_icons/Etc/noti_wifi_translate.png [new file with mode: 0644]
data/images_noti_icons/FOTA/noti_fota.png [new file with mode: 0644]
data/images_noti_icons/FOTA/noti_fota_completion.png [new file with mode: 0644]
data/images_noti_icons/FOTA/noti_fota_diagmon.png [new file with mode: 0644]
data/images_noti_icons/FOTA/noti_fota_diagmon_completion.png [new file with mode: 0644]
data/images_noti_icons/FOTA/noti_fota_postpone.png [new file with mode: 0644]
data/images_noti_icons/Facebook/noti_facebook.png [new file with mode: 0644]
data/images_noti_icons/Facebook/noti_facebook_female_default.png [new file with mode: 0644]
data/images_noti_icons/Facebook/noti_facebook_male_default.png [new file with mode: 0644]
data/images_noti_icons/Find my mobile/noti_FMM_call_log.png [new file with mode: 0644]
data/images_noti_icons/Find my mobile/noti_FMM_device_located.png [new file with mode: 0644]
data/images_noti_icons/Find my mobile/noti_FMM_device_unlocked.png [new file with mode: 0644]
data/images_noti_icons/Gallery/noti_gallery_image.png [new file with mode: 0644]
data/images_noti_icons/Gallery/noti_gallery_image_error.png [new file with mode: 0644]
data/images_noti_icons/Internet/noti_internet_flightmode.png [new file with mode: 0644]
data/images_noti_icons/Lock screen/noti_message.png [new file with mode: 0644]
data/images_noti_icons/Lock screen/noti_missed_call.png [new file with mode: 0644]
data/images_noti_icons/Low battery&charge/noti_battery_fully_charging.png [new file with mode: 0644]
data/images_noti_icons/Low battery&charge/noti_charging_battery_low.png [new file with mode: 0644]
data/images_noti_icons/Low battery&charge/noti_charging_cable_disconnected.png [new file with mode: 0644]
data/images_noti_icons/Message/noti_message.png [new file with mode: 0644]
data/images_noti_icons/Message/noti_message_OTA.png [new file with mode: 0644]
data/images_noti_icons/Message/noti_message_cb-msg.png [new file with mode: 0644]
data/images_noti_icons/Message/noti_message_delivery_report.png [new file with mode: 0644]
data/images_noti_icons/Message/noti_message_failed.png [new file with mode: 0644]
data/images_noti_icons/Message/noti_message_mms_failed.png [new file with mode: 0644]
data/images_noti_icons/Message/noti_message_mms_problem.png [new file with mode: 0644]
data/images_noti_icons/Message/noti_message_read_report.png [new file with mode: 0644]
data/images_noti_icons/Message/noti_message_reply.png [new file with mode: 0644]
data/images_noti_icons/Message/noti_message_scheduled.png [new file with mode: 0644]
data/images_noti_icons/Message/noti_message_sending.png [new file with mode: 0644]
data/images_noti_icons/Message/noti_message_sim-card.png [new file with mode: 0644]
data/images_noti_icons/Message/noti_mms.png [new file with mode: 0644]
data/images_noti_icons/Message/noti_voice_mail.png [new file with mode: 0644]
data/images_noti_icons/Multi SIM/noti_no_sim.png [new file with mode: 0644]
data/images_noti_icons/Multi SIM/noti_sim_full.png [new file with mode: 0644]
data/images_noti_icons/Patterns/noti_cooling_down.png [new file with mode: 0644]
data/images_noti_icons/Patterns/noti_screen_captured.png [new file with mode: 0644]
data/images_noti_icons/Private mode/noti_private_mode.png [new file with mode: 0644]
data/images_noti_icons/Send help messages/noti_icon_emergency.png [new file with mode: 0644]
data/images_noti_icons/Send help messages/noti_send_emergency_msg.png [new file with mode: 0644]
data/images_noti_icons/Share with contents/noti_icon_Id_default.png [new file with mode: 0644]
data/images_noti_icons/Tethering/noti_tethering.png [new file with mode: 0644]
data/images_noti_icons/Tethering/noti_tethering_all.png [new file with mode: 0644]
data/images_noti_icons/Tethering/noti_tethering_bt.png [new file with mode: 0644]
data/images_noti_icons/Tethering/noti_tethering_usb.png [new file with mode: 0644]
data/images_noti_icons/Tethering/noti_tethering_wifi.png [new file with mode: 0644]
data/images_noti_icons/Tizen store/noti_tizen_store.png [new file with mode: 0644]
data/images_noti_icons/Wi-Fi/noti_wifi.png [new file with mode: 0644]
data/images_noti_icons/Wi-Fi/noti_wifi_availablility_check1.png [new file with mode: 0644]
data/images_noti_icons/Wi-Fi/noti_wifi_direct.png [new file with mode: 0644]
data/images_noti_icons/Wi-Fi/noti_wifi_direct_auto_off.png [new file with mode: 0644]
data/images_noti_icons/Wi-Fi/noti_wifi_in_range.png [new file with mode: 0644]
data/images_noti_icons/Wi-Fi/noti_wifi_network_available.png [new file with mode: 0644]
data/images_noti_icons/Wi-Fi/noti_wifi_no_detected.png [new file with mode: 0644]
data/images_noti_icons/Wi-Fi/noti_wifi_no_sign.png [new file with mode: 0644]
data/images_noti_icons/Wi-Fi/noti_wifi_translate.png [new file with mode: 0644]
data/quickpanel [new file with mode: 0644]
data/quickpanel.edc
data/quickpanel.png [deleted file]
data/quickpanel.sh.in [new file with mode: 0644]
data/quickpanel.xml.in
data/quickpanel_activenoti.edc [new file with mode: 0644]
data/quickpanel_animated_icon.edc [new file with mode: 0644]
data/quickpanel_brightness.edc
data/quickpanel_datetime.edc [new file with mode: 0644]
data/quickpanel_def.h
data/quickpanel_images.edc [new file with mode: 0644]
data/quickpanel_listbox.edc
data/quickpanel_listitem_noti.edc [new file with mode: 0644]
data/quickpanel_listitem_noti_legacy.edc [new file with mode: 0644]
data/quickpanel_listitem_ongoing.edc [new file with mode: 0644]
data/quickpanel_minictrl.edc
data/quickpanel_noti_section.edc
data/quickpanel_notibox.edc
data/quickpanel_page_edit.edc [new file with mode: 0644]
data/quickpanel_page_setting_all.edc [new file with mode: 0644]
data/quickpanel_setting.edc [new file with mode: 0644]
data/quickpanel_spn.edc [deleted file]
data/quickpanel_textblock_slide_style.edc [new file with mode: 0644]
data/quickpanel_theme.edc
data/quickpanel_theme_element.edc [deleted file]
data/quickpanel_theme_progressbar.edc [new file with mode: 0644]
data/quickpanel_theme_slider.edc [new file with mode: 0644]
data/sip.wav [deleted file]
debian/changelog [deleted file]
debian/compat [deleted file]
debian/control [deleted file]
debian/org.tizen.quickpanel.install.in [deleted file]
debian/org.tizen.quickpanel.postinst.in [deleted file]
debian/rules [deleted file]
icons/settings_noti_panel.png [new file with mode: 0644]
org.tizen.quickpanel.efl [new file with mode: 0644]
org.tizen.quickpanel.manifest [new file with mode: 0644]
packaging/org.tizen.quickpanel.changes [deleted file]
packaging/org.tizen.quickpanel.manifest [deleted file]
packaging/org.tizen.quickpanel.spec
packaging/quickpanel-system.service [new file with mode: 0644]
packaging/quickpanel.service [deleted file]
po/CMakeLists.txt
po/ar.po
po/az.po
po/bg.po
po/ca.po
po/cs.po
po/da.po
po/de.po [new file with mode: 0644]
po/de_DE.po [deleted file]
po/el_GR.po
po/en.po
po/en_PH.po
po/en_US.po
po/es_ES.po
po/es_MX.po [deleted file]
po/es_US.po [new file with mode: 0644]
po/et.po
po/eu.po
po/fi.po
po/fr.po [new file with mode: 0644]
po/fr_CA.po
po/fr_FR.po [deleted file]
po/ga.po
po/gl.po
po/hi.po
po/hr.po
po/hu.po
po/hy.po
po/is.po
po/it_IT.po
po/ja_JP.po
po/ka.po
po/kk.po
po/ko_KR.po
po/lt.po
po/lv.po
po/mk.po
po/nb.po
po/nl.po [new file with mode: 0644]
po/nl_NL.po [deleted file]
po/pl.po
po/pt_BR.po
po/pt_PT.po
po/ro.po
po/ru_RU.po
po/sk.po
po/sl.po
po/sr.po
po/sv.po
po/tr_TR.po
po/uk.po
po/uz.po
po/zh_CN.po
po/zh_HK.po
po/zh_SG.po [deleted file]
po/zh_TW.po
test/quickpanel_debug_util.c
test/quickpanel_debug_util.h

index 1c09a7b..229c91d 100644 (file)
@@ -1,10 +1,6 @@
 CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
 PROJECT(quickpanel C)
 
-FILE(GLOB_RECURSE DAEMON_SRCS daemon/*.c)
-AUX_SOURCE_DIRECTORY(${CMAKE_CURRENT_SOURCE_DIR}/test TEST_SRCS)
-SET(SRCS ${DAEMON_SRCS} ${TEST_SRCS})
-
 SET(VENDOR "org.tizen")
 SET(PACKAGE ${PROJECT_NAME})
 SET(PKGNAME "${VENDOR}.${PACKAGE}")
@@ -15,8 +11,10 @@ SET(LOCALEDIR "${RESDIR}/locale")
 SET(ICONDIR "${RESDIR}/icons")
 SET(EDJDIR "${RESDIR}/edje")
 SET(DATADIR "${PREFIX}/data")
+SET(DATADIR_RW "${PREFIX_RW}/data")
 SET(DESKTOPDIR "/usr/share/applications")
 SET(MANIFESTXMLDIR "/usr/share/packages")
+SET(SHARED_DIR "${PREFIX}/shared/res")
 
 IF("${CMAKE_BUILD_TYPE}" STREQUAL "")
        SET(CMAKE_BUILD_TYPE "Release")
@@ -25,46 +23,77 @@ MESSAGE("Build type: ${CMAKE_BUILD_TYPE}")
 
 INCLUDE_DIRECTORIES(
                ${CMAKE_CURRENT_SOURCE_DIR}/daemon
+               ${CMAKE_CURRENT_SOURCE_DIR}/daemon/minictrl
                ${CMAKE_CURRENT_SOURCE_DIR}/daemon/notifications
                ${CMAKE_CURRENT_SOURCE_DIR}/daemon/service
+               ${CMAKE_CURRENT_SOURCE_DIR}/daemon/settings
+               ${CMAKE_CURRENT_SOURCE_DIR}/daemon/settings/modules
+               ${CMAKE_CURRENT_SOURCE_DIR}/daemon/vi
+               ${CMAKE_CURRENT_SOURCE_DIR}/daemon/page
+               ${CMAKE_CURRENT_SOURCE_DIR}/daemon/datetime
                ${CMAKE_CURRENT_SOURCE_DIR}/data
                ${CMAKE_CURRENT_SOURCE_DIR}/test
                )
 
 INCLUDE(FindPkgConfig)
-pkg_check_modules(pkgs REQUIRED 
+
+IF(X11_SUPPORT)
+pkg_check_modules(extra_pkgs REQUIRED
+       ecore-x
+       x11
+       xi
+       utilX
+       inputproto
+)
+ENDIF(X11_SUPPORT)
+
+IF(WAYLAND_SUPPORT)
+pkg_check_modules(extra_pkgs REQUIRED
+       ecore-wayland
+)
+ENDIF(WAYLAND_SUPPORT)
+
+pkg_check_modules(pkgs REQUIRED
        capi-appfw-application
-       capi-appfw-app-manager
        capi-system-runtime-info
        capi-system-info
        capi-system-device
        capi-network-tethering
+       capi-network-bluetooth
+       capi-network-connection
+       capi-network-wifi
        capi-media-player
+       capi-media-sound-manager
+       capi-media-metadata-extractor
+       capi-system-system-settings
+       capi-base-utils-i18n
+       capi-ui-efl-util
+       tapi
        feedback
        appcore-common
        notification
+       badge
        vconf
-       appsvc
-       devman_haptic
        libprivilege-control
-       ecore-x
        edbus
        evas
        ecore
        edje
        ecore-input
        icu-i18n
-       enotify
        elementary
+       efl-assist
        dlog
        syspopup-caller
        minicontrol-viewer
        minicontrol-monitor
-       utilX
-#      deviced
+       pkgmgr
+       pkgmgr-info
+       iniparser
+       alarm-service
 )
 
-FOREACH(flag ${pkgs_CFLAGS})
+FOREACH(flag ${pkgs_CFLAGS} ${extra_pkgs_CFLAGS})
        SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
 ENDFOREACH(flag)
 
@@ -79,13 +108,18 @@ IF("${ARCH}" STREQUAL "arm")
        MESSAGE("add -DTARGET")
 ENDIF("${ARCH}" STREQUAL "arm")
 
-ADD_DEFINITIONS("-fpie")
-ADD_DEFINITIONS("-DQP_INDICATOR_WIDGET_ENABLE")
-ADD_DEFINITIONS("-DQP_BRIGHTNESS_ENABLE")
-ADD_DEFINITIONS("-DQP_MINICTRL_ENABLE")
-ADD_DEFINITIONS("-DQP_ANIMATED_IMAGE_ENABLE")
-#ADD_DEFINITIONS("-DQP_SERVICE_NOTI_LED_ENABLE")
-
+IF("${VENDOR}" STREQUAL "org.tizen")
+       ADD_DEFINITIONS("-DQP_SETTING_ENABLE")
+       ADD_DEFINITIONS("-DQP_BRIGHTNESS_ENABLE")
+       ADD_DEFINITIONS("-DQP_MINICTRL_ENABLE")
+       ADD_DEFINITIONS("-DQP_SCREENREADER_ENABLE")
+       ADD_DEFINITIONS("-DQP_SMART_ALERT_ENABLE")
+       ADD_DEFINITIONS("-DQP_SERVICE_NOTI_LED_ENABLE")
+       ADD_DEFINITIONS("-DQP_ANIMATED_IMAGE_ENABLE")
+       ADD_DEFINITIONS("-DQP_REMINDER_ENABLE")
+       ADD_DEFINITIONS("-DQP_EMERGENCY_MODE_ENABLE")
+ENDIF("${VENDOR}" STREQUAL "org.tizen")
+MESSAGE("##### VENDOR: ${VENDOR}")
 
 ADD_DEFINITIONS("-DVENDOR=\"${VENDOR}\"")
 ADD_DEFINITIONS("-DPACKAGE=\"${PACKAGE}\"")
@@ -96,21 +130,123 @@ ADD_DEFINITIONS("-DLOCALEDIR=\"${LOCALEDIR}\"")
 ADD_DEFINITIONS("-DICONDIR=\"${ICONDIR}\"")
 ADD_DEFINITIONS("-DEDJDIR=\"${EDJDIR}\"")
 ADD_DEFINITIONS("-DDATADIR=\"${DATADIR}\"")
-
+ADD_DEFINITIONS("-DDATADIR_RW=\"${DATADIR_RW}\"")
+ADD_DEFINITIONS("-DSHARED_DIR=\"${SHARED_DIR}\"")
 #ADD_DEFINITIONS("-DFILE_DEBUG")
 ADD_DEFINITIONS("-D_DLOG_USED")
+
+SET(BUILD_COMMON_SOURCE
+       ${BUILD_COMMON_SOURCE}
+       daemon/accessibility.c
+       daemon/common.c
+       daemon/datetime/datetime.c
+       daemon/datetime/util-time.c
+       daemon/dbus_utility.c
+       daemon/device/brightness.c
+       daemon/handler_controller.c
+       daemon/list_util.c
+       daemon/media.c
+       daemon/minictrl/minictrl.c
+       daemon/modules.c
+       daemon/notifications/activenoti.c
+       daemon/notifications/animated_image.c
+       daemon/notifications/noti_box.c
+       daemon/notifications/noti.c
+       daemon/notifications/noti_gridbox.c
+       daemon/notifications/noti_listbox.c
+       daemon/notifications/noti_list_item.c
+       daemon/notifications/noti_node.c
+       daemon/notifications/noti_section.c
+       daemon/notifications/noti_util.c
+       daemon/notifications/noti_view_boxtype.c
+       daemon/notifications/noti_view.c
+       daemon/notifications/noti_view_listype.c
+       daemon/notifications/noti_view_ongoing.c
+       daemon/page/page_base.c
+       daemon/page/page_edit.c
+       daemon/page/pager.c
+       daemon/page/page_setting_all.c
+       daemon/preference.c
+       daemon/service/animated_icon.c
+       daemon/service/configuration.c
+       daemon/service/emergency_mode.c
+       daemon/service/keyboard.c
+       daemon/service/noti_led.c
+       daemon/service/reminder.c
+       daemon/service/smart_alert.c
+       daemon/service/uninstall.c
+       daemon/settings/modules/assistive_light.c
+       daemon/settings/modules/bluetooth.c
+       daemon/settings/modules/flightmode.c
+       daemon/settings/modules/gps.c
+       daemon/settings/modules/mobile_data.c
+       daemon/settings/modules/rotate-lock.c
+       daemon/settings/modules/sound-profile.c
+       daemon/settings/modules/tethering.c
+       daemon/settings/modules/ultra_power_saving.c
+       daemon/settings/modules/wifi.c
+       daemon/settings/setting_module_api.c
+       daemon/settings/settings.c
+       daemon/settings/settings_gridbox.c
+       daemon/settings/settings_icon_common.c
+       daemon/settings/settings_ipc.c
+       daemon/settings/settings_view_all.c
+       daemon/settings/settings_view_featured.c
+       daemon/sim_controller.c
+       daemon/vi/vi_manager.c
+)
+
+IF(X11_SUPPORT)
 ADD_DEFINITIONS("-DHAVE_X")
+SET(BUILD_SOURCE
+       ${BUILD_SOURCE}
+       daemon/common_uic_x11.c
+       daemon/notifications/noti_win_x11.c
+       daemon/page/pager_common_x11.c
+       daemon/quickpanel-ui_x11.c
+       daemon/service/keyboard_x_x11.c
+       daemon/settings/setting_utils_x11.c
+)
+ENDIF(X11_SUPPORT)
+
+IF(WAYLAND_SUPPORT)
+ADD_DEFINITIONS("-DHAVE_WAYLAND")
+SET(BUILD_SOURCE
+       ${BUILD_SOURCE}
+       daemon/common_uic.c
+       daemon/notifications/noti_win.c
+       daemon/page/pager_common.c
+       daemon/quickpanel-ui.c
+       daemon/service/keyboard_x.c
+       daemon/settings/setting_utils.c
+)
+ENDIF(WAYLAND_SUPPORT)
 
+AUX_SOURCE_DIRECTORY(${CMAKE_CURRENT_SOURCE_DIR}/test TEST_SRCS)
+
+SET(SRCS ${BUILD_COMMON_SOURCE} ${BUILD_SOURCE} ${TEST_SRCS})
 
 SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed")
 
+
 ADD_EXECUTABLE(${PROJECT_NAME} ${SRCS})
-TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${pkgs_LDFLAGS} "-pie")
-#-lefence 
+TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${pkgs_LDFLAGS} ${extra_pkgs_LDFLAGS} "-pie")
+#-lefence
 
 INSTALL(TARGETS ${PROJECT_NAME} DESTINATION ${BINDIR})
-INSTALL(DIRECTORY ${CMAKE_SOURCE_DIR}/icons DESTINATION ${RESDIR})
 INSTALL(DIRECTORY DESTINATION ${DATADIR})
+INSTALL(DIRECTORY DESTINATION ${DATADIR_RW})
+INSTALL(FILES ${CMAKE_SOURCE_DIR}/icons/quickpanel_icon_default.png DESTINATION ${RESDIR})
+INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/${PKGNAME}.efl DESTINATION /etc/smack/accesses.d)
+
+# icon for setting
+INSTALL(FILES ${CMAKE_SOURCE_DIR}/icons/settings_noti_panel.png DESTINATION ${SHARED_DIR}/icons)
+
+# icons for notification
+INSTALL(DIRECTORY ${CMAKE_SOURCE_DIR}/data/images_noti_icons/ DESTINATION ${SHARED_DIR}/noti_icons FILES_MATCHING PATTERN "*.png")
+
+# License
+INSTALL(FILES ${CMAKE_SOURCE_DIR}/LICENSE DESTINATION /usr/share/license RENAME ${PKGNAME})
 
 # i18n
 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
index 94d56df..177464e 100644 (file)
--- a/NOTICE
+++ b/NOTICE
@@ -1,3 +1 @@
-Copyright (c) 2012 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.
\ No newline at end of file
diff --git a/daemon/accessibility.c b/daemon/accessibility.c
new file mode 100644 (file)
index 0000000..a85bebb
--- /dev/null
@@ -0,0 +1,114 @@
+/*
+ * 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 <stdio.h>
+#include "common.h"
+#include "quickpanel-ui.h"
+#include "accessibility.h"
+
+HAPI Evas_Object *
+quickpanel_accessibility_screen_reader_object_get(void *obj, screen_reader_object_type_e type, const char *part, Evas_Object *parent)
+{
+       Evas_Object *to = NULL;
+       Evas_Object *ao = NULL;
+
+       retif(obj == NULL, NULL, "invalid parameter");
+       retif(type == SCREEN_READER_OBJ_TYPE_EDJ_OBJECT && !part, NULL, "invalid parameter");
+
+       switch (type) {
+       case SCREEN_READER_OBJ_TYPE_ELM_OBJECT:
+               if (part != NULL) {
+                       to = (Evas_Object *)elm_object_part_content_get(obj, part);
+                       ao = (Evas_Object *)to;
+               } else {
+                       ao = (Evas_Object *)obj;
+               }
+               break;
+
+       case SCREEN_READER_OBJ_TYPE_EDJ_OBJECT:
+               to = (Evas_Object *)edje_object_part_object_get(elm_layout_edje_get((Evas_Object *)obj), part);
+               break;
+
+       default:// evas, icon
+               to = (Evas_Object *)obj;
+       }
+
+       if (!ao && to && parent) {              // edj, evas, icon, elm_object_item
+               ao = elm_access_object_get(to);
+               if (ao == NULL) {
+                       ao = elm_access_object_register(to, parent);
+               }
+       }
+
+       return ao;
+}
+
+HAPI Evas_Object *quickpanel_accessibility_ui_get_focus_object(Evas_Object *parent)
+{
+       Evas_Object *focus = elm_button_add(parent);
+       retif(focus == NULL, NULL, "failed to create focus object");
+
+       elm_object_style_set(focus, "focus");
+
+       elm_access_info_set(focus, ELM_ACCESS_INFO, "");
+       elm_access_info_set(focus, ELM_ACCESS_TYPE, "");
+
+       return focus;
+}
+
+HAPI char *quickpanel_accessibility_info_cb(void *data, Evas_Object *obj)
+{
+       char *str = NULL;
+       retif(data == NULL, NULL, "invalid parameter");
+
+       str = _((const char *)data);
+       if (str != NULL) {
+               return strdup(str);
+       }
+
+       return NULL;
+}
+
+HAPI char *quickpanel_accessibility_info_cb_s(void *data, Evas_Object *obj)
+{
+       char *str = NULL;
+       retif(data == NULL, NULL, "invalid parameter");
+
+       // system string is not supported. data should be DID from application po files.
+       str = _(data);
+       if (str != NULL) {
+               return strdup(str);
+       }
+
+       return NULL;
+}
+
+HAPI void
+quickpanel_accessibility_screen_reader_data_set(Evas_Object *view, const char *part, char *type, char *info)
+{
+       Evas_Object *ao = NULL;
+       retif(view == NULL, , "invalid parameter");
+       retif(part == NULL, , "invalid parameter");
+
+       ao = quickpanel_accessibility_screen_reader_object_get(view,
+                       SCREEN_READER_OBJ_TYPE_ELM_OBJECT, part, view);
+       if (ao != NULL) {
+               elm_access_info_set(ao, ELM_ACCESS_TYPE, type);
+               elm_access_info_set(ao, ELM_ACCESS_INFO, info);
+       }
+}
diff --git a/daemon/accessibility.h b/daemon/accessibility.h
new file mode 100644 (file)
index 0000000..bf49a18
--- /dev/null
@@ -0,0 +1,35 @@
+/*
+ * 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 __ACCESSIBILITY_H__
+#define __ACCESSIBILITY_H__
+
+typedef enum {
+       SCREEN_READER_OBJ_TYPE_ELM_OBJECT,
+       SCREEN_READER_OBJ_TYPE_EDJ_OBJECT,
+} screen_reader_object_type_e;
+
+Evas_Object *
+quickpanel_accessibility_screen_reader_object_get(void *obj, screen_reader_object_type_e type, const char *part, Evas_Object *parent);
+Evas_Object *quickpanel_accessibility_ui_get_focus_object(Evas_Object *parent);
+char *quickpanel_accessibility_info_cb(void *data, Evas_Object *obj);
+char *quickpanel_accessibility_info_cb_s(void *data, Evas_Object *obj);
+void quickpanel_accessibility_screen_reader_data_set(Evas_Object *view, const char *part, char *type, char *info);
+
+#endif                         /* __ACCESSIBILITY_H__ */
index d1c21df..40370b7 100755 (executable)
@@ -1,23 +1,89 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ * Copyright (c) 2009-2015 Samsung Electronics Co., Ltd All Rights Reserved
  *
- * Licensed under the Flora License, Version 1.1 (the License);
+ * 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
+ * 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,
+ * 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 <pkgmgr-info.h>
 #include "common.h"
 #include "quickpanel-ui.h"
 
-HAPI void quickpanel_util_char_replace(char *text, char s, char t) {
+static inline int _is_space( char in )
+{
+    if ( ( in == _SPACE )) {
+               return 1;
+    } else {
+               return 0;
+    }
+}
+
+static inline int _l_trim( char *in )
+{
+    int                        i, j;
+    short int  done;
+
+    i = 0;
+    done = 0;
+
+    while ( !done && in[i] != '\0') {
+               if ( _is_space( in[i] ) ) {
+                       i++;
+               } else {
+                       done = 1;
+               }
+    }
+
+    j = 0;
+    while ( in[i] != '\0' ) {
+               in[j++] = in[i++];
+    }
+
+    in[j] = '\0';
+
+    return 0;
+}
+
+static inline int _r_trim( char *in )
+{
+    int                        i;
+    short int  done;
+
+    i = strlen(in) - 1;
+    done = 0;
+
+    while ( !done && !( i < 0 ) ) {
+               if ( _is_space( in[i] ) ) {
+                       in[i--] = '\0';
+               } else {
+                       done = 1;
+               }
+    }
+
+    return(0);
+}
+
+HAPI void quickpanel_common_util_char_trim(char *text)
+{
+       retif(text == NULL, , "invalid argument");
+
+       _l_trim(text);
+       _r_trim(text);
+}
+
+HAPI void quickpanel_common_util_char_replace(char *text, char s, char t)
+{
        retif(text == NULL, , "invalid argument");
 
        int i = 0, text_len = 0;
@@ -31,6 +97,123 @@ HAPI void quickpanel_util_char_replace(char *text, char s, char t) {
        }
 }
 
+HAPI void quickpanel_common_util_add_char_to_each_charactor(char *dst, const char *src, char t)
+{
+       retif(dst == NULL, , "invalid argument");
+       retif(src == NULL, , "invalid argument");
+
+       int i = 0, text_len = 0;
+
+       text_len = strlen(src);
+
+       for (i = 0; i < text_len; i++) {
+               *(dst + (i * 2)) = *(src + i);
+               *(dst + ((i * 2) + 1)) = t;
+       }
+}
+
+static void _char_set(char *dst, char s, int index, int size)
+{
+       if (index < size) {
+               *(dst + index) = s;
+       }
+}
+
+HAPI void quickpanel_common_util_phone_number_tts_make(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);
+                       }
+               }
+       }
+}
+
+HAPI int quickpanel_common_util_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 <= QP_UTIL_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 _current_popup_default_backkey_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       Evas_Object *popup = data;
+       retif(popup == NULL, , "invalid argument");
+
+       if (popup!= NULL) {
+               evas_object_del(popup);
+               popup = NULL;
+       }
+}
+
 static void _current_popup_deleted_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
 {
        retif(obj == NULL, , "obj is NULL");
@@ -45,7 +228,8 @@ static void _current_popup_deleted_cb(void *data, Evas *e, Evas_Object *obj, voi
        }
 }
 
-HAPI void quickpanel_ui_set_current_popup(Evas_Object *popup) {
+HAPI void quickpanel_common_ui_set_current_popup(Evas_Object *popup, Evas_Smart_Cb func_back)
+{
        retif(popup == NULL, , "invalid argument");
 
        struct appdata *ad = quickpanel_get_app_data();
@@ -53,13 +237,155 @@ HAPI void quickpanel_ui_set_current_popup(Evas_Object *popup) {
 
        ad->popup = popup;
        evas_object_event_callback_add(popup, EVAS_CALLBACK_DEL, _current_popup_deleted_cb, NULL);
+
+       if (func_back != NULL) {
+               evas_object_data_set(popup, EDATA_BACKKEY_CB, func_back);
+       } else {
+               evas_object_data_set(popup, EDATA_BACKKEY_CB, _current_popup_default_backkey_cb);
+       }
 }
 
-HAPI void quickpanel_ui_del_current_popup(void) {
+HAPI void quickpanel_common_ui_del_current_popup(void)
+{
        struct appdata *ad = quickpanel_get_app_data();
        retif(ad == NULL, , "invalid argument");
 
        if (ad->popup != NULL) {
                evas_object_del(ad->popup);
+               ad->popup = NULL;
+       }
+}
+
+HAPI void *quickpanel_common_ui_get_buffer_from_image(const char *file_path, size_t *memfile_size, char *ext, int ext_size)
+{
+       FILE *fp = NULL;
+       void *buffer = NULL;
+       char *buf_ext = NULL;
+
+       retif(file_path == NULL, NULL, "invalid data");
+
+       if (ext != NULL) {
+               buf_ext = ecore_file_strip_ext(file_path);
+               if (buf_ext != NULL) {
+                       strncpy(ext, buf_ext, ext_size);
+                       free(buf_ext);
+               }
+       }
+
+       fp = fopen(file_path, "r");
+       if (fp) {
+               struct stat stat_buf;
+               if (stat(file_path, &stat_buf) != 0) {
+                       ERR("Getting file information Error");
+                       goto err;
+               }
+
+               if (stat_buf.st_size > 0) {
+                       buffer = (void *)calloc(1, (size_t)stat_buf.st_size + 1);
+                       if (buffer == NULL) {
+                               ERR("failed to alloc a buffer");
+                               goto err;
+                       }
+                       int result = fread(buffer, sizeof(char), stat_buf.st_size, fp);
+                       if (result != stat_buf.st_size) {
+                               ERR("failed to read a file");
+                               free(buffer);
+                               buffer = NULL;
+                               goto err;
+                       }
+                       if (memfile_size != NULL) {
+                               *memfile_size = result;
+                       }
+               } else {
+                       if (memfile_size != NULL) {
+                               *memfile_size = 0;
+                       }
+               }
+       }
+
+err:
+       if (fp) {
+               fclose(fp);
        }
+       return buffer;
+}
+
+HAPI char *quickpanel_common_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", ret);
+               return NULL;
+       }
+
+       //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;
+}
+
+HAPI char *quickpanel_common_ui_get_pkginfo_label(const char *pkgid)
+{
+       int ret = 0;
+       char *label = NULL;
+       char *value_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", ret);
+               return NULL;
+       }
+
+       //icon path
+       ret = pkgmgrinfo_appinfo_get_label(appinfo_h, &label);
+       if (ret < 0) {
+               ERR("pkgmgrinfo_appinfo_get_icon is failed %d", ret);
+       }
+       if (label) {
+               value_ret = (char*)strdup(label);
+       }
+       if (appinfo_h) {
+               pkgmgrinfo_appinfo_destroy_appinfo(appinfo_h);
+       }
+
+       return value_ret;
+}
+
+HAPI int quickpanel_common_ui_is_package_exist(const char *pkgid)
+{
+       int ret = 0;
+       retif(pkgid == NULL, 0, "invalid parameter");
+
+       pkgmgrinfo_appinfo_h appinfo_h = NULL;
+
+       ret = pkgmgrinfo_appinfo_get_appinfo(pkgid, &appinfo_h);
+       if (ret < 0) {
+               DBG("package %s isn't exist", pkgid);
+               return 0;
+       }
+
+       if (appinfo_h) {
+               pkgmgrinfo_appinfo_destroy_appinfo(appinfo_h);
+       }
+
+       return 1;
 }
index 913054c..5749c17 100755 (executable)
@@ -1,19 +1,21 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ * Copyright (c) 2009-2015 Samsung Electronics Co., Ltd All Rights Reserved
  *
- * Licensed under the Flora License, Version 1.1 (the "License");
+ * 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 __QP_COMMON_H_
 #define __QP_COMMON_H_
 
 
 #define QP_OK  (0)
 #define QP_FAIL        (-1)
+#define QP_UTIL_PHONE_NUMBER_MAX_LEN   40
+#define EDATA_BACKKEY_CB "bk_cb"
 
 #ifdef _DLOG_USED
+#undef LOG_TAG
 #define LOG_TAG "QUICKPANEL"
 #include <dlog.h>
 
                LOGE("[%s : %d] "fmt"\n", __func__, __LINE__, ##args); \
        } while (0)
 
+#define SDBG(fmt , args...) \
+       do { \
+               SECURE_LOGD("[%s : %d] "fmt"\n", __func__, __LINE__, ##args); \
+       } while (0)
+
+#define SINFO(fmt , args...) \
+       do { \
+               SECURE_LOGI("[%s : %d] "fmt"\n", __func__, __LINE__, ##args); \
+       } while (0)
+
+#define SERR(fmt , args...) \
+       do { \
+               SECURE_LOGE("[%s : %d] "fmt"\n", __func__, __LINE__, ##args); \
+       } while (0)
+
 #elif FILE_DEBUG /*_DLOG_USED*/
 #define DBG(fmt , args...) \
        do { \
        } \
 } while (0);
 
+#define retif_nomsg(cond, ret) do { \
+       if (cond) { \
+               return ret;\
+       } \
+} while (0);
+
 #define gotoif(cond, target, str, args...) do { \
        if (cond) { \
                WARN(str, ##args); \
 } while (0);
 
 
-void quickpanel_util_char_replace(char *text, char s, char t);
-void quickpanel_ui_set_current_popup(Evas_Object *popup);
-void quickpanel_ui_del_current_popup(void);
+void quickpanel_common_util_char_trim(char *text);
+void quickpanel_common_util_char_replace(char *text, char s, char t);
+void quickpanel_common_util_add_char_to_each_charactor(char *dst, const char *src, char t);
+int quickpanel_common_util_is_phone_number(const char *address);
+void quickpanel_common_util_phone_number_tts_make(char *dst, const char *src, int size);
+void quickpanel_common_ui_set_current_popup(Evas_Object *popup, Evas_Smart_Cb func_close);
+void quickpanel_common_ui_del_current_popup(void);
+void *quickpanel_common_ui_get_buffer_from_image(const char *file_path, size_t *memfile_size, char *ext, int ext_size);
+char *quickpanel_common_ui_get_pkginfo_icon(const char *pkgid);
+char *quickpanel_common_ui_get_pkginfo_label(const char *pkgid);
+int quickpanel_common_ui_is_package_exist(const char *pkgid);
 
 #endif                         /* __QP_COMMON_H_ */
diff --git a/daemon/common_uic.c b/daemon/common_uic.c
new file mode 100644 (file)
index 0000000..54596dd
--- /dev/null
@@ -0,0 +1,375 @@
+/*
+ * 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 <app.h>
+#include <sys/utsname.h>
+#ifdef HAVE_X
+#include <X11/Xlib.h>
+#include <utilX.h>
+#endif
+#include <Ecore_Input.h>
+#include <vconf.h>
+#include <notification.h>
+#include <app_control_internal.h>
+#include <bundle_internal.h>
+#include "common.h"
+#include "quickpanel-ui.h"
+
+
+/* binary information */
+#define QP_EMUL_STR            "Emulator"
+#define DEL_TIMER_VALUE        0.480
+#define SYSTEM_INFO_KEY_MODEL "http://tizen.org/system/model_name"
+static Ecore_Timer *_close_timer = NULL;
+
+
+static void _quickpanel_move_data_to_service(const char *key, const char *val, void *data)
+{
+       retif(data == NULL || key == NULL || val == NULL, , "Invialid parameter!");
+
+       app_control_h service = data;
+       app_control_add_extra_data(service, key, val);
+}
+
+HAPI Evas_Object *quickpanel_uic_load_edj(Evas_Object * parent, const char *file,
+                                           const char *group, int is_just_load)
+{
+       Eina_Bool r;
+       Evas_Object *eo = NULL;
+
+       retif(parent == NULL, NULL, "Invalid parameter!");
+
+       eo = elm_layout_add(parent);
+       retif(eo == NULL, NULL, "Failed to add layout object!");
+
+       r = elm_layout_file_set(eo, file, group);
+       retif(r != EINA_TRUE, NULL,
+               "Failed to set edje object file[%s-%s]!", file, group);
+
+       evas_object_size_hint_weight_set(eo,
+                                        EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(eo,
+                                        EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+       if (is_just_load == 1) {
+               elm_win_resize_object_add(parent, eo);
+       }
+       evas_object_show(eo);
+
+       return eo;
+}
+
+HAPI int quickpanel_uic_is_opened(void)
+{
+       struct appdata *ad = quickpanel_get_app_data();
+       retif(ad == NULL, 0, "invalid data.");
+
+       return ad->is_opened;
+}
+
+HAPI int quickpanel_uic_is_suspended(void)
+{
+       struct appdata *ad = quickpanel_get_app_data();
+       retif(ad == NULL, 0, "invalid data.");
+
+       return ad->is_suspended;
+}
+
+HAPI int quickpanel_uic_is_emul(void)
+{
+       int is_emul = 0;
+       char *info = NULL;
+       if (system_info_get_platform_string(SYSTEM_INFO_KEY_MODEL, &info) == 0) {
+               if (info == NULL) {
+                       return 0;
+               }
+               if (!strncmp(QP_EMUL_STR, info, strlen(info))) {
+                       is_emul = 1;
+               }
+       }
+
+       if (info != NULL) free(info);
+
+       return is_emul;
+}
+
+HAPI void quickpanel_uic_initial_resize(Evas_Object *obj, int height)
+{
+       struct appdata *ad = quickpanel_get_app_data();
+       retif(ad == NULL, , "invalid data.");
+
+       height = (height % 2 != 0) ? height + 1 : height;
+
+       if (ad->angle == 90 || ad->angle == 270) {
+               evas_object_resize(obj, ad->win_height, height * ad->scale);
+       } else  {
+               evas_object_resize(obj, ad->win_width, height * ad->scale);
+       }
+}
+
+HAPI int quickpanel_uic_launch_app(char *app_id, void *data)
+{
+       int ret = APP_CONTROL_ERROR_NONE;
+       app_control_h service = NULL;
+       char *app_id_from_service = NULL;
+
+       retif(app_id == NULL && data == NULL, APP_CONTROL_ERROR_INVALID_PARAMETER, "Invialid parameter!");
+
+       ret = app_control_create(&service);
+       if (ret != APP_CONTROL_ERROR_NONE) {
+               ERR("app_control_create() return error : %d", ret);
+               return ret;
+       }
+       retif(service == NULL, APP_CONTROL_ERROR_INVALID_PARAMETER, "fail to create service handle!");
+
+       if (app_id != NULL) {
+               app_control_set_operation(service, APP_CONTROL_OPERATION_DEFAULT);
+               app_control_set_app_id(service, app_id);
+
+               if (data != NULL) {
+                       bundle_iterate((bundle *)data, _quickpanel_move_data_to_service, service);
+               }
+       } else {
+               if (data != NULL) {
+                       ret = app_control_import_from_bundle(service, data);
+                       if (ret != APP_CONTROL_ERROR_NONE) {
+                               ERR("Failed to import[%d]", ret);
+                       }
+               }
+       }
+
+       ret = app_control_send_launch_request(service, NULL, NULL);
+       if (ret != APP_CONTROL_ERROR_NONE) {
+               ERR("app_control_send_launch_request() is failed : %d", ret);
+               app_control_get_app_id(service, &app_id_from_service);
+               if (app_id_from_service != NULL) {
+                       quickpanel_uic_launch_app_inform_result(app_id_from_service, ret);
+                       free(app_id_from_service);
+               } else {
+                       quickpanel_uic_launch_app_inform_result(app_id, ret);
+               }
+               app_control_destroy(service);
+               return ret;
+       }
+       app_control_destroy(service);
+       return ret;
+}
+
+HAPI int quickpanel_uic_launch_ug_by_appcontrol(const char *package, void *data)
+{
+       int ret = APP_CONTROL_ERROR_NONE;
+       app_control_h service = NULL;
+       struct appdata *ad = quickpanel_get_app_data();
+       retif(ad == NULL, APP_CONTROL_ERROR_INVALID_PARAMETER, "ad null");
+       retif(package == NULL, APP_CONTROL_ERROR_INVALID_PARAMETER, "package null");
+
+       ret = app_control_create(&service);
+       if (ret != APP_CONTROL_ERROR_NONE) {
+               ERR("app_control_create() return error : %d", ret);
+               return ret;
+       }
+       retif(service == NULL, APP_CONTROL_ERROR_INVALID_PARAMETER, "fail to create service handle!");
+
+       app_control_set_operation(service, APP_CONTROL_OPERATION_DEFAULT);
+       app_control_set_app_id(service, package);
+
+       if (data != NULL) {
+               bundle_iterate((bundle *)data, _quickpanel_move_data_to_service, service);
+       }
+
+       ret = app_control_send_launch_request(service, NULL, NULL);
+       if (ret != APP_CONTROL_ERROR_NONE) {
+               ERR("app_control_send_launch_request() is failed : %d", ret);
+               app_control_destroy(service);
+               return ret;
+       }
+       app_control_destroy(service);
+       return ret;
+}
+
+HAPI void quickpanel_uic_launch_app_inform_result(const char *pkgname, int retcode)
+{
+       retif(retcode == APP_CONTROL_ERROR_NONE, , "retcode = APP_CONTROL_ERROR_NONE!");
+       retif(pkgname == NULL && retcode != APP_CONTROL_ERROR_APP_NOT_FOUND, , "Invialid parameter!");
+
+       const char *msg = NULL;
+       char *app_label = NULL;
+
+       if (retcode == APP_CONTROL_ERROR_APP_NOT_FOUND) {
+               notification_status_message_post(_NOT_LOCALIZED("Unable to find application to perform this action."));
+       } else {
+               Eina_Strbuf *strbuf = eina_strbuf_new();
+               char *format = _("IDS_QP_TPOP_UNABLE_TO_OPEN_PS");
+
+               if (strbuf != NULL) {
+                       app_label = quickpanel_common_ui_get_pkginfo_label(pkgname);
+                       if (app_label != NULL) {
+                               eina_strbuf_append_printf(strbuf, format, app_label);
+                               free(app_label);
+                       } else {
+                               eina_strbuf_append_printf(strbuf, format, pkgname);
+                       }
+                       eina_strbuf_append_printf(strbuf, "(%x)", retcode);
+                       msg = eina_strbuf_string_get(strbuf);
+
+                       if (msg != NULL) {
+                               notification_status_message_post(msg);
+                       }
+                       eina_strbuf_free(strbuf);
+               }
+       }
+}
+
+HAPI void quickpanel_uic_open_quickpanel(int reason)
+{
+#ifdef HAVE_X
+       Ecore_X_Window xwin;
+       Ecore_X_Window zone;
+#endif
+       struct appdata *ad = quickpanel_get_app_data();
+
+       DBG("reason:%d", reason);
+
+       retif(ad == NULL, , "Invalid parameter!");
+       retif(ad->win == NULL, , "Invalid parameter!");
+#ifdef HAVE_X
+       xwin = elm_win_xwindow_get(ad->win);
+       if (xwin != 0) {
+               if ((zone = ecore_x_e_illume_zone_get(xwin)) != 0) {
+                       if (ecore_x_e_illume_quickpanel_state_get(zone) == ECORE_X_ILLUME_QUICKPANEL_STATE_OFF) {
+                               ecore_x_e_illume_quickpanel_state_send(zone, ECORE_X_ILLUME_QUICKPANEL_STATE_ON);
+                               quickpanel_uic_opened_reason_set(reason);
+                       }
+               } else {
+                       ERR("failed to get zone");
+               }
+       } else {
+               ERR("failed to get xwin");
+       }
+#endif
+}
+
+HAPI void quickpanel_uic_opened_reason_set(int reason)
+{
+       struct appdata *ad = quickpanel_get_app_data();
+       retif(ad == NULL, , "Invalid parameter!");
+
+       ad->opening_reason = reason;
+}
+
+HAPI int quickpanel_uic_opened_reason_get(void)
+{
+       struct appdata *ad = quickpanel_get_app_data();
+       retif(ad == NULL, OPENED_NO_REASON, "Invalid parameter!");
+
+       return ad->opening_reason;
+}
+
+static void _quickpanel_close(void)
+{
+#ifdef HAVE_X
+       Ecore_X_Window xwin;
+       Ecore_X_Window zone;
+#endif
+       struct appdata *ad = quickpanel_get_app_data();
+
+       DBG("");
+
+       retif(ad == NULL, , "Invalid parameter!");
+       retif(ad->win == NULL, , "Invalid parameter!");
+#ifdef HAVE_X
+       xwin = elm_win_xwindow_get(ad->win);
+       if (xwin != 0) {
+               if ((zone = ecore_x_e_illume_zone_get(xwin)) != 0) {
+                       if (ecore_x_e_illume_quickpanel_state_get(zone) == ECORE_X_ILLUME_QUICKPANEL_STATE_ON) {
+                               ecore_x_e_illume_quickpanel_state_send(zone, ECORE_X_ILLUME_QUICKPANEL_STATE_OFF);
+                       }
+               } else {
+                       ERR("failed to get zone");
+               }
+       } else {
+               ERR("failed to get xwin");
+       }
+#endif
+}
+
+static Eina_Bool _quickpanel_close_timer_cb(void *data)
+{
+       if( _close_timer != NULL ) {
+               _close_timer = NULL;
+       }
+       _quickpanel_close();
+
+       return ECORE_CALLBACK_CANCEL;
+}
+
+HAPI void quickpanel_uic_close_quickpanel(bool is_check_lock, int is_delay_needed) {
+       int ret = 0;
+       int is_lock_launched = VCONFKEY_IDLE_UNLOCK;
+
+       if (is_check_lock == true) {
+               if (vconf_get_int(VCONFKEY_IDLE_LOCK_STATE, &is_lock_launched) == 0) {
+                       if (is_lock_launched == VCONFKEY_IDLE_LOCK) {
+                               ret = vconf_set_int(VCONFKEY_IDLE_LOCK_STATE, VCONFKEY_IDLE_UNLOCK);
+                               if (ret == 0) {
+                                       ERR("unlock the lockscreen from quickpanel");
+                               } else {
+                                       ERR("failed to unlock the lockscreen from quickpanel");
+                               }
+                       }
+               }
+       }
+
+       if (is_delay_needed) {
+               if( _close_timer == NULL ) {
+                       _close_timer = ecore_timer_add(DEL_TIMER_VALUE, _quickpanel_close_timer_cb, NULL);
+               }
+       } else {
+               _quickpanel_close();
+       }
+}
+
+HAPI void quickpanel_uic_toggle_openning_quickpanel(void)
+{
+#ifdef HAVE_X
+       Ecore_X_Window xwin;
+       Ecore_X_Window zone;
+#endif
+       struct appdata *ad = quickpanel_get_app_data();
+
+       DBG("");
+
+       retif(ad == NULL, , "Invalid parameter!");
+       retif(ad->win == NULL, , "Invalid parameter!");
+#ifdef HAVE_X
+       xwin = elm_win_xwindow_get(ad->win);
+       if (xwin != 0) {
+               if ((zone = ecore_x_e_illume_zone_get(xwin)) != 0) {
+                       if (ecore_x_e_illume_quickpanel_state_get(zone) == ECORE_X_ILLUME_QUICKPANEL_STATE_ON) {
+                               ecore_x_e_illume_quickpanel_state_send(zone, ECORE_X_ILLUME_QUICKPANEL_STATE_OFF);
+                       } else {
+                               ecore_x_e_illume_quickpanel_state_send(zone, ECORE_X_ILLUME_QUICKPANEL_STATE_ON);
+                       }
+               } else {
+                       ERR("failed to get zone");
+               }
+       } else {
+               ERR("failed to get xwin");
+       }
+#endif
+}
diff --git a/daemon/common_uic.h b/daemon/common_uic.h
new file mode 100644 (file)
index 0000000..882163d
--- /dev/null
@@ -0,0 +1,43 @@
+/*
+ * 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 __QP_COMMON_UIC_H_
+#define __QP_COMMON_UIC_H_
+
+typedef enum {
+       OPENED_NO_REASON = 0,
+       OPENED_BY_CMD_HIDE_LAUNCH = 1,
+       OPENED_BY_CMD_SHOW_SETTINGS = 2,
+} qp_open_reason;
+
+Evas_Object *quickpanel_uic_load_edj(Evas_Object * parent, const char *file,
+                                           const char *group, int is_just_load);
+int quickpanel_uic_launch_app(char *app_id, void *data);
+int quickpanel_uic_launch_ug_by_appcontrol(const char *package, void *data);
+int quickpanel_uic_is_emul(void);
+int quickpanel_uic_is_suspended(void);
+int quickpanel_uic_is_opened(void);
+void quickpanel_uic_launch_app_inform_result(const char *pkgname, int retcode);
+void quickpanel_uic_initial_resize(Evas_Object *obj, int height);
+void quickpanel_uic_close_quickpanel(bool is_check_lock, int is_delay_needed);
+void quickpanel_uic_open_quickpanel(int reason);
+void quickpanel_uic_toggle_openning_quickpanel(void);
+void quickpanel_uic_opened_reason_set(int reason);
+int quickpanel_uic_opened_reason_get(void);
+
+#endif                         /* __QP_COMMON_UIC_H_ */
diff --git a/daemon/common_uic_x11.c b/daemon/common_uic_x11.c
new file mode 100644 (file)
index 0000000..5558f29
--- /dev/null
@@ -0,0 +1,364 @@
+/*
+ * 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 <app.h>
+#include <sys/utsname.h>
+#include <X11/Xlib.h>
+#include <utilX.h>
+#include <Ecore_Input.h>
+#include <vconf.h>
+#include <notification.h>
+#include <app_control_internal.h>
+#include <bundle_internal.h>
+#include "common.h"
+#include "quickpanel-ui.h"
+
+
+/* binary information */
+#define QP_EMUL_STR            "Emulator"
+#define DEL_TIMER_VALUE        0.480
+#define SYSTEM_INFO_KEY_MODEL "http://tizen.org/system/model_name"
+static Ecore_Timer *_close_timer = NULL;
+
+
+static void _quickpanel_move_data_to_service(const char *key, const char *val, void *data)
+{
+       retif(data == NULL || key == NULL || val == NULL, , "Invialid parameter!");
+
+       app_control_h service = data;
+       app_control_add_extra_data(service, key, val);
+}
+
+HAPI Evas_Object *quickpanel_uic_load_edj(Evas_Object * parent, const char *file,
+                                           const char *group, int is_just_load)
+{
+       Eina_Bool r;
+       Evas_Object *eo = NULL;
+
+       retif(parent == NULL, NULL, "Invalid parameter!");
+
+       eo = elm_layout_add(parent);
+       retif(eo == NULL, NULL, "Failed to add layout object!");
+
+       r = elm_layout_file_set(eo, file, group);
+       retif(r != EINA_TRUE, NULL,
+               "Failed to set edje object file[%s-%s]!", file, group);
+
+       evas_object_size_hint_weight_set(eo,
+                                        EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(eo,
+                                        EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+       if (is_just_load == 1) {
+               elm_win_resize_object_add(parent, eo);
+       }
+       evas_object_show(eo);
+
+       return eo;
+}
+
+HAPI int quickpanel_uic_is_opened(void)
+{
+       struct appdata *ad = quickpanel_get_app_data();
+       retif(ad == NULL, 0, "invalid data.");
+
+       return ad->is_opened;
+}
+
+HAPI int quickpanel_uic_is_suspended(void)
+{
+       struct appdata *ad = quickpanel_get_app_data();
+       retif(ad == NULL, 0, "invalid data.");
+
+       return ad->is_suspended;
+}
+
+HAPI int quickpanel_uic_is_emul(void)
+{
+       int is_emul = 0;
+       char *info = NULL;
+       if (system_info_get_platform_string(SYSTEM_INFO_KEY_MODEL, &info) == 0) {
+               if (info == NULL) {
+                       return 0;
+               }
+               if (!strncmp(QP_EMUL_STR, info, strlen(info))) {
+                       is_emul = 1;
+               }
+       }
+
+       if (info != NULL) free(info);
+
+       return is_emul;
+}
+
+HAPI void quickpanel_uic_initial_resize(Evas_Object *obj, int height)
+{
+       struct appdata *ad = quickpanel_get_app_data();
+       retif(ad == NULL, , "invalid data.");
+
+       height = (height % 2 != 0) ? height + 1 : height;
+
+       if (ad->angle == 90 || ad->angle == 270) {
+               evas_object_resize(obj, ad->win_height, height * ad->scale);
+       } else  {
+               evas_object_resize(obj, ad->win_width, height * ad->scale);
+       }
+}
+
+HAPI int quickpanel_uic_launch_app(char *app_id, void *data)
+{
+       int ret = APP_CONTROL_ERROR_NONE;
+       app_control_h service = NULL;
+       char *app_id_from_service = NULL;
+
+       retif(app_id == NULL && data == NULL, APP_CONTROL_ERROR_INVALID_PARAMETER, "Invialid parameter!");
+
+       ret = app_control_create(&service);
+       if (ret != APP_CONTROL_ERROR_NONE) {
+               ERR("app_control_create() return error : %d", ret);
+               return ret;
+       }
+       retif(service == NULL, APP_CONTROL_ERROR_INVALID_PARAMETER, "fail to create service handle!");
+
+       if (app_id != NULL) {
+               app_control_set_operation(service, APP_CONTROL_OPERATION_DEFAULT);
+               app_control_set_app_id(service, app_id);
+
+               if (data != NULL) {
+                       bundle_iterate((bundle *)data, _quickpanel_move_data_to_service, service);
+               }
+       } else {
+               if (data != NULL) {
+                       ret = app_control_import_from_bundle(service, data);
+                       if (ret != APP_CONTROL_ERROR_NONE) {
+                               ERR("Failed to import[%d]", ret);
+                       }
+               }
+       }
+
+       ret = app_control_send_launch_request(service, NULL, NULL);
+       if (ret != APP_CONTROL_ERROR_NONE) {
+               ERR("app_control_send_launch_request() is failed : %d", ret);
+               app_control_get_app_id(service, &app_id_from_service);
+               if (app_id_from_service != NULL) {
+                       quickpanel_uic_launch_app_inform_result(app_id_from_service, ret);
+                       free(app_id_from_service);
+               } else {
+                       quickpanel_uic_launch_app_inform_result(app_id, ret);
+               }
+               app_control_destroy(service);
+               return ret;
+       }
+       app_control_destroy(service);
+       return ret;
+}
+
+HAPI int quickpanel_uic_launch_ug_by_appcontrol(const char *package, void *data)
+{
+       int ret = APP_CONTROL_ERROR_NONE;
+       app_control_h service = NULL;
+       struct appdata *ad = quickpanel_get_app_data();
+       retif(ad == NULL, APP_CONTROL_ERROR_INVALID_PARAMETER, "ad null");
+       retif(package == NULL, APP_CONTROL_ERROR_INVALID_PARAMETER, "package null");
+
+       ret = app_control_create(&service);
+       if (ret != APP_CONTROL_ERROR_NONE) {
+               ERR("app_control_create() return error : %d", ret);
+               return ret;
+       }
+       retif(service == NULL, APP_CONTROL_ERROR_INVALID_PARAMETER, "fail to create service handle!");
+
+       app_control_set_operation(service, APP_CONTROL_OPERATION_DEFAULT);
+       app_control_set_app_id(service, package);
+
+       if (data != NULL) {
+               bundle_iterate((bundle *)data, _quickpanel_move_data_to_service, service);
+       }
+
+       ret = app_control_send_launch_request(service, NULL, NULL);
+       if (ret != APP_CONTROL_ERROR_NONE) {
+               ERR("app_control_send_launch_request() is failed : %d", ret);
+               app_control_destroy(service);
+               return ret;
+       }
+       app_control_destroy(service);
+       return ret;
+}
+
+HAPI void quickpanel_uic_launch_app_inform_result(const char *pkgname, int retcode)
+{
+       retif(retcode == APP_CONTROL_ERROR_NONE, , "retcode = APP_CONTROL_ERROR_NONE!");
+       retif(pkgname == NULL && retcode != APP_CONTROL_ERROR_APP_NOT_FOUND, , "Invialid parameter!");
+
+       const char *msg = NULL;
+       char *app_label = NULL;
+
+       if (retcode == APP_CONTROL_ERROR_APP_NOT_FOUND) {
+               notification_status_message_post(_NOT_LOCALIZED("Unable to find application to perform this action."));
+       } else {
+               Eina_Strbuf *strbuf = eina_strbuf_new();
+               char *format = _("IDS_QP_TPOP_UNABLE_TO_OPEN_PS");
+
+               if (strbuf != NULL) {
+                       app_label = quickpanel_common_ui_get_pkginfo_label(pkgname);
+                       if (app_label != NULL) {
+                               eina_strbuf_append_printf(strbuf, format, app_label);
+                               free(app_label);
+                       } else {
+                               eina_strbuf_append_printf(strbuf, format, pkgname);
+                       }
+                       eina_strbuf_append_printf(strbuf, "(%x)", retcode);
+                       msg = eina_strbuf_string_get(strbuf);
+
+                       if (msg != NULL) {
+                               notification_status_message_post(msg);
+                       }
+                       eina_strbuf_free(strbuf);
+               }
+       }
+}
+
+HAPI void quickpanel_uic_open_quickpanel(int reason)
+{
+       Ecore_X_Window xwin;
+       Ecore_X_Window zone;
+       struct appdata *ad = quickpanel_get_app_data();
+
+       DBG("reason:%d", reason);
+
+       retif(ad == NULL, , "Invalid parameter!");
+       retif(ad->win == NULL, , "Invalid parameter!");
+
+       xwin = elm_win_xwindow_get(ad->win);
+       if (xwin != 0) {
+               if ((zone = ecore_x_e_illume_zone_get(xwin)) != 0) {
+                       if (ecore_x_e_illume_quickpanel_state_get(zone) == ECORE_X_ILLUME_QUICKPANEL_STATE_OFF) {
+                               ecore_x_e_illume_quickpanel_state_send(zone, ECORE_X_ILLUME_QUICKPANEL_STATE_ON);
+                               quickpanel_uic_opened_reason_set(reason);
+                       }
+               } else {
+                       ERR("failed to get zone");
+               }
+       } else {
+               ERR("failed to get xwin");
+       }
+}
+
+HAPI void quickpanel_uic_opened_reason_set(int reason)
+{
+       struct appdata *ad = quickpanel_get_app_data();
+       retif(ad == NULL, , "Invalid parameter!");
+
+       ad->opening_reason = reason;
+}
+
+HAPI int quickpanel_uic_opened_reason_get(void)
+{
+       struct appdata *ad = quickpanel_get_app_data();
+       retif(ad == NULL, OPENED_NO_REASON, "Invalid parameter!");
+
+       return ad->opening_reason;
+}
+
+static void _quickpanel_close(void)
+{
+       Ecore_X_Window xwin;
+       Ecore_X_Window zone;
+       struct appdata *ad = quickpanel_get_app_data();
+
+       DBG("");
+
+       retif(ad == NULL, , "Invalid parameter!");
+       retif(ad->win == NULL, , "Invalid parameter!");
+
+       xwin = elm_win_xwindow_get(ad->win);
+       if (xwin != 0) {
+               if ((zone = ecore_x_e_illume_zone_get(xwin)) != 0) {
+                       if (ecore_x_e_illume_quickpanel_state_get(zone) == ECORE_X_ILLUME_QUICKPANEL_STATE_ON) {
+                               ecore_x_e_illume_quickpanel_state_send(zone, ECORE_X_ILLUME_QUICKPANEL_STATE_OFF);
+                       }
+               } else {
+                       ERR("failed to get zone");
+               }
+       } else {
+               ERR("failed to get xwin");
+       }
+}
+
+static Eina_Bool _quickpanel_close_timer_cb(void *data)
+{
+       if( _close_timer != NULL ) {
+               _close_timer = NULL;
+       }
+       _quickpanel_close();
+
+       return ECORE_CALLBACK_CANCEL;
+}
+
+HAPI void quickpanel_uic_close_quickpanel(bool is_check_lock, int is_delay_needed) {
+       int ret = 0;
+       int is_lock_launched = VCONFKEY_IDLE_UNLOCK;
+
+       if (is_check_lock == true) {
+               if (vconf_get_int(VCONFKEY_IDLE_LOCK_STATE, &is_lock_launched) == 0) {
+                       if (is_lock_launched == VCONFKEY_IDLE_LOCK) {
+                               ret = vconf_set_int(VCONFKEY_IDLE_LOCK_STATE, VCONFKEY_IDLE_UNLOCK);
+                               if (ret == 0) {
+                                       ERR("unlock the lockscreen from quickpanel");
+                               } else {
+                                       ERR("failed to unlock the lockscreen from quickpanel");
+                               }
+                       }
+               }
+       }
+
+       if (is_delay_needed) {
+               if( _close_timer == NULL ) {
+                       _close_timer = ecore_timer_add(DEL_TIMER_VALUE, _quickpanel_close_timer_cb, NULL);
+               }
+       } else {
+               _quickpanel_close();
+       }
+}
+
+HAPI void quickpanel_uic_toggle_openning_quickpanel(void)
+{
+       Ecore_X_Window xwin;
+       Ecore_X_Window zone;
+       struct appdata *ad = quickpanel_get_app_data();
+
+       DBG("");
+
+       retif(ad == NULL, , "Invalid parameter!");
+       retif(ad->win == NULL, , "Invalid parameter!");
+
+       xwin = elm_win_xwindow_get(ad->win);
+       if (xwin != 0) {
+               if ((zone = ecore_x_e_illume_zone_get(xwin)) != 0) {
+                       if (ecore_x_e_illume_quickpanel_state_get(zone) == ECORE_X_ILLUME_QUICKPANEL_STATE_ON) {
+                               ecore_x_e_illume_quickpanel_state_send(zone, ECORE_X_ILLUME_QUICKPANEL_STATE_OFF);
+                       } else {
+                               ecore_x_e_illume_quickpanel_state_send(zone, ECORE_X_ILLUME_QUICKPANEL_STATE_ON);
+                       }
+               } else {
+                       ERR("failed to get zone");
+               }
+       } else {
+               ERR("failed to get xwin");
+       }
+}
diff --git a/daemon/datetime/datetime.c b/daemon/datetime/datetime.c
new file mode 100644 (file)
index 0000000..e87197f
--- /dev/null
@@ -0,0 +1,346 @@
+/*
+ * 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 <app.h>
+#include <glib.h>
+#include <string.h>
+#include <vconf.h>
+#include "common.h"
+#include "quickpanel-ui.h"
+#include "list_util.h"
+#include "quickpanel_def.h"
+#ifdef QP_SCREENREADER_ENABLE
+#include "accessibility.h"
+#endif
+#include "modules.h"
+#ifdef QP_EMERGENCY_MODE_ENABLE
+#include "emergency_mode.h"
+#endif
+#include "util-time.h"
+
+static int _init(void *data);
+static int _fini(void *data);
+
+#define PKG_SETTING_EDIT "quickpanel-setting-efl"
+#define QP_TIMEDATE_SETTING_UG "setting-time-efl"
+#define E_DATA_EDITING_VISIBILITT "editing_visible"
+#define E_DATA_TIME_N_DATE_EVENT       "time_n_date_event"
+
+QP_Module qp_datetime_view = {
+       .name = "qp_datetime_view",
+       .init = _init,
+       .fini = _fini,
+       .suspend = NULL,
+       .resume = NULL,
+       .lang_changed = NULL,
+       .refresh = NULL,
+};
+
+static Evas_Object *_datetime_view_get(void);
+
+static void _flag_set(Evas_Object *container, const char *key, int value)
+{
+       retif(container == NULL, , "invalid parameter");
+       retif(key == NULL, , "invalid parameter");
+
+       evas_object_data_set(container, key, (void *)value);
+}
+
+static int _flag_get(Evas_Object *container, const char *key)
+{
+       retif(container == NULL, 0, "invalid parameter");
+       retif(key == NULL, 0, "invalid parameter");
+
+       return (int)evas_object_data_get(container, key);
+}
+
+static void _set_text_to_part(Evas_Object *obj, const char *part, const char *text)
+{
+       const char *old_text = NULL;
+
+       retif(obj == NULL, , "Invalid parameter!");
+       retif(part == NULL, , "Invalid parameter!");
+       retif(text == NULL, , "Invalid parameter!");
+
+       old_text = elm_object_part_text_get(obj, part);
+       if (old_text != NULL) {
+               if (strcmp(old_text, text) == 0) {
+                       return;
+               }
+       }
+
+       elm_object_part_text_set(obj, part, text);
+}
+
+static void _text_time_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       Evas_Object *view = _datetime_view_get();
+       int ret;
+
+       if (view) {
+               if (_flag_get(view, E_DATA_TIME_N_DATE_EVENT) == 0) {
+                       DBG("Time & date area click is event disabled");
+                       return;
+               }
+       }
+
+       quickpanel_media_play_feedback();
+
+       ret = quickpanel_uic_launch_ug_by_appcontrol(QP_TIMEDATE_SETTING_UG, NULL);
+       quickpanel_uic_launch_app_inform_result(QP_TIMEDATE_SETTING_UG, ret);
+
+       quickpanel_uic_close_quickpanel(true, 1);
+}
+
+static void _button_setting_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       quickpanel_media_play_feedback();
+
+#ifdef QP_EMERGENCY_MODE_ENABLE
+       if (quickpanel_emergency_mode_is_on()) {
+               quickpanel_uic_launch_app(PACKAGE_EMERGENCY_MODE_SETTING, NULL);
+       } else {
+               quickpanel_uic_launch_app(QP_SETTING_PKG_SETTING, NULL);
+       }
+#else
+       quickpanel_uic_launch_app(QP_SETTING_PKG_SETTING, NULL);
+#endif
+       quickpanel_uic_close_quickpanel(true, 1);
+}
+
+static Evas_Object *_datetime_view_create(Evas_Object *parent)
+{
+       Evas_Object *focus = NULL;
+       Eina_Bool ret = EINA_TRUE;
+       Evas_Object *view = NULL;
+
+       retif(parent == NULL, NULL, "Invalid parameter!");
+
+       view = elm_layout_add(parent);
+
+       if (view != NULL) {
+               ret = elm_layout_file_set(view, DEFAULT_EDJ,
+                               "quickpanel/datetime");
+               if (ret == EINA_FALSE) {
+                       ERR("failed to load quickpanel/datetime layout");
+               }
+               evas_object_size_hint_weight_set(view, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+               evas_object_size_hint_align_set(view, EVAS_HINT_FILL, EVAS_HINT_FILL);
+               quickpanel_uic_initial_resize(view, QP_DATE_H);
+
+               focus = quickpanel_accessibility_ui_get_focus_object(view);
+               elm_object_part_content_set(view, "focus.datetime", focus);
+               evas_object_smart_callback_add(focus, "clicked", _text_time_clicked_cb, view);
+
+               focus = quickpanel_accessibility_ui_get_focus_object(view);
+               elm_object_part_content_set(view, "focus.setting", focus);
+               evas_object_smart_callback_add(focus, "clicked", _button_setting_clicked_cb, view);
+
+               _flag_set(view, E_DATA_EDITING_VISIBILITT, 0);
+
+               if (quickpanel_emergency_mode_is_on()) {
+                       _flag_set(view, E_DATA_TIME_N_DATE_EVENT, 0);
+                       elm_object_signal_emit(view, "timendate.click.disable", "prog");
+               } else {
+                       _flag_set(view, E_DATA_TIME_N_DATE_EVENT, 1);
+                       elm_object_signal_emit(view, "timendate.click.enable", "prog");
+               }
+
+               evas_object_show(view);
+       }
+
+       return view;
+}
+
+static Evas_Object *_datetime_view_get(void) {
+       struct appdata *ad = quickpanel_get_app_data();
+       retif(ad == NULL, NULL, "invalid argument");
+       retif(ad->view_root == NULL, NULL, "invalid argument");
+
+       return elm_object_part_content_get(ad->view_root
+               , "qp.base.datetime.swallow");
+}
+
+static void _datetime_view_attach(void *data)
+{
+       Evas_Object *view = NULL;
+       struct appdata *ad = data;
+       retif(ad == NULL, ,"invalid parameter");
+       retif(ad->view_root == NULL, ,"invalid parameter");
+
+       view = _datetime_view_create(ad->view_root);
+       if (view != NULL) {
+               elm_object_part_content_set(ad->view_root, "qp.base.datetime.swallow", view);
+       }
+}
+
+static void _datetime_view_deattach(void *data)
+{
+       Evas_Object *view = NULL;
+       struct appdata *ad = data;
+       retif(ad == NULL, ,"invalid parameter");
+       retif(ad->view_root == NULL, ,"invalid parameter");
+
+       view = elm_object_part_content_unset(ad->view_root, "qp.base.datetime.swallow");
+       if (view != NULL) {
+               evas_object_del(view);
+               view = NULL;
+       }
+}
+
+static int _init(void *data)
+{
+       struct appdata *ad = data;
+       retif(ad == NULL, QP_FAIL,"invalid parameter");
+
+       _datetime_view_attach(ad);
+
+       return QP_OK;
+}
+
+static int _fini(void *data)
+{
+       _datetime_view_deattach(data);
+
+       return QP_OK;
+}
+
+HAPI void quickpanel_datetime_datentime_event_set(int is_clickable)
+{
+       Evas_Object *view = _datetime_view_get();
+
+       DBG("date n time clickable set[%d]", is_clickable);
+
+       if (view != NULL) {
+               if (is_clickable == 1) {
+                       if (_flag_get(view, E_DATA_TIME_N_DATE_EVENT) == 0) {
+                               _flag_set(view, E_DATA_TIME_N_DATE_EVENT, 1);
+                               elm_object_signal_emit(view, "timendate.click.enable", "prog");
+                       }
+               } else {
+                       if (_flag_get(view, E_DATA_TIME_N_DATE_EVENT) == 1) {
+                               _flag_set(view, E_DATA_TIME_N_DATE_EVENT, 0);
+                               elm_object_signal_emit(view, "timendate.click.disable", "prog");
+                       }
+               }
+       }
+}
+
+HAPI void quickpanel_datetime_editing_icon_visibility_set(int is_visible)
+{
+       Evas_Object *view = _datetime_view_get();
+
+       DBG("visibility set:%d", is_visible);
+
+       if (view != NULL) {
+               if (is_visible == 1) {
+                       if (_flag_get(view, E_DATA_EDITING_VISIBILITT) == 0) {
+                               _flag_set(view, E_DATA_EDITING_VISIBILITT, 1);
+                               elm_object_signal_emit(view, "button,editing,show", "prog");
+                       }
+               } else {
+                       if (_flag_get(view, E_DATA_EDITING_VISIBILITT) == 1) {
+                               _flag_set(view, E_DATA_EDITING_VISIBILITT, 0);
+                               elm_object_signal_emit(view, "button,editing,hide", "prog");
+                       }
+               }
+       }
+}
+
+HAPI void quickpanel_datetime_view_update(char *date, char *time, char *meridiem, int meridiem_type)
+{
+       Evas_Object *view = NULL;
+
+       Eina_Strbuf *strbuf_date = NULL;
+       Eina_Strbuf *strbuf_time = NULL;
+       Eina_Strbuf *strbuf_access = NULL;
+
+       view = _datetime_view_get();
+
+       if (!view) {
+               ERR("view == NULL");
+               return;
+       }
+
+       strbuf_date = eina_strbuf_new();
+       if(!strbuf_date) {
+               ERR("strbuf_date == NULL");
+               return;
+       }
+
+       strbuf_time = eina_strbuf_new();
+       if(!strbuf_time) {
+               ERR("strbuf_time == NULL");
+               eina_strbuf_free(strbuf_date);
+               return;
+       }
+
+       strbuf_access = eina_strbuf_new();
+       if(!strbuf_access) {
+               ERR("strbuf_access == NULL");
+               eina_strbuf_free(strbuf_date);
+               eina_strbuf_free(strbuf_time);
+               return;
+       }
+
+
+       DBG("update time: %s %s %s", date, time, meridiem);
+
+       if (date != NULL) {
+               eina_strbuf_append_printf(strbuf_date, "%s", date);
+               eina_strbuf_append_printf(strbuf_access, "%s ", date);
+       }
+
+       eina_strbuf_ltrim(strbuf_date);
+
+       // -------------------------------------------------------------------------------------
+
+       if (meridiem_type == UTIL_TIME_MERIDIEM_TYPE_PRE && meridiem != NULL && strlen(meridiem) != 0) {
+               eina_strbuf_append_printf(strbuf_time, "<ampm>%s</> ", meridiem);
+               eina_strbuf_append_printf(strbuf_access, "%s ", meridiem);
+       }
+
+       if (time != NULL) {
+               eina_strbuf_append_printf(strbuf_time, "<time>%s</>", time);
+               eina_strbuf_append_printf(strbuf_access, "%s ", time);
+       }
+
+       if (meridiem_type == UTIL_TIME_MERIDIEM_TYPE_POST && meridiem != NULL && strlen(meridiem) != 0) {
+               eina_strbuf_append_printf(strbuf_time, " <ampm>%s</>", meridiem);
+               eina_strbuf_append_printf(strbuf_access, "%s ", meridiem);
+       }
+
+       eina_strbuf_ltrim(strbuf_time);
+
+       // -------------------------------------------------------------------------------------
+
+       LOGI("DATE STR SET: %s", eina_strbuf_string_get(strbuf_time));
+
+       _set_text_to_part(view, "text.date", eina_strbuf_string_get(strbuf_date));
+       _set_text_to_part(view, "text.time", eina_strbuf_string_get(strbuf_time));
+
+       quickpanel_accessibility_screen_reader_data_set(view, "focus.datetime", "", (char *)eina_strbuf_string_get(strbuf_access));
+
+       eina_strbuf_free(strbuf_date);
+       eina_strbuf_free(strbuf_time);
+       eina_strbuf_free(strbuf_access);
+
+       quickpanel_accessibility_screen_reader_data_set(view
+               , "focus.setting", "", _NOT_LOCALIZED("Settings"));
+
+}
diff --git a/daemon/datetime/datetime.h b/daemon/datetime/datetime.h
new file mode 100644 (file)
index 0000000..a570bca
--- /dev/null
@@ -0,0 +1,26 @@
+/*
+ * 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 __DATETIME_H__
+#define __DATETIME_H__
+
+void quickpanel_datetime_datentime_event_set(int is_clickable);
+void quickpanel_datetime_editing_icon_visibility_set(int is_visible);
+void quickpanel_datetime_view_update(char *date, char *time, char *meridiem, int meridiem_type);
+
+#endif /* __DATETIME_H__ */
diff --git a/daemon/datetime/util-time.c b/daemon/datetime/util-time.c
new file mode 100644 (file)
index 0000000..484b3fe
--- /dev/null
@@ -0,0 +1,1392 @@
+/*
+ * 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 <appcore-common.h>
+#include <vconf.h>
+#include <vconf-keys.h>
+#include <dlog.h>
+#include <app_control.h>
+#include <ctype.h>
+#include <system_settings.h>
+#include <utils_i18n.h>
+
+#include <unicode/utypes.h>
+#include <unicode/putil.h>
+#include <unicode/uiter.h>
+#include <unicode/udat.h>
+#include <unicode/udatpg.h>
+#include <unicode/ustring.h>
+
+#include "common.h"
+#include "quickpanel-ui.h"
+#include "util-time.h"
+#include "datetime.h"
+#include "noti.h"
+
+#define TIME_ZONEINFO_PATH      "/usr/share/zoneinfo/"
+#define TIME_ZONEINFO_PATH_LEN  (strlen(TIME_ZONEINFO_PATH))
+#define BUF_FORMATTER 64
+
+static const char *colon = ":";
+static const char *ratio = "&#x2236;";
+static int _init(void *data);
+static int _fini(void *data);
+static void _lang_changed(void *data);
+static void _util_time_heartbeat_do(void);
+
+QP_Module qp_datetime_controller = {
+       .name = "qp_datetime_controller",
+       .init = _init,
+       .fini = _fini,
+       .suspend = NULL,
+       .resume = NULL,
+       .lang_changed = _lang_changed,
+       .refresh = NULL,
+};
+
+static struct info {
+       int is_initialized;
+       Ecore_Timer *timer;
+       int is_timer_enabled;
+       UDateFormat *formatter_date;
+       UDateFormat *formatter_time;
+       UDateFormat *formatter_ampm;
+       UDateTimePatternGenerator *generator;
+       UDateTimePatternGenerator *date_generator;
+       int timeformat;
+       char *timeregion_format;
+       char *dateregion_format;
+       char *timezone_id;
+       Eina_Bool is_pre_meridiem;
+} s_info = {
+       .is_initialized = 0,
+       .timer = NULL,
+       .is_timer_enabled = 0,
+       .formatter_date = NULL,
+       .formatter_time = NULL,
+       .formatter_ampm = NULL,
+       .generator = NULL,
+       .date_generator = NULL,
+       .timeformat = APPCORE_TIME_FORMAT_24,
+       .timeregion_format = NULL,
+       .dateregion_format = NULL,
+       .timezone_id = NULL,
+       .is_pre_meridiem = EINA_FALSE,
+};
+
+static int _get_formatted_time_from_utc_time(time_t intime, char *buf, int buf_len, const char *timezone, int time_format, void *data);
+static int _get_formatted_ampm_from_utc_time(time_t intime, char *buf, int buf_len, int *ampm_len, const char *timezone, void *data);
+static int _get_formatted_date_from_utc_time(time_t intime, char *buf, int buf_len, const char *timezone, void *data, const char *format);
+static int _get_simple_formatted_date_from_utc_time(time_t intime, char *buf, int buf_len, const char *timezone, void *data);
+
+
+static Eina_Bool _timer_cb(void *data);
+
+static UChar *uastrcpy(const char *chars)
+{
+       int len = 0;
+       UChar *str = NULL;
+       len = strlen(chars);
+       str = (UChar *) malloc(sizeof(UChar) *(len + 1));
+       if (!str) {
+               return NULL;
+       }
+       u_uastrcpy(str, chars);
+       return str;
+}
+
+static void ICU_set_timezone(const char *timezone)
+{
+       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 {
+               ERR("ucal_setDefaultTimeZone() FAILED : %s ",
+                             u_errorName(ec));
+       }
+       free(str);
+}
+
+static char *_get_locale(void)
+{
+       char locale_tmp[32] = { 0, };
+       char *locale = NULL; //vconf_get_str(VCONFKEY_REGIONFORMAT);
+       int ret = 0;
+
+#ifdef HAVE_X
+       ret = system_settings_get_value_string(SYSTEM_SETTINGS_KEY_LOCALE_COUNTRY, &locale);
+       msgif(ret != SYSTEM_SETTINGS_ERROR_NONE, "failed to ignore key(SYSTEM_SETTINGS_KEY_LOCALE_COUNTRY) : %d", ret);
+#endif
+
+       if (locale == NULL) {
+               ERR("vconf_get_str() failed : region format");
+               return strdup("en_GB");
+       }
+
+       strncpy(locale_tmp, locale, sizeof(locale_tmp) - 1);
+
+       // remove .UTF-8
+       if (strlen(locale_tmp) > 0) {
+               char *p = strstr(locale_tmp, ".UTF-8");
+               if (p) {
+                       *p = 0;
+               }
+       }
+
+       free(locale);
+
+       if (strlen(locale_tmp) > 0) {
+               return strdup(locale_tmp);
+       }
+
+       return strdup("en_GB");
+}
+
+/*static char *_get_locale_for_date(void)
+{
+       char *locale = vconf_get_str(VCONFKEY_REGIONFORMAT);
+       if (locale == NULL) {
+               ERR("vconf_get_str() failed : region format");
+               return strdup("en_GB.UTF8");
+       }
+
+       if (strlen(locale) > 0) {
+               return locale;
+       }
+
+       return strdup("en_GB.UTF8");
+}*/
+
+static UDateFormat *_get_formatter_time(void *data, int time_format, const char *timezone)
+{
+       UErrorCode status = U_ZERO_ERROR;
+       char buf[BUF_FORMATTER] = {0,};
+       char *locale = NULL;
+       UChar u_pattern[BUF_FORMATTER] = {0,};
+       UChar u_timezone[BUF_FORMATTER] = {0,};
+       UDateFormat *formatter = NULL;
+       struct appdata *ad = data;
+       retif_nomsg(ad == NULL, NULL);
+
+       UDateTimePatternGenerator *generator = NULL;
+       UChar u_best_pattern[BUF_FORMATTER] = {0,};
+       int32_t u_best_pattern_capacity;
+
+#ifdef HAVE___SECURE_GETENV
+       uloc_setDefault(__secure_getenv("LC_TIME"), &status);
+#elif defined HAVE_SECURE_GETENV
+       uloc_setDefault(secure_getenv("LC_TIME"), &status);
+#else
+       uloc_setDefault(getenv("LC_TIME"), &status);
+#endif
+       if (U_FAILURE(status)) {
+               ERR("uloc_setDefault() is failed.");
+               return NULL;
+       }
+
+       if (time_format == APPCORE_TIME_FORMAT_24) {
+               snprintf(buf, sizeof(buf)-1, "%s", "HH:mm");
+       } else {
+               /* set time format 12 */
+               snprintf(buf, sizeof(buf)-1, "%s", "h:mm");
+       }
+       if (u_uastrncpy(u_pattern, buf, sizeof(u_pattern)) == NULL) {
+               ERR("u_uastrncpy() is failed.");
+               return NULL;
+       }
+
+       locale = _get_locale();
+
+       if (time_format == APPCORE_TIME_FORMAT_12) {
+               generator = udatpg_open(locale, &status);
+               if (U_FAILURE(status)) {
+                       ERR("udatpg_open() failed");
+                       generator = NULL;
+                       if (locale) {
+                               free(locale);
+                               locale = NULL;
+                       }
+                       return NULL;
+               }
+
+               u_best_pattern_capacity =
+                                               (int32_t) (sizeof(u_best_pattern) / sizeof((u_best_pattern)[0]));
+
+               udatpg_getBestPattern(generator, u_pattern, u_strlen(u_pattern),
+                                                               u_best_pattern, u_best_pattern_capacity, &status);
+               if (U_FAILURE(status)) {
+                       ERR("udatpg_getBestPattern() failed");
+                       if (locale) {
+                               free(locale);
+                               locale = NULL;
+                       }
+               }
+
+               /* remove am/pm of best pattern */
+               char a_best_pattern[BUF_FORMATTER] = {0.};
+               u_austrcpy(a_best_pattern, u_best_pattern);
+               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(u_best_pattern, a_best_pattern_fixed);
+               }
+               u_strncpy(u_pattern, u_best_pattern, sizeof(u_pattern));
+       }
+
+       if (timezone) {
+               u_uastrncpy(u_timezone, timezone, sizeof(u_timezone));
+               formatter = udat_open(UDAT_IGNORE, UDAT_IGNORE, locale, u_timezone, -1,
+                                                               u_pattern, -1, &status);
+       } else {
+               formatter = udat_open(UDAT_IGNORE, UDAT_IGNORE, locale, NULL, -1,
+                                                               u_pattern, -1, &status);
+       }
+       if (U_FAILURE(status)) {
+               ERR("udat_open() is failed.");
+               if (locale) {
+                       free(locale);
+                       locale = NULL;
+               }
+               return NULL;
+       }
+
+       if (locale) {
+               free(locale);
+               locale = NULL;
+       }
+
+       if (generator) {
+               udat_close(generator);
+               generator = NULL;
+       }
+
+       if (formatter) {
+               return formatter;
+       } else {
+               return NULL;
+       }
+}
+
+static UDateFormat *_get_formatter_ampm(void *data, const char *timezone)
+{
+       UErrorCode status = U_ZERO_ERROR;
+
+       char a_best_pattern[BUF_FORMATTER] = {0.};
+       char *locale = NULL;
+
+       UChar u_timezone[BUF_FORMATTER] = {0,};
+       UChar u_skeleton[BUF_FORMATTER] = {0,};
+       int skeleton_len = 0;
+
+       UDateFormat *formatter = NULL;
+       UDateTimePatternGenerator *generator = NULL;
+
+       UChar u_best_pattern[BUF_FORMATTER] = {0,};
+       int32_t u_best_pattern_capacity;
+
+       struct appdata *ad = data;
+       retif_nomsg(ad == NULL, NULL);
+
+#ifdef HAVE___SECURE_GETENV
+       uloc_setDefault(__secure_getenv("LC_TIME"), &status);
+#elif defined HAVE_SECURE_GETENV
+       uloc_setDefault(secure_getenv("LC_TIME"), &status);
+#else
+       uloc_setDefault(getenv("LC_TIME"), &status);
+#endif
+       if (U_FAILURE(status)) {
+               ERR("uloc_setDefault() is failed.");
+               return NULL;
+       }
+
+       locale = _get_locale();
+
+       u_uastrncpy(u_skeleton, "hhmm", strlen("hhmm"));
+       skeleton_len = u_strlen(u_skeleton);
+
+       generator = udatpg_open(locale, &status);
+       if (U_FAILURE(status)) {
+               ERR("udatpg_open() failed");
+               generator = NULL;
+               if (locale) {
+                       free(locale);
+                       locale = NULL;
+               }
+               return NULL;
+       }
+
+       u_best_pattern_capacity =
+                                       (int32_t) (sizeof(u_best_pattern) / sizeof((u_best_pattern)[0]));
+
+       udatpg_getBestPattern(generator, u_skeleton, skeleton_len,
+                                                       u_best_pattern, u_best_pattern_capacity, &status);
+       if (U_FAILURE(status)) {
+               ERR("udatpg_getBestPattern() failed");
+               if (locale) {
+                       free(locale);
+                       locale = NULL;
+               }
+       }
+
+       u_austrcpy(a_best_pattern, u_best_pattern);
+       u_uastrcpy(u_best_pattern, "a");
+
+       if (a_best_pattern[0] == 'a') {
+               s_info.is_pre_meridiem = EINA_TRUE;
+       } else {
+               s_info.is_pre_meridiem = EINA_FALSE;
+       }
+
+       if (timezone != NULL) {
+               u_uastrncpy(u_timezone, timezone, sizeof(u_timezone));
+               formatter = udat_open(UDAT_IGNORE, UDAT_IGNORE, locale, u_timezone, -1,
+                                                               u_best_pattern, -1, &status);
+       } else {
+               formatter = udat_open(UDAT_IGNORE, UDAT_IGNORE, locale, NULL, -1,
+                                                               u_best_pattern, -1, &status);
+       }
+
+       if (U_FAILURE(status)) {
+               ERR("udat_open() failed");
+               if (locale) {
+                       free(locale);
+                       locale = NULL;
+               }
+               return NULL;
+       }
+
+       if (locale) {
+               free(locale);
+               locale = NULL;
+       }
+
+       if (generator) {
+               udat_close(generator);
+               generator = NULL;
+       }
+
+       return formatter;
+}
+
+//static int _get_formatter_date(void *data, const char *timezone, Eina_Bool is_info, const char *skeleton)
+static UDateFormat *_get_formatter_date(void *data, const char *timezone, Eina_Bool is_info, const char *skeleton)
+{
+       UErrorCode status = U_ZERO_ERROR;
+       UChar u_timezone[BUF_FORMATTER] = {0,};
+       UChar u_skeleton[BUF_FORMATTER] = {0,};
+       int skeleton_len = 0;
+       char *locale = NULL;
+
+       UDateFormat *formatter = NULL;
+       UDateTimePatternGenerator *generator = NULL;
+
+       UChar u_best_pattern[BUF_FORMATTER] = {0,};
+       int32_t u_best_pattern_capacity;
+
+       struct appdata *ad = data;
+       retif_nomsg(ad == NULL, NULL);
+
+#ifdef HAVE___SECURE_GETENV
+       uloc_setDefault(__secure_getenv("LC_TIME"), &status);
+#elif defined HAVE_SECURE_GETENV
+       uloc_setDefault(secure_getenv("LC_TIME"), &status);
+#else
+       uloc_setDefault(getenv("LC_TIME"), &status);
+#endif
+       if (U_FAILURE(status)) {
+               ERR("uloc_setDefault() is failed.");
+               return NULL;
+       }
+
+       locale  = _get_locale();
+       if (locale == NULL) {
+               ERR("vconf_get_str() failed : region format");
+               locale = strdup("en_GB.UTF-8");
+       }
+
+       u_uastrncpy(u_skeleton, skeleton, strlen(skeleton));
+       skeleton_len = u_strlen(u_skeleton);
+
+       generator = udatpg_open(locale, &status);
+       if (U_FAILURE(status)) {
+               ERR("udatpg_open() failed");
+               generator = NULL;
+               if (locale) {
+                       free(locale);
+                       locale = NULL;
+               }
+               return NULL;
+       }
+
+       u_best_pattern_capacity =
+                                               (int32_t) (sizeof(u_best_pattern) / sizeof((u_best_pattern)[0]));
+
+       (void)udatpg_getBestPattern(generator, u_skeleton, skeleton_len,
+                                               u_best_pattern, u_best_pattern_capacity, &status);
+       if (U_FAILURE(status)) {
+               ERR("udatpg_getBestPattern() failed");
+               if (locale) {
+                       free(locale);
+                       locale = NULL;
+               }
+       }
+
+       if (timezone) {
+               u_uastrncpy(u_timezone, timezone, sizeof(u_timezone));
+               formatter = udat_open(UDAT_IGNORE, UDAT_DEFAULT, locale, u_timezone, -1,
+                                                               u_best_pattern, u_strlen(u_best_pattern), &status);
+       } else {
+               formatter = udat_open(UDAT_IGNORE, UDAT_DEFAULT, locale, NULL, -1,
+                                                               u_best_pattern, u_strlen(u_best_pattern), &status);
+       }
+       if (U_FAILURE(status)) {
+               ERR("udat_open() is failed.");
+               if (locale) {
+                       free(locale);
+                       locale = NULL;
+               }
+               return NULL;
+       }
+
+       if (locale) {
+               free(locale);
+               locale = NULL;
+       }
+
+       if (generator) {
+               udat_close(generator);
+               generator = NULL;
+       }
+
+       return formatter;
+}
+
+static inline char *_extend_heap(char *buffer, int *sz, int incsz)
+{
+       char *tmp;
+
+       *sz += incsz;
+       tmp = realloc(buffer, *sz);
+       if (!tmp) {
+               ERR("Heap");
+               return NULL;
+       }
+
+       return tmp;
+}
+
+static char *_string_replacer(char *src, const char *pattern, const char *replace)
+{
+       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;
+       }
+
+       out_sz = strlen(src);
+       ret = strdup(src);
+       if (!ret) {
+               ERR("Heap");
+               return 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 if (*ptr == '-') {
+                               state = STATE_CHECK;
+                               *ptr = *pattern;
+                               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;
+               }
+       }
+
+       ret[out_idx] = '\0';
+       return ret;
+}
+
+static int _get_formatted_time_from_utc_time(time_t intime, char *buf, int buf_len, const char *timezone, int time_format, void *data)
+{
+       struct appdata *ad = data;
+       retif_nomsg(ad == NULL, -1);
+
+       UDate u_time = (UDate)intime * 1000;
+       UChar u_formatted_str[BUF_FORMATTER] = {0,};
+       int32_t u_formatted_str_capacity;
+
+       UErrorCode status = U_ZERO_ERROR;
+
+       UDateFormat *formatter = _get_formatter_time(ad, time_format, timezone);
+       if (formatter == NULL) {
+               ERR("_get_formatter_time() failed");
+               return -1;
+       }
+
+       /* calculate formatted string capacity */
+       u_formatted_str_capacity =
+                       (int32_t)(sizeof(u_formatted_str) / sizeof((u_formatted_str)[0]));
+
+       /* fomatting date using formatter */
+       (void)udat_format(formatter, u_time, u_formatted_str, u_formatted_str_capacity,
+                                                                       NULL, &status);
+       if (U_FAILURE(status)) {
+               ERR("udat_format() failed");
+               if (formatter) {
+                       udat_close(formatter);
+                       formatter = NULL;
+               }
+               return -1;
+       }
+
+       buf = u_austrncpy(buf, u_formatted_str, buf_len);
+       DBG("time : %s %d", buf, intime);
+       if (formatter) {
+               udat_close(formatter);
+               formatter = NULL;
+       }
+       return 0;
+}
+
+static int _get_formatted_ampm_from_utc_time(time_t intime, char *buf, int buf_len, int *ampm_len, const char *timezone, void *data)
+{
+       struct appdata *ad = data;
+       retif_nomsg(ad == NULL, -1);
+
+       UDate u_time = (UDate)intime * 1000;
+       UChar u_formatted_str[BUF_FORMATTER] = {0,};
+       int32_t u_formatted_str_capacity;
+
+       UErrorCode status = U_ZERO_ERROR;
+
+       UDateFormat *formatter = _get_formatter_ampm(ad, timezone);
+
+       if (formatter == NULL){
+               ERR("_get_formatter_ampm() failed");
+               return -1;
+       }
+
+       u_formatted_str_capacity =
+                       (int32_t)(sizeof(u_formatted_str) / sizeof((u_formatted_str)[0]));
+
+       (void)udat_format(formatter, u_time, u_formatted_str, u_formatted_str_capacity,
+                                                                               NULL, &status);
+
+       if (U_FAILURE(status)) {
+               ERR("udat_format() failed");
+               if (formatter) {
+                       udat_close(formatter);
+                       formatter = NULL;
+               }
+               return -1;
+       }
+
+       (*ampm_len) = u_strlen(u_formatted_str);
+
+       buf = u_austrncpy(buf, u_formatted_str, buf_len);
+       DBG("ampm : %s %d", buf, intime);
+       if (formatter) {
+               udat_close(formatter);
+               formatter = NULL;
+       }
+       return 0;
+}
+
+static int _get_formatted_date_from_utc_time(time_t intime, char *buf, int buf_len, const char *timezone, void *data, const char *format)
+{
+       struct appdata *ad = data;
+       retif_nomsg(ad == NULL, -1);
+
+       UDate u_time = (UDate)intime *1000;
+       UChar u_formatted_str[BUF_FORMATTER] = {0,};
+       int32_t u_formatted_str_capacity;
+       UErrorCode status = U_ZERO_ERROR;
+
+       UDateFormat *formatter = NULL;
+
+       if (format) {
+               formatter = _get_formatter_date(ad, timezone, EINA_TRUE, format);
+       } else {
+               formatter = _get_formatter_date(ad, timezone, EINA_TRUE, "MMMEd");
+       }
+       if (formatter == NULL) {
+               ERR("_get_formatter_time() failed");
+               return -1;
+       }
+
+       u_formatted_str_capacity =
+                       (int32_t)(sizeof(u_formatted_str) / sizeof((u_formatted_str)[0]));
+
+       (void)udat_format(formatter, u_time, u_formatted_str, u_formatted_str_capacity,
+                                                                                       NULL, &status);
+       if (U_FAILURE(status)) {
+               ERR("udat_format() failed");
+               if (formatter) {
+                       udat_close(formatter);
+                       formatter = NULL;
+               }
+               return -1;
+       }
+
+       buf = u_austrncpy(buf, u_formatted_str, buf_len);
+       DBG("time : %s %d", buf, intime);
+       if (formatter) {
+               udat_close(formatter);
+               formatter = NULL;
+       }
+       return 0;
+}
+
+static int _get_simple_formatted_date_from_utc_time(time_t intime, char *buf, int buf_len, const char *timezone, void *data)
+{
+       struct appdata *ad = data;
+       retif_nomsg(ad == NULL, -1);
+
+       time_t today;
+       struct tm loc_time;
+
+       today = time(NULL);
+       localtime_r(&today, &loc_time);
+
+       loc_time.tm_sec = 0;
+       loc_time.tm_min = 0;
+       loc_time.tm_hour = 0;
+       today = mktime(&loc_time);
+
+       localtime_r(&intime, &loc_time);
+
+       char time_buf[BUF_FORMATTER] = {0, };
+       int time_buf_len = sizeof(time_buf);
+       char ampm_buf[BUF_FORMATTER] = {0, };
+       int ampm_buf_len = sizeof(ampm_buf);
+       int ampm_dst_len = 0;
+       int r = 0;
+       enum appcore_time_format timeformat = APPCORE_TIME_FORMAT_UNKNOWN;
+
+       if (intime < today) {
+               /* show only simple date */
+               _get_formatted_date_from_utc_time(intime, buf, buf_len, timezone, ad, UDAT_ABBR_MONTH_DAY);
+       } else {
+
+               /* ampm format */
+               if (s_info.timeformat == APPCORE_TIME_FORMAT_UNKNOWN) {
+                       r = appcore_get_timeformat(&timeformat);
+                       if (r == 0) {
+                               s_info.timeformat = timeformat;
+                       } else {
+                               s_info.timeformat = APPCORE_TIME_FORMAT_UNKNOWN;
+                       }
+               }
+
+               /* show time */
+               if (s_info.timeformat == APPCORE_TIME_FORMAT_24) {
+                       _get_formatted_time_from_utc_time(intime, buf, buf_len, timezone, APPCORE_TIME_FORMAT_24, ad);
+               } else {
+                       _get_formatted_time_from_utc_time(intime, time_buf, time_buf_len, timezone, APPCORE_TIME_FORMAT_12, ad);
+                       _get_formatted_ampm_from_utc_time(intime, ampm_buf, ampm_buf_len, &ampm_dst_len, timezone, ad);
+                       if (ampm_dst_len > 4) {
+                               if (loc_time.tm_hour > 12) {
+                                       snprintf(ampm_buf, sizeof(ampm_buf)-1, "%s", "PM");
+                               } else {
+                                       snprintf(ampm_buf, sizeof(ampm_buf)-1, "%s", "AM");
+                               }
+                       }
+                       if (strlen(ampm_buf) + strlen(time_buf) < buf_len - 1) {
+                               if (s_info.is_pre_meridiem) {
+                                       snprintf(buf, buf_len-1, "%s %s", ampm_buf, time_buf);
+                               } else {
+                                       snprintf(buf, buf_len-1, "%s %s", time_buf, ampm_buf);
+                               }
+                       } else {
+                               snprintf(buf, buf_len-1, "%s", time_buf);
+                       }
+               }
+       }
+       DBG("%s %d", buf, intime);
+       return 0;
+}
+
+static UDateTimePatternGenerator *__util_time_generator_get(void *data)
+{
+       UErrorCode status = U_ZERO_ERROR;
+       UDateTimePatternGenerator *generator = NULL;
+
+       struct appdata *ad = data;
+       retif_nomsg(ad == NULL, NULL);
+       retif_nomsg(s_info.timeregion_format == NULL, NULL);
+
+       generator = udatpg_open(s_info.timeregion_format, &status);
+       if (U_FAILURE(status)) {
+               ERR("udatpg_open() failed");
+               generator = NULL;
+               return NULL;
+       }
+       return generator;
+}
+
+static UDateTimePatternGenerator *__util_date_generator_get(void *data)
+{
+       UErrorCode status = U_ZERO_ERROR;
+       UDateTimePatternGenerator *generator = NULL;
+
+       struct appdata *ad = data;
+       retif_nomsg(ad == NULL, NULL);
+       retif_nomsg(s_info.dateregion_format == NULL, NULL);
+
+       generator = udatpg_open(s_info.dateregion_format, &status);
+       if (U_FAILURE(status)) {
+               ERR("udatpg_open() failed");
+               generator = NULL;
+               return NULL;
+       }
+       return generator;
+}
+
+static UDateFormat *__util_time_date_formatter_get(void *data, const char *timezone_id, const char *skeleton)
+{
+       UErrorCode status = U_ZERO_ERROR;
+
+       UChar u_skeleton[BUF_FORMATTER] = {0,};
+       int skeleton_len = 0;
+
+       UChar u_best_pattern[BUF_FORMATTER] = {0,};
+       int32_t u_best_pattern_capacity;
+       UDateFormat *formatter = NULL;
+
+       struct appdata *ad = data;
+       retif_nomsg(ad == NULL, NULL);
+       retif_nomsg(s_info.date_generator == NULL, NULL);
+
+       u_uastrncpy(u_skeleton, skeleton, strlen(skeleton));
+       skeleton_len = u_strlen(u_skeleton);
+
+       u_best_pattern_capacity =
+                                       (int32_t) (sizeof(u_best_pattern) / sizeof((u_best_pattern)[0]));
+
+       udatpg_getBestPattern(s_info.date_generator, u_skeleton, skeleton_len,
+                                                       u_best_pattern, u_best_pattern_capacity, &status);
+       if (U_FAILURE(status)) {
+               ERR("udatpg_getBestPattern() failed");
+               return NULL;
+       }
+
+       UChar u_timezone_id[BUF_FORMATTER] = {0,};
+       if (timezone_id == NULL) {
+               u_uastrncpy(u_timezone_id, s_info.timezone_id, sizeof(u_timezone_id));
+               formatter = udat_open(UDAT_IGNORE, UDAT_IGNORE, s_info.dateregion_format, u_timezone_id, -1,
+                                                               u_best_pattern, -1, &status);
+       } else {
+               u_uastrncpy(u_timezone_id, timezone_id, sizeof(u_timezone_id));
+               formatter = udat_open(UDAT_IGNORE, UDAT_IGNORE, s_info.dateregion_format, u_timezone_id, -1,
+                                                               u_best_pattern, -1, &status);
+       }
+       if (U_FAILURE(status)) {
+               ERR("udat_open() failed");
+               return NULL;
+       }
+
+       char a_best_pattern[BUF_FORMATTER] = {0,};
+       u_austrcpy(a_best_pattern, u_best_pattern);
+
+       return formatter;
+}
+
+static UDateFormat *__util_time_ampm_formatter_get(void *data, const char *timezone_id)
+{
+       UErrorCode status = U_ZERO_ERROR;
+
+       UChar u_best_pattern[BUF_FORMATTER] = {0,};
+       UDateFormat *formatter = NULL;
+
+       struct appdata *ad = data;
+       retif_nomsg(ad == NULL, NULL);
+
+       u_uastrcpy(u_best_pattern, "a");
+
+       UChar u_timezone_id[BUF_FORMATTER] = {0,};
+       if (timezone_id == NULL) {
+               u_uastrncpy(u_timezone_id, s_info.timezone_id, sizeof(u_timezone_id));
+               formatter = udat_open(UDAT_IGNORE, UDAT_IGNORE, s_info.timeregion_format, u_timezone_id, -1,
+                                                               u_best_pattern, -1, &status);
+       } else {
+               u_uastrncpy(u_timezone_id, timezone_id, sizeof(u_timezone_id));
+               formatter = udat_open(UDAT_IGNORE, UDAT_IGNORE, s_info.timeregion_format, u_timezone_id, -1,
+                                                               u_best_pattern, -1, &status);
+       }
+       if (U_FAILURE(status)) {
+               ERR("udat_open() failed");
+               return NULL;
+       }
+
+       char a_best_pattern[BUF_FORMATTER] = {0,};
+       u_austrcpy(a_best_pattern, u_best_pattern);
+
+       return formatter;
+}
+
+static UDateFormat *__util_time_time_formatter_get(void *data, int time_format, const char *timezone_id)
+{
+       char buf[BUF_FORMATTER] = {0,};
+       UErrorCode status = U_ZERO_ERROR;
+       UChar u_pattern[BUF_FORMATTER] = {0,};
+       UChar u_best_pattern[BUF_FORMATTER] = {0,};
+       int32_t u_best_pattern_capacity;
+       char a_best_pattern[BUF_FORMATTER] = {0,};
+
+       UDateFormat *formatter = NULL;
+
+       struct appdata *ad = data;
+       retif_nomsg(ad == NULL, NULL);
+       retif_nomsg(s_info.generator == NULL, NULL);
+
+       if (time_format == APPCORE_TIME_FORMAT_24) {
+               snprintf(buf, sizeof(buf)-1, "%s", "HH:mm");
+       } else {
+               /* set time format 12 */
+               snprintf(buf, sizeof(buf)-1, "%s", "h:mm");
+       }
+
+       if (u_uastrncpy(u_pattern, buf, sizeof(u_pattern)) == NULL) {
+               ERR("u_uastrncpy() is failed.");
+               return NULL;
+       }
+
+       u_best_pattern_capacity =
+                                       (int32_t) (sizeof(u_best_pattern) / sizeof((u_best_pattern)[0]));
+
+       udatpg_getBestPattern(s_info.generator, u_pattern, u_strlen(u_pattern),
+                                                       u_best_pattern, u_best_pattern_capacity, &status);
+       if (U_FAILURE(status)) {
+               ERR("udatpg_getBestPattern() failed");
+               return NULL;
+       }
+
+       u_austrcpy(a_best_pattern, u_best_pattern);
+
+       if (a_best_pattern[0] == 'a') {
+               s_info.is_pre_meridiem = EINA_TRUE;
+       } else {
+               s_info.is_pre_meridiem = EINA_FALSE;
+       }
+
+       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(u_best_pattern, a_best_pattern_fixed);
+       }
+
+       UChar u_timezone_id[BUF_FORMATTER] = {0,};
+       if (timezone_id == NULL) {
+               u_uastrncpy(u_timezone_id, s_info.timezone_id, sizeof(u_timezone_id));
+               formatter = udat_open(UDAT_IGNORE, UDAT_IGNORE, s_info.timeregion_format, u_timezone_id, -1,
+                                                               u_best_pattern, -1, &status);
+       } else {
+               u_uastrncpy(u_timezone_id, timezone_id, sizeof(u_timezone_id));
+               formatter = udat_open(UDAT_IGNORE, UDAT_IGNORE, s_info.timeregion_format, u_timezone_id, -1,
+                                                               u_best_pattern, -1, &status);
+       }
+       if (U_FAILURE(status)) {
+               ERR("udat_open() failed");
+               return NULL;
+       }
+
+       return formatter;
+}
+
+static void _util_time_formatters_create(void *data)
+{
+       struct appdata *ad = data;
+       retif_nomsg(ad == NULL, );
+
+       if (s_info.generator == NULL) {
+               s_info.generator = __util_time_generator_get(ad);
+       }
+
+       if (s_info.date_generator == NULL) {
+               s_info.date_generator = __util_date_generator_get(ad);
+       }
+
+       if (s_info.formatter_date == NULL) {
+               s_info.formatter_date = __util_time_date_formatter_get(ad, NULL, "MMMMEd");
+       }
+
+       if (s_info.timeformat == APPCORE_TIME_FORMAT_12) {
+               if (s_info.formatter_ampm == NULL) {
+                       s_info.formatter_ampm = __util_time_ampm_formatter_get(ad, NULL);
+               }
+       }
+
+       if (s_info.formatter_time == NULL) {
+               s_info.formatter_time = __util_time_time_formatter_get(ad, s_info.timeformat, NULL);
+       }
+}
+
+static void _util_time_formatters_destroy(void *data)
+{
+       struct appdata *ad = data;
+       retif_nomsg(ad == NULL, );
+
+       if (s_info.date_generator) {
+               udat_close(s_info.date_generator);
+               s_info.date_generator = NULL;
+       }
+
+       if (s_info.generator) {
+               udat_close(s_info.generator);
+               s_info.generator = NULL;
+       }
+
+       if (s_info.formatter_date) {
+               udat_close(s_info.formatter_date);
+               s_info.formatter_date = NULL;
+       }
+       if (s_info.formatter_time) {
+               udat_close(s_info.formatter_time);
+               s_info.formatter_time = NULL;
+       }
+       if (s_info.formatter_ampm) {
+               udat_close(s_info.formatter_ampm);
+               s_info.formatter_ampm = NULL;
+       }
+}
+
+static char *_util_time_regionformat_get(void)
+{
+       return _get_locale();
+}
+
+static char *_util_date_regionformat_get(void)
+{
+       return _get_locale();
+}
+
+static char* _get_timezone_from_vconf(void)
+{
+       char *szTimezone = NULL;
+       szTimezone = vconf_get_str(VCONFKEY_SETAPPL_TIMEZONE_ID);
+       if (szTimezone == NULL || strlen(szTimezone) == 0)
+       {
+               ERR("QUICKPANEL TIMEZONE - Cannot get time zone.");
+               return strdup("N/A");
+       }
+
+       return szTimezone;
+}
+
+static char *_util_time_timezone_id_get(void)
+{
+       char buf[1024] = {0,};
+       ssize_t len = readlink("/opt/etc/localtime", buf, sizeof(buf)-1);
+
+       INFO("QUICKPANEL TIMEZONE -  %s",  buf);
+
+       if (len != -1) {
+               buf[len] = '\0';
+       } else {
+               ERR("QUICKPANEL TIMEZONE - failed to get a timezone information");
+               return _get_timezone_from_vconf();
+       }
+
+       return strdup(buf + 20);
+}
+
+
+static int _util_time_formatted_time_get(UDateFormat *formatter, time_t tt, char *buf, int buf_len)
+{
+       i18n_udate u_time = (i18n_udate)(tt) * 1000;
+       i18n_uchar u_formatted_str[BUF_FORMATTER] = {0, };
+       int32_t u_formatted_str_capacity;
+       int32_t formatted_str_len = -1;
+       int status = I18N_ERROR_INVALID_PARAMETER;
+
+       u_formatted_str_capacity =
+                       (int32_t)(sizeof(u_formatted_str) / sizeof((u_formatted_str)[0]));
+
+       status = i18n_udate_format_date(formatter, u_time, u_formatted_str, u_formatted_str_capacity, NULL, &formatted_str_len);
+       if (status != I18N_ERROR_NONE) {
+               ERR("i18n_udate_format_date() failed");
+               return -1;
+       }
+
+       if (formatted_str_len <= 0) {
+               ERR("formatted_str_len is less than 0");
+       }
+
+       buf = i18n_ustring_copy_au_n(buf, u_formatted_str, (int32_t)buf_len);
+       DBG("date:(%d)[%s][%d]", formatted_str_len, buf, tt);
+
+       return (int)u_strlen(u_formatted_str);
+}
+
+
+static void _formatter_create(void *data)
+{
+       int ret = 0;
+       struct appdata *ad = data;
+       retif_nomsg(ad == NULL, );
+       bool status = false;
+
+#ifdef HAVE_X
+       ret = system_settings_get_value_bool(SYSTEM_SETTINGS_KEY_LOCALE_TIMEFORMAT_24HOUR, &status);
+       msgif(ret != SYSTEM_SETTINGS_ERROR_NONE, "failed to ignore key(SYSTEM_SETTINGS_KEY_LOCALE_TIMEFORMAT_24HOUR) : %d", ret);
+#endif
+
+       if (status == true){
+               s_info.timeformat = APPCORE_TIME_FORMAT_24;
+       }else{
+               s_info.timeformat = APPCORE_TIME_FORMAT_12;
+       }
+
+       if (s_info.timeregion_format == NULL) {
+               s_info.timeregion_format = _util_time_regionformat_get();
+       }
+
+       if (s_info.dateregion_format == NULL) {
+               s_info.dateregion_format = _util_date_regionformat_get();
+       }
+
+       if (s_info.timezone_id == NULL) {
+               s_info.timezone_id = _util_time_timezone_id_get();
+       }
+
+       ICU_set_timezone(s_info.timezone_id);
+
+       _util_time_formatters_create(ad);
+
+       s_info.is_initialized = 1;
+       DBG("%d %s %s", s_info.timeformat, s_info.timeregion_format, s_info.timezone_id);
+}
+
+static void _formatter_destory(void *data)
+{
+       struct appdata *ad = data;
+       retif_nomsg(ad == NULL, );
+
+       if (s_info.timeregion_format) {
+               free(s_info.timeregion_format);
+               s_info.timeregion_format = NULL;
+       }
+       if (s_info.dateregion_format) {
+               free(s_info.dateregion_format);
+               s_info.dateregion_format = NULL;
+       }
+       if (s_info.timezone_id) {
+               free(s_info.timezone_id);
+               s_info.timezone_id = NULL;
+       }
+
+       _util_time_formatters_destroy(ad);
+
+       s_info.is_initialized = 0;
+}
+
+static void _util_time_vconf_changed_cb(keynode_t *key, void *data)
+{
+       struct appdata *ad = data;
+
+       _formatter_destory(ad);
+       _formatter_create(ad);
+
+       _util_time_heartbeat_do();
+
+       //upate noti time information.
+       quickpanel_noti_update_by_system_time_changed_cb(key,ad);
+}
+
+static void _time_event_deattach(void *data)
+{
+       int ret = 0;
+       struct appdata *ad = data;
+       retif_nomsg(ad == NULL, );
+
+       /* unregister vconf cbs */
+       ret = vconf_ignore_key_changed(VCONFKEY_SETAPPL_TIMEZONE_INT, _util_time_vconf_changed_cb);
+       msgif(ret != 0, "failed to set key(%s) : %d", VCONFKEY_SETAPPL_TIMEZONE_INT, ret);
+       ret = vconf_ignore_key_changed(VCONFKEY_SETAPPL_TIMEZONE_ID, _util_time_vconf_changed_cb);
+       msgif(ret != 0, "failed to set key(%s) : %d", VCONFKEY_SETAPPL_TIMEZONE_ID, ret);
+       ret = vconf_ignore_key_changed(VCONFKEY_TELEPHONY_SVC_ROAM, _util_time_vconf_changed_cb);
+       msgif(ret != 0, "failed to set key(%s) : %d", VCONFKEY_TELEPHONY_SVC_ROAM, ret);
+#ifdef HAVE_X
+       ret = system_settings_unset_changed_cb(SYSTEM_SETTINGS_KEY_TIME_CHANGED);
+       msgif(ret != SYSTEM_SETTINGS_ERROR_NONE, "failed to set key(%d) : %d", SYSTEM_SETTINGS_KEY_TIME_CHANGED, ret);
+       ret = system_settings_unset_changed_cb(SYSTEM_SETTINGS_KEY_LOCALE_TIMEFORMAT_24HOUR);
+       msgif(ret != SYSTEM_SETTINGS_ERROR_NONE, "failed to set key(%d) : %d", SYSTEM_SETTINGS_KEY_LOCALE_TIMEFORMAT_24HOUR, ret);
+       ret = system_settings_unset_changed_cb(SYSTEM_SETTINGS_KEY_LOCALE_COUNTRY);
+       msgif(ret != SYSTEM_SETTINGS_ERROR_NONE, "failed to set key(%d) : %d", SYSTEM_SETTINGS_KEY_LOCALE_COUNTRY, ret);
+#endif
+}
+
+static void _time_event_attach(void *data)
+{
+       int ret = 0;
+       struct appdata *ad = data;
+       retif_nomsg(ad == NULL, );
+
+       /* register vconf cbs */
+       ret = vconf_notify_key_changed(VCONFKEY_SETAPPL_TIMEZONE_INT, _util_time_vconf_changed_cb, data);
+       msgif(ret != 0, "failed to set key(%s) : %d", VCONFKEY_SETAPPL_TIMEZONE_INT, ret);
+       ret = vconf_notify_key_changed(VCONFKEY_SETAPPL_TIMEZONE_ID, _util_time_vconf_changed_cb, data);
+       msgif(ret != 0, "failed to set key(%s) : %d", VCONFKEY_SETAPPL_TIMEZONE_ID, ret);
+       ret = vconf_notify_key_changed(VCONFKEY_TELEPHONY_SVC_ROAM, _util_time_vconf_changed_cb, data);
+       msgif(ret != 0, "failed to set key(%s) : %d", VCONFKEY_TELEPHONY_SVC_ROAM, ret);
+#ifdef HAVE_X
+       ret = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_TIME_CHANGED, _util_time_vconf_changed_cb, data);
+       msgif(ret != SYSTEM_SETTINGS_ERROR_NONE, "failed to set key(%d) : %d", SYSTEM_SETTINGS_KEY_TIME_CHANGED, ret);
+       ret = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_LOCALE_TIMEFORMAT_24HOUR, _util_time_vconf_changed_cb, data);
+       msgif(ret != SYSTEM_SETTINGS_ERROR_NONE, "failed to set key(%d) : %d", SYSTEM_SETTINGS_KEY_LOCALE_TIMEFORMAT_24HOUR, ret);
+       ret = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_LOCALE_COUNTRY, _util_time_vconf_changed_cb, data);
+       msgif(ret != SYSTEM_SETTINGS_ERROR_NONE, "failed to set key(%d) : %d", SYSTEM_SETTINGS_KEY_LOCALE_COUNTRY, ret);
+#endif
+}
+
+static void _util_time_get(int is_current_time, time_t tt_a, char **str_date, char **str_time, char **str_meridiem)
+{
+       time_t tt;
+       struct tm st;
+       char buf_date[512] = {0,};
+       char buf_time[512] = {0,};
+       char buf_ampm[512] = {0,};
+
+       char *convert_formatted_str = NULL;
+
+       if (is_current_time == 1) {
+               tt = time(NULL);
+       } else {
+               tt = tt_a;
+       }
+       localtime_r(&tt, &st);
+
+       /* date */
+       _util_time_formatted_time_get(s_info.formatter_date, tt, buf_date, sizeof(buf_date));
+
+       /* time */
+       if (s_info.timeformat == APPCORE_TIME_FORMAT_24) {
+               _util_time_formatted_time_get(s_info.formatter_time, tt, buf_time, sizeof(buf_time)-1);
+       } else {
+               _util_time_formatted_time_get(s_info.formatter_time, tt, buf_time, sizeof(buf_time)-1);
+               int ampm_len = _util_time_formatted_time_get(s_info.formatter_ampm, tt, buf_ampm, sizeof(buf_ampm)-1);
+               if (ampm_len > 4) {
+                       if (st.tm_hour >= 0 && st.tm_hour < 12) {
+                               snprintf(buf_ampm, sizeof(buf_ampm)-1, "AM");
+                       } else {
+                               snprintf(buf_ampm, sizeof(buf_ampm)-1, "PM");
+                       }
+               }
+       }
+
+       convert_formatted_str = _string_replacer(buf_time, colon, ratio);
+
+       if (str_date != NULL) {
+               *str_date = strdup(buf_date);
+       }
+
+       if (str_meridiem != NULL) {
+               *str_meridiem = strdup(buf_ampm);
+       }
+
+       if (convert_formatted_str)
+       {
+               if (str_time != NULL) {
+                       *str_time = strdup(convert_formatted_str);
+               }
+               free(convert_formatted_str);
+       }
+}
+
+static void _timer_add(void)
+{
+       time_t tt;
+       struct tm st;
+
+       tt = time(NULL);
+       localtime_r(&tt, &st);
+
+       s_info.timer = ecore_timer_add(60 - st.tm_sec, _timer_cb, NULL);
+}
+
+static void _timer_del(void)
+{
+       if (s_info.timer != NULL) {
+               ecore_timer_del(s_info.timer);
+               s_info.timer = NULL;
+       }
+}
+
+static Eina_Bool _timer_cb(void *data)
+{
+       _util_time_heartbeat_do();
+
+       if (s_info.is_timer_enabled ==1) {
+               _timer_del();
+               _timer_add();
+       }
+       return ECORE_CALLBACK_CANCEL;
+}
+
+static int _init(void *data)
+{
+       _formatter_create(data);
+       _time_event_attach(data);
+
+       return QP_OK;
+}
+
+static int _fini(void *data)
+{
+       _time_event_deattach(data);
+       _formatter_destory(data);
+
+       return QP_OK;
+}
+
+static void _lang_changed(void *data)
+{
+       _util_time_vconf_changed_cb(NULL, data);
+}
+
+static void _util_time_heartbeat_do(void)
+{
+       int type_meridiem = UTIL_TIME_MERIDIEM_TYPE_NONE;
+       char *str_date = NULL;
+       char *str_time = NULL;
+       char *str_meridiem = NULL;
+
+       if (s_info.is_initialized == 0) {
+               ERR("time information ins't initialized");
+               return;
+       }
+
+       _util_time_get(1, 0, &str_date, &str_time, &str_meridiem);
+
+       if (str_meridiem != NULL) {
+               if (s_info.is_pre_meridiem == EINA_TRUE) {
+                       type_meridiem = UTIL_TIME_MERIDIEM_TYPE_PRE;
+               } else {
+                       type_meridiem = UTIL_TIME_MERIDIEM_TYPE_POST;
+               }
+       }
+       quickpanel_datetime_view_update(str_date, str_time, str_meridiem, type_meridiem);
+
+       if (str_date) {
+               free(str_date);
+       }
+       if (str_time) {
+               free(str_time);
+       }
+       if (str_meridiem) {
+               free(str_meridiem);
+       }
+}
+
+HAPI void quickpanel_util_time_timer_enable_set(int is_enable)
+{
+       _timer_del();
+
+       if (is_enable == 1) {
+               _timer_add();
+       }
+
+       _util_time_heartbeat_do();
+
+       s_info.is_timer_enabled = is_enable;
+}
diff --git a/daemon/datetime/util-time.h b/daemon/datetime/util-time.h
new file mode 100644 (file)
index 0000000..7b3e7aa
--- /dev/null
@@ -0,0 +1,28 @@
+/*
+ * 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 __UTIL_TIME_H__
+#define __UTIL_TIME_H__
+
+#define UTIL_TIME_MERIDIEM_TYPE_NONE 0
+#define UTIL_TIME_MERIDIEM_TYPE_PRE 1
+#define UTIL_TIME_MERIDIEM_TYPE_POST 2
+
+void quickpanel_util_time_timer_enable_set(int is_enable);
+
+#endif                         /* __UTIL_TIME_H__ */
diff --git a/daemon/dbus_utility.c b/daemon/dbus_utility.c
new file mode 100644 (file)
index 0000000..e23236e
--- /dev/null
@@ -0,0 +1,59 @@
+/*
+ * 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 <glib.h>
+#include "common.h"
+#include "quickpanel-ui.h"
+
+#define QP_DBUS_ACTIVENOTI_NAME QP_DBUS_NAME".activenoti"
+#define QP_DBUS_ACTIVENOTI_PATH QP_DBUS_PATH"/activenoti"
+#define QP_DBUS_ACTIVENOTI_MEMBER_SHOW "show"
+#define QP_DBUS_ACTIVENOTI_MEMBER_HIDE "hide"
+
+HAPI void quickpanel_dbus_activenoti_visibility_send(int is_visible)
+{
+       DBusMessage *signal = NULL;
+       const char *member = NULL;
+       struct appdata *ad  = quickpanel_get_app_data();
+
+       retif(ad == NULL, , "invalid parameter");
+       retif(ad->dbus_connection == NULL, , "failed to get dbus system bus");
+
+       if (is_visible == 1) {
+               member = QP_DBUS_ACTIVENOTI_MEMBER_SHOW;
+       } else {
+               member = QP_DBUS_ACTIVENOTI_MEMBER_HIDE;
+       }
+       signal =
+           dbus_message_new_signal(QP_DBUS_ACTIVENOTI_PATH
+                       , QP_DBUS_ACTIVENOTI_NAME
+                       , member);
+       if (signal == NULL) {
+               ERR("Fail to dbus_message_new_signal");
+               return;
+       }
+
+       DBG("status:%s", member);
+
+       e_dbus_message_send(ad->dbus_connection,
+                       signal,
+                       NULL,
+                       0,
+                       NULL);
+       dbus_message_unref(signal);
+}
diff --git a/daemon/dbus_utility.h b/daemon/dbus_utility.h
new file mode 100644 (file)
index 0000000..02ffdb6
--- /dev/null
@@ -0,0 +1,23 @@
+/*
+ * 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 __QP_DBUS_UTILITY_H__
+#define __QP_DBUS_UTILITY_H__
+
+void quickpanel_dbus_activenoti_visibility_send(int is_visible);
+
+#endif
\ No newline at end of file
index 3a63d35..cf14a55 100755 (executable)
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ * Copyright (c) 2009-2015 Samsung Electronics Co., Ltd All Rights Reserved
  *
- * Licensed under the Flora License, Version 1.1 (the License);
+ * 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,
+ * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
+ *
  */
 
+
 #include <glib.h>
 #include <string.h>
 #include <vconf.h>
-#include <device.h>
+#include <device/display.h>
+#include <app_control.h>
+
 #include "common.h"
 #include "quickpanel-ui.h"
 #include "list_util.h"
 #include "quickpanel_def.h"
+#ifdef QP_SCREENREADER_ENABLE
+#include "accessibility.h"
+#endif
+#include "preference.h"
+#include "setting_utils.h"
+#ifdef QP_EMERGENCY_MODE_ENABLE
+#include "emergency_mode.h"
+#endif
+#include "page_setting_all.h"
+#include "settings_view_featured.h"
 
 #define BRIGHTNESS_MIN 1
 #define BRIGHTNESS_MAX 100
-
-#define QP_BRIGHTNESS_CONTROL_ICON_IMG ICONDIR"/Q02_Notification_brightness.png"
+#define BRIGHTNESS_SIG_ACTIVITY "BRIGHTNESS"
+#define PREF_BRIGHTNESS_ON "ON"
+#define PREF_BRIGHTNESS_OFF "OFF"
 
 typedef struct _brightness_ctrl_obj {
        int min_level;
        int max_level;
+       int is_event_registered;
+       int last_requested_level;
        Evas_Object *viewer;
        void *data;
+       int level_before;
+       int pos_x;
+
+       Evas_Object *brighntess_slider;
 } brightness_ctrl_obj;
 
-static int quickpanel_brightness_init(void *data);
-static int quickpanel_brightness_fini(void *data);
-static void quickpanel_brightness_lang_changed(void *data);
-static void quickpanel_brightness_qp_opened(void *data);
-static void quickpanel_brightness_qp_closed(void *data);
+
+int slider_drag_start = -1;
+Eina_Bool is_sliding = EINA_FALSE;
+
+
+static int _init(void *data);
+static int _fini(void *data);
+static void _lang_changed(void *data);
+static void _qp_opened(void *data);
+static void _qp_closed(void *data);
 static void _brightness_view_update(void);
 static void _brightness_register_event_cb(brightness_ctrl_obj *ctrl_obj);
 static void _brightness_deregister_event_cb(brightness_ctrl_obj *ctrl_obj);
 
+static void _brightness_set_image(int level);
+static void _refresh(void *data);
+
 QP_Module brightness_ctrl = {
        .name = "brightness_ctrl",
-       .init = quickpanel_brightness_init,
-       .fini = quickpanel_brightness_fini,
+       .init = _init,
+       .fini = _fini,
        .suspend = NULL,
        .resume = NULL,
        .hib_enter = NULL,
        .hib_leave = NULL,
-       .lang_changed = quickpanel_brightness_lang_changed,
-       .refresh = NULL,
+       .lang_changed = _lang_changed,
+       .refresh = _refresh,
        .get_height = NULL,
-       .qp_opened = quickpanel_brightness_qp_opened,
-       .qp_closed = quickpanel_brightness_qp_closed,
+       .qp_opened = _qp_opened,
+       .qp_closed = _qp_closed,
 };
 
 static brightness_ctrl_obj *g_ctrl_obj;
+E_DBus_Signal_Handler *g_hdl_brightness;
 
-static void _set_text_to_part(Evas_Object *obj, const char *part, const char *text) {
-       const char *old_text = NULL;
+static Evas_Object *_controller_view_get(void)
+{
+       Evas_Object *view = NULL;
+
+       if (g_ctrl_obj != NULL) {
+               if (g_ctrl_obj->viewer != NULL) {
+                       view = elm_object_part_content_get(g_ctrl_obj->viewer, "elm.swallow.controller");
+                       if (view == NULL) {
+                               view = evas_object_data_get(g_ctrl_obj->viewer, "view.controller");
+                       }
+               }
+       }
+
+       return view;
+}
+
+static void _controller_view_set(Evas_Object *wrapper, Evas_Object *view)
+{
+       retif(wrapper == NULL, , "invalid data");
+       retif(view == NULL, , "invalid data");
+
+       elm_object_part_content_set(wrapper, "elm.swallow.controller", view);
+       evas_object_data_set(wrapper, "view.controller", view);
+}
+
+static char *_brightness_access_state_cb(void *data, Evas_Object *obj)
+{
+       char buf[512] = {0,};
+       brightness_ctrl_obj *ctrl_obj = data;
+       retif(NULL == ctrl_obj, NULL, "invalid data");
+
+       snprintf(buf, sizeof(buf) - 1, _NOT_LOCALIZED("Position %1$d of %2$d"),
+                       ctrl_obj->last_requested_level, ctrl_obj->max_level);
+
+       return strdup(buf);
+}
+
+#ifdef QP_SCREENREADER_ENABLE
+static void _set_slider_accessiblity_state(Evas_Object *obj)
+{
+       Evas_Object *ao = NULL;
+       brightness_ctrl_obj *ctrl_obj = g_ctrl_obj;
+       retif(ctrl_obj == NULL, , "Invalid parameter!");
+       retif(ctrl_obj->viewer == NULL, , "Invalid parameter!");
 
+       ao = quickpanel_accessibility_screen_reader_object_get(obj,
+                       SCREEN_READER_OBJ_TYPE_ELM_OBJECT, NULL, NULL);
+       if (ao != NULL) {
+               elm_access_info_set(ao, ELM_ACCESS_INFO, _NOT_LOCALIZED("Brightness"));
+               elm_access_info_set(ao, ELM_ACCESS_TYPE, _NOT_LOCALIZED("Slider"));
+               elm_access_info_cb_set(ao, ELM_ACCESS_STATE, _brightness_access_state_cb, ctrl_obj);
+       }
+}
+#endif
+
+static void _set_text_to_part(Evas_Object *obj, const char *part, const char *text)
+{
+       const char *old_text = NULL;
        retif(obj == NULL, , "Invalid parameter!");
        retif(part == NULL, , "Invalid parameter!");
        retif(text == NULL, , "Invalid parameter!");
@@ -71,60 +156,29 @@ static void _set_text_to_part(Evas_Object *obj, const char *part, const char *te
        old_text = elm_object_part_text_get(obj, part);
        if (old_text != NULL) {
                if (strcmp(old_text, text) == 0) {
-                       return ;
+                       return;
                }
        }
 
        elm_object_part_text_set(obj, part, text);
 }
 
-static Evas_Object *_check_duplicated_image_loading(Evas_Object *obj, const char *part, const char *file_path) {
-       Evas_Object *old_ic = NULL;
-       const char *old_ic_path = NULL;
-
-       retif(obj == NULL, NULL, "Invalid parameter!");
-       retif(part == NULL, NULL, "Invalid parameter!");
-       retif(file_path == NULL, NULL, "Invalid parameter!");
-
-       old_ic = elm_object_part_content_get(obj, part);
-       if (old_ic != NULL) {
-               elm_image_file_get(old_ic, &old_ic_path, NULL);
-               if (old_ic_path != NULL) {
-                       if (strcmp(old_ic_path, file_path) == 0)
-                               return old_ic;
-               }
-
-               elm_object_part_content_unset(obj, part);
-               evas_object_del(old_ic);
-       }
-
-       return NULL;
-}
-
-static Evas_Object *_check_duplicated_loading(Evas_Object *obj, const char *part) {
+static Evas_Object *_check_duplicated_loading(Evas_Object *obj, const char *part)
+{
        Evas_Object *old_content = NULL;
-
        retif(obj == NULL, NULL, "Invalid parameter!");
        retif(part == NULL, NULL, "Invalid parameter!");
 
        old_content = elm_object_part_content_get(obj, part);
        if (old_content != NULL) {
-                       return old_content;
+               return old_content;
        }
 
        return NULL;
 }
 
-static int _brightness_get_automate_level(void) {
-       int is_on = 0;
-
-       if (vconf_get_int(VCONFKEY_SETAPPL_BRIGHTNESS_AUTOMATIC_INT, &is_on) == 0)
-               return is_on;
-       else
-               return SETTING_BRIGHTNESS_AUTOMATIC_OFF;
-}
-
-static void _brightness_vconf_cb(keynode_t *key, void* data) {
+static void _brightness_vconf_cb(keynode_t *key, void* data)
+{
        brightness_ctrl_obj *ctrl_obj = NULL;
 
        retif(data == NULL, , "Data parameter is NULL");
@@ -135,56 +189,73 @@ static void _brightness_vconf_cb(keynode_t *key, void* data) {
        }
 }
 
-static void quickpanel_brightness_qp_opened(void *data)
+static int _brightness_set_level(int level)
 {
-       struct appdata *ad = NULL;
+       int ret = DEVICE_ERROR_NONE;
 
-       retif(data == NULL, , "Invalid parameter!");
-       ad = data;
+       ret = device_display_set_brightness(0, level);
+       if (ret != DEVICE_ERROR_NONE) {
+               ERR("failed to set brightness");
+       }
 
-       retif(g_ctrl_obj == NULL, , "Invalid parameter!");
+       return level;
+}
 
-       if (g_ctrl_obj->viewer != NULL) {
-               _brightness_view_update();
+static int _brightness_get_level(void) {
+
+       int level = 0;
+
+       if (vconf_get_int(VCONFKEY_SETAPPL_LCD_BRIGHTNESS, &level) == 0) {
+               return level;
+       } else {
+               return SETTING_BRIGHTNESS_LEVEL5;
        }
 }
 
-static void quickpanel_brightness_qp_closed(void *data)
-{
-       struct appdata *ad = NULL;
+Evas_Object *_slider_get(Evas_Object *view, brightness_ctrl_obj *ctrl_obj) {
 
-       retif(data == NULL, , "Invalid parameter!");
-       ad = data;
+       retif(view == NULL, NULL, "Data parameter is NULL");
 
-       retif(g_ctrl_obj == NULL, , "Invalid parameter!");
+       Evas_Object *obj = elm_object_part_content_get(view, "elm.swallow.slider");
 
-       if (g_ctrl_obj->viewer != NULL) {
-               _brightness_view_update();
+       if (obj) {
+               return obj;
+       } else {
+               return ctrl_obj->brighntess_slider;
        }
 }
 
-static int _brightness_set_level(int level) {
-       int ret = DEVICE_ERROR_NONE;
 
-       ret = device_set_brightness_to_settings(0, level);
-       if (ret != DEVICE_ERROR_NONE) {
-               ERR("failed to set brightness");
-       }
+static void _slider_changed_job_cb(void *data)
+{
+       int value = 0;
+       double val = 0.0;
+       Evas_Object *obj = NULL;
+       brightness_ctrl_obj *ctrl_obj = data;
+       double time_current = 0.0;
+       static double time_before = 0.0;
 
-       return level;
-}
+       retif(ctrl_obj == NULL, , "Data parameter is NULL");
+       obj = _slider_get(_controller_view_get(), ctrl_obj);
+       retif(obj == NULL, , "obj is NULL");
 
-static int _brightness_get_level(void) {
-       int level = 0;
+       val = elm_slider_value_get(obj);
+       value = (int)(val + 0.5);
+
+       time_current = ecore_loop_time_get();
+
+       if (value != ctrl_obj->last_requested_level) {
+               if (value >= ctrl_obj->min_level && value <= ctrl_obj->max_level) {
+                       ctrl_obj->last_requested_level = value;
+                       if (time_current - time_before >= 0.045) {
+                               _brightness_set_level(value);
+                               time_before = time_current;
+                       }
+                       _brightness_set_image(value);
+               }
+       }
 
-       if (vconf_get_int(VCONFKEY_SETAPPL_LCD_BRIGHTNESS, &level) == 0)
-               return level;
-       else
-               return SETTING_BRIGHTNESS_LEVEL5;
-}
 
-static int _brightness_set_automate_level(int is_on) {
-       return vconf_set_int(VCONFKEY_SETAPPL_BRIGHTNESS_AUTOMATIC_INT, is_on);
 }
 
 static void
@@ -192,22 +263,57 @@ _brightness_ctrl_slider_changed_cb(void *data,
                                                         Evas_Object *obj,
                                                         void *event_info)
 {
+       int pos_new = (int)event_info;
+       LOGI("SLIDER_NEW_POS: %d", pos_new);
+
+       _slider_changed_job_cb(data);
+}
+
+
+static void _brightness_ctrl_overheat_check(Evas_Object *slider, void *data, int is_display_popup)
+{
        int value = 0;
-       static int old_val = -1;
-       brightness_ctrl_obj *ctrl_obj = NULL;
+       int max_brightness = BRIGHTNESS_MAX;
+       brightness_ctrl_obj *ctrl_obj = data;
+       retif(slider == NULL, , "slider is NULL");
+       retif(ctrl_obj == NULL, , "Data parameter is NULL");
 
-       retif(data == NULL, , "Data parameter is NULL");
-       ctrl_obj = data;
+       struct appdata *ad = quickpanel_get_app_data();
+       retif(ad == NULL, , "invalid data.");
 
-       double val = elm_slider_value_get(obj);
-       value = (int)(val + 0.5);
+       value = ctrl_obj->last_requested_level;
 
-       if (value != old_val)
-       {
-               if (value >= ctrl_obj->min_level && value <= ctrl_obj->max_level) {
-                       DBG("brightness is changed to %d", value);
-                       _brightness_set_level(value);
+       device_display_get_max_brightness(0, &max_brightness);
+       if (value > max_brightness && max_brightness != BRIGHTNESS_MAX) {
+               DBG("max brightness is limited");
+               if (is_display_popup == 1) {
+                       if (ad->popup == NULL) {
+                               quickpanel_setting_create_timeout_popup(ad->win,
+                                       _("IDS_ST_POP_UNABLE_TO_INCREASE_BRIGHTNESS_FURTHER_BECAUSE_OF_PHONE_OVERHEATING"));
+                       }
                }
+               elm_slider_value_set(slider, (double)max_brightness);
+               ctrl_obj->last_requested_level = max_brightness;
+               _brightness_set_level(max_brightness);
+               _brightness_set_image(max_brightness);
+               return;
+       }
+}
+
+static void _slider_delayed_changed_job_cb(void *data)
+{
+       int value = 0;
+       brightness_ctrl_obj *ctrl_obj = data;
+       Evas_Object *obj = NULL;
+       retif(ctrl_obj == NULL, , "Data parameter is NULL");
+       obj = _slider_get(_controller_view_get(), ctrl_obj);
+       retif(obj == NULL, , "obj is NULL");
+
+       value = ctrl_obj->last_requested_level;
+
+       if (value >= ctrl_obj->min_level && value <= ctrl_obj->max_level) {
+               _brightness_set_level(value);
+               _brightness_set_image(value);
        }
 }
 
@@ -216,133 +322,136 @@ _brightness_ctrl_slider_delayed_changed_cb(void *data,
                                                         Evas_Object *obj,
                                                         void *event_info)
 {
-       int value = 0;
-
-       value = _brightness_get_level();
-       DBG("brightness is changed to %d", value);
-       _brightness_set_level(value);
+       LOGI("");
+       ecore_job_add(_slider_delayed_changed_job_cb, data);
 }
 
 static void
-_brightness_ctrl_slider_drag_start_cb(void *data,
+_brightness_slider_drag_start_cb(void *data,
                                                         Evas_Object *obj,
                                                         void *event_info)
 {
-       _brightness_deregister_event_cb(data);
+       is_sliding = EINA_TRUE;
+       slider_drag_start = _brightness_get_level();
 }
 
 static void
-_brightness_ctrl_slider_drag_stop_cb(void *data,
+_brightness_slider_drag_stop_cb(void *data,
                                                         Evas_Object *obj,
                                                         void *event_info)
 {
-       _brightness_register_event_cb(data);
+       brightness_ctrl_obj *ctrl_obj = data;
+       is_sliding = EINA_FALSE;
 }
 
-static void _brightness_ctrl_checker_toggle_cb(void *data,
-                                                               Evas_Object * obj,
-                                                               void *event_info)
+
+/*!
+ * workaround to avoid focus jump to other pages
+ */
+static void _frame_focused(void *data, Evas_Object * obj, void *event_info)
 {
-       quickpanel_play_feedback();
+       quickpanel_page_setting_all_focus_allow_set(EINA_FALSE);
+}
 
-       retif(obj == NULL, , "obj parameter is NULL");
+static void _frame_unfocused(void *data, Evas_Object * obj, void *event_info)
+{
+       quickpanel_page_setting_all_focus_allow_set(EINA_TRUE);
+}
 
-       int status = elm_check_state_get(obj);
-       brightness_ctrl_obj *ctrl_obj = NULL;
 
-       retif(data == NULL, , "Data parameter is NULL");
-       ctrl_obj = data;
+static void _brightness_view_pos_set()
+{
+       struct appdata *ad = quickpanel_get_app_data();
 
-       _brightness_set_automate_level(status);
+       Evas_Coord base_y;
+//     Evas_Coord settings_y;
+       Evas_Coord brightness_y;
 
-       if (ctrl_obj->viewer != NULL) {
-               _brightness_view_update();
-       }
+       Eina_Bool ret = EINA_FALSE;
+
+       edje_object_part_geometry_get(_EDJ(ad->view_root), "qp.root.swallow", NULL, &base_y, NULL, NULL);
+//     edje_object_part_geometry_get(ad->ly, QP_SETTING_BASE_PART, NULL, &settings_y, NULL, NULL);
+
+       Evas_Object *settings_swallow = quickpanel_setting_layout_get(ad->ly, QP_SETTING_BASE_PART);
+       ret = edje_object_part_geometry_get(_EDJ(settings_swallow), QP_SETTING_BRIGHTNESS_PART_WVGA, NULL, &brightness_y, NULL, NULL);
+       msgif(!ret, "ret is EINA_FALSE");
+
+       evas_object_move(g_ctrl_obj->viewer, 0, base_y + /*settings_y */+ brightness_y);
 }
 
 static Evas_Object *_brightness_view_create(Evas_Object *list)
 {
        Eina_Bool ret = EINA_TRUE;
+       Evas_Object *view_wrapper = NULL;
        Evas_Object *view = NULL;
 
        retif(list == NULL, NULL, "list parameter is NULL");
 
-       view = elm_layout_add(list);
-
-       if (view != NULL) {
-               ret = elm_layout_file_set(view, DEFAULT_EDJ,
-                               "quickpanel/brightness_controller/default");
-
+       view_wrapper = elm_layout_add(list);
+       if (view_wrapper != NULL) {
+               ret = elm_layout_file_set(view_wrapper, DEFAULT_EDJ,
+                               "quickpanel/brightness_controller/wrapper");
                if (ret == EINA_FALSE) {
-                       ERR("failed to load brightness layout");
+                       ERR("failed to load brightness wapper layout");
+               }
+               evas_object_size_hint_weight_set(view_wrapper, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+               evas_object_size_hint_align_set(view_wrapper, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+               view = elm_layout_add(view_wrapper);
+               if (view != NULL) {
+                       ret = elm_layout_file_set(view, DEFAULT_EDJ,
+                                       "quickpanel/brightness_controller/default");
+
+                       if (ret == EINA_FALSE) {
+                               ERR("failed to load brightness layout");
+                       }
+                       evas_object_size_hint_weight_set(view, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+                       evas_object_size_hint_align_set(view, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+                       Evas_Object *focus = quickpanel_accessibility_ui_get_focus_object(view);
+                       elm_access_info_cb_set(focus, ELM_ACCESS_TYPE, quickpanel_accessibility_info_cb_s, _NOT_LOCALIZED("Brightness"));
+                       elm_object_part_content_set(view, "focus", focus);
+
+                       evas_object_smart_callback_add(focus, "focused", _frame_focused, NULL);
+                       evas_object_smart_callback_add(focus, "unfocused", _frame_unfocused, NULL);
+                       evas_object_show(view);
+                       _brightness_view_pos_set();
+
+                       g_ctrl_obj->brighntess_slider = view;
+                       _controller_view_set(view_wrapper, view);
+                       evas_object_show(view_wrapper);
                }
-               evas_object_size_hint_weight_set(view, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
-               evas_object_size_hint_align_set(view, EVAS_HINT_FILL, EVAS_HINT_FILL);
-               evas_object_show(view);
        }
 
-       return view;
+       return view_wrapper;
 }
 
-static void _brightness_set_text(void)
-{
-       brightness_ctrl_obj *ctrl_obj = g_ctrl_obj;
-       retif(ctrl_obj == NULL, , "Invalid parameter!");
-       retif(ctrl_obj->viewer == NULL, , "Invalid parameter!");
-
-       _set_text_to_part(ctrl_obj->viewer, "elm.check.text", _("IDS_QP_BODY_AUTO"));
-       _set_text_to_part(ctrl_obj->viewer, "elm.text.label", _S("IDS_COM_OPT_BRIGHTNESS"));
-}
-
-static void _brightness_set_image(void)
-{
-       Evas_Object *ic = NULL;
-       Evas_Object *old_ic = NULL;
-       brightness_ctrl_obj *ctrl_obj = g_ctrl_obj;
-       retif(ctrl_obj == NULL, , "Invalid parameter!");
-       retif(ctrl_obj->viewer == NULL, , "Invalid parameter!");
-
-       old_ic = _check_duplicated_image_loading(ctrl_obj->viewer,
-                       "elm.swallow.thumbnail", QP_BRIGHTNESS_CONTROL_ICON_IMG);
-
-       if (old_ic == NULL) {
-               ic = elm_image_add(ctrl_obj->viewer);
 
-               if (ic != NULL) {
-                       elm_image_resizable_set(ic, EINA_FALSE, EINA_FALSE);
-                       elm_image_file_set(ic, QP_BRIGHTNESS_CONTROL_ICON_IMG, "elm.swallow.thumbnail");
-                       elm_object_part_content_set(ctrl_obj->viewer, "elm.swallow.thumbnail", ic);
-               }
-       }
-}
-
-static void _brightness_set_checker(void)
+static void _brightness_set_image(int level)
 {
-       Evas_Object *checker = NULL;
-       Evas_Object *old_obj = NULL;
+       int old_brightness_type = -1;
+       int mapped_level = 0;
+       char buf[128] = {0,};
+       Evas_Object *view = _controller_view_get();
        brightness_ctrl_obj *ctrl_obj = g_ctrl_obj;
        retif(ctrl_obj == NULL, , "Invalid parameter!");
-       retif(ctrl_obj->viewer == NULL, , "Invalid parameter!");
-
-       old_obj = _check_duplicated_loading(ctrl_obj->viewer,
-                       "elm.check.swallow");
-
-       if (old_obj == NULL) {
-               checker = elm_check_add(ctrl_obj->viewer);
-
-               if (checker != NULL) {
-                       elm_object_style_set(checker, "quickpanel");
-                       evas_object_smart_callback_add(checker,"changed",_brightness_ctrl_checker_toggle_cb , ctrl_obj);
-                       elm_object_part_content_set(ctrl_obj->viewer, "elm.check.swallow", checker);
-               } else {
-                       ERR("failed to create checker");
-                       return ;
-               }
+       retif(view == NULL, , "Invalid parameter!");
+
+       if (level <= 1) {
+               mapped_level = 0;
+       } else if (level >= 100) {
+               mapped_level = 11;
+       } else if (level > 1 && level <= 9){
+               mapped_level = 1;
        } else {
-               checker = old_obj;
+               mapped_level = (level / 10);
        }
 
-       elm_check_state_set(checker, _brightness_get_automate_level());
+       if (ctrl_obj->level_before != mapped_level ) {
+               snprintf(buf, sizeof(buf) - 1, "icon.state.%d", mapped_level);
+               elm_object_signal_emit(view, buf, "prog");
+               ctrl_obj->level_before = mapped_level;
+       }
 }
 
 static void _brightness_set_slider(void)
@@ -351,18 +460,16 @@ static void _brightness_set_slider(void)
        Evas_Object *slider = NULL;
        Evas_Object *old_obj = NULL;
        brightness_ctrl_obj *ctrl_obj = g_ctrl_obj;
+       Evas_Object *view = _controller_view_get();
        retif(ctrl_obj == NULL, , "Invalid parameter!");
-       retif(ctrl_obj->viewer == NULL, , "Invalid parameter!");
+       retif(view == NULL, , "Invalid parameter!");
 
-       old_obj = _check_duplicated_loading(ctrl_obj->viewer,
-                       "elm.swallow.slider");
+       old_obj = _check_duplicated_loading(view, "elm.swallow.slider");
 
        if (old_obj == NULL) {
-               slider = elm_slider_add(ctrl_obj->viewer);
+               slider = elm_slider_add(view);
 
                if (slider != NULL) {
-                       elm_object_style_set(slider, "quickpanel");
-
                        evas_object_size_hint_weight_set(slider, EVAS_HINT_EXPAND, 0.0);
                        evas_object_size_hint_align_set(slider, EVAS_HINT_FILL, 0.5);
                        elm_slider_min_max_set(slider, ctrl_obj->min_level, ctrl_obj->max_level);
@@ -370,60 +477,80 @@ static void _brightness_set_slider(void)
                                        _brightness_ctrl_slider_changed_cb, ctrl_obj);
                        evas_object_smart_callback_add(slider, "delay,changed",
                                        _brightness_ctrl_slider_delayed_changed_cb, ctrl_obj);
+
                        evas_object_smart_callback_add(slider, "slider,drag,start",
-                                       _brightness_ctrl_slider_drag_start_cb, ctrl_obj);
+                                       _brightness_slider_drag_start_cb, ctrl_obj);
+
+
                        evas_object_smart_callback_add(slider, "slider,drag,stop",
-                                       _brightness_ctrl_slider_drag_stop_cb, ctrl_obj);
-                       elm_object_part_content_set(ctrl_obj->viewer, "elm.swallow.slider", slider);
+                                       _brightness_slider_drag_stop_cb, ctrl_obj);
+
+                       elm_object_part_content_set(view, "elm.swallow.slider", slider);
                } else {
                        ERR("failed to create slider");
-                       return ;
+                       return;
                }
        } else {
                slider = old_obj;
        }
 
-       value = _brightness_get_level();
+       elm_object_style_set(slider, "quickpanel_style");
 
+       elm_slider_indicator_format_set(slider, NULL);
+       elm_slider_indicator_format_function_set(slider, NULL, NULL);
+       elm_slider_indicator_show_set(slider, EINA_FALSE);
+
+#ifdef QP_SCREENREADER_ENABLE
+       _set_slider_accessiblity_state(slider);
+#endif
+
+       value = _brightness_get_level();
        elm_slider_value_set(slider, value);
+       _brightness_set_image(value);
+}
 
-       if (_brightness_get_automate_level()) {
-               elm_object_disabled_set(slider, EINA_TRUE);
-       } else {
-               elm_object_disabled_set(slider, EINA_FALSE);
+static void _focus_pair_set()
+{
+       brightness_ctrl_obj *ctrl_obj = g_ctrl_obj;
+       Evas_Object *focus = NULL;
+       Evas_Object *slider = NULL;
+       Evas_Object *view = _controller_view_get();
+       retif(ctrl_obj == NULL, , "Invalid parameter!");
+       retif(view == NULL, , "Invalid parameter!");
+
+       focus = elm_object_part_content_get(view, "focus");
+       slider = elm_object_part_content_get(view, "elm.swallow.slider");
+
+       if (focus != NULL && slider != NULL) {
+               /* focus */
+               elm_object_focus_next_object_set(focus, slider, ELM_FOCUS_RIGHT);
+               elm_object_focus_next_object_set(focus, slider, ELM_FOCUS_DOWN);
+
+               /* slider */
+               elm_object_focus_next_object_set(slider, focus, ELM_FOCUS_LEFT);
+               elm_object_focus_next_object_set(slider, focus, ELM_FOCUS_UP);
        }
 }
 
 static void _brightness_view_update(void)
 {
-       _brightness_set_text();
-       _brightness_set_image();
-       _brightness_set_checker();
        _brightness_set_slider();
+       _focus_pair_set();
 }
 
 static void _brightness_add(brightness_ctrl_obj *ctrl_obj, void *data)
 {
-       qp_item_data *qid = NULL;
-       struct appdata *ad;
-
-       ad = data;
+       struct appdata *ad = data;
+       retif(!ad, , "list is NULL");
        retif(!ad->list, , "list is NULL");
+       retif(ctrl_obj == NULL, , "ctrl_obj is null");
+       retif(ctrl_obj->viewer != NULL, , "viewer is already created");
 
        ctrl_obj->viewer = _brightness_view_create(ad->list);
        ctrl_obj->data = data;
 
-       if (ctrl_obj->viewer != NULL) {
-               qid = quickpanel_list_util_item_new(QP_ITEM_TYPE_BRIGHTNESS, ctrl_obj);
-               if (qid != NULL) {
-                       quickpanel_list_util_item_set_tag(ctrl_obj->viewer, qid);
-                       quickpanel_list_util_sort_insert(ad->list, ctrl_obj->viewer);
-               } else {
-                       ERR("fail to alloc vit");
-               }
-       } else {
-               ERR("failed to create brightness view");
-       }
+       _brightness_set_image(BRIGHTNESS_MIN);
+       _refresh(ad);
 }
 
 static void _brightness_remove(brightness_ctrl_obj *ctrl_obj, void *data)
@@ -435,11 +562,12 @@ static void _brightness_remove(brightness_ctrl_obj *ctrl_obj, void *data)
        if (g_ctrl_obj != NULL) {
                if (g_ctrl_obj->viewer != NULL) {
                        quickpanel_list_util_item_unpack_by_object(ad->list
-                                       , g_ctrl_obj->viewer);
+                                       , g_ctrl_obj->viewer, 0, 0);
                        quickpanel_list_util_item_del_tag(g_ctrl_obj->viewer);
                        evas_object_del(g_ctrl_obj->viewer);
+                       g_ctrl_obj->viewer = NULL;
                }
-               INFO("success to remove brightness controller");
+               DBG("brightness controller is removed");
                free(g_ctrl_obj);
                g_ctrl_obj = NULL;
        }
@@ -450,60 +578,154 @@ static void _brightness_register_event_cb(brightness_ctrl_obj *ctrl_obj)
        int ret = 0;
        retif(ctrl_obj == NULL, , "Data parameter is NULL");
 
-       ret = vconf_notify_key_changed(VCONFKEY_SETAPPL_LCD_BRIGHTNESS,
-                       _brightness_vconf_cb, ctrl_obj);
-       if (ret != 0) {
-               ERR("failed to register a cb key:%s err:%d",
-                               "VCONFKEY_SETAPPL_LCD_BRIGHTNESS", ret);
+       if (ctrl_obj->is_event_registered == 0) {
+               ret = vconf_notify_key_changed(VCONFKEY_SETAPPL_LCD_BRIGHTNESS,
+                               _brightness_vconf_cb, ctrl_obj);
+               if (ret != 0) {
+                       ERR("failed to register a cb key:%s err:%d",
+                                       "VCONFKEY_SETAPPL_LCD_BRIGHTNESS", ret);
+               }
+               ctrl_obj->is_event_registered = 1;
        }
 }
 
 static void _brightness_deregister_event_cb(brightness_ctrl_obj *ctrl_obj)
 {
        int ret = 0;
+       retif(ctrl_obj == NULL, , "Data parameter is NULL");
 
-       ret = vconf_ignore_key_changed(VCONFKEY_SETAPPL_LCD_BRIGHTNESS, _brightness_vconf_cb);
-       if (ret != 0) {
-               ERR("failed to register a cb key:%s err:%d", "VCONFKEY_SETAPPL_LCD_BRIGHTNESS", ret);
+       if (ctrl_obj->is_event_registered == 1) {
+               ret = vconf_ignore_key_changed(VCONFKEY_SETAPPL_LCD_BRIGHTNESS, _brightness_vconf_cb);
+               if (ret != 0) {
+                       ERR("failed to register a cb key:%s err:%d", "VCONFKEY_SETAPPL_LCD_BRIGHTNESS", ret);
+               }
+               ctrl_obj->is_event_registered = 0;
        }
 }
 
-static int quickpanel_brightness_init(void *data)
+static void _brightness_create(void *data)
 {
-       retif(data == NULL, QP_FAIL, "Invalid parameter!");
-
        if (g_ctrl_obj == NULL) {
-               g_ctrl_obj = (brightness_ctrl_obj *)malloc(sizeof(brightness_ctrl_obj));
+               g_ctrl_obj = (brightness_ctrl_obj *)calloc(1, sizeof(brightness_ctrl_obj));
+               if (g_ctrl_obj != NULL) {
+                       g_ctrl_obj->min_level = BRIGHTNESS_MIN;
+                       g_ctrl_obj->max_level = BRIGHTNESS_MAX;
+                       g_ctrl_obj->last_requested_level = _brightness_get_level();
+
+                       _brightness_add(g_ctrl_obj, data);
+                       _brightness_view_update();
+                       _brightness_register_event_cb(g_ctrl_obj);
+
+                       g_ctrl_obj->brighntess_slider = NULL;
+
+                       DBG("brightness controller is created");
+               }
        }
+}
 
+static void _brightness_destroy(void *data)
+{
        if (g_ctrl_obj != NULL) {
-               g_ctrl_obj->min_level = BRIGHTNESS_MIN;
-               g_ctrl_obj->max_level = BRIGHTNESS_MAX;
+               _brightness_deregister_event_cb(g_ctrl_obj);
+               _brightness_remove(g_ctrl_obj, data);
 
-               DBG("brightness range %d~%d\n", g_ctrl_obj->min_level, g_ctrl_obj->max_level);
+               DBG("brightness controller is removed");
+       }
 
-               _brightness_add(g_ctrl_obj, data);
-               _brightness_view_update();
-               _brightness_register_event_cb(g_ctrl_obj);
+       g_ctrl_obj = NULL;
+}
+
+static void _handler_brightness(void *data, DBusMessage *msg)
+{
+       int ret = 0;
+       DBusError err;
+       char *key = NULL;
+       char *value = NULL;
+       retif(data == NULL || msg == NULL, , "Invalid parameter!");
+
+       dbus_error_init(&err);
+       ret = dbus_message_get_args(msg, &err,
+                       DBUS_TYPE_STRING, &key,
+                       DBUS_TYPE_STRING, &value,
+                       DBUS_TYPE_INVALID);
+       retif(ret == 0, , "dbus_message_get_args error");
+       retif(key == NULL, , "Failed to get key");
+       retif(value == NULL, , "Failed to get value");
+
+       if (dbus_error_is_set(&err)) {
+               ERR("dbus err: %s", err.message);
+               dbus_error_free(&err);
+               return;
        }
 
-       return QP_OK;
+       if (strcmp(key, "visibility") == 0) {
+               if (strcmp(value, PREF_BRIGHTNESS_ON) == 0) {
+                       _brightness_create(data);
+                       quickpanel_preference_set(PREF_BRIGHTNESS, PREF_BRIGHTNESS_ON);
+               } else if (strcmp(value, PREF_BRIGHTNESS_OFF) == 0) {
+                       _brightness_destroy(data);
+                       quickpanel_preference_set(PREF_BRIGHTNESS, PREF_BRIGHTNESS_OFF);
+               }
+       }
 }
 
-static int quickpanel_brightness_fini(void *data)
+static void _ipc_init(void *data)
 {
+       struct appdata *ad = data;
+       retif(ad == NULL, , "Invalid parameter!");
+       retif(ad->dbus_connection == NULL, , "Invalid parameter!");
+
+       g_hdl_brightness =
+               e_dbus_signal_handler_add(ad->dbus_connection, NULL,
+                               QP_DBUS_PATH,
+                               QP_DBUS_NAME,
+                               BRIGHTNESS_SIG_ACTIVITY,
+                               _handler_brightness, data);
+       msgif(g_hdl_brightness == NULL, "fail to add size signal");
+}
+
+static void _ipc_fini(void *data)
+{
+       struct appdata *ad = data;
+       retif(ad == NULL, , "Invalid parameter!");
+       retif(ad->dbus_connection == NULL, , "Invalid parameter!");
+
+       if (g_hdl_brightness != NULL) {
+               e_dbus_signal_handler_del(ad->dbus_connection, g_hdl_brightness);
+               g_hdl_brightness = NULL;
+       }
+}
+
+static int _init(void *data)
+{
+       char buf[PREF_LEN_VALUE_MAX] = {0,};
        retif(data == NULL, QP_FAIL, "Invalid parameter!");
 
-       if (g_ctrl_obj != NULL) {
-               _brightness_deregister_event_cb(g_ctrl_obj);
-               _brightness_remove(g_ctrl_obj, data);
+#ifdef QP_EMERGENCY_MODE_ENABLE
+       if (quickpanel_emergency_mode_is_on()) {
+               return QP_OK;
        }
+#endif
+
+       quickpanel_preference_get(PREF_BRIGHTNESS, buf);
+       _brightness_create(data);
+
+       _ipc_init(data);
+
+       return QP_OK;
+}
+
+static int _fini(void *data)
+{
+       retif(data == NULL, QP_FAIL, "Invalid parameter!");
+
+       _ipc_fini(data);
+       _brightness_destroy(data);
 
-       g_ctrl_obj = NULL;
        return QP_OK;
 }
 
-static void quickpanel_brightness_lang_changed(void *data)
+static void _lang_changed(void *data)
 {
        retif(data == NULL, , "Invalid parameter!");
 
@@ -511,3 +733,53 @@ static void quickpanel_brightness_lang_changed(void *data)
                _brightness_view_update();
        }
 }
+
+static void _qp_opened(void *data)
+{
+       Evas_Object *slider = NULL;
+       Evas_Object *view = _controller_view_get();
+       retif(g_ctrl_obj == NULL, , "Invalid parameter!");
+       retif(view == NULL, , "Invalid parameter!");
+
+       if (view != NULL) {
+               _brightness_view_update();
+               slider = elm_object_part_content_get(view, "elm.swallow.slider");
+               if (slider != NULL) {
+                       DBG("quickpanel opened");
+                       _brightness_ctrl_overheat_check(slider, g_ctrl_obj, 0);
+               }
+       }
+}
+
+static void _qp_closed(void *data)
+{
+       retif(g_ctrl_obj == NULL, , "Invalid parameter!");
+
+       if (g_ctrl_obj->viewer != NULL) {
+               _brightness_view_update();
+       }
+}
+
+static void _refresh(void *data)
+{
+       int h = 0;
+       struct appdata *ad = data;
+       Evas_Object *view = _controller_view_get();
+       retif(ad == NULL, , "Invalid parameter!");
+       retif(g_ctrl_obj == NULL, , "Invalid parameter!");
+       retif(g_ctrl_obj->viewer == NULL, , "Invalid parameter!");
+       retif(view == NULL, , "Invalid parameter!");
+
+       evas_object_geometry_get(g_ctrl_obj->viewer, NULL, NULL, NULL, &h);
+
+       if (ad->angle == 90 || ad->angle == 270) {
+               evas_object_resize(g_ctrl_obj->viewer, ad->win_height, h);
+               evas_object_resize(view, ad->win_height, h);
+               _brightness_view_pos_set();
+
+       } else {
+               evas_object_resize(g_ctrl_obj->viewer, ad->win_width, h);
+               evas_object_resize(view, ad->win_width, h);
+               _brightness_view_pos_set();
+       }
+}
diff --git a/daemon/handler_controller.c b/daemon/handler_controller.c
new file mode 100644 (file)
index 0000000..526fe9f
--- /dev/null
@@ -0,0 +1,81 @@
+/*
+ * 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 "handler_controller.h"
+
+#include <dlog.h>
+#include <vconf.h>
+
+#include <tapi_common.h>
+#include <ITapiSim.h>
+#include <TelCall.h>
+#include <ITapiCall.h>
+#include "setting_utils.h"
+
+#include "list_util.h"
+#include "quickpanel-ui.h"
+#include "common.h"
+
+HAPI void quickpanel_handler_text_set(char *text)
+{
+       struct appdata *ad = quickpanel_get_app_data();
+       if (!ad) {
+               ERR("Could not get application data");
+               return;
+       }
+
+       Evas_Object *layout = ad->view_root;
+       if (!layout) {
+               ERR("Could not get view_root");
+               return;
+       }
+
+       if (text) {
+               elm_object_part_text_set(layout, "qp.handler.text", text);
+               elm_object_signal_emit(layout, "show", "qp.handler.text");
+       } else {
+               elm_object_part_text_set(layout, "qp.handler.text", " ");
+               elm_object_signal_emit(layout, "hide", "qp.handler.text");
+       }
+}
+
+HAPI void quickpanel_handler_set_visibility(Eina_Bool visible)
+{
+       struct appdata *ad = quickpanel_get_app_data();
+       if (!ad) {
+               ERR("Could not get application data");
+               return;
+       }
+
+       Evas_Object *layout = ad->view_root;
+       if (!layout) {
+               ERR("Could not get view_root");
+               return;
+       }
+
+       if (visible == EINA_FALSE) {
+               elm_object_signal_emit(layout, "qp.handler.text,hide", "qp.handler.text");
+       } else {
+               elm_object_signal_emit(layout, "qp.handler.text,show", "qp.handler.text");
+       }
+}
+
+
+
+
+
diff --git a/daemon/handler_controller.h b/daemon/handler_controller.h
new file mode 100644 (file)
index 0000000..5ae5963
--- /dev/null
@@ -0,0 +1,31 @@
+/*
+ * 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 HANDLER_CONTROLLER_H_
+#define HANDLER_CONTROLLER_H_
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <Evas.h>
+#include <Elementary.h>
+#include <Eina.h>
+
+void quickpanel_handler_text_set(char *text);
+void quickpanel_handler_set_visibility(Eina_Bool visible);
+
+#endif /* HANDLER_CONTROLLER_H_ */
diff --git a/daemon/idletxt/idletxt.c b/daemon/idletxt/idletxt.c
deleted file mode 100755 (executable)
index b1a9694..0000000
+++ /dev/null
@@ -1,599 +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 <vconf.h>
-#include "common.h"
-#include "quickpanel-ui.h"
-#include "quickpanel_def.h"
-
-#define QP_ENABLE_SLIDING_TEXT 0
-#define QP_ENABLE_SAT 0
-#define QP_IDLETXT_PART                "qp.noti.swallow.spn"
-
-#define QP_SPN_BASE_PART       "qp.base.spn.swallow"
-#define QP_SPN_BOX_PART                "qp.spn.swallow"
-#define QP_BUTTON_PART         "qp.button.swallow"
-
-#define QP_IDLETXT_MAX_KEY     4
-#define QP_IDLETXT_MAX_LEN     1024
-#define QP_IDLETXT_SLIDE_LEN   130
-
-#define QP_IDLETXT_LABEL_STRING        \
-       "<font_size=30 font_weight=Medium color=#959494FF align=left>%s</>"
-
-static int quickpanel_idletxt_init(void *data);
-static int quickpanel_idletxt_fini(void *data);
-static int quickpanel_idletxt_suspend(void *data);
-static int quickpanel_idletxt_resume(void *data);
-static void quickpanel_idletxt_lang_changed(void *data);
-
-QP_Module idletxt = {
-       .name = "idletxt",
-       .init = quickpanel_idletxt_init,
-       .fini = quickpanel_idletxt_fini,
-       .suspend = quickpanel_idletxt_suspend,
-       .resume = quickpanel_idletxt_resume,
-       .lang_changed = quickpanel_idletxt_lang_changed
-};
-
-static int _quickpanel_idletxt_map_exceptional_nwname(char *txt, char *map_txt, int map_txt_len)
-{
-       int is_mapped = 0;
-
-       if (txt == NULL || map_txt == NULL) {
-               return is_mapped;
-       }
-
-       if (strncasecmp(txt, "No Service", strlen("No Service")) == 0) {
-               strncpy(map_txt, _S("IDS_COM_BODY_NO_SERVICE"), map_txt_len);
-               is_mapped = 1;
-       } else if (strncasecmp(txt, "EMERGENCY", strlen("EMERGENCY")) == 0) {
-               strncpy(map_txt, _("IDS_CALL_POP_CALLING_EMERG_ONLY"), map_txt_len);
-               is_mapped = 1;
-       } else if (strncasecmp(txt, "Searching", strlen("Searching")) == 0) {
-               strncpy(map_txt, _S("IDS_COM_BODY_SEARCHING"), map_txt_len);
-               is_mapped = 1;
-       } else if (strncasecmp(txt, "SIM Error", strlen("SIM Error")) == 0) {
-               strncpy(map_txt, _S("IDS_COM_BODY_INVALID_SIM_CARD"), map_txt_len);
-               is_mapped = 1;
-       } else if (strncasecmp(txt, "NO SIM", strlen("NO SIM")) == 0) {
-               strncpy(map_txt, _S("IDS_COM_BODY_NO_SIM"), map_txt_len);
-               is_mapped = 1;
-       }
-
-       return is_mapped;
-}
-
-static Evas_Object *_quickpanel_idletxt_create_label(Evas_Object * parent,
-                                                    char *txt)
-{
-       Evas_Object *obj = NULL;
-       char buf[QP_IDLETXT_MAX_LEN] = { 0, };
-       char localized_txt[QP_IDLETXT_MAX_LEN] = { 0, };
-       int len = 0;
-
-       retif(parent == NULL || txt == NULL, NULL, "Invalid parameter!");
-
-       memset(buf, 0x00, sizeof(buf));
-
-       if (_quickpanel_idletxt_map_exceptional_nwname(txt, localized_txt, QP_IDLETXT_MAX_LEN) == 1) {
-               len = snprintf(buf, sizeof(buf), QP_IDLETXT_LABEL_STRING, localized_txt);
-       } else {
-               len = snprintf(buf, sizeof(buf), QP_IDLETXT_LABEL_STRING, txt);
-       }
-
-       retif(len < 0, NULL, "len < 0");
-
-       obj = elm_label_add(parent);
-       if (obj != NULL) {
-               struct appdata *ad = quickpanel_get_app_data();
-
-               if (ad != NULL)
-                       elm_label_wrap_width_set(obj, QP_SPN_TEXT_W * ad->scale);
-               else
-                       elm_label_wrap_width_set(obj, QP_SPN_TEXT_W);
-
-#if QP_ENABLE_SLIDING_TEXT
-               elm_label_slide_mode_set(obj, ELM_LABEL_SLIDE_MODE_AUTO);
-               elm_label_slide_duration_set(obj, 3);
-               elm_object_style_set(obj, "slide_bounce");
-#else
-               elm_label_ellipsis_set(obj, EINA_TRUE);
-#endif
-
-               elm_object_text_set(obj, buf);
-
-               evas_object_size_hint_weight_set(obj, EVAS_HINT_EXPAND,
-                                                EVAS_HINT_EXPAND);
-               evas_object_size_hint_align_set(obj, EVAS_HINT_FILL, 0.5);
-
-               evas_object_show(obj);
-       }
-
-       return obj;
-}
-
-static Evas_Object *_quickpanel_idletxt_create_box(Evas_Object * parent)
-{
-       Evas_Object *box = NULL;
-
-       retif(parent == NULL, NULL, "Invalid parameter!");
-
-       box = elm_box_add(parent);
-       if (box != NULL) {
-               elm_box_horizontal_set(box, EINA_FALSE);
-
-               evas_object_show(box);
-       }
-
-       return box;
-}
-
-static int _quickpanel_idletxt_get_txt(const char *key, char *txt, int size)
-{
-       int len = 0;
-       char *str = NULL;
-       int i = 0;
-
-       str = vconf_get_str(key);
-       if (str == NULL || str[0] == '\0')
-               return 0;
-
-       /* check ASCII code */
-       for (i = strlen(str) - 1; i >= 0; i--) {
-               if (str[i] <= 31 || str[i] >= 127)
-                       goto failed;
-       }
-
-       len = snprintf(txt, size, "%s", str);
-
- failed:
-       if (str)
-               free(str);
-
-       return len;
-}
-
-static Evas_Object *_quickpanel_idletxt_add_label(Evas_Object * box,
-                                                 char *key[])
-{
-       char txt[QP_IDLETXT_MAX_LEN] = { 0, };
-       char buf[QP_IDLETXT_MAX_LEN] = { 0, };
-       int len = 0;
-       int i = 0;
-       Evas_Object *obj = NULL;
-
-       retif(key == NULL || key[0] == '\0', NULL, "Invalid parameter!");
-
-       memset(txt, 0x00, sizeof(txt));
-
-       for (i = 0; key[i]; i++) {
-               memset(buf, 0x00, sizeof(buf));
-
-               /* get next key string */
-               if (_quickpanel_idletxt_get_txt(key[i], buf, sizeof(buf))) {
-                       INFO("VCONFKEY(%s) = %s", key[i], buf);
-
-                       len = strlen(txt);
-
-                       snprintf(&txt[len], sizeof(txt) - len, "%s%s",
-                                len ? " - " : "", buf);
-               }
-       }
-
-       len = strlen(txt);
-
-       if (len) {
-               obj = _quickpanel_idletxt_create_label(box, txt);
-
-               if (obj != NULL) {
-                       return obj;
-               }
-       }
-
-       return NULL;
-}
-
-static Evas_Object *_quickpanel_idletxt_exception_add_label(Evas_Object * box)
-{
-       int service_type = VCONFKEY_TELEPHONY_SVCTYPE_SEARCH;
-       char *text = NULL;
-       Evas_Object *obj = NULL;
-
-       if (vconf_get_int(VCONFKEY_TELEPHONY_SVCTYPE, &service_type) != 0) {
-               ERR("fail to get VCONFKEY_TELEPHONY_SVCTYPE");
-       }
-
-       switch(service_type) {
-               case VCONFKEY_TELEPHONY_SVCTYPE_NOSVC:
-                       text = _S("IDS_COM_BODY_NO_SERVICE");
-                       break;
-               case VCONFKEY_TELEPHONY_SVCTYPE_EMERGENCY:
-                       text = _("IDS_CALL_POP_CALLING_EMERG_ONLY");
-                       break;
-               default:
-                       if (service_type > VCONFKEY_TELEPHONY_SVCTYPE_SEARCH) {
-                               text = vconf_get_str(VCONFKEY_TELEPHONY_NWNAME);
-                       } else if (service_type == VCONFKEY_TELEPHONY_SVCTYPE_SEARCH)  {
-                               text = _S("IDS_COM_BODY_SEARCHING");
-                       } else {
-                               return NULL;
-                       }
-                       break;
-       }
-
-       if (text != NULL) {
-               obj = _quickpanel_idletxt_create_label(box, text);
-
-               if (obj != NULL) {
-                       return obj;
-               }
-       }
-
-       return NULL;
-}
-
-static Evas_Object *_quickpanel_idletxt_get_spn(Evas_Object * box)
-{
-       Evas_Object *label = NULL;
-       char *keylist[QP_IDLETXT_MAX_KEY] = { 0, };
-       int ret = 0;
-       int state = 0;
-       int i = 0;
-       int service_type = VCONFKEY_TELEPHONY_SVCTYPE_NONE;
-
-       /* make keylist */
-       if (vconf_get_int(VCONFKEY_TELEPHONY_SVCTYPE, &service_type) != 0) {
-               ERR("fail to get VCONFKEY_TELEPHONY_SVCTYPE");
-       }
-
-       ret = vconf_get_int(VCONFKEY_TELEPHONY_SPN_DISP_CONDITION, &state);
-       if (ret == 0) {
-               INFO("VCONFKEY(%s) = %d",
-                    VCONFKEY_TELEPHONY_SPN_DISP_CONDITION, state);
-
-               if (state != VCONFKEY_TELEPHONY_DISP_INVALID
-                               && service_type > VCONFKEY_TELEPHONY_SVCTYPE_SEARCH) {
-                       if (i < QP_IDLETXT_MAX_KEY) {
-                               if (state & VCONFKEY_TELEPHONY_DISP_SPN) {
-                                       keylist[i++] =
-                                           strdup(VCONFKEY_TELEPHONY_SPN_NAME);
-                               }
-
-                               if (state & VCONFKEY_TELEPHONY_DISP_PLMN) {
-                                       keylist[i++] =
-                                           strdup(VCONFKEY_TELEPHONY_NWNAME);
-                               }
-                       }
-
-                       if (i > 0) {
-                               /* get string with keylist */
-                               label = _quickpanel_idletxt_add_label(box, keylist);
-
-                               /* free keylist */
-                               while (i > 0) {
-                                       if (keylist[i])
-                                               free(keylist[i]);
-
-                                       i--;
-                               }
-                       }
-               } else {
-                       label = _quickpanel_idletxt_exception_add_label(box);
-               }
-       }
-
-       return label;
-}
-
-#ifdef TBD
-static Evas_Object *_quickpanel_idletxt_get_sat_text(Evas_Object * box)
-{
-       Evas_Object *label = NULL;
-       char *keylist[] = { VCONFKEY_SAT_IDLE_TEXT, 0 };
-
-       /* get string with keylist */
-       label = _quickpanel_idletxt_add_label(box, keylist);
-
-       return label;
-}
-#endif
-
-static Eina_Bool _quickpanel_idletxt_button_clicked_timer_cb(void *data)
-{
-       quickpanel_launch_app(QP_SETTING_PKG_SETTING_EMUL, NULL);
-
-       quickpanel_close_quickpanel(true);
-
-       return ECORE_CALLBACK_CANCEL;
-}
-
-
-static void _quickpanel_idletxt_button_clicked(void *data, Evas_Object * obj, void *event_info)
-{
-       struct appdata *ad = data;
-
-       quickpanel_play_feedback();
-
-       retif(obj == NULL, , "Invalid parameter!");
-       retif(ad == NULL, , "Invalid parameter!");
-       retif(ad->win == NULL, , "ad->win is NULL");
-
-       ecore_idler_add(_quickpanel_idletxt_button_clicked_timer_cb, NULL);
-}
-
-static void quickpanel_idletxt_update(void *data)
-{
-       struct appdata *ad = NULL;
-       Evas_Object *label = NULL;
-       Evas_Object *idletxtbox = NULL;
-       Evas_Object *button_settings = NULL;
-       Evas_Object *spn = NULL;
-
-       retif(!data, , "Invalid parameter!");
-       ad = data;
-
-       retif(!ad->ly, , "layout is NULL!");
-
-       spn = elm_object_part_content_get(ad->ly, QP_SPN_BASE_PART);
-       retif(!spn, , "spn layout is NULL!");
-
-       idletxtbox = elm_object_part_content_get(spn, QP_SPN_BOX_PART);
-       button_settings = elm_object_part_content_get(spn, QP_BUTTON_PART);
-
-       if (idletxtbox == NULL) {
-               idletxtbox = _quickpanel_idletxt_create_box(spn);
-               retif(idletxtbox == NULL, , "Failed to create box!");
-               elm_object_part_content_set(spn,
-                               QP_SPN_BOX_PART, idletxtbox);
-       }
-
-       elm_box_clear(idletxtbox);
-
-       /* get spn */
-       label = _quickpanel_idletxt_get_spn(idletxtbox);
-       if (label != NULL)
-               elm_box_pack_end(idletxtbox, label);
-
-       /* get sat idle text */
-#if QP_ENABLE_SAT
-       label = _quickpanel_idletxt_get_sat_text(idletxtbox);
-       if (label != NULL)
-               elm_box_pack_end(idletxtbox, label);
-#endif
-
-       if (button_settings == NULL) {
-               button_settings = elm_button_add(spn);
-               retif(button_settings == NULL, , "Failed to create clear button!");
-               elm_object_style_set(button_settings, "quickpanel_standard");
-               elm_object_part_content_set(spn,
-                               QP_BUTTON_PART, button_settings);
-               evas_object_smart_callback_add(button_settings, "clicked",
-                               _quickpanel_idletxt_button_clicked, ad);
-       }
-
-       elm_object_text_set(button_settings, _S("IDS_COM_BODY_SETTINGS"));
-}
-
-static void quickpanel_idletxt_changed_cb(keynode_t *node, void *data)
-{
-       quickpanel_idletxt_update(data);
-}
-
-static int _quickpanel_idletxt_register_event_handler(void *data)
-{
-       int ret = 0;
-
-       ret = vconf_notify_key_changed(VCONFKEY_TELEPHONY_SVCTYPE,
-                               quickpanel_idletxt_changed_cb, data);
-       if (ret != 0)
-               ERR("Failed to register [%s]",
-                               VCONFKEY_TELEPHONY_SVCTYPE);
-
-       ret = vconf_notify_key_changed(VCONFKEY_TELEPHONY_SPN_DISP_CONDITION,
-                               quickpanel_idletxt_changed_cb, data);
-       if (ret != 0)
-               ERR("Failed to register [%s]",
-                       VCONFKEY_TELEPHONY_SPN_DISP_CONDITION);
-
-       ret = vconf_notify_key_changed(VCONFKEY_TELEPHONY_SPN_NAME,
-                               quickpanel_idletxt_changed_cb, data);
-       if (ret != 0)
-               ERR("Failed to register [%s]",
-                       VCONFKEY_TELEPHONY_SPN_NAME);
-
-
-       ret = vconf_notify_key_changed(VCONFKEY_TELEPHONY_NWNAME,
-                               quickpanel_idletxt_changed_cb, data);
-       if (ret != 0)
-               ERR("Failed to register [%s]",
-                       VCONFKEY_TELEPHONY_NWNAME);
-
-       ret = vconf_notify_key_changed(VCONFKEY_SAT_IDLE_TEXT,
-                               quickpanel_idletxt_changed_cb, data);
-       if (ret != 0)
-               ERR("Failed to register [%s]",
-                       VCONFKEY_SAT_IDLE_TEXT);
-
-
-       return QP_OK;
-}
-
-static int _quickpanel_idletxt_unregister_event_handler(void)
-{
-       int ret = 0;
-
-       ret = vconf_ignore_key_changed(VCONFKEY_TELEPHONY_SVCTYPE,
-                                    quickpanel_idletxt_changed_cb);
-       if (ret != 0)
-               ERR("Failed to unregister [%s]",
-                               VCONFKEY_TELEPHONY_SVCTYPE);
-
-       ret = vconf_ignore_key_changed(VCONFKEY_TELEPHONY_SPN_DISP_CONDITION,
-                                    quickpanel_idletxt_changed_cb);
-       if (ret != 0)
-               ERR("Failed to unregister [%s]",
-                       VCONFKEY_TELEPHONY_SPN_DISP_CONDITION);
-
-       ret = vconf_ignore_key_changed(VCONFKEY_TELEPHONY_SPN_NAME,
-                                    quickpanel_idletxt_changed_cb);
-       if (ret != 0)
-               ERR("Failed to unregister [%s]",
-                       VCONFKEY_TELEPHONY_SPN_NAME);
-
-
-       ret = vconf_ignore_key_changed(VCONFKEY_TELEPHONY_NWNAME,
-                                    quickpanel_idletxt_changed_cb);
-       if (ret != 0)
-               ERR("Failed to unregister [%s]",
-                       VCONFKEY_TELEPHONY_NWNAME);
-
-       ret = vconf_ignore_key_changed(VCONFKEY_SAT_IDLE_TEXT,
-                                    quickpanel_idletxt_changed_cb);
-       if (ret != 0)
-               ERR("Failed to unregister [%s]",
-                       VCONFKEY_SAT_IDLE_TEXT);
-
-       return QP_OK;
-}
-
-static Evas_Object *_idletxt_load_edj(Evas_Object * parent, const char *file,
-                               const char *group)
-{
-       Eina_Bool r;
-       Evas_Object *eo = NULL;
-
-       retif(parent == NULL, NULL, "Invalid parameter!");
-
-       eo = elm_layout_add(parent);
-       retif(eo == NULL, NULL, "Failed to add layout object!");
-
-       r = elm_layout_file_set(eo, file, group);
-       retif(r != EINA_TRUE, NULL, "Failed to set edje object file!");
-
-       evas_object_size_hint_weight_set(eo,
-               EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
-       evas_object_show(eo);
-
-       return eo;
-}
-
-static int quickpanel_idletxt_init(void *data)
-{
-       struct appdata *ad = NULL;
-       Evas_Object *spn = NULL;
-
-       retif(!data, QP_FAIL, "Invalid parameter!");
-       ad = data;
-
-       spn = _idletxt_load_edj(ad->ly, DEFAULT_EDJ, "quickpanel/spn");
-       retif(!spn, QP_FAIL, "fail to load spn layout");
-
-       elm_object_part_content_set(ad->ly, QP_SPN_BASE_PART, spn);
-
-       quickpanel_idletxt_update(data);
-
-       _quickpanel_idletxt_register_event_handler(data);
-
-       return QP_OK;
-}
-
-static int quickpanel_idletxt_fini(void *data)
-{
-       struct appdata *ad = (struct appdata *)data;
-       Evas_Object *spn = NULL;
-       Evas_Object *idletxtbox = NULL;
-
-       retif(ad == NULL, QP_FAIL, "Invalid parameter!");
-
-       _quickpanel_idletxt_unregister_event_handler();
-
-       retif(!ad->ly, QP_FAIL, "Invalid parameter!");
-
-       spn = elm_object_part_content_unset(ad->ly, QP_SPN_BASE_PART);
-       retif(!spn, QP_OK, "spn is NULL");
-
-       idletxtbox = elm_object_part_content_get(spn, QP_SPN_BOX_PART);
-       if (idletxtbox) {
-               elm_object_part_content_unset(spn, QP_SPN_BOX_PART);
-               evas_object_del(idletxtbox);
-       }
-
-       evas_object_del(spn);
-
-       return QP_OK;
-}
-
-#if QP_ENABLE_SLIDING_TEXT
-static Evas_Object *_quickpanel_spn_label_get(void *data)
-{
-       Evas_Object *spn = NULL;
-       Evas_Object *label = NULL;
-       Evas_Object *idletxtbox = NULL;
-       struct appdata *ad = NULL;
-       retif(!data, NULL, "Invalid parameter!");
-       ad = data;
-
-       retif(!ad->ly, NULL, "layout is NULL!");
-
-       spn = elm_object_part_content_get(ad->ly, QP_SPN_BASE_PART);
-       retif(!spn, NULL, "spn layout is NULL!");
-
-       idletxtbox = elm_object_part_content_get(spn, QP_SPN_BOX_PART);
-       retif(!idletxtbox, NULL, "idletxtbox is NULL!");
-
-       Eina_List *list = elm_box_children_get(idletxtbox);
-       retif(!list, NULL, "list is NULL!");
-
-       label = eina_list_nth(list, 0);
-
-       return label;
-}
-#endif
-
-static int quickpanel_idletxt_suspend(void *data)
-{
-#if QP_ENABLE_SLIDING_TEXT
-       Evas_Object *label = _quickpanel_spn_label_get(data);
-
-       if (label != NULL) {
-               elm_label_slide_mode_set(label, ELM_LABEL_SLIDE_MODE_NONE);
-       }
-#endif
-
-       return QP_OK;
-}
-
-static int quickpanel_idletxt_resume(void *data)
-{
-#if QP_ENABLE_SLIDING_TEXT
-       Evas_Object *label = _quickpanel_spn_label_get(data);
-
-       if (label != NULL) {
-               elm_label_slide_mode_set(label, ELM_LABEL_SLIDE_MODE_AUTO);
-       }
-#endif
-
-       return QP_OK;
-}
-
-static void quickpanel_idletxt_lang_changed(void *data)
-{
-       retif(data == NULL, , "Invalid parameter!");
-
-       quickpanel_idletxt_update(data);
-}
index 5f1c7a6..986cd17 100755 (executable)
@@ -1,24 +1,27 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ * Copyright (c) 2009-2015 Samsung Electronics Co., Ltd All Rights Reserved
  *
- * Licensed under the Flora License, Version 1.1 (the "License");
+ * 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 <Elementary.h>
 #include <stdlib.h>
 
 #include "common.h"
 #include "list_util.h"
+#include "vi_manager.h"
 
 #define E_DATA_ITEM_LABEL_H "QP_ITEM_DATA"
 
@@ -27,6 +30,34 @@ struct _qp_item_data {
        void *data;
 };
 
+static Eina_Bool _anim_init_cb(void *data);
+static Eina_Bool _anim_job_cb(void *data);
+static Eina_Bool _anim_done_cb(void *data);
+
+static void _viewer_freeze(Evas_Object *viewer)
+{
+       int freezed_count = 0;
+       retif(viewer == NULL, , "Invalid parameter!");
+
+       freezed_count = elm_object_scroll_freeze_get(viewer);
+
+       if (freezed_count <= 0) {
+               elm_object_scroll_freeze_push(viewer);
+       }
+}
+
+static void _viewer_unfreeze(Evas_Object *viewer)
+{
+       int i = 0, freezed_count = 0;
+       retif(viewer == NULL, , "Invalid parameter!");
+
+       freezed_count = elm_object_scroll_freeze_get(viewer);
+
+       for (i = 0 ; i < freezed_count; i++) {
+               elm_object_scroll_freeze_pop(viewer);
+       }
+}
+
 HAPI qp_item_data *quickpanel_list_util_item_new(qp_item_type_e type, void *data)
 {
        qp_item_data *qid = NULL;
@@ -67,8 +98,9 @@ HAPI void *quickpanel_list_util_item_get_data(qp_item_data *qid)
 {
        void *user_data = NULL;
 
-       if (!qid)
+       if (!qid) {
                return NULL;
+       }
 
        user_data = qid->data;
 
@@ -77,8 +109,9 @@ HAPI void *quickpanel_list_util_item_get_data(qp_item_data *qid)
 
 HAPI void quickpanel_list_util_item_set_data(qp_item_data *qid, void *data)
 {
-       if (!qid)
-               return ;
+       if (!qid) {
+               return;
+       }       
 
        qid->data = data;
 }
@@ -115,47 +148,23 @@ HAPI int quickpanel_list_util_item_compare(const void *data1, const void *data2)
        }
 
        /* elm_genlist sort is not working as i expected */
-       if (qid1->type == qid2->type)
+       if (qid1->type == qid2->type) {
                return 1;
+       }
+
 
        diff = qid1->type - qid2->type;
        return diff;
 }
 
-HAPI void quickpanel_list_util_item_unpack_by_type(Evas_Object *list
-               , qp_item_type_e type)
-{
-       retif(list == NULL, , "invalid parameter");
-
-       Eina_List *l;
-       Eina_List *l_next;
-       Evas_Object *obj;
-       Eina_List *item_list = elm_box_children_get(list);
-
-       EINA_LIST_FOREACH_SAFE(item_list, l, l_next, obj)
-       {
-               if (obj != NULL) {
-                       // call deleted callback
-                       qp_item_data *qid = evas_object_data_get(obj, E_DATA_ITEM_LABEL_H);
-                       if (qid != NULL) {
-                               if (qid->type == type) {
-                                       elm_box_unpack(list, obj);
-                               }
-                       }
-               }
-       }
-}
-
-HAPI void quickpanel_list_util_item_unpack_by_object(Evas_Object *list
-               , Evas_Object *item)
+static qp_item_type_e _get_item_type(qp_item_data *item_data)
 {
-       retif(list == NULL, , "invalid parameter");
-       retif(item == NULL, , "invalid parameter");
+       retif(item_data == NULL, QP_ITEM_TYPE_NONE, "a invalid data");
 
-       elm_box_unpack(list, item);
+       return item_data->type;
 }
 
-static int __item_compare(const void *data1, const void *data2)
+static int _item_compare(const void *data1, const void *data2)
 {
        int diff = 0;
        const Evas_Object *eo1 = data1;
@@ -184,37 +193,546 @@ static int __item_compare(const void *data1, const void *data2)
        return diff;
 }
 
+static void _list_util_layout_get_coord(Evas_Object *container, Evas_Object *first,
+       int *coord_x, int *coord_y)
+{
+       int x = 0;
+       int y = 0;
+       int h = 0;
+       int off_y = 0;
+       qp_item_type_e item_type = QP_ITEM_TYPE_NONE;
+       struct appdata *ad = quickpanel_get_app_data();
+
+       retif(container == NULL, , "invalid parameter");
+       retif(ad == NULL, , "invalid data.");
+
+       Eina_List *list_tmp = NULL;
+       Eina_List *l = NULL;
+       Eina_List *l_next = NULL;
+       Evas_Object *obj = NULL;
+       Eina_List *item_list = elm_box_children_get(container);
 
-HAPI void quickpanel_list_util_sort_insert(Evas_Object *list,
+       EINA_LIST_FOREACH_SAFE(item_list, l, l_next, obj) {
+               if (obj != NULL) {
+                       item_type = quickpanel_list_util_item_type_get(obj);
+                       if (item_type == QP_ITEM_TYPE_ONGOING_NOTI
+                               || item_type == QP_ITEM_TYPE_NOTI) {
+                               list_tmp = elm_box_children_get(obj);
+                               if (list_tmp != NULL) {
+                                       if (eina_list_count(list_tmp) != 0 ) {
+                                               evas_object_geometry_get(obj, NULL, NULL, NULL, &h);
+                                       }
+                                       eina_list_free(list_tmp);
+                               }
+                       } else {
+                               evas_object_geometry_get(obj, NULL, NULL, NULL, &h);
+                       }
+
+                       off_y += h;
+                       h = 0;
+                       if (obj == first) {
+                               break;
+                       }
+               }
+       }
+
+       evas_object_geometry_get(container, &x, &y, NULL, &h);
+       if (off_y == 0 || y == 0) {
+               ERR("Failed get a valid height offset : %d %d", off_y, y);
+       }
+
+       if (coord_x != NULL) {
+               *coord_x = x;
+       }
+       if (coord_y != NULL) {
+               *coord_y = y + off_y;
+       }
+
+       if (item_list != NULL) {
+               eina_list_free(item_list);
+       }
+}
+
+Evas_Object *_list_util_get_first(Evas_Object *list,
                                        Evas_Object *new_obj)
 {
-       retif(list == NULL, , "invalid parameter");
-       retif(new_obj == NULL, , "invalid parameter");
-
        Eina_List *l;
        Eina_List *l_next;
        Evas_Object *obj = NULL;
        Evas_Object *first = NULL;
        Eina_List *item_list = elm_box_children_get(list);
+
        qp_item_data *item_data = NULL;
 
+       retif(list == NULL, NULL, "invalid parameter");
+       retif(new_obj == NULL, NULL, "invalid parameter");
+
        item_data = evas_object_data_get(new_obj, E_DATA_ITEM_LABEL_H);
-       retif(item_data == NULL, , "invalid parameter");
+       retif(item_data == NULL, NULL, "invalid parameter");
 
-       INFO("current entry count in list:%d", eina_list_count(item_list));
-       EINA_LIST_FOREACH_SAFE(item_list, l, l_next, obj)
-       {
+       EINA_LIST_FOREACH_SAFE(item_list, l, l_next, obj) {
                if (obj != NULL) {
-                       if (__item_compare(obj, item_data) >= 0)
+                       if (_item_compare(obj, item_data) > 0) {
                                break;
+                       }
                }
 
                first = obj;
        }
 
+       if (item_list != NULL) {
+               eina_list_free(item_list);
+       }
+
+       return first;
+}
+
+HAPI qp_item_type_e quickpanel_list_util_item_type_get(Evas_Object *item)
+{
+       qp_item_data *qid = NULL;
+       retif(item == NULL, QP_ITEM_TYPE_NONE, "invalid parameter");
+
+       qid = evas_object_data_get(item, E_DATA_ITEM_LABEL_H);
+       if (qid != NULL) {
+               return _get_item_type(qid);
+       }
+
+       return QP_ITEM_TYPE_NONE;
+}
+
+HAPI void quickpanel_list_util_item_unpack_by_object(Evas_Object *list
+               , Evas_Object *item, int is_unpack_only, int is_hide)
+{
+       QP_VI *vi = NULL;
+       qp_item_data *qid = NULL;
+       retif(list == NULL, , "invalid parameter");
+       retif(item == NULL, , "invalid parameter");
+
+       qid = evas_object_data_get(item, E_DATA_ITEM_LABEL_H);
+       vi = quickpanel_vi_new_with_data(
+                       VI_OP_DELETE,
+                       _get_item_type(qid),
+                       list,
+                       item,
+                       _anim_init_cb,
+                       _anim_job_cb,
+                       _anim_done_cb,
+                       _anim_done_cb,
+                       vi,
+                       NULL,
+                       is_unpack_only,
+                       is_hide);
+       quickpanel_vi_start(vi);
+}
+
+HAPI void quickpanel_list_util_sort_insert(Evas_Object *list,
+                                       Evas_Object *new_obj)
+{
+
+       QP_VI *vi = NULL;
+       qp_item_data *qid = NULL;
+       retif(list == NULL, , "invalid parameter");
+       retif(new_obj == NULL, , "invalid parameter");
+
+       qid = evas_object_data_get(new_obj, E_DATA_ITEM_LABEL_H);
+       vi = quickpanel_vi_new_with_data(
+                       VI_OP_INSERT,
+                       _get_item_type(qid),
+                       list,
+                       new_obj,
+                       _anim_init_cb,
+                       _anim_job_cb,
+                       _anim_done_cb,
+                       _anim_done_cb,
+                       vi,
+                       NULL,
+                       0,
+                       0);
+       quickpanel_vi_start(vi);
+}
+
+HAPI Elm_Transit *quickpanel_list_util_get_reorder_transit(Evas_Object *item, Elm_Transit *transit, int distance)
+{
+       Eina_List *l;
+       Eina_List *l_next;
+       Evas_Object *obj = NULL;
+       Eina_List *item_list = NULL;
+       int is_start_relayout = 0;
+       Elm_Transit *transit_layout = NULL;
+       Evas_Object *container = NULL;
+
+       struct appdata *ad = quickpanel_get_app_data();
+       retif(ad == NULL, NULL, "invalid parameter");
+
+       container = ad->list;
+       retif(container == NULL, NULL, "invalid parameter");
+       retif(item == NULL, NULL, "invalid parameter");
+
+       item_list = elm_box_children_get(container);
+
+       EINA_LIST_FOREACH_SAFE(item_list, l, l_next, obj) {
+               if (obj == item) {
+                       is_start_relayout = 1;
+               } else if (obj != NULL && is_start_relayout == 1) {
+                       transit_layout = elm_transit_add();
+                       if (transit_layout != NULL) {
+                               elm_transit_effect_translation_add(transit_layout, 0, 0, 0, distance);
+                               elm_transit_object_add(transit_layout, obj);
+                               elm_transit_duration_set(transit_layout,
+                                               quickpanel_vim_get_duration(VI_OP_REORDER));
+                               elm_transit_tween_mode_set(transit_layout,
+                                               quickpanel_vim_get_tweenmode(VI_OP_REORDER));
+                               elm_transit_objects_final_state_keep_set(transit_layout, EINA_TRUE);
+                               elm_transit_event_enabled_set(transit_layout, EINA_TRUE);
+                               if (transit != NULL) {
+                                       elm_transit_chain_transit_add(transit, transit_layout);
+                               } else {
+                                       elm_transit_go(transit_layout);
+                               }
+                       }
+               }
+       }
+
+       if (item_list != NULL) {
+               eina_list_free(item_list);
+       }
+
+       return transit_layout;
+}
+
+static void _anim_init_insert(void *data)
+{
+       QP_VI *vi = data;
+       int coord_x = 0, coord_y = 0;
+       retif(vi == NULL, , "invalid parameter");
+
+       retif(vi->container == NULL, , "invalid parameter");
+       retif(vi->target == NULL, , "invalid parameter");
+
+       Evas_Object *container = vi->container;
+       Evas_Object *item = vi->target;
+       Evas_Object *first = NULL;
+
+       evas_object_clip_set(item, evas_object_clip_get(container));
+       evas_object_color_set(item, 0, 0, 0, 0);
+
+       first = _list_util_get_first(container, item);
+       _list_util_layout_get_coord(container, first, &coord_x, &coord_y);
+       evas_object_move(item, coord_x, coord_y);
+}
+
+static void _anim_job_insert(void *data)
+{
+
+       QP_VI *vi = data;
+       Eina_List *l;
+       Eina_List *l_next;
+       Evas_Object *obj = NULL;
+       Eina_List *item_list = NULL;
+       int is_start_relayout = 0;
+       int item_width, item_height = 0;
+       int coord_x = 0, coord_y = 0;
+       Elm_Transit *transit_layout = NULL;
+       Elm_Transit *transit_fadein = NULL;
+       Evas_Object *container = NULL;
+       Evas_Object *item = NULL;
+       Evas_Object *first = NULL;
+
+       retif(vi == NULL, , "invalid parameter");
+       retif(vi->container == NULL, , "invalid parameter");
+       retif(vi->target == NULL, , "invalid parameter");
+
+       container = vi->container;
+       item = vi->target;
+       item_list = elm_box_children_get(container);
+
+       first = _list_util_get_first(container, item);
+       _list_util_layout_get_coord(container, first, &coord_x, &coord_y);
+       evas_object_move(item, coord_x, coord_y);
+       is_start_relayout = (first == NULL) ? 1 : 0;
+
+       evas_object_geometry_get(item, NULL, NULL, &item_width, &item_height);
+       if (item_width == 0 && item_height == 0) {
+               ERR("failed to get a size of item %d %d", item_width, item_height);
+               evas_object_size_hint_min_get (item, &item_width, &item_height);
+       }
+
+       if (vi->item_type == QP_ITEM_TYPE_ONGOING_NOTI) {
+               if (item_list != NULL) {
+                       eina_list_free(item_list);
+               }
+               return;
+       }
+
+       EINA_LIST_FOREACH_SAFE(item_list, l, l_next, obj) {
+               if (obj == first) {
+                       is_start_relayout = 1;
+               } else if (obj != NULL && is_start_relayout == 1) {
+                       transit_layout = elm_transit_add();
+                       if (transit_layout != NULL) {
+                               elm_transit_effect_translation_add(transit_layout, 0, 0, 0, item_height);
+                               elm_transit_object_add(transit_layout, obj);
+                               elm_transit_duration_set(transit_layout,
+                                               quickpanel_vim_get_duration(VI_OP_REORDER));
+                               elm_transit_tween_mode_set(transit_layout,
+                                               quickpanel_vim_get_tweenmode(VI_OP_REORDER));
+                               elm_transit_objects_final_state_keep_set(transit_layout, EINA_TRUE);
+                               elm_transit_go(transit_layout);
+                       } else {
+                               ERR("Failed to create a transit");
+                       }
+               }
+       }
+
+       if (item_list != NULL) {
+               eina_list_free(item_list);
+       }
+
+       transit_fadein = elm_transit_add();
+       if (transit_fadein != NULL) {
+               elm_transit_object_add(transit_fadein, item);
+               elm_transit_effect_color_add(transit_fadein, 0, 0, 0, 0, 255, 255, 255, 255);
+               elm_transit_duration_set(transit_fadein,
+                               quickpanel_vim_get_duration(VI_OP_INSERT));
+               elm_transit_tween_mode_set(transit_fadein,
+                               quickpanel_vim_get_tweenmode(VI_OP_INSERT));
+               elm_transit_del_cb_set(transit_fadein, quickpanel_vi_done_cb_for_transit, vi);
+
+               if (transit_layout != NULL) {
+                       elm_transit_chain_transit_add(transit_layout, transit_fadein);
+               } else {
+                       elm_transit_go(transit_fadein);
+               }
+       } else {
+               if (transit_layout != NULL) elm_transit_del(transit_layout);
+               quickpanel_vi_done(vi);
+               ERR("Failed to create all the transit");
+       }
+}
+
+static void _anim_done_insert(void *data)
+{
+       QP_VI *vi = data;
+       retif(data == NULL, , "invalid parameter");
+       retif(vi->container == NULL, , "invalid parameter");
+       retif(vi->target == NULL, , "invalid parameter");
+
+       Evas_Object *container = vi->container;
+       Evas_Object *item = vi->target;
+       Evas_Object *first = _list_util_get_first(container, item);
+
+       evas_object_color_set(item, 255, 255, 255, 255);
+
        if (first == NULL) {
-               elm_box_pack_start(list, new_obj);
+               elm_box_pack_start(container, item);
+       } else {
+               elm_box_pack_after(container, item, first);
+       }
+}
+
+static void _anim_job_delete(void *data)
+{
+       QP_VI *vi = data;
+       Eina_List *l;
+       Eina_List *l_next;
+       Evas_Object *obj = NULL;
+       Eina_List *item_list = NULL;
+       int is_start_relayout = 0;
+       int item_width, item_height = 0;
+       Elm_Transit *transit_layout = NULL;
+       Elm_Transit *transit_fadeout = NULL;
+       Evas_Object *container = NULL;
+       Evas_Object *item = NULL;
+
+       retif(vi == NULL, , "invalid parameter");
+       retif(vi->container == NULL, , "invalid parameter");
+       retif(vi->target == NULL, , "invalid parameter");
+
+       container = vi->container;
+       item = vi->target;
+       item_list = elm_box_children_get(container);
+
+       evas_object_geometry_get(item, NULL, NULL, &item_width, &item_height);
+       if (item_width == 0 && item_height == 0) {
+               ERR("failed to get a size of item %d %d", item_width, item_height);
+               evas_object_size_hint_min_get (item, &item_width, &item_height);
+       }
+
+       transit_fadeout = elm_transit_add();
+       if (transit_fadeout != NULL) {
+               elm_transit_object_add(transit_fadeout, item);
+               elm_transit_effect_color_add(transit_fadeout, 255, 255, 255, 255, 0, 0, 0, 0);
+               elm_transit_objects_final_state_keep_set(transit_fadeout, EINA_TRUE);
+               elm_transit_tween_mode_set(transit_fadeout,
+                               quickpanel_vim_get_tweenmode(VI_OP_DELETE));
+               elm_transit_duration_set(transit_fadeout,
+                               quickpanel_vim_get_duration(VI_OP_DELETE));
+               elm_transit_go(transit_fadeout);
+
+               EINA_LIST_FOREACH_SAFE(item_list, l, l_next, obj) {
+                       if (obj == item) {
+                               is_start_relayout = 1;
+                       } else if (obj != NULL && is_start_relayout == 1) {
+                               transit_layout = elm_transit_add();
+                               if (transit_layout != NULL) {
+                                       elm_transit_effect_translation_add(transit_layout, 0, 0, 0, -item_height);
+                                       elm_transit_object_add(transit_layout, obj);
+                                       elm_transit_duration_set(transit_layout,
+                                                       quickpanel_vim_get_duration(VI_OP_REORDER));
+                                       elm_transit_tween_mode_set(transit_layout,
+                                                       quickpanel_vim_get_tweenmode(VI_OP_REORDER));
+                                       elm_transit_objects_final_state_keep_set(transit_layout, EINA_TRUE);
+                                       elm_transit_chain_transit_add(transit_fadeout, transit_layout);
+                               } else {
+                                       ERR("Failed to create a transit");
+                               }
+                       }
+               }
+       }
+
+       if (item_list != NULL) {
+               eina_list_free(item_list);
+       }
+
+       if (transit_layout != NULL) {
+               elm_transit_del_cb_set(transit_layout, quickpanel_vi_done_cb_for_transit,
+                               vi);
+       } else if (transit_fadeout != NULL) {
+               elm_transit_del_cb_set(transit_fadeout, quickpanel_vi_done_cb_for_transit,
+                               vi);
+       } else {
+               ERR("Failed to create all the transit");
+               quickpanel_vi_done(vi);
+       }
+}
+
+static void _anim_done_delete(void *data)
+{
+       QP_VI *vi = data;
+
+       retif(vi == NULL, , "invalid parameter");
+       retif(vi->container == NULL, , "invalid parameter");
+       retif(vi->target == NULL, , "invalid parameter");
+
+       Evas_Object *container = vi->container;
+       Evas_Object *item = vi->target;
+
+       elm_box_unpack(container, item);
+
+       if (vi->extra_flag_2 == 1) {
+               evas_object_move(item, -10000, -10000);
+               quickpanel_vi_object_event_freeze_set(item, EINA_FALSE);
+       }
+       if (vi->extra_flag_1 == 0 && item != NULL) {
+               evas_object_del(item);
+               item = NULL;
+       }
+}
+
+static Eina_Bool _anim_init_cb(void *data)
+{
+       int i = 0;
+       QP_VI *vi = data;
+       retif(vi == NULL, EINA_FALSE, "invalid parameter");
+
+       static qp_vi_op_table anim_init_table[] = {
+               {
+                       .op_type = VI_OP_INSERT,
+                       .handler = _anim_init_insert,
+               },
+               {
+                       .op_type = VI_OP_NONE,
+                       .handler = NULL,
+               },
+       };
+
+       for (i = 0; anim_init_table[i].op_type != VI_OP_NONE; i++) {
+               if (anim_init_table[i].op_type != vi->op_type) {
+                       continue;
+               }
+
+               anim_init_table[i].handler(vi);
+               break;
+       }
+
+       return EINA_TRUE;
+}
+
+static Eina_Bool _anim_job_cb(void *data)
+{
+       int i = 0;
+       QP_VI *vi = data;
+       retif(vi == NULL, EINA_FALSE, "invalid parameter");
+
+       static qp_vi_op_table anim_job_table[] = {
+               {
+                       .op_type = VI_OP_INSERT,
+                       .handler = _anim_job_insert,
+               },
+               {
+                       .op_type = VI_OP_DELETE,
+                       .handler = _anim_job_delete,
+               },
+               {
+                       .op_type = VI_OP_NONE,
+                       .handler = NULL,
+               },
+       };
+
+       for (i = 0; anim_job_table[i].op_type != VI_OP_NONE; i++) {
+               if (anim_job_table[i].op_type != vi->op_type) {
+                       continue;
+               }
+
+               anim_job_table[i].handler(vi);
+               break;
+       }
+
+       return EINA_TRUE;
+}
+
+static Eina_Bool _anim_done_cb(void *data)
+{
+       int i = 0;
+       QP_VI *vi = data;
+       retif(vi == NULL, EINA_FALSE, "invalid parameter");
+
+       static qp_vi_op_table anim_done_table[] = {
+               {
+                       .op_type = VI_OP_INSERT,
+                       .handler = _anim_done_insert,
+               },
+               {
+                       .op_type = VI_OP_DELETE,
+                       .handler = _anim_done_delete,
+               },
+               {
+                       .op_type = VI_OP_NONE,
+                       .handler = NULL,
+               },
+       };
+
+       for (i = 0; anim_done_table[i].op_type != VI_OP_NONE; i++) {
+               if (anim_done_table[i].op_type != vi->op_type) {
+                       continue;
+               }
+
+               anim_done_table[i].handler(vi);
+               break;
+       }
+
+       return EINA_TRUE;
+}
+
+HAPI void quickpanel_list_util_scroll_freeze_set(Eina_Bool is_freeze)
+{
+       struct appdata *ad = quickpanel_get_app_data();
+       retif(ad == NULL, , "invalid data.");
+       retif(ad->scroller == NULL, , "invalid data.");
+
+       if (is_freeze == EINA_TRUE) {
+               _viewer_freeze(ad->scroller);
        } else {
-               elm_box_pack_after(list, new_obj, first);
+               _viewer_unfreeze(ad->scroller);
        }
 }
index 795178a..8ddb165 100755 (executable)
@@ -1,19 +1,21 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ * Copyright (c) 2009-2015 Samsung Electronics Co., Ltd All Rights Reserved
  *
- * Licensed under the Flora License, Version 1.1 (the "License");
+ * 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 _QP_LIST_UTIL_DEF_
 #define _QP_LIST_UTIL_DEF_
 
@@ -23,11 +25,16 @@ typedef enum {
        QP_ITEM_TYPE_NONE = -1,
        QP_ITEM_TYPE_SETTING = 0,
        QP_ITEM_TYPE_BRIGHTNESS,
-       QP_ITEM_TYPE_ONGOING_NOTI,
+       QP_ITEM_TYPE_DUAL_SIM,
+       QP_ITEM_TYPE_FACTORY,
+       QP_ITEM_TYPE_MULTIWINDOW,
+       QP_ITEM_TYPE_EARJACK,
        QP_ITEM_TYPE_MINICTRL_ONGOING,
        QP_ITEM_TYPE_MINICTRL_TOP,
        QP_ITEM_TYPE_MINICTRL_MIDDLE,
        QP_ITEM_TYPE_MINICTRL_LOW,
+       QP_ITEM_TYPE_ONGOING_NOTI_GROUP,
+       QP_ITEM_TYPE_ONGOING_NOTI,
        QP_ITEM_TYPE_NOTI_GROUP,
        QP_ITEM_TYPE_NOTI,
        QP_ITEM_TYPE_BAR,
@@ -50,14 +57,17 @@ void quickpanel_list_util_item_del_tag(Evas_Object *item);
 void *quickpanel_list_util_item_get_data(qp_item_data *qid);
 void quickpanel_list_util_item_set_data(qp_item_data *qid, void *data);
 int quickpanel_list_util_item_compare(const void *data1, const void *data2);
+qp_item_type_e quickpanel_list_util_item_type_get(Evas_Object *item);
 
-void quickpanel_list_util_item_unpack_by_type(Evas_Object *list
-               , qp_item_type_e type);
 void quickpanel_list_util_item_unpack_by_object(Evas_Object *list
-               , Evas_Object *item);
+               , Evas_Object *item, int is_unpack_only, int is_hide);
 
 void quickpanel_list_util_sort_insert(Evas_Object *list,
                                        Evas_Object *new_obj);
 
+Elm_Transit *quickpanel_list_util_get_reorder_transit(Evas_Object *item,
+               Elm_Transit *transit, int distance);
+void quickpanel_list_util_scroll_freeze_set(Eina_Bool is_freeze);
+
 #endif /* _QP_LIST_UTIL_DEF_ */
 
index 3991634..e0c7a44 100755 (executable)
@@ -1,25 +1,64 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ * Copyright (c) 2009-2015 Samsung Electronics Co., Ltd All Rights Reserved
  *
- * Licensed under the Flora License, Version 1.1 (the License);
+ * 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
+ * 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,
+ * 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 <glib.h>
 #include <vconf.h>
+#include <metadata_extractor.h>
 #include "common.h"
 #include "quickpanel-ui.h"
 
-static player_h g_sound_player;
-static Ecore_Timer *g_sound_player_timer;
+#define NEED_TO_DEBUG_LOCKUP_ISSUE
+
+static struct info {
+       int id;
+       int is_feedback_initialized;
+       player_h player;
+       Ecore_Timer *playing_timer;
+} s_info = {
+       .player = NULL,
+       .playing_timer = NULL,
+       .id = 0,
+       .is_feedback_initialized = 0,
+};
+
+static void _quickpanel_player_free(player_h *sound_player);
+
+static void
+_quickpanel_player_del_timeout_timer(void)
+{
+       if (s_info.playing_timer) {
+               ecore_timer_del(s_info.playing_timer);
+               s_info.playing_timer = NULL;
+       }
+}
+
+static Eina_Bool _quickpanel_player_timeout_cb(void *data)
+{
+       s_info.playing_timer = NULL;
+
+       retif(data == NULL, ECORE_CALLBACK_CANCEL, "invalid parameter");
+       player_h *sound_player = data;
+
+       _quickpanel_player_free(sound_player);
+       s_info.playing_timer = NULL;
+
+       return ECORE_CALLBACK_CANCEL;
+}
 
 static void _quickpanel_player_free_job_cb(void *data)
 {
@@ -28,6 +67,9 @@ static void _quickpanel_player_free_job_cb(void *data)
 
        retif(sound_player == NULL, , "invalid parameter");
 
+#ifdef NEED_TO_DEBUG_LOCKUP_ISSUE
+       SERR("before stopping media");
+#endif
        if (player_get_state(sound_player, &state) == PLAYER_ERROR_NONE) {
 
                INFO("the state of sound player %d", state);
@@ -41,6 +83,9 @@ static void _quickpanel_player_free_job_cb(void *data)
                }
        }
        player_destroy(sound_player);
+#ifdef NEED_TO_DEBUG_LOCKUP_ISSUE
+       SERR("after stopping media");
+#endif
 }
 
 static void _quickpanel_player_free(player_h *sound_player)
@@ -52,26 +97,25 @@ static void _quickpanel_player_free(player_h *sound_player)
        *sound_player = NULL;
 }
 
-static void
-_quickpanel_player_del_timeout_timer(void)
+static void _quickpanel_player_start_job_cb(void *data)
 {
-       if (g_sound_player_timer) {
-               ecore_timer_del(g_sound_player_timer);
-               g_sound_player_timer = NULL;
-       }
-}
-
-static Eina_Bool _quickpanel_player_timeout_cb(void *data)
-{
-       g_sound_player_timer = NULL;
-
-       retif(data == NULL, ECORE_CALLBACK_CANCEL, "invalid parameter");
+       int ret = PLAYER_ERROR_NONE;
        player_h *sound_player = data;
 
-       _quickpanel_player_free(sound_player);
-       g_sound_player_timer = NULL;
-
-       return ECORE_CALLBACK_CANCEL;
+#ifdef NEED_TO_DEBUG_LOCKUP_ISSUE
+       SERR("before playing media");
+#endif
+       ret = player_start(*sound_player);
+       if (ret != PLAYER_ERROR_NONE) { /* if directly return retor.. */
+               ERR("player_start [%d]", ret);
+               _quickpanel_player_free(sound_player);
+               return;
+       }
+       s_info.playing_timer = ecore_timer_add(QP_PLAY_DURATION_LIMIT,
+                       _quickpanel_player_timeout_cb, sound_player);
+#ifdef NEED_TO_DEBUG_LOCKUP_ISSUE
+       SERR("after playing media");
+#endif
 }
 
 static void
@@ -80,6 +124,8 @@ _quickpanel_player_completed_cb(void *user_data)
        retif(user_data == NULL, , "invalid parameter");
        player_h *sound_player = user_data;
 
+       DBG("Media player completed");
+
        _quickpanel_player_del_timeout_timer();
        _quickpanel_player_free(sound_player);
 }
@@ -90,6 +136,8 @@ _quickpanel_player_interrupted_cb(player_interrupted_code_e code, void *user_dat
        retif(user_data == NULL, , "invalid parameter");
        player_h *sound_player = user_data;
 
+       ERR("interrupt code [%d]", (int)code);
+
        _quickpanel_player_del_timeout_timer();
        _quickpanel_player_free(sound_player);
 }
@@ -100,61 +148,104 @@ _quickpanel_player_error_cb(int error_code, void *user_data)
        retif(user_data == NULL, , "invalid parameter");
        player_h *sound_player = user_data;
 
+       ERR("Error code [%d]", (int)error_code);
+
        _quickpanel_player_del_timeout_timer();
        _quickpanel_player_free(sound_player);
 }
 
-HAPI void quickpanel_player_play(sound_type_e sound_type, const char *sound_file)
+HAPI int quickpanel_media_player_is_drm_error(int error_code)
 {
-       player_h *sound_player = &g_sound_player;
+       if (error_code == PLAYER_ERROR_DRM_EXPIRED
+               || error_code == PLAYER_ERROR_DRM_NO_LICENSE
+               || error_code == PLAYER_ERROR_DRM_FUTURE_USE
+               || error_code == PLAYER_ERROR_DRM_NOT_PERMITTED) {
+               return 1;
+       }
+
+       return 0;
+}
+
+HAPI int quickpanel_media_player_play(sound_type_e sound_type, const char *sound_file)
+{
+       player_h *sound_player = &s_info.player;
+       sound_session_type_e type = 1;
 
        int ret = PLAYER_ERROR_NONE;
+       int sndRet = SOUND_MANAGER_ERROR_NONE;
        player_state_e state = PLAYER_STATE_NONE;
 
+#ifdef NEED_TO_DEBUG_LOCKUP_ISSUE
+       SERR("Start player");
+#endif
        _quickpanel_player_del_timeout_timer();
 
        if (*sound_player != NULL) {
                _quickpanel_player_free(sound_player);
        }
 
+#ifdef NEED_TO_DEBUG_LOCKUP_ISSUE
+       SERR("setting sound session start");
+#endif
+       if (sound_type == SOUND_TYPE_NOTIFICATION) {
+               sound_manager_get_session_type(&type);
+               if (type != SOUND_SESSION_TYPE_NOTIFICATION) {
+                       sndRet = sound_manager_set_session_type(SOUND_SESSION_TYPE_NOTIFICATION);
+                       if (sndRet != SOUND_MANAGER_ERROR_NONE) {
+                               ERR("sound_manager_set_session_type fail sndRet :%x",sndRet);
+                               return PLAYER_ERROR_INVALID_PARAMETER;
+                       }
+               }
+       }
+#ifdef NEED_TO_DEBUG_LOCKUP_ISSUE
+       SERR("setting sound session finished");
+#endif
+
+#ifdef NEED_TO_DEBUG_LOCKUP_ISSUE
+       SERR("player_create start");
+#endif
        ret = player_create(sound_player);
        if (ret != PLAYER_ERROR_NONE) {
                ERR("creating the player handle failed[%d]", ret);
-               player_destroy(*sound_player);
+               *sound_player = NULL;
+               return ret;
        }
+#ifdef NEED_TO_DEBUG_LOCKUP_ISSUE
+       SERR("player_create finished");
+#endif
 
        ret = player_set_sound_type(*sound_player, sound_type);
        if (ret != PLAYER_ERROR_NONE) {
                ERR("player_set_sound_type() ERR: %x!!!!", ret);
                _quickpanel_player_free(sound_player);
-               return ;
+               return ret;
        }
 
        player_get_state(*sound_player, &state);
        if (state > PLAYER_STATE_READY) {
                _quickpanel_player_free(sound_player);
-               return;
+               return ret;
        }
 
        ret = player_set_uri(*sound_player, sound_file);
        if (ret != PLAYER_ERROR_NONE) {
                ERR("set attribute---profile_uri[%d]", ret);
                _quickpanel_player_free(sound_player);
-               return;
+               return ret;
        }
 
        ret = player_prepare(*sound_player);
        if (ret != PLAYER_ERROR_NONE) {
                ERR("realizing the player handle failed[%d]", ret);
                _quickpanel_player_free(sound_player);
-               return;
+               return ret;
        }
 
        player_get_state(*sound_player, &state);
        if (state != PLAYER_STATE_READY) {
                ERR("state of player is invalid %d", state);
                _quickpanel_player_free(sound_player);
-               return;
+               return ret;
        }
 
        /* register callback */
@@ -162,56 +253,133 @@ HAPI void quickpanel_player_play(sound_type_e sound_type, const char *sound_file
        if (ret != PLAYER_ERROR_NONE) {
                ERR("player_set_completed_cb() ERR: %x!!!!", ret);
                _quickpanel_player_free(sound_player);
-               return;
+               return ret;
        }
 
        ret = player_set_interrupted_cb(*sound_player, _quickpanel_player_interrupted_cb, sound_player);
        if (ret != PLAYER_ERROR_NONE) {
                _quickpanel_player_free(sound_player);
-               return;
+               return ret;
        }
 
        ret = player_set_error_cb(*sound_player, _quickpanel_player_error_cb, sound_player);
        if (ret != PLAYER_ERROR_NONE) {
                _quickpanel_player_free(sound_player);
-               return;
+               return ret;
        }
 
-       ret = player_start(*sound_player);
-       if (ret != PLAYER_ERROR_NONE) { /* if directly return retor.. */
-               ERR("player_start [%d]", ret);
-               _quickpanel_player_free(sound_player);
-               return;
+       ecore_job_add(_quickpanel_player_start_job_cb, sound_player);
+#ifdef NEED_TO_DEBUG_LOCKUP_ISSUE
+       SERR("playing request");
+#endif
+
+       return ret;
+}
+
+static Eina_Bool _playable_check(const char *file_path)
+{
+       char *value = NULL;
+       int ret_meta =  METADATA_EXTRACTOR_ERROR_NONE;
+       metadata_extractor_h metadata = NULL;
+       Eina_Bool ret = EINA_FALSE;
+
+       ret_meta = metadata_extractor_create(&metadata);
+       if (ret_meta != METADATA_EXTRACTOR_ERROR_NONE) {
+               ERR("Failed to create metadata extractor:%d", ret_meta);
+               return ret;
        }
 
-       g_sound_player_timer = ecore_timer_add(QP_PLAY_DURATION_LIMIT,
-                       _quickpanel_player_timeout_cb, sound_player);
+       if (metadata == NULL) {
+               ERR("Failed to create metadata extractor:%d", ret_meta);
+               return ret;
+       }
+
+       ret_meta = metadata_extractor_set_path(metadata, file_path);
+       if (ret_meta != METADATA_EXTRACTOR_ERROR_NONE) {
+               ERR("Failed to set path to meta extractor:%d", ret_meta);
+               metadata_extractor_destroy(metadata);
+               return ret;
+       }
+       ret_meta = metadata_extractor_get_metadata(metadata, METADATA_HAS_AUDIO, &value);
+       if (ret_meta != METADATA_EXTRACTOR_ERROR_NONE) {
+               ERR("Failed to get metadata:%d", ret_meta);
+               metadata_extractor_destroy(metadata);
+               return ret;
+       }
+
+       if(value && g_strcmp0(value, "0")) {
+               ret = EINA_TRUE;
+       }
+
+       if (value != NULL) {
+               free(value);
+       }
+       DBG("%s :: playable[%d]", file_path, ret);
+       metadata_extractor_destroy(metadata);
+       return ret;
+}
+
+HAPI Eina_Bool quickpanel_media_playable_check(const char *file_path)
+{
+       Eina_Bool ret = EINA_FALSE;
+
+       /* Check file exist or not */
+       ret = ecore_file_exists(file_path);
+       if (ret == EINA_FALSE) {
+               ERR("%s file does not exist", file_path);
+               return ret;
+       }
+
+       /* Check file playable or not */
+       ret = _playable_check(file_path);
+       if (ret == EINA_FALSE) {
+               ERR("%s file does not playable", file_path);
+               return ret;
+       }
+
+       return ret;
 }
 
-HAPI void quickpanel_player_stop(void)
+
+HAPI void quickpanel_media_player_stop(void)
 {
        _quickpanel_player_del_timeout_timer();
 
-       if (g_sound_player != NULL) {
-               _quickpanel_player_free(&g_sound_player);
+       if (s_info.player != NULL) {
+               _quickpanel_player_free(&s_info.player);
        }
+
+       quickpanel_media_player_id_set(0);
 }
 
-HAPI int quickpanel_is_sound_enabled(void)
+HAPI void quickpanel_media_player_id_set(int id)
 {
-       int snd_status = 0;
+       s_info.id = id;
+}
+
+HAPI int quickpanel_media_player_id_get(void)
+{
+       return s_info.id;
+}
+
+HAPI int quickpanel_media_is_sound_enabled(void)
+{
+       int snd_status = 0, ret = -1;
 
 #ifdef VCONFKEY_SETAPPL_ACCESSIBILITY_TURN_OFF_ALL_SOUNDS
        int snd_disabled_status = 0;
 
-       vconf_get_bool(VCONFKEY_SETAPPL_ACCESSIBILITY_TURN_OFF_ALL_SOUNDS, &snd_disabled_status);
-       vconf_get_bool(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, &snd_status);
+       ret = vconf_get_bool(VCONFKEY_SETAPPL_ACCESSIBILITY_TURN_OFF_ALL_SOUNDS, &snd_disabled_status);
+       msgif(ret != 0, "failed to get VCONFKEY_SETAPPL_ACCESSIBILITY_TURN_OFF_ALL_SOUNDS");
+       ret = vconf_get_bool(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, &snd_status);
+       msgif(ret != 0, "failed to get VCONFKEY_SETAPPL_SOUND_STATUS_BOOL");
 
        if (snd_disabled_status == 0 && snd_status == 1) {
                return 1;
        }
 #else
-       vconf_get_bool(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, &snd_status);
+       ret = vconf_get_bool(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, &snd_status);
+       msgif(ret != 0, "failed to get VCONFKEY_SETAPPL_SOUND_STATUS_BOOL");
 
        if (snd_status == 1) {
                return 1;
@@ -221,22 +389,27 @@ HAPI int quickpanel_is_sound_enabled(void)
        return 0;
 }
 
-HAPI int quickpanel_is_vib_enabled(void)
+HAPI int quickpanel_media_is_vib_enabled(void)
 {
-       int vib_status = 0;
+       int vib_status = 0, ret = -1;
 
-       vconf_get_bool(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL, &vib_status);
+       ret = vconf_get_bool(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL, &vib_status);
+       if (ret == 0) {
+               if (vib_status == 1)
+                       return 1;
+       } else {
+               ERR("failed to get a value of VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL");
+       }
 
-       if (vib_status == 1)
-               return 1;
-       else
-               return 0;
+       return 0;
 }
 
-HAPI void quickpanel_play_feedback(void)
+HAPI void quickpanel_media_play_feedback(void)
 {
-       int snd_enabled = quickpanel_is_sound_enabled();
-       int vib_enabled = quickpanel_is_vib_enabled();
+       int snd_enabled = quickpanel_media_is_sound_enabled();
+       int vib_enabled = quickpanel_media_is_vib_enabled();
+
+       quickpanel_media_init();
 
        if (snd_enabled == 1) {
                feedback_play_type(FEEDBACK_TYPE_SOUND, FEEDBACK_PATTERN_TOUCH_TAP);
@@ -245,12 +418,12 @@ HAPI void quickpanel_play_feedback(void)
        }
 }
 
-HAPI int quickpanel_set_mute_toggle(void)
+HAPI int quickpanel_media_set_mute_toggle(void)
 {
        int ret = -1;
 
-       if (quickpanel_is_sound_enabled() == 1 ||
-                       quickpanel_is_vib_enabled() == 1) {
+       if (quickpanel_media_is_sound_enabled() == 1 ||
+                       quickpanel_media_is_vib_enabled() == 1) {
                ret = vconf_set_bool(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, 0);
                msgif(ret != 0, "failed to set VCONFKEY_SETAPPL_SOUND_STATUS_BOOL");
 
@@ -268,3 +441,25 @@ HAPI int quickpanel_set_mute_toggle(void)
                return 1;
        }
 }
+
+HAPI void quickpanel_media_init(void)
+{
+       if (s_info.is_feedback_initialized == 0) {
+               if (feedback_initialize() == FEEDBACK_ERROR_NONE) {
+                       s_info.is_feedback_initialized = 1;
+               } else {
+                       ERR("failed to init feedback API");
+               }
+       }
+}
+
+HAPI void quickpanel_media_fini(void)
+{
+       if (s_info.is_feedback_initialized == 1) {
+               if (feedback_deinitialize() == FEEDBACK_ERROR_NONE) {
+                       s_info.is_feedback_initialized = 0;
+               } else {
+                       ERR("failed to deinit feedback API");
+               }
+       }
+}
index f86ea45..3365e78 100755 (executable)
@@ -1,31 +1,40 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ * Copyright (c) 2009-2015 Samsung Electronics Co., Ltd All Rights Reserved
  *
- * Licensed under the Flora License, Version 1.1 (the License);
+ * 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
+ * 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,
+ * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
+ *
  */
+
 #ifndef __QUICKPANEL_MEDIA_H__
 #define __QUICKPANEL_MEDIA_H__
 
 #include <player.h>
+#include <sound_manager.h>
 #include <feedback.h>
 
 #define QP_PLAY_DURATION_LIMIT 15
 
-void quickpanel_player_play(sound_type_e sound_type, const char *sound_file);
-void quickpanel_player_stop(void);
-int quickpanel_is_sound_enabled(void);
-int quickpanel_is_vib_enabled(void);
-void quickpanel_play_feedback(void);
-int quickpanel_set_mute_toggle(void);
+int quickpanel_media_player_play(sound_type_e sound_type, const char *sound_file);
+void quickpanel_media_player_stop(void);
+int quickpanel_media_is_sound_enabled(void);
+int quickpanel_media_is_vib_enabled(void);
+void quickpanel_media_play_feedback(void);
+int quickpanel_media_set_mute_toggle(void);
+void quickpanel_media_player_id_set(int id);
+int quickpanel_media_player_id_get(void);
+Eina_Bool quickpanel_media_playable_check(const char *file_path);
+int quickpanel_media_player_is_drm_error(int error_code);
+void quickpanel_media_init(void);
+void quickpanel_media_fini(void);
 
 #endif
index ee7f59f..8242ba6 100755 (executable)
@@ -1,46 +1,55 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ * Copyright (c) 2009-2015 Samsung Electronics Co., Ltd All Rights Reserved
  *
- * Licensed under the Flora License, Version 1.1 (the License);
+ * 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,
+ * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
+ *
  */
 
+
 #include <glib.h>
-#include <Ecore_X.h>
 #include <minicontrol-viewer.h>
 #include <minicontrol-monitor.h>
 #include <string.h>
 #include "common.h"
 #include "quickpanel-ui.h"
+#include "quickpanel_def.h"
 #include "list_util.h"
 #include "quickpanel_debug_util.h"
+#ifdef QP_SCREENREADER_ENABLE
+#include "accessibility.h"
+#endif
+#include "minictrl.h"
+#include "vi_manager.h"
 
-#define QP_R_MARGIN 12
-#define MINICONTROL_WIDTH_P_MAX 692
-#define MINICONTROL_WIDTH_L_MAX 1252
-
+#define MINICONTROL_TYPE_STR_VIEWER "::[viewer="
+#define MINICONTROL_TYPE_STR_QUICKPANEL "QUICKPANEL"
+#define MINICONTROL_TYPE_STR_LOCKSCREEN "LOCKSCREEN"
 #define MINICONTROL_TYPE_STR_ONGOING "_ongoing]"
 
-static int quickpanel_minictrl_init(void *data);
-static int quickpanel_minictrl_fini(void *data);
-static int quickpanel_minictrl_suspend(void *data);
-static int quickpanel_minictrl_resume(void *data);
+static Eina_Bool _anim_init_cb(void *data);
+static Eina_Bool _anim_job_cb(void *data);
+static Eina_Bool _anim_done_cb(void *data);
+static int _init(void *data);
+static int _fini(void *data);
+static int _suspend(void *data);
+static int _resume(void *data);
 
 QP_Module minictrl = {
        .name = "minictrl",
-       .init = quickpanel_minictrl_init,
-       .fini = quickpanel_minictrl_fini,
-       .suspend = quickpanel_minictrl_suspend,
-       .resume = quickpanel_minictrl_resume,
+       .init = _init,
+       .fini = _fini,
+       .suspend = _suspend,
+       .resume = _resume,
        .hib_enter = NULL,
        .hib_leave = NULL,
        .lang_changed = NULL,
@@ -57,8 +66,29 @@ struct _viewer_item {
        void *data;
 };
 
+static void _minictrl_resize_vi(Evas_Object *list,
+                                       struct _viewer_item *item, int to_w, int to_h);
+
 GHashTable *g_prov_table;
 
+static int _viewer_check(const char *name)
+{
+       char *pos_start = NULL;
+       retif(!name, 0, "name is NULL");
+
+       if ((pos_start = strstr(name, MINICONTROL_TYPE_STR_VIEWER)) != NULL) {
+               if (strstr(pos_start, MINICONTROL_TYPE_STR_QUICKPANEL) != NULL) {
+                       return 1;
+               } else {
+                       return 0;
+               }
+       } else if (strstr(name, MINICONTROL_TYPE_STR_LOCKSCREEN) != NULL) {
+               return 0;
+       }
+
+       return 1;
+}
+
 static void _viewer_freeze(Evas_Object *viewer)
 {
        int freezed_count = 0;
@@ -66,8 +96,6 @@ static void _viewer_freeze(Evas_Object *viewer)
 
        freezed_count = elm_object_scroll_freeze_get(viewer);
 
-       WARN("viewer(scroller) is freezed");
-
        if (freezed_count <= 0) {
                elm_object_scroll_freeze_push(viewer);
        }
@@ -80,14 +108,13 @@ static void _viewer_unfreeze(Evas_Object *viewer)
 
        freezed_count = elm_object_scroll_freeze_get(viewer);
 
-       WARN("viewer(scroller) is unfreezed");
-
        for (i = 0 ; i < freezed_count; i++) {
                elm_object_scroll_freeze_pop(viewer);
        }
 }
 
-static Evas_Object *_get_minictrl_obj(Evas_Object *layout) {
+static Evas_Object *_get_minictrl_obj(Evas_Object *layout)
+{
        retif(layout == NULL, NULL, "Invalid parameter!");
 
        return elm_object_part_content_get(layout, "elm.icon");
@@ -103,20 +130,24 @@ static void _viewer_set_size(Evas_Object *layout, void *data, int width, int hei
        struct appdata *ad = data;
        int max_width = 0;
        int resized_width = 0;
+       int is_landscape = 0;
 
        viewer = _get_minictrl_obj(layout);
        retif(viewer == NULL, , "Invalid parameter!");
 
-       if (ad->angle == 90 || ad->angle == 270) {
-               max_width = (ad->scale * MINICONTROL_WIDTH_L_MAX) - 1;
+       is_landscape = (width > ad->win_width) ? 1 : 0;
+
+       if (is_landscape) {
+               max_width = (ad->scale * ad->win_height);
        } else {
-               max_width = (ad->scale * MINICONTROL_WIDTH_P_MAX) - 1;
+               max_width = (ad->scale * ad->win_width);
        }
        resized_width = (width > max_width) ? max_width : width;
 
-       DBG("minicontroller view is resized to w:%d h:%d", resized_width, height);
+       SERR("minicontroller view is resized to w:%d(%d) h:%d Landscape[%d]", resized_width, width, height, is_landscape);
 
        evas_object_size_hint_min_set(viewer, resized_width, height);
+       evas_object_size_hint_max_set(viewer, resized_width, height);
 }
 
 static void _viewer_item_free(struct _viewer_item *item)
@@ -126,16 +157,17 @@ static void _viewer_item_free(struct _viewer_item *item)
        retif(ad->list == NULL, , "Invalid parameter!");
        retif(item == NULL, , "Invalid parameter!");
 
-       if (item->name)
+       if (item->name) {
                free(item->name);
+       }
 
        if (item->viewer) {
-#ifdef TBD
-               evas_object_unref(item->viewer);
-#endif
-               quickpanel_list_util_item_unpack_by_object(ad->list, item->viewer);
+               quickpanel_list_util_item_unpack_by_object(ad->list, item->viewer, 0, 0);
                quickpanel_list_util_item_del_tag(item->viewer);
-               evas_object_del(item->viewer);
+               if (item->viewer != NULL) {
+                       evas_object_del(item->viewer);
+                       item->viewer = NULL;
+               }
        }
 
        free(item);
@@ -161,19 +193,35 @@ static Evas_Object *_minictrl_create_view(struct appdata *ad, const char *name)
        Evas_Object *viewer = minicontrol_viewer_add(layout, name);
        if (!viewer) {
                ERR("fail to add viewer - %s", name);
+               if (layout) {
+                       evas_object_del(layout);
+               }
                return NULL;
        }
-#ifdef TBD
-       evas_object_ref(viewer);
-#endif
+       elm_object_focus_allow_set(viewer, EINA_TRUE);
        elm_object_part_content_set(layout, "elm.icon", viewer);
 
+       Evas_Object *focus = quickpanel_accessibility_ui_get_focus_object(layout);
+       elm_object_part_content_set(layout, "focus", focus);
+
+#ifdef QP_SCREENREADER_ENABLE
+       Evas_Object *ao = quickpanel_accessibility_screen_reader_object_get(layout,
+                       SCREEN_READER_OBJ_TYPE_ELM_OBJECT, "focus", layout);
+
+       if (ao != NULL) {
+               elm_access_info_cb_set(ao, ELM_ACCESS_TYPE, quickpanel_accessibility_info_cb,
+                               _NOT_LOCALIZED("Mini controller"));
+       }
+#endif
+
        return layout;
 }
 
 static int _minictrl_is_ongoing(const char *str)
 {
-       if (str == NULL) return 0;
+       if (str == NULL) {
+               return 0;
+       }
 
        if (strstr(str, MINICONTROL_TYPE_STR_ONGOING) != NULL) {
                return 1;
@@ -203,7 +251,8 @@ static qp_item_type_e _minictrl_priority_to_type(minicontrol_priority_e priority
 }
 
 static void _minictrl_release_cb(void *data, Evas *e,
-               Evas_Object *obj, void *event_info) {
+               Evas_Object *obj, void *event_info)
+{
        struct appdata *ad;
        retif(!data, , "data is NULL");
        ad = data;
@@ -246,7 +295,14 @@ static void _minictrl_add(const char *name, unsigned int width,
         *
         */
        viewer = _minictrl_create_view(ad, name);
+       if (!viewer) {
+               ERR("Failed to create view[%s]", name);
+               return;
+       }
        _viewer_set_size(viewer, ad, width, height);
+       quickpanel_uic_initial_resize(viewer,
+                       (height > QP_THEME_LIST_ITEM_MINICONTRL_HEIGHT + QP_THEME_LIST_ITEM_SEPERATOR_HEIGHT)
+                       ? height : QP_THEME_LIST_ITEM_MINICONTRL_HEIGHT + QP_THEME_LIST_ITEM_SEPERATOR_HEIGHT);
 
        evas_object_event_callback_add(_get_minictrl_obj(viewer), EVAS_CALLBACK_MOUSE_UP,
                        _minictrl_release_cb, ad);
@@ -254,7 +310,10 @@ static void _minictrl_add(const char *name, unsigned int width,
        vit = malloc(sizeof(struct _viewer_item));
        if (!vit) {
                ERR("fail to alloc vit");
-               evas_object_del(viewer);
+               if (viewer != NULL) {
+                       evas_object_del(viewer);
+                       viewer = NULL;
+               }
                return;
        }
 
@@ -266,7 +325,10 @@ static void _minictrl_add(const char *name, unsigned int width,
        qid = quickpanel_list_util_item_new(type, vit);
        if (!qid) {
                ERR("fail to alloc vit");
-               evas_object_del(viewer);
+               if (viewer != NULL) {
+                       evas_object_del(viewer);
+                       viewer = NULL;
+               }
                free(vit);
                return;
        }
@@ -281,34 +343,32 @@ static void _minictrl_add(const char *name, unsigned int width,
 
        g_hash_table_insert(g_prov_table, g_strdup(name), vit);
 
-       INFO("success to add minicontrol %s", name);
+       DBG("success to add minicontrol %s", name);
+       quickpanel_minictrl_rotation_report(ad->angle);
 }
 
 static void _minictrl_remove(const char *name, void *data)
 {
        if (g_prov_table) {
-               if (g_hash_table_remove(g_prov_table, name))
-               {
-                       INFO("success to remove %s", name);
+               if (g_hash_table_remove(g_prov_table, name)) {
+                       DBG("success to remove %s", name);
 
                        retif(data == NULL, , "data is NULL");
-               }
-               else
+               } else {
                        WARN("unknown provider name : %s", name);
+               }
        }
 }
 
 static void _minictrl_update(const char *name, unsigned int width,
                                unsigned int height, void *data)
 {
+       int old_h = 0;
+       struct appdata *ad = data;
        struct _viewer_item *found = NULL;
-       struct appdata *ad = NULL;
 
-       if (!g_prov_table)
-               return;
-
-       retif(!data, , "data is NULL");
-       ad = data;
+       retif(!g_prov_table, , "data is NULL");
+       retif(!ad, , "data is NULL");
 
        found = g_hash_table_lookup(g_prov_table, name);
 
@@ -317,36 +377,50 @@ static void _minictrl_update(const char *name, unsigned int width,
                return;
        }
 
-       found->width = width;
-       found->height = height;
+       old_h = found->height;
 
        if (found->viewer) {
-               _viewer_set_size(found->viewer, ad, width, height);
+               if (old_h != height) {
+                       _minictrl_resize_vi(ad->list,
+                               found, width, height);
+               } else {
+                       _viewer_set_size(found->viewer, ad, width, height);
+                       quickpanel_uic_initial_resize(found->viewer,
+                                       (height > QP_THEME_LIST_ITEM_MINICONTRL_HEIGHT + QP_THEME_LIST_ITEM_SEPERATOR_HEIGHT)
+                                       ? height : QP_THEME_LIST_ITEM_MINICONTRL_HEIGHT + QP_THEME_LIST_ITEM_SEPERATOR_HEIGHT);
+               }
        }
 }
 
-static void _minictrl_request(const char *name, int action, void *data)
+static void _minictrl_request(const char *name, int action, int value, void *data)
 {
-       struct appdata *ad = NULL;
+       struct appdata *ad = data;
        retif(!name, , "name is NULL");
-       retif(!data, , "data is NULL");
-       ad = data;
+       retif(!ad, , "data is NULL");
+
+       SDBG("%s %d %d", name, action, value);
 
        if (action == MINICONTROL_REQ_HIDE_VIEWER) {
-               quickpanel_close_quickpanel(true);
-       }
-       if (action == MINICONTROL_REQ_FREEZE_SCROLL_VIEWER) {
+               quickpanel_uic_close_quickpanel(true, 0);
+       } else if (action == MINICONTROL_REQ_FREEZE_SCROLL_VIEWER) {
                if (ad->list != NULL) {
                        ERR("freezed by %s", name);
                        _viewer_freeze(ad->scroller);
                }
-       }
-       if (action == MINICONTROL_REQ_UNFREEZE_SCROLL_VIEWER) {
+       } else if (action == MINICONTROL_REQ_UNFREEZE_SCROLL_VIEWER) {
                if (ad->list != NULL) {
                        ERR("unfreezed by %s", name);
                        _viewer_unfreeze(ad->scroller);
                }
+       } 
+#ifdef HAVE_X
+       else if (action == MINICONTROL_REQ_REPORT_VIEWER_ANGLE) {
+               if (ad->list != NULL) {
+                       SERR("need to broadcasting angle by %s %d", name, action);
+                       quickpanel_minictrl_rotation_report(ad->angle);
+               }
        }
+#endif
 }
 
 static void _mctrl_monitor_cb(minicontrol_action_e action,
@@ -358,6 +432,11 @@ static void _mctrl_monitor_cb(minicontrol_action_e action,
        retif(!data, , "data is NULL");
        retif(!name, , "name is NULL");
 
+       if (_viewer_check(name) == 0) {
+               ERR("%s: ignored", name);
+               return;
+       }
+
        switch (action) {
        case MINICONTROL_ACTION_START:
                _minictrl_add(name, width, height, priority, data);
@@ -369,14 +448,229 @@ static void _mctrl_monitor_cb(minicontrol_action_e action,
                _minictrl_remove(name, data);
                break;
        case MINICONTROL_ACTION_REQUEST:
-               _minictrl_request(name, width, data);
+               _minictrl_request(name, width, height, data);
                break;
        default:
                break;
        }
 }
 
-static int quickpanel_minictrl_init(void *data)
+static void _minictrl_resize_vi(Evas_Object *list,
+                                       struct _viewer_item *item, int to_w, int to_h)
+{
+       QP_VI *vi = NULL;
+       retif(list == NULL, , "invalid parameter");
+       retif(item == NULL, , "invalid parameter");
+
+       vi = quickpanel_vi_new_with_data(
+                       VI_OP_RESIZE,
+                       QP_ITEM_TYPE_MINICTRL_MIDDLE,
+                       list,
+                       item->viewer,
+                       _anim_init_cb,
+                       _anim_job_cb,
+                       _anim_done_cb,
+                       _anim_done_cb,
+                       vi,
+                       item,
+                       to_w,
+                       to_h);
+       quickpanel_vi_start(vi);
+}
+
+static void _anim_init_resize(void *data)
+{
+       QP_VI *vi = data;
+       retif(vi == NULL, , "invalid parameter");
+       retif(vi->target == NULL, , "invalid parameter");
+
+       Evas_Object *item = vi->target;
+       evas_object_color_set(item, 0, 0, 0, 0);
+}
+
+static void _reorder_transit_del_cb(void *data, Elm_Transit *transit)
+{
+       QP_VI *vi = data;
+       int to_w = 0, to_h = 0;
+       Evas_Object *item = NULL;
+       retif(vi == NULL, , "data is NULL");
+       retif(vi->target == NULL, , "invalid parameter");
+
+       item = vi->target;
+       to_w = vi->extra_flag_1;
+       to_h = vi->extra_flag_2;
+
+       struct appdata *ad = quickpanel_get_app_data();
+       retif(ad == NULL, , "Invalid parameter!");
+
+       _viewer_set_size(item, ad, to_w, to_h);
+       quickpanel_uic_initial_resize(item,
+                       (to_h > QP_THEME_LIST_ITEM_MINICONTRL_HEIGHT + QP_THEME_LIST_ITEM_SEPERATOR_HEIGHT)
+                       ? to_h : QP_THEME_LIST_ITEM_MINICONTRL_HEIGHT + QP_THEME_LIST_ITEM_SEPERATOR_HEIGHT);
+}
+
+static void _anim_job_resize(void *data)
+{
+       QP_VI *vi = data;
+       int to_w = 0, to_h = 0;
+       Elm_Transit *transit_layout_parent = NULL;
+       Elm_Transit *transit_fadein = NULL;
+       Evas_Object *item = NULL;
+       struct _viewer_item *viewer_item = NULL;
+
+       struct appdata *ad = quickpanel_get_app_data();
+       retif(ad == NULL, , "Invalid parameter!");
+       retif(vi == NULL, , "invalid parameter");
+       retif(vi->target == NULL, , "invalid parameter");
+       retif(vi->extra_data_2 == NULL, , "invalid parameter");
+
+       item = vi->target;
+       to_w = vi->extra_flag_1;
+       to_h = vi->extra_flag_2;
+       viewer_item = vi->extra_data_2;
+
+       transit_layout_parent = quickpanel_list_util_get_reorder_transit(viewer_item->viewer, NULL, to_h - viewer_item->height);
+       if (transit_layout_parent != NULL) {
+               elm_transit_del_cb_set(transit_layout_parent, _reorder_transit_del_cb, vi);
+       } else {
+               _viewer_set_size(item, ad, to_w, to_h);
+               quickpanel_uic_initial_resize(item,
+                               (to_h > QP_THEME_LIST_ITEM_MINICONTRL_HEIGHT + QP_THEME_LIST_ITEM_SEPERATOR_HEIGHT)
+                               ? to_h : QP_THEME_LIST_ITEM_MINICONTRL_HEIGHT + QP_THEME_LIST_ITEM_SEPERATOR_HEIGHT);
+       }
+
+       transit_fadein = elm_transit_add();
+       if (transit_fadein != NULL) {
+               elm_transit_object_add(transit_fadein, item);
+               elm_transit_effect_color_add(transit_fadein, 0, 0, 0, 0, 255, 255, 255, 255);
+               elm_transit_duration_set(transit_fadein, 0.35);
+               elm_transit_tween_mode_set(transit_fadein,
+                               quickpanel_vim_get_tweenmode(VI_OP_INSERT));
+               elm_transit_del_cb_set(transit_fadein, quickpanel_vi_done_cb_for_transit, vi);
+               elm_transit_objects_final_state_keep_set(transit_fadein, EINA_TRUE);
+
+               if (transit_layout_parent != NULL) {
+                       elm_transit_chain_transit_add(transit_layout_parent, transit_fadein);
+                       elm_transit_go(transit_layout_parent);
+               } else {
+                       elm_transit_go(transit_fadein);
+               }
+       } else {
+               ERR("Failed to create all the transit");
+               quickpanel_vi_done(vi);
+       }
+}
+
+static void _anim_done_resize(void *data)
+{
+       QP_VI *vi = data;
+       struct _viewer_item *viewer_item = NULL;
+       struct appdata *ad = quickpanel_get_app_data();
+       retif(ad == NULL, , "Invalid parameter!");
+       retif(vi == NULL, , "invalid parameter");
+       retif(vi->target == NULL, , "invalid parameter");
+
+       Evas_Object *item = vi->target;
+       viewer_item = vi->extra_data_2;
+
+       viewer_item->width = vi->extra_flag_1;
+       viewer_item->height = vi->extra_flag_2;
+
+       _viewer_set_size(item, ad, viewer_item->width, viewer_item->height);
+       quickpanel_uic_initial_resize(item,
+                       (viewer_item->height > QP_THEME_LIST_ITEM_MINICONTRL_HEIGHT + QP_THEME_LIST_ITEM_SEPERATOR_HEIGHT)
+                       ? viewer_item->height : QP_THEME_LIST_ITEM_MINICONTRL_HEIGHT + QP_THEME_LIST_ITEM_SEPERATOR_HEIGHT);
+       evas_object_color_set(item, 255, 255, 255, 255);
+}
+
+static Eina_Bool _anim_init_cb(void *data)
+{
+       QP_VI *vi = data;
+       retif(vi == NULL, EINA_FALSE, "invalid parameter");
+
+       static qp_vi_op_table anim_init_table[] = {
+               {
+                       .op_type = VI_OP_RESIZE,
+                       .handler = _anim_init_resize,
+               },
+               {
+                       .op_type = VI_OP_NONE,
+                       .handler = NULL,
+               },
+       };
+
+       int i = 0;
+       for (i = 0; anim_init_table[i].op_type != VI_OP_NONE; i++) {
+               if (anim_init_table[i].op_type != vi->op_type) {
+                       continue;
+               }
+
+               anim_init_table[i].handler(vi);
+               break;
+       }
+
+       return EINA_TRUE;
+}
+
+static Eina_Bool _anim_job_cb(void *data)
+{
+       QP_VI *vi = data;
+       retif(vi == NULL, EINA_FALSE, "invalid parameter");
+
+       static qp_vi_op_table anim_job_table[] = {
+               {
+                       .op_type = VI_OP_RESIZE,
+                       .handler = _anim_job_resize,
+               },
+               {
+                       .op_type = VI_OP_NONE,
+                       .handler = NULL,
+               },
+       };
+
+       int i = 0;
+       for (i = 0; anim_job_table[i].op_type != VI_OP_NONE; i++) {
+               if (anim_job_table[i].op_type != vi->op_type) {
+                       continue;
+               }
+
+               anim_job_table[i].handler(vi);
+               break;
+       }
+
+       return EINA_TRUE;
+}
+
+static Eina_Bool _anim_done_cb(void *data)
+{
+       QP_VI *vi = data;
+       retif(vi == NULL, EINA_FALSE, "invalid parameter");
+
+       static qp_vi_op_table anim_done_table[] = {
+               {
+                       .op_type = VI_OP_RESIZE,
+                       .handler = _anim_done_resize,
+               },
+               {
+                       .op_type = VI_OP_NONE,
+                       .handler = NULL,
+               },
+       };
+
+       int i = 0;
+       for (i = 0; anim_done_table[i].op_type != VI_OP_NONE; i++) {
+               if (anim_done_table[i].op_type != vi->op_type) {
+                       continue;
+               }
+
+               anim_done_table[i].handler(vi);
+               break;
+       }
+
+       return EINA_TRUE;
+}
+
+static int _init(void *data)
 {
        minicontrol_error_e ret;
 
@@ -395,12 +689,13 @@ static int quickpanel_minictrl_init(void *data)
        return QP_OK;
 }
 
-static int quickpanel_minictrl_fini(void *data)
+static int _fini(void *data)
 {
        minicontrol_error_e ret;
        ret = minicontrol_monitor_stop();
-       if (ret != MINICONTROL_ERROR_NONE)
+       if (ret != MINICONTROL_ERROR_NONE) {
                ERR("fail to minicontrol_monitor_stop()- %d", ret);
+       }
 
        if (g_prov_table) {
                g_hash_table_remove_all(g_prov_table);
@@ -410,7 +705,7 @@ static int quickpanel_minictrl_fini(void *data)
        return QP_OK;
 }
 
-static int quickpanel_minictrl_suspend(void *data)
+static int _suspend(void *data)
 {
        struct appdata *ad = data;
        retif(ad == NULL, QP_FAIL, "Invalid parameter!");
@@ -422,7 +717,7 @@ static int quickpanel_minictrl_suspend(void *data)
        return QP_OK;
 }
 
-static int quickpanel_minictrl_resume(void *data)
+static int _resume(void *data)
 {
        struct appdata *ad = data;
        retif(ad == NULL, QP_FAIL, "Invalid parameter!");
@@ -433,3 +728,16 @@ static int quickpanel_minictrl_resume(void *data)
 
        return QP_OK;
 }
+
+HAPI void quickpanel_minictrl_rotation_report(int angle)
+{
+       if (g_prov_table != NULL) {
+               if (g_hash_table_size(g_prov_table) > 0) {
+                       SINFO("minicontrol rotation:%d", angle);
+#ifdef HAVE_X
+                       minicontrol_viewer_request(QP_PKG_QUICKPANEL,
+                                       MINICONTROL_REQ_ROTATE_PROVIDER, angle);
+#endif
+               }
+       }
+}
diff --git a/daemon/minictrl/minictrl.h b/daemon/minictrl/minictrl.h
new file mode 100644 (file)
index 0000000..6387f2c
--- /dev/null
@@ -0,0 +1,24 @@
+/*
+ * 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 _QP_MINICONTROL_DEF_
+#define _QP_MINICONTROL_DEF_
+
+void quickpanel_minictrl_rotation_report(int angle);
+
+#endif
index 8aa0e44..efeefe0 100755 (executable)
@@ -1,19 +1,21 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ * Copyright (c) 2009-2015 Samsung Electronics Co., Ltd All Rights Reserved
  *
- * Licensed under the Flora License, Version 1.1 (the "License");
+ * 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"
 
   * MODULES
   *
   *****************************************************************/
-/* searchbar */
-/* extern QP_Module searchbar; */
+
+#ifdef QP_SETTING_ENABLE
+/* setting */
+extern QP_Module settings;
+extern QP_Module settings_view_featured;
+extern QP_Module settings_view_all;
+#endif /* QP_SETTING_ENABLE */
+
 #ifdef QP_MINICTRL_ENABLE
 extern QP_Module minictrl;
 #endif /* QP_MINICTRL_ENABLE */
@@ -36,14 +44,27 @@ extern QP_Module brightness_ctrl;
 #ifdef QP_ANIMATED_IMAGE_ENABLE
 extern QP_Module animated_image;
 #endif
+
+extern QP_Module vi_manager;
+extern QP_Module pager;
+
 /* notification */
 extern QP_Module noti;
-extern QP_Module ticker;
-extern QP_Module ticker_status;
-/* idle test */
-extern QP_Module idletxt;
+extern QP_Module activenoti;
+extern QP_Module qp_datetime_controller;
+extern QP_Module qp_datetime_view;
 
+/* do not change the order of modules, result may be changed up to order */
 static QP_Module *modules[] = {
+       &vi_manager,
+       &pager,
+       &qp_datetime_controller,
+       &qp_datetime_view,
+#ifdef QP_SETTING_ENABLE
+       &settings,
+       &settings_view_featured,
+       &settings_view_all,
+#endif /* QP_SETTING_ENABLE */
 #ifdef QP_MINICTRL_ENABLE
        &minictrl,
 #endif /* QP_MINICTRL_ENABLE */
@@ -51,93 +72,101 @@ static QP_Module *modules[] = {
        &brightness_ctrl,
 #endif /* QP_BRIGHTNESS_ENABLE */
        &noti,
-       &ticker,
-       &ticker_status,
-       &idletxt,
+       &activenoti,
 #ifdef QP_ANIMATED_IMAGE_ENABLE
-       &animated_image
+       &animated_image,
 #endif
 };
 
-HAPI int init_modules(void *data)
+HAPI int quickpanel_modules_init(void *data)
 {
        int i;
 
        retif(data == NULL, QP_FAIL, "Invalid parameter!");
 
        for (i = 0; i < sizeof(modules) / sizeof(modules[0]); i++) {
-               if (modules[i]->init)
+               if (modules[i]->init) {
                        modules[i]->init(data);
+               }
+
+               if (modules[i]->init_job_cb) {
+                       ecore_job_add(modules[i]->init_job_cb, data);
+               }
        }
 
        return QP_OK;
 }
 
-HAPI int fini_modules(void *data)
+HAPI int quickpanel_modules_fini(void *data)
 {
        int i;
 
        retif(data == NULL, QP_FAIL, "Invalid parameter!");
 
        for (i = 0; i < sizeof(modules) / sizeof(modules[0]); i++) {
-               if (modules[i]->fini)
+               if (modules[i]->fini) {
                        modules[i]->fini(data);
+               }
        }
 
        return QP_OK;
 }
 
-HAPI int suspend_modules(void *data)
+HAPI int quickpanel_modules_suspend(void *data)
 {
        int i;
 
        retif(data == NULL, QP_FAIL, "Invalid parameter!");
 
        for (i = 0; i < sizeof(modules) / sizeof(modules[0]); i++) {
-               if (modules[i]->suspend)
+               if (modules[i]->suspend) {
                        modules[i]->suspend(data);
+               }
        }
 
        return QP_OK;
 }
 
-HAPI int resume_modules(void *data)
+HAPI int quickpanel_modules_resume(void *data)
 {
        int i;
 
        retif(data == NULL, QP_FAIL, "Invalid parameter!");
 
        for (i = 0; i < sizeof(modules) / sizeof(modules[0]); i++) {
-               if (modules[i]->resume)
+               if (modules[i]->resume) {
                        modules[i]->resume(data);
+               }
        }
 
        return QP_OK;
 }
 
-HAPI int hib_enter_modules(void *data)
+HAPI int quickpanel_modules_hib_enter(void *data)
 {
        int i;
 
        retif(data == NULL, QP_FAIL, "Invalid parameter!");
 
        for (i = 0; i < sizeof(modules) / sizeof(modules[0]); i++) {
-               if (modules[i]->hib_enter)
+               if (modules[i]->hib_enter) {
                        modules[i]->hib_enter(data);
+               }
        }
 
        return QP_OK;
 }
 
-HAPI int hib_leave_modules(void *data)
+HAPI int quickpanel_modules_hib_leave(void *data)
 {
        int i;
 
        retif(data == NULL, QP_FAIL, "Invalid parameter!");
 
        for (i = 0; i < sizeof(modules) / sizeof(modules[0]); i++) {
-               if (modules[i]->hib_leave)
+               if (modules[i]->hib_leave) {
                        modules[i]->hib_leave(data);
+               }
        }
 
        return QP_OK;
@@ -149,25 +178,27 @@ HAPI int hib_leave_modules(void *data)
   *
   ****************************************************************/
 
-HAPI void lang_change_modules(void *data)
+HAPI void quickpanel_modules_lang_change(void *data)
 {
        int i;
        retif(data == NULL, , "Invalid parameter!");
 
        for (i = 0; i < sizeof(modules) / sizeof(modules[0]); i++) {
-               if (modules[i]->lang_changed)
+               if (modules[i]->lang_changed) {
                        modules[i]->lang_changed(data);
+               }
        }
 }
 
-HAPI void refresh_modules(void *data)
+HAPI void quickpanel_modules_refresh(void *data)
 {
        int i;
        retif(data == NULL, , "Invalid parameter!");
 
        for (i = 0; i < sizeof(modules) / sizeof(modules[0]); i++) {
-               if (modules[i]->refresh)
+               if (modules[i]->refresh) {
                        modules[i]->refresh(data);
+               }
        }
 }
 
@@ -176,29 +207,31 @@ HAPI void refresh_modules(void *data)
   * Quickpanel open/close Events
   *
   ****************************************************************/
-HAPI int qp_opened_modules(void *data)
+HAPI int quickpanel_modules_opened(void *data)
 {
        int i;
 
        retif(data == NULL, QP_FAIL, "Invalid parameter!");
 
        for (i = 0; i < sizeof(modules) / sizeof(modules[0]); i++) {
-               if (modules[i]->qp_opened)
+               if (modules[i]->qp_opened) {
                        modules[i]->qp_opened(data);
+               }
        }
 
        return QP_OK;
 }
 
-HAPI int qp_closed_modules(void *data)
+HAPI int quickpanel_modules_closed(void *data)
 {
        int i;
 
        retif(data == NULL, QP_FAIL, "Invalid parameter!");
 
        for (i = 0; i < sizeof(modules) / sizeof(modules[0]); i++) {
-               if (modules[i]->qp_closed)
+               if (modules[i]->qp_closed) {
                        modules[i]->qp_closed(data);
+               }
        }
 
        return QP_OK;
index d35cec2..4480fe5 100755 (executable)
@@ -1,34 +1,36 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ * Copyright (c) 2009-2015 Samsung Electronics Co., Ltd All Rights Reserved
  *
- * Licensed under the Flora License, Version 1.1 (the "License");
+ * 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 __QP_MODULES_H__
 #define __QP_MODULES_H__
 
 #include <stdlib.h>
 #include "quickpanel-ui.h"
 
-extern int init_modules(void *data);
-extern int fini_modules(void *data);
-extern int suspend_modules(void *data);
-extern int resume_modules(void *data);
-extern int hib_enter_modules(void *data);
-extern int hib_leave_modules(void *data);
-extern void lang_change_modules(void *data);
-extern void refresh_modules(void *data);
-extern int qp_opened_modules(void *data);
-extern int qp_closed_modules(void *data);
+extern int quickpanel_modules_init(void *data);
+extern int quickpanel_modules_fini(void *data);
+extern int quickpanel_modules_suspend(void *data);
+extern int quickpanel_modules_resume(void *data);
+extern int quickpanel_modules_hib_enter(void *data);
+extern int quickpanel_modules_hib_leave(void *data);
+extern void quickpanel_modules_lang_change(void *data);
+extern void quickpanel_modules_refresh(void *data);
+extern int quickpanel_modules_opened(void *data);
+extern int quickpanel_modules_closed(void *data);
 
 #endif /* __QP_MODULES_H__ */
diff --git a/daemon/notifications/activenoti.c b/daemon/notifications/activenoti.c
new file mode 100644 (file)
index 0000000..dc9ff3d
--- /dev/null
@@ -0,0 +1,1328 @@
+/*
+ * 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 <appcore-common.h>
+#include <vconf.h>
+#include <app_control.h>
+#include <notification.h>
+#include <feedback.h>
+#include <system_settings.h>
+#ifdef HAVE_X
+#include <utilX.h>
+#endif
+#include "quickpanel-ui.h"
+#include "common.h"
+#include "noti.h"
+#include "noti_win.h"
+#include "noti_util.h"
+#ifdef QP_EMERGENCY_MODE_ENABLE
+#include "emergency_mode.h"
+#endif
+#include "animated_icon.h"
+
+#define QP_ACTIVENOTI_DURATION 3
+#define QP_ACTIVENOTI_DETAIL_DURATION 6
+
+#define ACTIVENOTI_MSG_LEN 100
+#define DEFAULT_ICON RESDIR"/quickpanel_icon_default.png"
+
+#define E_DATA_ICON "E_DATA_ICON"
+#define E_DATA_BADGE "E_DATA_BADGE"
+#define E_DATA_NOTI "E_DATA_NOTI"
+#define E_DATA_BTN_IMAGE "E_DATA_BTN_IMAGE"
+#define E_DATA_BG_IMAGE "E_DATA_BG_IMAGE"
+#define DELAY_TIMER_VALUE      0.480
+#define DEL_TIMER_VALUE        8.0
+
+static struct info {
+       Evas_Object *activenoti;
+       Evas_Object *layout;
+       Evas_Object *btnbox;
+       Evas_Object *gesture;
+       Ecore_Timer *delay_timer;
+       Ecore_Timer *close_timer;
+} s_info = {
+       .activenoti = NULL,
+       .layout = NULL,
+       .btnbox = NULL,
+       .gesture = NULL,
+       .delay_timer = NULL,
+       .close_timer = NULL,
+};
+
+
+static int _activenoti_init(void *data);
+static int _activenoti_fini(void *data);
+static int _activenoti_enter_hib(void *data);
+static int _activenoti_leave_hib(void *data);
+static void _activenoti_reflesh(void *data);
+static void _activenoti_create_activenoti(void *data);
+static void _activenoti_win_rotated(void *data, int need_hide);
+static void _activenoti_hide(void *data, int delay);
+static void _activenoti_destroy_activenoti();
+
+
+QP_Module activenoti = {
+       .name = "activenoti",
+       .init = _activenoti_init,
+       .fini = _activenoti_fini,
+       .hib_enter = _activenoti_enter_hib,
+       .hib_leave = _activenoti_leave_hib,
+       .lang_changed = NULL,
+       .refresh = _activenoti_reflesh
+};
+
+static inline int _is_text_exist(const char *text)
+{
+       if (text != NULL) {
+               if (strlen(text) > 0) {
+                       return 1;
+               }
+       }
+
+       return 0;
+}
+
+static int _is_sound_playable(void) {
+       int status = 0, ret = 0;
+
+       ret = vconf_get_int(VCONFKEY_CAMERA_STATE, &status);
+       if (ret == 0 && status == VCONFKEY_CAMERA_STATE_RECORDING) {
+               ERR("camcorder is working, don't play notification sound %d %d", ret, status);
+               return 0;
+       }
+       return 1;
+}
+
+static int _is_security_lockscreen_launched(void)
+{
+       int ret = 0;
+       int is_idle_lock = 0;
+       int lock_type = 0;
+
+       ret = vconf_get_int(VCONFKEY_IDLE_LOCK_STATE, &is_idle_lock);
+       retif(ret != 0, 0,"failed to get VCONFKEY_IDLE_LOCK_STATE %d %d", ret, is_idle_lock);
+
+       if (is_idle_lock  == VCONFKEY_IDLE_LOCK ) {
+               DBG("Lock screen is launched");
+               return 1; //don't show on lock screen
+               /*
+               ret = vconf_get_int(VCONFKEY_SETAPPL_SCREEN_LOCK_TYPE_INT, &lock_type);
+               retif(ret != 0, 0,"failed to get VCONFKEY_SETAPPL_SCREEN_LOCK_TYPE_INT %d %d", ret, lock_type);
+               if (lock_type != SETTING_SCREEN_LOCK_TYPE_NONE && lock_type != SETTING_SCREEN_LOCK_TYPE_SWIPE) {
+                       return 1;
+               }
+               */
+       }
+
+       return 0;
+}
+
+static Evas_Event_Flags __flick_end_cb(void *data, void *event_info)
+{
+       DBG("");
+       Elm_Gesture_Line_Info *line_info = (Elm_Gesture_Line_Info *) event_info;
+
+       DBG("line_info->momentum.my : %d", line_info->momentum.my);
+
+       /* Flick Up */
+       if (line_info->momentum.my < 0)
+       {
+               _activenoti_hide(NULL,0);
+       }
+
+       return EVAS_EVENT_FLAG_ON_HOLD;
+}
+
+
+static Evas_Object *_gesture_create(Evas_Object *layout)
+{
+       Evas_Object *gesture_layer = NULL;
+
+       INFO("gesture create");
+
+       gesture_layer = elm_gesture_layer_add(layout);
+       retif(!gesture_layer, NULL,);
+       elm_gesture_layer_attach(gesture_layer, layout);
+       evas_object_show(gesture_layer);
+
+       elm_gesture_layer_cb_set(gesture_layer, ELM_GESTURE_N_FLICKS, ELM_GESTURE_STATE_END, __flick_end_cb, NULL);
+
+       return gesture_layer;
+}
+
+static int _check_sound_off(notification_h noti)
+{
+       char *pkgname = NULL;
+
+       notification_get_pkgname(noti, &pkgname);
+
+       //to do
+
+       return 0;
+}
+
+
+static void _gesture_destroy()
+{
+       if (s_info.gesture) {
+               evas_object_del(s_info.gesture);
+               s_info.gesture = NULL;
+       } else {
+               ERR("s_info.gesture is NULL");
+       }
+}
+
+static inline void _activenoti_only_noti_del(notification_h noti)
+{
+       int applist = NOTIFICATION_DISPLAY_APP_ALL;
+
+       retif(noti == NULL, ,"noti is null");
+
+       notification_get_display_applist(noti, &applist);
+#ifdef HAVE_X
+       if (applist & NOTIFICATION_DISPLAY_APP_HEADS_UP)
+#endif         
+       {
+               if (!(applist & NOTIFICATION_DISPLAY_APP_NOTIFICATION_TRAY)) {
+                       char *pkgname = NULL;
+                       int priv_id = 0;
+
+                       notification_get_pkgname(noti, &pkgname);
+                       notification_get_id(noti, NULL, &priv_id);
+                       notification_delete_by_priv_id(pkgname,
+                                               NOTIFICATION_TYPE_NONE,
+                                               priv_id);
+               }
+       }
+}
+
+
+static Eina_Bool _activenoti_hide_timer_cb(void *data)
+{
+       _activenoti_hide(NULL,0);
+       s_info.close_timer = NULL;
+
+       if (s_info.delay_timer != NULL) {
+               ecore_timer_del(s_info.delay_timer);
+               s_info.delay_timer = NULL;
+       }
+
+       return ECORE_CALLBACK_CANCEL;
+}
+
+
+
+static void _activenoti_hide(void *data, int delay)
+{
+       if (delay == 1) {
+               if (s_info.delay_timer == NULL) {
+                       s_info.delay_timer = ecore_timer_add(DELAY_TIMER_VALUE, _activenoti_hide_timer_cb, NULL);
+               }
+       } else {
+               if (s_info.delay_timer != NULL) {
+                       ecore_timer_del(s_info.delay_timer);
+                       s_info.delay_timer = NULL;
+               }
+
+               if (s_info.close_timer != NULL) {
+                       ecore_timer_del(s_info.close_timer);
+                       s_info.close_timer = NULL;
+               }
+
+               if (s_info.activenoti) {
+                       evas_object_hide(s_info.activenoti);
+               }
+       }
+}
+
+
+
+static void _activenoti_detail_show_cb(void *data, Evas *e,
+                                       Evas_Object *obj,
+                                       void *event_info)
+{
+       DBG("");
+}
+
+static Evas_Object *_activenoti_create_badge(Evas_Object *parent,
+                                               notification_h noti)
+{
+       char *pkgname = NULL;
+       char *icon_path = NULL;
+       char *icon_default = NULL;
+       Evas_Object *icon = NULL;
+       int ret = NOTIFICATION_ERROR_NONE;
+
+       retif(noti == NULL || parent == NULL, NULL, "Invalid parameter!");
+
+       ret = notification_get_image(noti, NOTIFICATION_IMAGE_TYPE_ICON_SUB, &icon_path);
+
+       if (ret == NOTIFICATION_ERROR_NONE && icon_path != NULL) {
+               DBG("icon_path :  %s", icon_path);
+               icon = elm_image_add(parent);
+               elm_image_resizable_set(icon, EINA_TRUE, EINA_TRUE);
+               if ( elm_image_file_set(icon, icon_path, NULL) == EINA_FALSE) {
+                       ERR("fail to set file[%s]", icon_path);
+                       evas_object_del(icon);
+                       icon = NULL;
+                       free(icon_path);
+                       return NULL;
+               }
+       } else {
+               /*
+               notification_get_pkgname(noti, &pkgname);
+               if (pkgname != NULL) {
+                       INFO("pkgname : %s", pkgname);
+                       icon_default = quickpanel_common_ui_get_pkginfo_icon(pkgname);
+                       if (icon_default != NULL) {
+                               elm_image_file_set(icon, icon_default, NULL);
+                               free(icon_default);
+                       } else {
+                               return NULL;
+                       }
+               } else {
+                       return NULL;
+               }
+               */
+               return NULL;
+       }
+
+       free(icon_path);
+       return icon;
+}
+
+static void _image_press_cb(void *data, Evas_Object *obj,
+                       const char *emission, const char *source)
+{
+       DBG("");
+
+       app_control_h app_control = data;
+       int ret = APP_CONTROL_ERROR_NONE;
+
+       DBG("");
+       if (app_control) {
+               char *app_id = NULL;
+               ret = app_control_get_app_id(app_control, &app_id);
+
+               DBG("app_id : %s",app_id);
+               if (ret == APP_CONTROL_ERROR_NONE && app_id != NULL) {
+                       ret = app_control_send_launch_request(app_control, NULL, NULL);
+                       DBG("ret [%s]", ret);
+                       free(app_id);
+               }
+
+       } else {
+               ERR("app_control is NULL");
+       }
+
+       _activenoti_hide(NULL, 1);
+}
+
+
+static Evas_Object *_activenoti_create_icon(Evas_Object *parent, notification_h noti)
+{
+       char *pkgname = NULL;
+       char *icon_path = NULL;
+       char *thumb_path = NULL;
+       char *icon_default = NULL;
+       Evas_Object *icon = NULL;
+       retif(noti == NULL || parent == NULL, NULL, "Invalid parameter!");
+
+       notification_get_image(noti, NOTIFICATION_IMAGE_TYPE_ICON, &icon_path);
+       notification_get_image(noti, NOTIFICATION_IMAGE_TYPE_THUMBNAIL, &thumb_path);
+
+       icon = elm_image_add(parent);
+       elm_image_resizable_set(icon, EINA_TRUE, EINA_TRUE);
+
+       if (icon_path == NULL
+               || (icon_path != NULL && elm_image_file_set(icon, icon_path, NULL) == EINA_FALSE)) {
+               DBG("icon_path :  %s", icon_path);
+
+               if (thumb_path == NULL
+                       || (thumb_path != NULL && elm_image_file_set(icon, thumb_path, NULL) == EINA_FALSE)) {
+                       DBG("thumb_path :  %s", thumb_path);
+
+                       int ret = notification_get_pkgname(noti, &pkgname);
+                       if (ret == NOTIFICATION_ERROR_NONE && pkgname != NULL) {
+                               DBG("pkgname :  %s", icon_default);
+
+                               icon_default = quickpanel_common_ui_get_pkginfo_icon(pkgname);
+                               DBG("icon_default :  %s", icon_default);
+
+                               if (icon_default == NULL
+                                       || ( icon_default != NULL && elm_image_file_set(icon, icon_default, NULL) == EINA_FALSE)) {
+                                       DBG("DEFAULT_ICON :  %s", DEFAULT_ICON);
+
+                                       if( elm_image_file_set(icon, DEFAULT_ICON, NULL) == EINA_FALSE) {
+                                               evas_object_del(icon);
+                                               icon = NULL;
+                                       }
+                               }
+                       } else {
+                               if ( elm_image_file_set(icon, DEFAULT_ICON, NULL) == EINA_FALSE) {
+                                       evas_object_del(icon);
+                                       icon = NULL;
+                               }
+                       }
+               }
+       }
+
+       if (icon != NULL) {
+               elm_object_signal_callback_add(parent, "image_press" , "", _image_press_cb, noti);
+       }
+
+       free(icon_path);
+       free(thumb_path);
+       free(pkgname);
+       free(icon_default);
+
+       return icon;
+}
+
+static inline char *_get_text(notification_h noti, notification_text_type_e text_type)
+{
+       time_t time = 0;
+       char *text = NULL;
+       char buf[ACTIVENOTI_MSG_LEN] = {0,};
+       if (notification_get_time_from_text(noti, text_type, &time) == NOTIFICATION_ERROR_NONE) {
+               if ((int)time > 0) {
+                       quickpanel_noti_util_get_time(time, buf, sizeof(buf));
+                       text = buf;
+               }
+       } else {
+               notification_get_text(noti, text_type, &text);
+       }
+
+       DBG("text : %s", text);
+
+       if (text != NULL) {
+               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 inline void _check_and_add_to_buffer(Eina_Strbuf *str_buf, char *text, int is_check_phonenumber)
+{
+       char buf_number[QP_UTIL_PHONE_NUMBER_MAX_LEN * 2] = { 0, };
+
+       if (text != NULL) {
+               if (strlen(text) > 0) {
+                       if (quickpanel_common_util_is_phone_number(text) && is_check_phonenumber) {
+                               quickpanel_common_util_phone_number_tts_make(buf_number, text,
+                                               (QP_UTIL_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 *_activenoti_get_label_layout_default(notification_h noti, int is_screenreader, char **subtitle, char **title, char **content)
+{
+       int len = 0;
+       char *domain = NULL;
+       char *dir = NULL;
+       const char *tmp = NULL;
+       char buf[ACTIVENOTI_MSG_LEN] = { 0, };
+
+       retif(noti == NULL, NULL, "Invalid parameter!");
+
+       notification_get_text_domain(noti, &domain, &dir);
+       if (domain != NULL && dir != NULL) {
+               bindtextdomain(domain, dir);
+       }
+
+       if ( title != NULL ) {
+               *title = _get_text(noti, NOTIFICATION_TEXT_TYPE_TITLE);
+       }
+
+       if ( content != NULL ) {
+               *content = _get_text(noti, NOTIFICATION_TEXT_TYPE_CONTENT);
+       }
+
+       if ( subtitle != NULL ) {
+               *subtitle = _get_text(noti, NOTIFICATION_TEXT_TYPE_INFO_1);
+       }
+
+       if (is_screenreader == 1) {
+               if (title == NULL && content == 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, 1);
+                               _check_and_add_to_buffer(strbuf, content, 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 (len > 0) {
+                       return strdup(buf);
+               }
+       }
+
+       return NULL;
+}
+
+
+static char *_activenoti_get_text(notification_h noti, int is_screenreader, char **subtitle, char **title, char **content)
+{
+       char *result = NULL;
+       result = _activenoti_get_label_layout_default(noti, is_screenreader, subtitle, title, content);
+
+       return result;
+}
+
+static void _noti_hide_cb(void *data, Evas_Object *obj,
+                       const char *emission, const char *source)
+{
+       _activenoti_hide(data, 0);
+}
+
+static void _noti_press_cb(void *data, Evas_Object *obj,
+                       const char *emission, const char *source)
+{
+       DBG("");
+
+       notification_h noti = (notification_h) data;
+       int ret = APP_CONTROL_ERROR_NONE;
+       char *caller_pkgname = NULL;
+       bundle *responding_service_handle = NULL;
+       bundle *single_service_handle = NULL;
+       bundle *multi_service_handle = NULL;
+       int flags = 0, group_id = 0, priv_id = 0, count = 0, flag_launch = 0;
+       notification_type_e type = NOTIFICATION_TYPE_NONE;
+
+       retif(noti == NULL, , "Invalid parameter!");
+
+       notification_get_pkgname(noti, &caller_pkgname);
+       notification_get_id(noti, &group_id, &priv_id);
+       notification_get_property(noti, &flags);
+       notification_get_type(noti, &type);
+
+       if (flags & NOTIFICATION_PROP_DISABLE_APP_LAUNCH) {
+               flag_launch = 0;
+       } else {
+               flag_launch = 1;
+       }
+
+       notification_get_execute_option(noti, NOTIFICATION_EXECUTE_TYPE_RESPONDING,     NULL, &responding_service_handle);
+       notification_get_execute_option(noti, NOTIFICATION_EXECUTE_TYPE_SINGLE_LAUNCH, NULL, &single_service_handle);
+       notification_get_execute_option(noti, NOTIFICATION_EXECUTE_TYPE_MULTI_LAUNCH, NULL, &multi_service_handle);
+
+       if (responding_service_handle != NULL) {
+               DBG("responding_service_handle : %s", responding_service_handle);
+               ret = quickpanel_uic_launch_app(NULL, responding_service_handle);
+       } else if (flag_launch == 1) {
+               char *text_count = NULL;
+               notification_get_text(noti, NOTIFICATION_TEXT_TYPE_EVENT_COUNT, &text_count);
+
+               if (text_count != NULL) {
+                       count = atoi(text_count);
+               } else {
+                       count = 1;
+               }
+
+               if (single_service_handle != NULL && multi_service_handle == NULL) {
+                       DBG("");
+                       ret = quickpanel_uic_launch_app(NULL, single_service_handle);
+               } else if (single_service_handle == NULL && multi_service_handle != NULL) {
+                       DBG("");
+                       ret = quickpanel_uic_launch_app(NULL, multi_service_handle);
+               } else if (single_service_handle != NULL && multi_service_handle != NULL) {
+                       DBG("");
+                       if (count <= 1) {
+                               ret = quickpanel_uic_launch_app(NULL, single_service_handle);
+                       } else {
+                               ret = quickpanel_uic_launch_app(NULL, multi_service_handle);
+                       }
+               } else { //single_service_handle == NULL && multi_service_handle == NULL
+                       DBG("there is no execution option in notification");
+               }
+               quickpanel_uic_launch_app_inform_result(caller_pkgname, ret);
+       }
+
+       _activenoti_hide(data , 1);
+
+}
+
+
+static void _button_del_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+       DBG("");
+       app_control_h app_control = data;
+       Evas_Object *btn_img;
+
+       msgif(app_control == NULL, , "Invalid parameter!");
+
+       btn_img = evas_object_data_get(obj, E_DATA_BTN_IMAGE);
+
+       if (btn_img) {
+               evas_object_del(btn_img);
+               btn_img = NULL;
+       }
+
+       if (app_control) {
+               app_control_destroy(app_control);
+       }
+}
+
+
+static void _button_press_cb(void *data, Evas_Object *obj, const char *emission, const char *source)
+{
+       app_control_h app_control = data;
+       int ret = APP_CONTROL_ERROR_NONE;
+
+       if (app_control) {
+               char *app_id = NULL;
+               ret = app_control_get_app_id(app_control, &app_id);
+
+               DBG("app_id : %s",app_id);
+               if (ret == APP_CONTROL_ERROR_NONE && app_id != NULL) {
+                       ret = app_control_send_launch_request(app_control, NULL, NULL);
+                       DBG("ret [%s]", ret);
+                       free(app_id);
+               }
+
+       } else {
+               ERR("app_control is NULL");
+       }
+
+       _activenoti_hide(NULL, 1);
+}
+
+
+static Evas_Object *_get_btn_img(Evas_Object *parent, notification_h noti, int btn_num)
+{
+       char *btn_path = NULL;
+       Evas_Object *btn_img = NULL;
+       retif(noti == NULL || parent == NULL, NULL, "Invalid parameter!");
+
+#ifdef HAVE_X
+       notification_get_image(noti, btn_num + NOTIFICATION_IMAGE_TYPE_BUTTON_1, &btn_path);
+#endif
+
+       if (btn_path == NULL ){
+               return NULL;
+       }
+
+       btn_img = elm_image_add(parent);
+       evas_object_size_hint_weight_set(btn_img, EVAS_HINT_EXPAND,     EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(btn_img, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+       if (btn_img) {
+               elm_image_resizable_set(btn_img, EINA_TRUE, EINA_TRUE);
+               if(     elm_image_file_set(btn_img, btn_path, NULL) == EINA_FALSE) {
+                       evas_object_del(btn_img);
+                       btn_img = NULL;
+                       return NULL;
+               }
+       } else {
+               return NULL;
+       }
+
+       free(btn_path);
+
+       return btn_img;
+}
+
+
+static Evas_Object *_get_bg_img(Evas_Object *parent, notification_h noti)
+{
+       char *bg_path = NULL;
+       Evas_Object *bg_img = NULL;
+       retif(noti == NULL || parent == NULL, NULL, "Invalid parameter!");
+
+       notification_get_image(noti, NOTIFICATION_IMAGE_TYPE_BACKGROUND, &bg_path);
+
+       if (bg_path == NULL ){
+               return NULL;
+       }
+
+       bg_img = elm_image_add(parent);
+       evas_object_size_hint_weight_set(bg_img, EVAS_HINT_EXPAND,      EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(bg_img, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+       if (bg_img) {
+               elm_image_resizable_set(bg_img, EINA_TRUE, EINA_TRUE);
+               if(     elm_image_file_set(bg_img, bg_path, NULL) == EINA_FALSE) {
+                       evas_object_del(bg_img);
+                       bg_img = NULL;
+                       return NULL;
+               }
+       } else {
+               return NULL;
+       }
+
+       free(bg_path);
+
+       return bg_img;
+}
+
+
+static int _activenoti_create_button(Evas_Object *obj, notification_h noti)
+{
+       int btn_cnt= 0;
+       int ret = APP_CONTROL_ERROR_NONE;
+       app_control_h app_control = NULL;
+
+       retif(obj == NULL, 0, "obj is NULL!");
+       retif(noti == NULL, 0, "noti is NULL!");
+
+       if (s_info.btnbox) { //if exist, delete and create
+               evas_object_del(s_info.btnbox);
+               s_info.btnbox = NULL;
+       }
+
+       Evas_Object *box;
+       box = elm_box_add(obj);
+
+       if(box == NULL) {
+               ERR("box is null");
+               return 0;
+       }
+
+       evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(box, EVAS_HINT_FILL, EVAS_HINT_FILL);
+       elm_box_horizontal_set(box, EINA_TRUE);
+       evas_object_show(box);
+       s_info.btnbox = box;
+
+       for( btn_cnt = 0 ; btn_cnt <= 2 ; btn_cnt++) {
+               retif(ret != APP_CONTROL_ERROR_NONE, 0, "noapp_control_createti is failed!");
+#ifdef HAVE_X
+               ret = notification_get_event_handler(noti, btn_cnt + NOTIFICATION_EVENT_TYPE_CLICK_ON_BUTTON_1, &app_control);
+#endif
+               if(ret != NOTIFICATION_ERROR_NONE || app_control == NULL) {
+                       INFO("no more button, button count is %d", btn_cnt);
+                       INFO("ret is %d", ret);
+                       if (btn_cnt == 0) { // noti doesn't have button
+                               if (app_control) {
+                                       app_control_destroy(app_control);
+                               }
+                               evas_object_del(s_info.btnbox);
+                               s_info.btnbox = NULL;
+                               return 0;
+                       }
+                       break;
+               } else {
+                       Evas_Object *bt_layout;
+                       char *btn_text;
+                       Evas_Object *image;
+
+                       bt_layout = elm_layout_add(s_info.btnbox);
+                       if(bt_layout == NULL) {
+                               ERR("bt_layout is null");
+                               if (app_control) {
+                                       app_control_destroy(app_control);
+                               }
+                               evas_object_del(s_info.btnbox);
+                               s_info.btnbox = NULL;
+                               return 0;
+                       }
+
+                       elm_layout_file_set(bt_layout, ACTIVENOTI_EDJ, "button_layout");
+                       evas_object_size_hint_weight_set (bt_layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+                       evas_object_size_hint_align_set(bt_layout, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+                       image = _get_btn_img(bt_layout , noti, btn_cnt);
+                       if (image != NULL) {
+                               elm_object_part_content_set(bt_layout, "content.button.image", image);
+                               evas_object_data_set(bt_layout, E_DATA_BTN_IMAGE, image);
+                       }
+                       
+#ifdef HAVE_X
+                       btn_text = _get_text(noti, btn_cnt + NOTIFICATION_TEXT_TYPE_BUTTON_1);
+#endif
+                       if (btn_text != NULL) {
+                               DBG("btn_text :%s", btn_text);
+                               elm_object_part_text_set(bt_layout, "content.button.text", btn_text);
+                               free(btn_text);
+                       }
+
+                       elm_object_signal_callback_add(bt_layout, "button_clicked" , "", _button_press_cb, app_control);
+                       evas_object_event_callback_add(bt_layout, EVAS_CALLBACK_DEL, _button_del_cb, app_control);
+                       evas_object_show(bt_layout);
+                       elm_box_pack_end(s_info.btnbox,bt_layout);
+               }
+       }
+       elm_object_part_content_set(obj, "button.swallow", s_info.btnbox);
+       return btn_cnt;
+}
+
+static void _activenoti_update_activenoti(void *data)
+{
+       DBG("");
+       Eina_Bool ret = EINA_FALSE;
+       notification_h noti = (notification_h) data;
+       Evas_Object *icon = NULL;
+       Evas_Object *badge = NULL;
+
+       Evas_Object *textblock = NULL;
+       char *title = NULL;
+       char *subtitle = NULL;
+       char *content = NULL;
+       int btn_cnt = 0;
+
+       retif(noti == NULL, , "Invalid parameter!");
+
+       if (s_info.activenoti == NULL) {
+               ERR("Active notification doesn't exist");
+               return;
+       }
+
+       btn_cnt = _activenoti_create_button(s_info.layout, noti);
+
+       if (btn_cnt == 0) { //no button
+               elm_object_signal_emit(s_info.layout, "btn_hide", "button.space");
+       } else {
+               elm_object_signal_emit(s_info.layout, "btn_show", "button.space");
+       }
+
+       icon = elm_object_part_content_get(s_info.layout, "icon_big");
+       if(icon != NULL) {
+               evas_object_del(icon);
+               icon = NULL;
+       }
+
+       icon = _activenoti_create_icon(s_info.layout, noti);
+       if (icon != NULL) {
+               elm_object_part_content_set(s_info.layout, "icon_big", icon);
+
+               badge = elm_object_part_content_get(s_info.layout, "icon_badge");
+               if(badge != NULL) {
+                       evas_object_del(badge);
+                       badge = NULL;
+               }
+
+               badge = _activenoti_create_badge(s_info.layout, noti);
+               if (badge != NULL) {
+                       elm_object_part_content_set(s_info.layout, "icon_badge", badge);
+               } else {
+                       INFO("badge is NULL");
+               }
+       } else {
+               INFO("icon is NULL");
+       }
+       _activenoti_get_text(noti, 0, &subtitle, &title, &content);
+
+       if (title != NULL) {
+               Eina_Strbuf *bufferT = eina_strbuf_new();
+               eina_strbuf_append(bufferT, title);
+               eina_strbuf_append(bufferT, "<b/>");
+               elm_object_part_text_set(s_info.layout, "title_text", eina_strbuf_string_get(bufferT));
+               free(title);
+               eina_strbuf_free(bufferT);
+       }
+
+       if (subtitle != NULL) {
+               Eina_Strbuf *bufferST = eina_strbuf_new();
+               eina_strbuf_append(bufferST, subtitle);
+               elm_object_part_text_set(s_info.layout, "subtitle_text", eina_strbuf_string_get(bufferST));
+               free(subtitle);
+               eina_strbuf_free(bufferST);
+               elm_object_signal_emit(s_info.layout, "sub_show", "subtitle_text");
+       } else {
+               elm_object_signal_emit(s_info.layout, "sub_hide", "subtitle_text");
+       }
+
+       if (content != NULL) {
+               Eina_Strbuf *bufferC = eina_strbuf_new();
+               eina_strbuf_append(bufferC, content);
+               elm_object_part_text_set(s_info.layout, "content_text", eina_strbuf_string_get(bufferC));
+               free(content);
+               eina_strbuf_free(bufferC);
+       }
+
+
+       if (s_info.close_timer != NULL) {
+               ecore_timer_del(s_info.close_timer);
+               s_info.close_timer = NULL;
+       }
+
+       s_info.close_timer = ecore_timer_add(DEL_TIMER_VALUE, _activenoti_hide_timer_cb, NULL);
+       evas_object_show(s_info.activenoti);
+
+       SERR("activenoti noti is updated");
+}
+
+static void _activenoti_create_activenoti(void *data)
+{
+       DBG("");
+       Eina_Bool ret = EINA_FALSE;
+       notification_h noti = (notification_h) data;
+       Evas_Object *icon = NULL;
+       Evas_Object *badge = NULL;
+       Evas_Object *bg_img = NULL;
+
+
+       Evas_Object *textblock = NULL;
+       char *title = NULL;
+       char *subtitle = NULL;
+       char *content = NULL;
+       int *is_activenoti_executed = NULL;
+       int btn_cnt = 0;
+
+       retif(noti == NULL, , "Invalid parameter!");
+
+       if (s_info.activenoti != NULL) {
+               ERR("Instant notification exists");
+               return;
+       }
+
+       s_info.activenoti = quickpanel_noti_win_add(NULL);
+       retif(s_info.activenoti == NULL, , "Failed to add elm activenoti.");
+       evas_object_data_set(s_info.activenoti, E_DATA_NOTI, noti);
+
+       s_info.layout = elm_layout_add(s_info.activenoti);
+       if (!s_info.layout) {
+               ERR("Failed to get detailview.");
+               _activenoti_hide(s_info.activenoti, 0);
+               return;
+       }
+
+       ret = elm_layout_file_set(s_info.layout, ACTIVENOTI_EDJ, "headsup/base");
+       retif(ret == EINA_FALSE, , "failed to load layout");
+       evas_object_show(s_info.layout);
+
+       elm_object_signal_callback_add(s_info.layout, "noti_press" , "", _noti_press_cb, noti);
+       elm_object_signal_callback_add(s_info.layout, "del" , "", _noti_hide_cb, noti);
+
+       bg_img = _get_bg_img(s_info.layout , noti);
+       if (bg_img != NULL) {
+               elm_object_part_content_set(s_info.layout, "bg_img", bg_img);
+               evas_object_data_set(s_info.activenoti, E_DATA_BG_IMAGE, bg_img);
+       }
+
+       btn_cnt = _activenoti_create_button(s_info.layout, noti);
+
+       if (btn_cnt == 0) { //no button
+               elm_object_signal_emit(s_info.layout, "btn_hide", "button.space");
+       }
+
+       quickpanel_noti_win_content_set(s_info.activenoti, s_info.layout, btn_cnt);
+
+       icon = _activenoti_create_icon(s_info.layout, noti);
+       if (icon != NULL) {
+               elm_object_part_content_set(s_info.layout, "icon_big", icon);
+               evas_object_data_set(s_info.activenoti, E_DATA_ICON, icon);
+
+               badge = _activenoti_create_badge(s_info.layout, noti);
+               if (badge != NULL) {
+                       elm_object_part_content_set(s_info.layout, "icon_badge", badge);
+                       evas_object_data_set(s_info.activenoti, E_DATA_BADGE, icon);
+               } else {
+                       INFO("badge is NULL");
+               }
+       } else {
+               INFO("icon is NULL");
+       }
+       _activenoti_get_text(noti, 0, &subtitle, &title, &content);
+
+       if (title != NULL) {
+               Eina_Strbuf *bufferT = eina_strbuf_new();
+               eina_strbuf_append(bufferT, title);
+               elm_object_part_text_set(s_info.layout, "title_text", eina_strbuf_string_get(bufferT));
+               free(title);
+               eina_strbuf_free(bufferT);
+       }
+
+
+       if (subtitle != NULL) {
+               Eina_Strbuf *bufferST = eina_strbuf_new();
+               eina_strbuf_append(bufferST, subtitle);
+               elm_object_part_text_set(s_info.layout, "subtitle_text", eina_strbuf_string_get(bufferST));
+               free(subtitle);
+               eina_strbuf_free(bufferST);
+               elm_object_signal_emit(s_info.layout, "subtext_show", "subtitle_text");
+       }
+
+       if (content != NULL) {
+               Eina_Strbuf *bufferC = eina_strbuf_new();
+               eina_strbuf_append(bufferC, content);
+               elm_object_part_text_set(s_info.layout, "content_text", eina_strbuf_string_get(bufferC));
+               free(content);
+               eina_strbuf_free(bufferC);
+       }
+
+       SERR("activenoti noti is created");
+
+       s_info.gesture = _gesture_create(s_info.layout);
+       _activenoti_win_rotated(data, 0);
+
+       if (s_info.close_timer != NULL) {
+               ecore_timer_del(s_info.close_timer);
+               s_info.close_timer = NULL;
+       }
+
+       s_info.close_timer = ecore_timer_add(DEL_TIMER_VALUE, _activenoti_hide_timer_cb, NULL);
+
+       evas_object_show(s_info.activenoti);
+       SERR("show activenoti noti");
+}
+
+static void _activenoti_destroy_activenoti()
+{
+       Evas_Object *bg;
+       Evas_Object *icon;
+       Evas_Object *badge;
+       notification_h noti;
+
+       retif(!s_info.activenoti,,"s_info->activenoti is null");
+
+       _gesture_destroy();
+
+       DBG("_activenoti_destroy_activenoti");
+
+       if (s_info.delay_timer != NULL) {
+               ecore_timer_del(s_info.delay_timer);
+               s_info.delay_timer = NULL;
+       }
+
+       if (s_info.close_timer != NULL) {
+               ecore_timer_del(s_info.close_timer);
+               s_info.close_timer = NULL;
+       }
+
+       bg = evas_object_data_del(s_info.activenoti, E_DATA_BG_IMAGE);
+       if (bg) {
+               evas_object_del(bg);
+       }
+
+       icon = evas_object_data_del(s_info.activenoti, E_DATA_ICON);
+       if (icon) {
+               evas_object_del(icon);
+       }
+
+       badge = evas_object_data_del(s_info.activenoti, E_DATA_BADGE);
+       if (badge) {
+               evas_object_del(badge);
+       }
+
+       if (s_info.btnbox) {
+               evas_object_del(s_info.btnbox);
+               s_info.btnbox = NULL;
+       }
+
+       if (s_info.layout) {
+               evas_object_del(s_info.layout);
+               s_info.layout = NULL;
+       }
+
+       noti = evas_object_data_del(s_info.activenoti, E_DATA_NOTI);
+       if (noti) {
+               _activenoti_only_noti_del(noti);
+               notification_free(noti);
+       }
+       if (s_info.activenoti) {
+               evas_object_hide(s_info.activenoti);
+               s_info.activenoti = NULL;
+       }
+}
+
+static void _activenoti_win_rotated(void *data, int need_hide)
+{
+       int angle = 0;
+       retif(data == NULL, ,"data is NULL");
+       struct appdata *ad = data;
+
+       if (s_info.activenoti != NULL) {
+               angle = elm_win_rotation_get(s_info.activenoti);
+
+               if (((angle == 0 || angle == 180) && (ad->angle == 90 || ad->angle == 270))
+                               || ((angle == 90 || angle == 270) && (ad->angle == 0 || ad->angle == 180))) {
+                       if (need_hide == 1) {
+                               evas_object_hide(s_info.activenoti);
+                       }
+               }
+       }
+}
+
+static void _media_feedback_sound(notification_h noti)
+{
+       int ret = 0, priv_id = 0;
+       const char *nsound_path = NULL;
+       notification_sound_type_e nsound_type = NOTIFICATION_SOUND_TYPE_NONE;
+       char *default_msg_tone = NULL;
+       retif(noti == NULL, ,"op_list is NULL");
+
+       notification_get_id(noti, NULL, &priv_id);
+       notification_get_sound(noti, &nsound_type, &nsound_path);
+       SDBG("notification sound: %d, %s", nsound_type, nsound_path);
+
+       switch (nsound_type) {
+               case NOTIFICATION_SOUND_TYPE_USER_DATA:
+                       /*
+                        *  if user data file isn't playable, play the default ringtone
+                        */
+                       if (nsound_path != NULL) {
+                               if (quickpanel_media_playable_check(nsound_path) == EINA_TRUE) {
+                                       ret = quickpanel_media_player_play(SOUND_TYPE_NOTIFICATION, nsound_path);
+                                       if (quickpanel_media_player_is_drm_error(ret) == 1) {
+                                               ERR("failed to play notification sound due to DRM problem");
+#ifdef HAVE_X
+                                               ret = system_settings_get_value_string(SYSTEM_SETTINGS_KEY_SOUND_NOTIFICATION, &default_msg_tone);
+                                               msgif(ret != SYSTEM_SETTINGS_ERROR_NONE, "ailed to get key(%s) : %d", SYSTEM_SETTINGS_KEY_SOUND_NOTIFICATION, ret);
+#endif
+
+
+                                               if (default_msg_tone != NULL) {
+                                                       SDBG("setting sound[%s]", default_msg_tone);
+                                                       ret = quickpanel_media_player_play(SOUND_TYPE_NOTIFICATION, default_msg_tone);
+                                                       free(default_msg_tone);
+                                               }
+                                       }
+                                       if (ret == PLAYER_ERROR_NONE) {
+                                               quickpanel_media_player_id_set(priv_id);
+                                       } else {
+                                               ERR("failed to play notification sound");
+                                       }
+                                       break;
+                               } else {
+                                       ERR("playable false, So unlock tone");
+                                       feedback_play_type(FEEDBACK_TYPE_SOUND, FEEDBACK_PATTERN_UNLOCK);
+                               }
+                       } else {
+                               ERR("sound path null");
+                       }
+
+                       break;
+               case NOTIFICATION_SOUND_TYPE_DEFAULT:
+#ifdef HAVE_X
+                       ret = system_settings_get_value_string(SYSTEM_SETTINGS_KEY_SOUND_NOTIFICATION, &default_msg_tone);
+                       msgif(ret != SYSTEM_SETTINGS_ERROR_NONE, "ailed to get key(%s) : %d", SYSTEM_SETTINGS_KEY_SOUND_NOTIFICATION, ret);
+#endif
+                       if (default_msg_tone != NULL) {
+                               SDBG("Reminded setting sound[%s]", default_msg_tone);
+                               ret = quickpanel_media_player_play(SOUND_TYPE_NOTIFICATION, default_msg_tone);
+                               free(default_msg_tone);
+                               if (ret == PLAYER_ERROR_NONE) {
+                                       quickpanel_media_player_id_set(priv_id);
+                               } else {
+                                       ERR("failed to play notification sound(default)");
+                               }
+                       }
+                       break;
+               case NOTIFICATION_SOUND_TYPE_MAX:
+               case NOTIFICATION_SOUND_TYPE_NONE:
+                       ERR("None type: No sound");
+                       break;
+
+               default:
+                       ERR("UnKnown type[%d]", (int)nsound_type);
+                       break;
+       }
+}
+
+static void _media_feedback_vibration(notification_h noti)
+{
+       retif(noti == NULL, ,"op_list is NULL");
+
+       /* Play Vibration */
+       notification_vibration_type_e nvibration_type = NOTIFICATION_VIBRATION_TYPE_NONE;
+       const char *nvibration_path = NULL;
+
+       notification_get_vibration(noti, &nvibration_type, &nvibration_path);
+       DBG("notification vibration: %d, %s", nvibration_type, nvibration_path);
+       switch (nvibration_type) {
+               case NOTIFICATION_VIBRATION_TYPE_USER_DATA:
+               case NOTIFICATION_VIBRATION_TYPE_DEFAULT:
+                       feedback_play_type(FEEDBACK_TYPE_VIBRATION, FEEDBACK_PATTERN_MESSAGE);
+                       break;
+               case NOTIFICATION_VIBRATION_TYPE_MAX:
+               case NOTIFICATION_VIBRATION_TYPE_NONE:
+                       break;
+       }
+}
+
+static void _activenoti_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;
+       int flags = 0;
+       int applist = NOTIFICATION_DISPLAY_APP_ALL;
+       int ret = 0;
+       int op_type = 0;
+       int priv_id = 0;
+
+       DBG("_quickpanel_activenoti_noti_changed_cb");
+
+       retif(op_list == NULL, ,"op_list is NULL");
+
+       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) {
+                       ERR("failed to get a notification from master");
+                       return;
+               }
+               if (notification_clone(noti_from_master, &noti) != NOTIFICATION_ERROR_NONE) {
+                       ERR("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
+       }
+
+       retif(noti == NULL, ,"noti is NULL");
+
+       if (op_type == NOTIFICATION_OP_INSERT || op_type == NOTIFICATION_OP_UPDATE) {
+               if (_is_sound_playable() == 1) {
+                       if (_check_sound_off(noti) == 0) {
+                               DBG("try to play notification sound");
+                               _media_feedback_sound(noti);
+                       }
+                       if (quickpanel_media_is_vib_enabled() == 1
+                                       || quickpanel_media_is_sound_enabled() == 1) {
+                               _media_feedback_vibration(noti);
+                       }
+               }
+       }
+
+       notification_get_display_applist(noti, &applist);
+
+       /* Check activenoti flag */
+       notification_get_property(noti, &flags);
+
+       DBG("applist : %x" ,applist);
+
+#ifdef HAVE_X
+       if (applist & NOTIFICATION_DISPLAY_APP_HEADS_UP)
+#endif
+       {
+               if (_is_security_lockscreen_launched()) {
+                       notification_free(noti);
+                       INFO("lock screen is launched");
+                       return;
+               }
+
+               if (quickpanel_uic_is_opened()) {
+                       ERR("quickpanel is opened, activenoti will be not displayed");
+                       notification_free(noti);
+                       INFO("quickpanel has opened");
+                       return;
+               }
+
+               /* wait if s_info.activenoti is not NULL */
+               if (s_info.activenoti == NULL) {
+                       _activenoti_create_activenoti(noti);
+               } else {
+                       INFO("s_info.activenoti is not NULL");
+                       _activenoti_update_activenoti(noti);
+               }
+
+               if (s_info.activenoti == NULL) {
+                       ERR("Fail to create activenoti");
+                       _activenoti_only_noti_del(noti);
+                       notification_free(noti);
+                       return;
+               }
+       }
+}
+
+/*****************************************************************************
+ *
+ * Util functions
+ *
+ *****************************************************************************/
+static Eina_Bool _activenoti_callback_register_idler_cb(void *data)
+{
+       struct appdata *ad = data;
+       retif(ad == NULL, EINA_FALSE, "Invalid parameter!");
+
+       notification_register_detailed_changed_cb(_activenoti_noti_detailed_changed_cb, ad);
+
+       return EINA_FALSE;
+}
+
+static int _activenoti_init(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+
+       /* Register notification changed cb */
+       ecore_idler_add(_activenoti_callback_register_idler_cb, ad);
+       return QP_OK;
+}
+
+static int _activenoti_fini(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+
+       _activenoti_destroy_activenoti();
+
+       return QP_OK;
+}
+
+static int _activenoti_enter_hib(void *data)
+{
+       return QP_OK;
+}
+
+static int _activenoti_leave_hib(void *data)
+{
+       return QP_OK;
+}
+
+static void _activenoti_reflesh(void *data)
+{
+       retif(data == NULL, , "Invalid parameter!");
+
+       if (s_info.activenoti != NULL) {
+               _activenoti_win_rotated(data, 1);
+       }
+}
index 45024fe..a8b8c98 100755 (executable)
@@ -1,37 +1,40 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ * Copyright (c) 2009-2015 Samsung Electronics Co., Ltd All Rights Reserved
  *
- * Licensed under the Flora License, Version 1.1 (the License);
+ * 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.tizenopensource.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,
+ * 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 "animated_image.h"
 
-static int quickpanel_animated_image_init(void *data);
-static int quickpanel_animated_image_fini(void *data);
-static int quickpanel_animated_image_suspend(void *data);
-static int quickpanel_animated_image_resume(void *data);
+static int _init(void *data);
+static int _fini(void *data);
+static int _suspend(void *data);
+static int _resume(void *data);
 
 QP_Module animated_image = {
        .name = "animated_image",
-       .init = quickpanel_animated_image_init,
-       .fini = quickpanel_animated_image_fini,
-       .suspend = quickpanel_animated_image_suspend,
-       .resume = quickpanel_animated_image_resume,
+       .init = _init,
+       .fini = _fini,
+       .suspend = _suspend,
+       .resume = _resume,
        .lang_changed = NULL,
        .refresh = NULL
 };
 
 static Eina_List *g_animated_image_list = NULL;
+static char g_animated_image_group_name[32] = {0,};
 
 static void _animated_image_list_add(Evas_Object *image)
 {
@@ -46,10 +49,12 @@ static void _animated_image_play(Eina_Bool on)
        const Eina_List *ln = NULL;
        Evas_Object *entry_obj = NULL;
 
-       retif(g_animated_image_list == NULL, ,"list is empty");
+       retif_nomsg(g_animated_image_list == NULL, );
 
        EINA_LIST_FOREACH_SAFE(g_animated_image_list, l, ln, entry_obj) {
-               if (entry_obj == NULL) continue;
+               if (entry_obj == NULL) {
+                       continue;
+               }
 
                if (on == EINA_TRUE) {
                        if (elm_image_animated_play_get(entry_obj) == EINA_FALSE) {
@@ -71,12 +76,13 @@ static void _animated_image_deleted_cb(void *data, Evas *e, Evas_Object *obj, vo
        g_animated_image_list = eina_list_remove(g_animated_image_list, obj);
 }
 
-HAPI void quickpanel_animated_image_add(Evas_Object *image) {
+HAPI void quickpanel_animated_image_add(Evas_Object *image)
+{
        retif(image == NULL, , "image is NULL");
 
        if (elm_image_animated_available_get(image) == EINA_TRUE) {
                elm_image_animated_set(image, EINA_TRUE);
-               if (quickpanel_is_suspended() == 0) {
+               if (quickpanel_uic_is_suspended() == 0) {
                        elm_image_animated_play_set(image, EINA_TRUE);
                } else {
                        elm_image_animated_play_set(image, EINA_FALSE);
@@ -86,38 +92,54 @@ HAPI void quickpanel_animated_image_add(Evas_Object *image) {
        }
 }
 
+HAPI char *quickpanel_animated_image_get_groupname(const char *path)
+{
+       static int s_image_index = 0;
+
+       if (path != NULL) {
+               if (strstr(path, "gif") != NULL || strstr(path, "GIF") != NULL) {
+                        snprintf(g_animated_image_group_name, sizeof(g_animated_image_group_name),
+                                        "%d:EVAS", s_image_index++);
+
+                        return g_animated_image_group_name;
+               }
+       }
+
+       return NULL;
+}
+
 /*****************************************************************************
  *
  * Util functions
  *
  *****************************************************************************/
-static int quickpanel_animated_image_init(void *data)
+static int _init(void *data)
 {
        return QP_OK;
 }
 
-static int quickpanel_animated_image_fini(void *data)
+static int _fini(void *data)
 {
        return QP_OK;
 }
 
-static int quickpanel_animated_image_suspend(void *data)
+static int _suspend(void *data)
 {
        struct appdata *ad = data;
        retif(ad == NULL, QP_FAIL, "Invalid parameter!");
 
-       INFO("animated image going to be suspened");
+       SDBG("animated image going to be suspened");
        _animated_image_play(EINA_FALSE);
 
        return QP_OK;
 }
 
-static int quickpanel_animated_image_resume(void *data)
+static int _resume(void *data)
 {
        struct appdata *ad = data;
        retif(ad == NULL, QP_FAIL, "Invalid parameter!");
 
-       INFO("animated image going to be resumed");
+       SDBG("animated image going to be resumed");
        _animated_image_play(EINA_TRUE);
 
        return QP_OK;
index 8f61414..bfdadea 100755 (executable)
@@ -1,25 +1,29 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ * Copyright (c) 2009-2015 Samsung Electronics Co., Ltd All Rights Reserved
  *
- * Licensed under the Flora License, Version 1.1 (the License);
+ * 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.tizenopensource.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,
+ * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
+ *
  */
 
+
+
 #ifndef __QUICKPANEL_ANIMATED_IMAGE_H__
 #define __QUICKPANEL_ANIMATED_IMAGE_H__
 
 #include "quickpanel-ui.h"
 #include "common.h"
 
-HAPI void quickpanel_animated_image_add(Evas_Object *image);
+void quickpanel_animated_image_add(Evas_Object *image);
+char *quickpanel_animated_image_get_groupname(const char *path);
 
 #endif
index dddc98f..92ee4d6 100755 (executable)
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ * Copyright (c) 2009-2015 Samsung Electronics Co., Ltd All Rights Reserved
  *
- * Licensed under the Flora License, Version 1.1 (the License);
+ * 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,
+ * 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 <appsvc.h>
 
 #include <time.h>
 #include <vconf.h>
 #include <appcore-common.h>
-#include <app_service.h>
-#include <Ecore_X.h>
+#include <app_control.h>
 #include <notification.h>
+#include <system_settings.h>
 
 #include "quickpanel-ui.h"
 #include "quickpanel_def.h"
 #include "common.h"
+#include "list_util.h"
 #include "noti_node.h"
 #include "noti_gridbox.h"
 #include "noti_box.h"
 #include "noti_listbox.h"
 #include "noti_list_item.h"
 #include "noti_section.h"
+#include "noti_view.h"
 #include "noti.h"
 #include "list_util.h"
+#ifdef QP_SMART_ALERT_ENABLE
+#include "smart_alert.h"
+#endif
 #ifdef QP_SERVICE_NOTI_LED_ENABLE
 #include "noti_led.h"
 #endif
-
-#ifndef VCONFKEY_QUICKPANEL_STARTED
-#define VCONFKEY_QUICKPANEL_STARTED "memory/private/"PACKAGE_NAME"/started"
-#endif /* VCONFKEY_QUICKPANEL_STARTED */
+#ifdef QP_REMINDER_ENABLE
+#include "reminder.h"
+#endif
+#ifdef QP_EMERGENCY_MODE_ENABLE
+#include "emergency_mode.h"
+#endif
+#include "vi_manager.h"
 
 #define QP_NOTI_ONGOING_DBUS_PATH      "/dbus/signal"
 #define QP_NOTI_ONGOING_DBUS_INTERFACE "notification.ongoing"
 
-static noti_node *g_noti_node;
-static Evas_Object *g_noti_section;
-static Evas_Object *g_noti_listbox;
-static Evas_Object *g_noti_gridbox;
+static struct _info {
+       noti_node   *noti_node;
+       Evas_Object *ongoing_noti_section_view;
+       Evas_Object *noti_section_view;
+       Evas_Object *noti_box;
+
+       E_DBus_Signal_Handler *dbus_handler_size;
+       E_DBus_Signal_Handler *dbus_handler_progress;
+       E_DBus_Signal_Handler *dbus_handler_content;
+
+       struct tm last_time;
+
+       int is_ongoing_hided;
+} s_info = {
+       .noti_node = NULL,
+       .ongoing_noti_section_view = NULL,
+       .noti_section_view = NULL,
+       .noti_box = NULL,
+
+       .dbus_handler_size = NULL,
+       .dbus_handler_progress = NULL,
+       .dbus_handler_content = NULL,
+
+       .is_ongoing_hided = 0,
 
-static int quickpanel_noti_init(void *data);
-static int quickpanel_noti_fini(void *data);
-static int quickpanel_noti_suspend(void *data);
-static int quickpanel_noti_resume(void *data);
-static void quickpanel_noti_lang_changed(void *data);
-static void quickpanel_noti_refresh(void *data);
+       .last_time.tm_mday = 0,
+       .last_time.tm_mon = 0,
+       .last_time.tm_year = 0,
+};
+
+static int _init(void *data);
+static int _fini(void *data);
+static int _suspend(void *data);
+static int _resume(void *data);
+static void _lang_changed(void *data);
+static void _refresh(void *data);
+
+static void _ongoing_noti_section_add(void);
+static void _opened(void *data);
+//static void _quickpanel_ongoing_noti_section_remove(void);
+
+static void _noti_time_init(void *data);
+static void _noti_time_fini(void *data);
 
 QP_Module noti = {
        .name = "noti",
-       .init = quickpanel_noti_init,
-       .fini = quickpanel_noti_fini,
-       .suspend = quickpanel_noti_suspend,
-       .resume = quickpanel_noti_resume,
-       .lang_changed = quickpanel_noti_lang_changed,
+       .init = _init,
+       .fini = _fini,
+       .suspend = _suspend,
+       .resume = _resume,
+       .lang_changed = _lang_changed,
        .hib_enter = NULL,
        .hib_leave = NULL,
-       .refresh = quickpanel_noti_refresh,
+       .refresh = _refresh,
        .get_height = NULL,
+       .qp_opened = _opened,
 };
 
-static notification_h _quickpanel_noti_update_item_progress(const char *pkgname,
+static notification_h _update_item_progress(const char *pkgname,
                                                            int priv_id,
                                                            double progress)
 {
        char *noti_pkgname = NULL;
        int noti_priv_id = 0;
 
-       noti_node_item *node = noti_node_get(g_noti_node, priv_id);
+       noti_node_item *node = quickpanel_noti_node_get(s_info.noti_node, priv_id);
 
        if (node != NULL && node->noti != NULL) {
                notification_get_pkgname(node->noti, &noti_pkgname);
                notification_get_id(node->noti, NULL, &noti_priv_id);
+
+               if (!pkgname || !noti_pkgname) {
+                       return NULL;
+               }
+
                if (!strcmp(noti_pkgname, pkgname)
                    && priv_id == noti_priv_id) {
 
@@ -95,18 +141,23 @@ static notification_h _quickpanel_noti_update_item_progress(const char *pkgname,
        return NULL;
 }
 
-static notification_h _quickpanel_noti_update_item_size(const char *pkgname,
+static notification_h _update_item_size(const char *pkgname,
                                                        int priv_id,
                                                        double size)
 {
        char *noti_pkgname = NULL;
        int noti_priv_id = 0;
 
-       noti_node_item *node = noti_node_get(g_noti_node, priv_id);
+       noti_node_item *node = quickpanel_noti_node_get(s_info.noti_node, priv_id);
 
        if (node != NULL && node->noti != NULL) {
                notification_get_pkgname(node->noti, &noti_pkgname);
                notification_get_id(node->noti, NULL, &noti_priv_id);
+
+               if (!pkgname || !noti_pkgname) {
+                       return NULL;
+               }
+
                if (!strcmp(noti_pkgname, pkgname)
                    && priv_id == noti_priv_id) {
                        notification_set_size(node->noti, size);
@@ -117,24 +168,30 @@ static notification_h _quickpanel_noti_update_item_size(const char *pkgname,
        return NULL;
 }
 
-static notification_h _quickpanel_noti_update_item_content(const char *pkgname,
+static notification_h _update_item_content(const char *pkgname,
                                                        int priv_id,
                                                        char *content)
 {
        char *noti_pkgname = NULL;
        int noti_priv_id = 0;
+       int ret = NOTIFICATION_ERROR_NONE;
 
-       noti_node_item *node = noti_node_get(g_noti_node, priv_id);
+       noti_node_item *node = quickpanel_noti_node_get(s_info.noti_node, priv_id);
 
        if (node != NULL && node->noti != NULL) {
                notification_get_pkgname(node->noti, &noti_pkgname);
                notification_get_id(node->noti, NULL, &noti_priv_id);
-               if (!strcmp(noti_pkgname, pkgname)
-                   && priv_id == noti_priv_id) {
-                       notification_set_text(node->noti,
-                               NOTIFICATION_TEXT_TYPE_CONTENT,
-                               content, NULL,
-                               NOTIFICATION_VARIABLE_TYPE_NONE);
+
+               if (!pkgname || !noti_pkgname) {
+                       return NULL;
+               }
+
+               if (!strcmp(noti_pkgname, pkgname) && priv_id == noti_priv_id) {
+                       ret = notification_set_text(node->noti, NOTIFICATION_TEXT_TYPE_CONTENT, content, NULL, NOTIFICATION_VARIABLE_TYPE_NONE);
+                       if (ret != NOTIFICATION_ERROR_NONE) {
+                               ERR("Failed to set text[%d]", ret);
+                       }
+
                        return node->noti;
                }
        }
@@ -142,35 +199,25 @@ static notification_h _quickpanel_noti_update_item_content(const char *pkgname,
        return NULL;
 }
 
-static void _quickpanel_noti_update_progressbar(void *data,
+static void _update_progressbar(void *data,
                                                notification_h update_noti)
 {
-       struct appdata *ad = NULL;
-       Elm_Object_Item *found = NULL;
-       noti_node_item *node = NULL;
-
-       retif(!data, , "data is NULL");
-       ad = data;
-
-       retif(!ad->list, , "ad->list is NULL");
-
        int priv_id = 0;
+       struct appdata *ad = data;
+       noti_node_item *node = NULL;
+       retif(ad == NULL, , "data is NULL");
+       retif(ad->list == NULL, , "ad->list is NULL");
 
        if (notification_get_id(update_noti, NULL, &priv_id) == NOTIFICATION_ERROR_NONE) {
-               node = noti_node_get(g_noti_node, priv_id);
-
-               if (node != NULL) {
-                       found = node->view;
-               }
+               node = quickpanel_noti_node_get(s_info.noti_node, priv_id);
        }
-
        retif(node == NULL, , "fail to find node of priv_id:%d", priv_id);
        retif(node->view == NULL, , "fail to find %p", node->view);
 
-       listbox_update_item(g_noti_listbox, node->view);
+       quickpanel_noti_listbox_update_item(ad->list, node->view);
 }
 
-static void _quickpanel_noti_item_progress_update_cb(void *data,
+static void _item_progress_update_cb(void *data,
                                                DBusMessage *msg)
 {
        DBusError err;
@@ -200,17 +247,16 @@ static void _quickpanel_noti_item_progress_update_cb(void *data,
        }
 
        /* check item on the list */
-       noti = _quickpanel_noti_update_item_progress(pkgname,
+       noti = _update_item_progress(pkgname,
                                                priv_id, progress);
        retif(noti == NULL, , "Can not found noti data.");
 
-       DBG("pkgname[%s], priv_id[%d], progress[%lf]",
+       SDBG("pkgname[%s], priv_id[%d], progress[%lf]",
                                pkgname, priv_id, progress);
-       if (!quickpanel_is_suspended())
-               _quickpanel_noti_update_progressbar(data, noti);
+       _update_progressbar(data, noti);
 }
 
-static void _quickpanel_noti_item_size_update_cb(void *data, DBusMessage * msg)
+static void _item_size_update_cb(void *data, DBusMessage * msg)
 {
        DBusError err;
        char *pkgname = 0;
@@ -237,17 +283,16 @@ static void _quickpanel_noti_item_size_update_cb(void *data, DBusMessage * msg)
        }
 
        /* check item on the list */
-       noti = _quickpanel_noti_update_item_size(pkgname, priv_id, size);
+       noti = _update_item_size(pkgname, priv_id, size);
        retif(noti == NULL, , "Can not found noti data.");
 
-       DBG("pkgname[%s], priv_id[%d], progress[%lf]",
+       SDBG("pkgname[%s], priv_id[%d], progress[%lf]",
                                pkgname, priv_id, size);
 
-       if (!quickpanel_is_suspended())
-               _quickpanel_noti_update_progressbar(data, noti);
+       _update_progressbar(data, noti);
 }
 
-static void _quickpanel_noti_item_content_update_cb(void *data,
+static void _item_content_update_cb(void *data,
                                                DBusMessage *msg)
 {
        DBusError err;
@@ -279,53 +324,59 @@ static void _quickpanel_noti_item_content_update_cb(void *data,
                return;
        }
 
-       DBG("pkgname[%s], priv_id[%d], content[%s]",
+       SDBG("pkgname[%s], priv_id[%d], content[%s]",
                                pkgname, priv_id, content);
 
        /* check item on the list */
-       noti = _quickpanel_noti_update_item_content(pkgname, priv_id, content);
+       noti = _update_item_content(pkgname, priv_id, content);
        retif(noti == NULL, , "Can not found noti data.");
 
-       if (!quickpanel_is_suspended())
-               _quickpanel_noti_update_progressbar(data, noti);
+       _update_progressbar(data, noti);
 }
 
-static void _quickpanel_do_noti_delete(notification_h noti) {
+static int _do_noti_delete(notification_h noti)
+{
        char *pkgname = NULL;
        char *caller_pkgname = NULL;
        int flags = 0, priv_id = 0, flag_delete = 0;
        notification_type_e type = NOTIFICATION_TYPE_NONE;
+       int ret = NOTIFICATION_ERROR_INVALID_PARAMETER;
 
-       quickpanel_play_feedback();
+       quickpanel_media_play_feedback();
 
-       retif(noti == NULL, , "Invalid parameter!");
+       retif(noti == NULL, NOTIFICATION_ERROR_INVALID_PARAMETER, "Invalid parameter!");
 
        notification_get_pkgname(noti, &caller_pkgname);
-       notification_get_application(noti, &pkgname);
-       if (pkgname == NULL)
+//     notification_get_application(noti, &pkgname);
+       if (pkgname == NULL) {
                pkgname = caller_pkgname;
+       }
 
        notification_get_id(noti, NULL, &priv_id);
        notification_get_property(noti, &flags);
        notification_get_type(noti, &type);
 
-       if (flags & NOTIFICATION_PROP_PERMANENT_DISPLAY)
+       if (flags & NOTIFICATION_PROP_PERMANENT_DISPLAY) {
                flag_delete = 0;
-       else
+       } else {
                flag_delete = 1;
+       }
 
        if (flag_delete == 1 && type == NOTIFICATION_TYPE_NOTI) {
-               notification_delete_by_priv_id(caller_pkgname, NOTIFICATION_TYPE_NOTI,
+               ret = notification_delete_by_priv_id(caller_pkgname, NOTIFICATION_TYPE_NOTI,
                                priv_id);
        }
+
+       return ret;
 }
 
-static void _quickpanel_do_noti_press(notification_h noti, int pressed_area) {
-       int ret = -1;
+static void _do_noti_press(notification_h noti, int pressed_area)
+{
+       DBG("launch app");
+       int ret = APP_CONTROL_ERROR_NONE;
        char *pkgname = NULL;
        char *caller_pkgname = NULL;
-       bundle *args = NULL;
-       bundle *group_args = NULL;
+
        bundle *responding_service_handle = NULL;
        bundle *single_service_handle = NULL;
        bundle *multi_service_handle = NULL;
@@ -333,28 +384,31 @@ static void _quickpanel_do_noti_press(notification_h noti, int pressed_area) {
                        flag_delete = 0;
        notification_type_e type = NOTIFICATION_TYPE_NONE;
 
-       quickpanel_play_feedback();
+       quickpanel_media_play_feedback();
 
        retif(noti == NULL, , "Invalid parameter!");
 
        notification_get_pkgname(noti, &caller_pkgname);
-       notification_get_application(noti, &pkgname);
-       if (pkgname == NULL)
+//     notification_get_application(noti, &pkgname);
+       if (pkgname == NULL) {
                pkgname = caller_pkgname;
+       }
 
        notification_get_id(noti, &group_id, &priv_id);
        notification_get_property(noti, &flags);
        notification_get_type(noti, &type);
 
-       if (flags & NOTIFICATION_PROP_DISABLE_APP_LAUNCH)
+       if (flags & NOTIFICATION_PROP_DISABLE_APP_LAUNCH) {
                flag_launch = 0;
-       else
+       } else {
                flag_launch = 1;
+       }
 
-       if (flags & NOTIFICATION_PROP_DISABLE_AUTO_DELETE)
+       if (flags & NOTIFICATION_PROP_DISABLE_AUTO_DELETE) {
                flag_delete = 0;
-       else
+       } else {
                flag_delete = 1;
+       }
 
        notification_get_execute_option(noti,
                        NOTIFICATION_EXECUTE_TYPE_RESPONDING,
@@ -368,12 +422,11 @@ static void _quickpanel_do_noti_press(notification_h noti, int pressed_area) {
 
        if (pressed_area == NOTI_PRESS_BUTTON_1 && responding_service_handle != NULL) {
                DBG("");
-               quickpanel_close_quickpanel(true);
-               ret = quickpanel_launch_app(NULL, responding_service_handle);
-               quickpanel_launch_app_inform_result(pkgname, ret);
+               quickpanel_uic_close_quickpanel(true, 1);
+               ret = quickpanel_uic_launch_app(NULL, responding_service_handle);
        } else if (flag_launch == 1) {
                /* Hide quickpanel */
-               quickpanel_close_quickpanel(true);
+               quickpanel_uic_close_quickpanel(true, 1);
 
                char *text_count = NULL;
                notification_get_text(noti, NOTIFICATION_TEXT_TYPE_EVENT_COUNT, &text_count);
@@ -386,36 +439,21 @@ static void _quickpanel_do_noti_press(notification_h noti, int pressed_area) {
 
                if (single_service_handle != NULL && multi_service_handle == NULL) {
                        DBG("");
-                       ret = quickpanel_launch_app(NULL, single_service_handle);
-                       quickpanel_launch_app_inform_result(pkgname, ret);
+                       ret = quickpanel_uic_launch_app(NULL, single_service_handle);
                }
                if (single_service_handle == NULL && multi_service_handle != NULL) {
                        DBG("");
-                       ret = quickpanel_launch_app(NULL, multi_service_handle);
-                       quickpanel_launch_app_inform_result(pkgname, ret);
+                       ret = quickpanel_uic_launch_app(NULL, multi_service_handle);
                }
                if (single_service_handle != NULL && multi_service_handle != NULL) {
                        DBG("");
                        if (count <= 1) {
-                               ret = quickpanel_launch_app(NULL, single_service_handle);
-                               quickpanel_launch_app_inform_result(pkgname, ret);
+                               ret = quickpanel_uic_launch_app(NULL, single_service_handle);
                        } else {
-                               ret = quickpanel_launch_app(NULL, multi_service_handle);
-                               quickpanel_launch_app_inform_result(pkgname, ret);
-                       }
-               }
-               if (single_service_handle == NULL && multi_service_handle == NULL) {
-                       DBG("");
-                       notification_get_args(noti, &args, &group_args);
-
-                       if (count > 1 && group_args != NULL) {
-                               ret = quickpanel_launch_app(pkgname, group_args);
-                               quickpanel_launch_app_inform_result(pkgname, ret);
-                       } else {
-                               ret = quickpanel_launch_app(pkgname, args);
-                               quickpanel_launch_app_inform_result(pkgname, ret);
+                               ret = quickpanel_uic_launch_app(NULL, multi_service_handle);
                        }
                }
+               quickpanel_uic_launch_app_inform_result(pkgname, ret);
        }
 
        if (flag_delete == 1 && type == NOTIFICATION_TYPE_NOTI) {
@@ -425,63 +463,67 @@ static void _quickpanel_do_noti_press(notification_h noti, int pressed_area) {
        }
 }
 
-static void quickpanel_notibox_delete_cb(void *data, Evas_Object * obj) {
+static void _notibox_delete_cb(noti_node_item *item, Evas_Object *obj)
+{
        DBG("");
-       noti_node_item *item = data;
+       retif(obj == NULL, , "Invalid parameter!");
        retif(item == NULL, , "Invalid parameter!");
 
        notification_h noti = item->noti;
        retif(noti == NULL, , "Invalid parameter!");
 
-       _quickpanel_do_noti_delete(noti);
-
+       if (_do_noti_delete(noti) != NOTIFICATION_ERROR_NONE) {
+               quickpanel_noti_box_item_dragging_cancel(obj);
+       }
 }
 
-static void quickpanel_notibox_button_1_cb(void *data, Evas_Object * obj) {
+static void _notibox_button_1_cb(noti_node_item *item, Evas_Object *obj)
+{
        DBG("");
-       noti_node_item *item = data;
        retif(item == NULL, , "Invalid parameter!");
 
        notification_h noti = item->noti;
        retif(noti == NULL, , "Invalid parameter!");
 
-       _quickpanel_do_noti_press(noti, NOTI_PRESS_BUTTON_1);
+       _do_noti_press(noti, NOTI_PRESS_BUTTON_1);
 }
 
-static void quickpanel_notibox_select_cb(void *data, Evas_Object * obj) {
+static void _notibox_select_cb(noti_node_item *item, Evas_Object *obj)
+{
        DBG("");
-       noti_node_item *item = data;
        retif(item == NULL, , "Invalid parameter!");
-
        notification_h noti = item->noti;
        retif(noti == NULL, , "Invalid parameter!");
 
-       _quickpanel_do_noti_press(noti, NOTI_PRESS_BG);
+       _do_noti_press(noti, NOTI_PRESS_BG);
 }
 
-static void quickpanel_noti_listitem_select_cb(void *data, Evas_Object * obj) {
+static void _noti_listitem_select_cb(noti_node_item *item, Evas_Object * obj)
+{
        DBG("");
-       noti_node_item *item = data;
        retif(item == NULL, , "Invalid parameter!");
 
        notification_h noti = item->noti;
        retif(noti == NULL, , "Invalid parameter!");
 
-       _quickpanel_do_noti_press(noti, NOTI_PRESS_BG);
+       _do_noti_press(noti, NOTI_PRESS_BG);
 }
 
-static inline void __ongoing_comp_n_copy(notification_h old, notification_h new)
+static inline void _ongoing_comp_n_copy(notification_h old, notification_h new)
 {
        int priv_id = 0;
        int new_priv_id = 0;
        char *pkgname = NULL;
        char *new_pkgname = NULL;
+       int ret = NOTIFICATION_ERROR_NONE;
 
-       if (!old)
+       if (!old) {
                return;
+       }
 
-       if (!new)
+       if (!new) {
                return;
+       }
 
        notification_get_id(old, NULL, &priv_id);
        notification_get_id(new, NULL, &new_priv_id);
@@ -489,8 +531,9 @@ static inline void __ongoing_comp_n_copy(notification_h old, notification_h new)
        notification_get_pkgname(old, &pkgname);
        notification_get_pkgname(new, &new_pkgname);
 
-       if (!pkgname || !new_pkgname)
+       if (!pkgname || !new_pkgname) {
                return;
+       }
 
        if (!strcmp(pkgname, new_pkgname) && priv_id == new_priv_id) {
                double percentage = 0.0;
@@ -513,164 +556,162 @@ static inline void __ongoing_comp_n_copy(notification_h old, notification_h new)
                        char *content = NULL;
                        notification_get_text(old,
                                NOTIFICATION_TEXT_TYPE_CONTENT, &content);
-                       notification_set_text(new,
-                               NOTIFICATION_TEXT_TYPE_CONTENT, content,
-                               NULL, NOTIFICATION_VARIABLE_TYPE_NONE);
+                       ret = notification_set_text(new, NOTIFICATION_TEXT_TYPE_CONTENT, content, NULL, NOTIFICATION_VARIABLE_TYPE_NONE);
+                       if (ret != NOTIFICATION_ERROR_NONE) {
+                               ERR("Failed to set text[%d]", ret);
+                       }
                }
        }
 }
 
-static void _quickpanel_noti_clear_ongoinglist()
+static void _noti_node_clear_list_cb(gpointer key, gpointer value, gpointer user_data)
 {
-       if (g_noti_listbox != NULL) {
-               listbox_remove_all_item(g_noti_listbox, EINA_FALSE);
+       Evas_Object *noti_listbox = user_data;
+       noti_node_item *node = (noti_node_item *)value;
+
+       if (noti_listbox != NULL && node != NULL) {
+               if (node->noti != NULL && node->view != NULL) {
+                       quickpanel_noti_listbox_remove_item(noti_listbox, node->view, EINA_TRUE);
+               }
        }
 }
 
-static void _quickpanel_noti_clear_notilist(void)
+static void _noti_clear_list_all(void)
 {
-       if (g_noti_gridbox != NULL) {
-               gridbox_remove_all_item(g_noti_gridbox, EINA_FALSE);
+       struct appdata *ad = quickpanel_get_app_data();
+
+       if (s_info.noti_node->table != NULL) {
+               g_hash_table_foreach(s_info.noti_node->table, _noti_node_clear_list_cb, ad->list);
+       }
+
+       if (s_info.noti_node != NULL) {
+               quickpanel_noti_node_remove_all(s_info.noti_node);
        }
 }
 
-static void _quickpanel_noti_clear_list_all(void)
-{
-       _quickpanel_noti_clear_ongoinglist();
-       _quickpanel_noti_clear_notilist();
+static void _ongoing_noti_section_icon_state_set(int is_closed) {
+       if (s_info.ongoing_noti_section_view != NULL) {
+               if (is_closed == 1) {
+                       elm_object_signal_emit(s_info.ongoing_noti_section_view, "button,opened", "prog");
+               } else {
+                       elm_object_signal_emit(s_info.ongoing_noti_section_view, "button,closed", "prog");
+               }
+       }
 }
 
-static void _quickpanel_noti_section_add(void)
+static void _ongoing_noti_section_deleted_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
 {
-       struct appdata *ad = quickpanel_get_app_data();
-       retif(ad == NULL, , "Invalid parameter!");
-       retif(ad->list == NULL, , "Invalid parameter!");
+       DBG("");
+       struct appdata *ad = data;
+       s_info.ongoing_noti_section_view = NULL;
+       DBG("VIM ongoing noti_section deleted");
 
-       if (g_noti_section == NULL) {
-               g_noti_section = noti_section_create(ad->list);
-               if (g_noti_section != NULL) {
-                       quickpanel_list_util_sort_insert(ad->list, g_noti_section);
-                       DBG("noti section[%p]", g_noti_section);
-               }
+       if (quickpanel_noti_node_get_item_count(s_info.noti_node, NOTIFICATION_TYPE_NONE) > 0) {
+               _ongoing_noti_section_add();
        }
+
+       quickpanel_noti_listbox_remove_item(ad->list, s_info.noti_section_view, 1);
+       s_info.noti_section_view = NULL;
 }
 
-static void _quickpanel_noti_section_remove(void)
+static void _ongoing_noti_section_add(void)
 {
+       int noti_count = 0;
        struct appdata *ad = quickpanel_get_app_data();
        retif(ad == NULL, , "Invalid parameter!");
        retif(ad->list == NULL, , "Invalid parameter!");
 
-       if (g_noti_section != NULL) {
-               quickpanel_list_util_item_unpack_by_type(ad->list, QP_ITEM_TYPE_NOTI_GROUP);
-               noti_section_remove(g_noti_section);
-               g_noti_section = NULL;
+       if (s_info.noti_node) {
+               noti_count = quickpanel_noti_node_get_item_count(s_info.noti_node, NOTIFICATION_TYPE_NONE);
        }
-}
 
-static void _quickpanel_noti_box_deleted_cb(void *data, Evas_Object *obj) {
-       int priv_id = -1;
+       DBG("[%d] ", noti_count);
 
-       retif(data == NULL, , "Invalid parameter!");
-       DBG("deleting:%p", data);
-
-       noti_node_item *item = data;
-       notification_h noti = item->noti;
+       if (s_info.ongoing_noti_section_view == NULL) {
+               s_info.ongoing_noti_section_view = quickpanel_noti_section_create(ad->list, QP_ITEM_TYPE_ONGOING_NOTI_GROUP);
+               if (s_info.ongoing_noti_section_view != NULL) {
+                       quickpanel_noti_section_set_deleted_cb(s_info.ongoing_noti_section_view, _ongoing_noti_section_deleted_cb, ad);
+                       quickpanel_noti_section_update(s_info.ongoing_noti_section_view, noti_count);
 
-       if (noti != NULL) {
-               notification_get_id(noti, NULL, &priv_id);
-               noti_node_remove(g_noti_node, priv_id);
+                       if (s_info.is_ongoing_hided == 1) {
+                               _ongoing_noti_section_icon_state_set(0);
+                       }
+               }
        }
-}
-
-static void _quickpanel_list_box_deleted_cb(void *data, Evas_Object *obj) {
-       int priv_id = -1;
-
-       retif(data == NULL, , "Invalid parameter!");
-       DBG("deleting:%p", data);
-
-       noti_node_item *item = data;
-       notification_h noti = item->noti;
-
-       if (noti != NULL) {
-               notification_get_id(noti, NULL, &priv_id);
-               noti_node_remove(g_noti_node, priv_id);
+       else {
+               DBG("noti section update %d ", noti_count);
+               quickpanel_noti_section_update(s_info.ongoing_noti_section_view, noti_count);
        }
 }
 
-static void _quickpanel_noti_ongoing_add(Evas_Object *list, void *data, int is_prepend)
+static void _noti_ongoing_add(Evas_Object *list, void *data, int is_prepend)
 {
        Evas_Object *noti_list_item = NULL;
-       notification_ly_type_e layout = NOTIFICATION_LY_ONGOING_EVENT;
-
-       retif(list == NULL, , "Invalid parameter!");
        notification_h noti = data;
+       retif(list == NULL, , "Invalid parameter!");
 
        if (noti != NULL) {
-               notification_get_layout(noti, &layout);
-               noti_list_item = noti_list_item_create(g_noti_listbox, layout);
+               noti_list_item = quickpanel_noti_list_item_create(list, noti);
 
                if (noti_list_item != NULL) {
-                       noti_node_item *item = noti_node_add(g_noti_node, (void*)data, (void*)noti_list_item);
+                       noti_node_item *item = quickpanel_noti_node_add(s_info.noti_node, (void*)data, (void*)noti_list_item);
                        if (item != NULL) {
-                               noti_list_item_node_set(noti_list_item, item);
-                               noti_list_item_set_item_selected_cb(noti_list_item, quickpanel_noti_listitem_select_cb);
-                               listbox_add_item(g_noti_listbox, noti_list_item, is_prepend);
+                               quickpanel_noti_list_item_node_set(noti_list_item, item);
+                               quickpanel_noti_list_item_set_item_selected_cb(noti_list_item, _noti_listitem_select_cb);
+
+                               if (s_info.ongoing_noti_section_view == NULL) {
+                                       _ongoing_noti_section_add();
+                               }
+                               quickpanel_noti_listbox_add_item(list, noti_list_item, is_prepend, s_info.ongoing_noti_section_view);
                        }
                } else
                        ERR("fail to insert item to list : %p", data);
        }
 
        DBG("noti[%p] data[%p] added listbox[%p]",
-                       data, noti_list_item, g_noti_listbox);
+                       data, noti_list_item, list);
 }
 
-static void _quickpanel_noti_noti_add(Evas_Object *list, void *data, int is_prepend)
+static void _noti_add(Evas_Object *list, void *data, int insert_pos)
 {
        notification_h noti = data;
        notification_ly_type_e layout = NOTIFICATION_LY_NOTI_EVENT_SINGLE;
-       Evas_Object *noti_box = NULL;
+       Evas_Object *noti_view = NULL;
 
        retif(list == NULL, , "Invalid parameter!");
 
-       if (g_noti_section == NULL) {
-               _quickpanel_noti_section_add();
-       }
-
        if (noti != NULL) {
                notification_get_layout(noti, &layout);
-               Evas_Object *noti_box = noti_box_create(g_noti_gridbox, layout);
+               noti_view = quickpanel_noti_list_item_create(list, noti);
 
-               if (noti_box != NULL) {
-                       noti_node_item *item = noti_node_add(g_noti_node, (void*)data, (void*)noti_box);
+               if (noti_view != NULL) {
+                       noti_node_item *item = quickpanel_noti_node_add(s_info.noti_node, (void*)data, (void*)noti_view);
                        if (item != NULL) {
-                               noti_box_node_set(noti_box, item);
-                               noti_box_set_item_selected_cb(noti_box, quickpanel_notibox_select_cb);
-                               noti_box_set_item_button_1_cb(noti_box, quickpanel_notibox_button_1_cb);
-                               noti_box_set_item_deleted_cb(noti_box, quickpanel_notibox_delete_cb);
-                               gridbox_add_item(g_noti_gridbox, noti_box, is_prepend);
+                               quickpanel_noti_list_item_node_set(noti_view, item);
+                               quickpanel_noti_list_item_set_item_selected_cb(noti_view, _notibox_select_cb);
+                               quickpanel_noti_list_item_set_item_button_1_cb(noti_view, _notibox_button_1_cb);
+                               quickpanel_noti_list_item_set_item_deleted_cb(noti_view, _notibox_delete_cb);
+
+                               if (s_info.noti_section_view == NULL) {
+                                       _ongoing_noti_section_add();
+                               }
+                               quickpanel_noti_listbox_add_item(list, noti_view, insert_pos, s_info.noti_section_view);
                        }
                } else
                        ERR("fail to insert item to list : %p", data);
        }
 
-       int noti_count =
-                       noti_node_get_item_count(g_noti_node, NOTIFICATION_TYPE_NOTI);
-
-       if (g_noti_section != NULL) {
-               noti_section_update(g_noti_section, noti_count);
-       }
-
        DBG("noti[%p] view[%p] added gridbox[%p]",
-                       data, noti_box, g_noti_gridbox);
+                       data, noti_view, list);
 }
 
-static void _quickpanel_noti_update_notilist(struct appdata *ad)
+static void _update_notilist(struct appdata *ad)
 {
        Evas_Object *list = NULL;
        notification_h noti = NULL;
        notification_h noti_save = NULL;
-       notification_list_h get_list = NULL;
+       notification_list_h list_head = NULL;
+       notification_list_h list_traverse = NULL;
        int applist = NOTIFICATION_DISPLAY_APP_ALL;
 
        DBG("");
@@ -680,93 +721,66 @@ static void _quickpanel_noti_update_notilist(struct appdata *ad)
        list = ad->list;
        retif(list == NULL, , "Failed to get noti genlist.");
 
-       _quickpanel_noti_clear_list_all();
+       _noti_clear_list_all();
 
-       notification_get_list(NOTIFICATION_TYPE_ONGOING, -1, &get_list);
-       while (get_list != NULL) {
-               noti = notification_list_get_data(get_list);
+       notification_get_list(NOTIFICATION_TYPE_ONGOING, -1, &list_head);
+       list_traverse = list_head;
+       while (list_traverse != NULL) {
+               noti = notification_list_get_data(list_traverse);
                notification_get_display_applist(noti, &applist);
 
                if (applist &
                    NOTIFICATION_DISPLAY_APP_NOTIFICATION_TRAY) {
                        notification_clone(noti, &noti_save);
-                       _quickpanel_noti_ongoing_add(list, noti_save, LISTBOX_APPEND);
+                       _noti_ongoing_add(list, noti_save, LISTBOX_APPEND);
                }
-               get_list = notification_list_get_next(get_list);
+               list_traverse = notification_list_get_next(list_traverse);
+       }
+       if (list_head != NULL) {
+               notification_free_list(list_head);
+               list_head = NULL;
        }
-       notification_free_list(get_list);
 
-       notification_get_list(NOTIFICATION_TYPE_NOTI , -1, &get_list);
-       while (get_list != NULL) {
-               noti = notification_list_get_data(get_list);
+       notification_get_list(NOTIFICATION_TYPE_NOTI , -1, &list_head);
+       list_traverse = list_head;
+       while (list_traverse != NULL) {
+               noti = notification_list_get_data(list_traverse);
                notification_get_display_applist(noti, &applist);
 
                if (applist &
                    NOTIFICATION_DISPLAY_APP_NOTIFICATION_TRAY) {
                        notification_clone(noti, &noti_save);
-                       _quickpanel_noti_noti_add(list, noti_save, GRIDBOX_APPEND);
+                       _noti_add(list, noti_save, LISTBOX_APPEND);
                }
-               get_list = notification_list_get_next(get_list);
+               list_traverse = notification_list_get_next(list_traverse);
        }
-       notification_free_list(get_list);
-
-       if (g_noti_gridbox != NULL) {
-               elm_box_recalculate(g_noti_gridbox);
+       if (list_head != NULL) {
+               notification_free_list(list_head);
+               list_head = NULL;
        }
-}
 
-static void _quickpanel_noti_delete_volatil_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);
-
-               if (property & NOTIFICATION_PROP_VOLATILE_DISPLAY) {
-                       notification_set_property(noti,
-                               property |
-                               NOTIFICATION_PROP_DISABLE_UPDATE_ON_DELETE);
-                       notification_delete(noti);
-               }
-
-               noti_list = notification_list_get_next(noti_list);
+       if (list != NULL) {
+               elm_box_recalculate(list);
        }
-
-       notification_free_list(noti_list_head);
-
-       notification_update(NULL);
 }
 
 inline static void _print_debuginfo_from_noti(notification_h noti) {
        retif(noti == NULL, , "Invalid parameter!");
 
        char *noti_pkgname = NULL;
-       char *noti_launch_pkgname = NULL;
        notification_type_e noti_type = NOTIFICATION_TYPE_NONE;
 
        notification_get_pkgname(noti, &noti_pkgname);
-       notification_get_application(noti, &noti_launch_pkgname);
        notification_get_type(noti, &noti_type);
 
        if (noti_pkgname != NULL) {
-               ERR("pkg:%s", noti_pkgname);
-       }
-       if (noti_launch_pkgname != NULL) {
-               ERR("pkgl:%s", noti_launch_pkgname);
+               SERR("pkg:%s", noti_pkgname);
        }
 
-       ERR("type:%d", noti_type);
+       SERR("type:%d", noti_type);
 }
 
-static void _quickpanel_noti_detailed_changed_cb(void *data, notification_type_e type, notification_op *op_list, int num_op)
+static void _detailed_changed_cb(void *data, notification_type_e type, notification_op *op_list, int num_op)
 {
        int i = 0;
        int op_type = 0;
@@ -777,21 +791,23 @@ static void _quickpanel_noti_detailed_changed_cb(void *data, notification_type_e
        notification_type_e noti_type = NOTIFICATION_TYPE_NONE;
        int noti_applist = NOTIFICATION_DISPLAY_APP_ALL;
        notification_ly_type_e noti_layout = NOTIFICATION_LY_NONE;
+       notification_ly_type_e old_noti_layout = NOTIFICATION_LY_NONE;
 
        retif(data == NULL, , "Invalid parameter!");
        ad = data;
 
-       ERR("num_op:%d", num_op);
+       SERR("num_op:%d", num_op);
 
        for (i = 0; i < num_op; i++) {
                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_from_master);
 
-               ERR("noti operation:%d privid:%d", op_type, priv_id);
+               SERR("noti operation:%d privid:%d", op_type, priv_id);
 
-               if (op_type == NOTIFICATION_OP_INSERT) {
 
+               switch(op_type) {
+               case NOTIFICATION_OP_INSERT: 
                        if (noti_from_master == NULL) {
                                ERR("failed to get a notification from master");
                                continue;
@@ -802,8 +818,19 @@ static void _quickpanel_noti_detailed_changed_cb(void *data, notification_type_e
                        }
 
                        _print_debuginfo_from_noti(noti_new);
+#ifdef QP_EMERGENCY_MODE_ENABLE
+                       if (quickpanel_emergency_mode_is_on()) {
+                               if (quickpanel_emergency_mode_notification_filter(noti_new, 0)) {
+                                       notification_free(noti_new);
+                                       return;
+                               }
+                       }
+#endif
+#ifdef QP_SMART_ALERT_ENABLE
+                       quickpanel_smart_alert_update_info(noti_new);
+#endif
 #ifdef QP_SERVICE_NOTI_LED_ENABLE
-                       quickpanel_service_noti_led_on(noti_new);
+                       quickpanel_noti_led_proc(noti_new, op_type);
 #endif
 
                        notification_get_type(noti_new, &noti_type);
@@ -811,7 +838,7 @@ static void _quickpanel_noti_detailed_changed_cb(void *data, notification_type_e
                        notification_get_layout(noti_new, &noti_layout);
 
                        if (noti_applist & NOTIFICATION_DISPLAY_APP_NOTIFICATION_TRAY) {
-                               noti_node_item *node = noti_node_get(g_noti_node, priv_id);
+                               noti_node_item *node = quickpanel_noti_node_get(s_info.noti_node, priv_id);
                                if (node != NULL) {
                                        if (noti_type == NOTIFICATION_TYPE_NOTI) {
                                                DBG("cb after inserted:%d", priv_id);
@@ -819,266 +846,284 @@ static void _quickpanel_noti_detailed_changed_cb(void *data, notification_type_e
                                        notification_free(noti_new);
                                } else {
                                        if (noti_type == NOTIFICATION_TYPE_NOTI) {
-                                               _quickpanel_noti_noti_add(ad->list, noti_new, GRIDBOX_PREPEND);
+                                               _noti_add(ad->list, noti_new, LISTBOX_APPEND);
+#ifdef QP_REMINDER_ENABLE
+                                               quickpanel_reminder_start(NULL);
+#endif
                                        } else if (noti_type == NOTIFICATION_TYPE_ONGOING) {
-                                               _quickpanel_noti_ongoing_add(ad->list, noti_new, LISTBOX_PREPEND);
+                                               _noti_ongoing_add(ad->list, noti_new, LISTBOX_PREPEND);
+                                       } else {
+                                               notification_free(noti_new);
                                        }
                                }
                        } else {
                                notification_free(noti_new);
                        }
-               } else if (op_type == NOTIFICATION_OP_DELETE) {
-                       noti_node_item *node = noti_node_get(g_noti_node, priv_id);
+                       break;
 
-                       if (node != NULL && node->noti != NULL) {
-                               notification_h noti = node->noti;
-                               notification_get_type(noti, &noti_type);
+               case NOTIFICATION_OP_DELETE:
+                       {
+                               noti_node_item *node = quickpanel_noti_node_get(s_info.noti_node, priv_id);
+
+                               if (node != NULL && node->noti != NULL) {
+                                       notification_h noti = node->noti;
+                                       notification_get_type(noti, &noti_type);
 
+#ifdef QP_SMART_ALERT_ENABLE
+                                       quickpanel_smart_alert_update_info(noti);
+#endif
 #ifdef QP_SERVICE_NOTI_LED_ENABLE
-                               quickpanel_service_noti_led_off(noti);
+                                       quickpanel_noti_led_proc(noti, op_type);
 #endif
-                               _print_debuginfo_from_noti(noti);
+                                       _print_debuginfo_from_noti(noti);
+
+                                       if (noti_type == NOTIFICATION_TYPE_NOTI) {
+                                               quickpanel_noti_listbox_remove_item(ad->list, node->view, 1);
+                                       } else if (noti_type == NOTIFICATION_TYPE_ONGOING) {
+                                               quickpanel_noti_listbox_remove_item(ad->list, node->view, 1);
+                                       }
 
-                               if (noti_type == NOTIFICATION_TYPE_NOTI) {
-                                       gridbox_remove_item(g_noti_gridbox, node->view, 0);
-                               } else if (noti_type == NOTIFICATION_TYPE_ONGOING) {
-                                       listbox_remove_item(g_noti_listbox, node->view, 0);
+                                       quickpanel_noti_node_remove(s_info.noti_node, priv_id);
+                                       if (quickpanel_media_player_id_get() == priv_id) {
+                                               quickpanel_media_player_stop();
+                                       }
+                               } else {
+                                       ERR("node = NULL or node->noti == NULL");
                                }
-                               noti_node_remove(g_noti_node, priv_id);
-                       }
-               } else if (op_type == NOTIFICATION_OP_UPDATE) {
-                       noti_node_item *node = noti_node_get(g_noti_node, priv_id);
-                       notification_h old_noti = NULL;
 
-                       if (noti_from_master == NULL) {
-                               ERR("failed to get a notification from master");
-                               continue;
-                       }
-                       if (notification_clone(noti_from_master, &noti_new) != NOTIFICATION_ERROR_NONE) {
-                               ERR("failed to create a cloned notification");
-                               continue;
+#ifdef QP_REMINDER_ENABLE
+                               if (quickpanel_noti_node_get_item_count(s_info.noti_node, NOTIFICATION_TYPE_NOTI) <= 0) {
+                                       quickpanel_reminder_stop(NULL);
+                               }
+#endif
                        }
+                       break;
 
-#ifdef QP_SERVICE_NOTI_LED_ENABLE
-                       quickpanel_service_noti_led_on(noti_new);
-#endif
-                       _print_debuginfo_from_noti(noti_new);
+               case NOTIFICATION_OP_UPDATE:
+                       {
+                               noti_node_item *node = quickpanel_noti_node_get(s_info.noti_node, priv_id);
+                               notification_h old_noti = NULL;
 
-                       if (node != NULL && node->view != NULL && node->noti != NULL) {
-                               notification_get_type(noti_new, &noti_type);
+                               DBG("Notification update priv_id[%d]", priv_id);
 
-                               if (noti_type == NOTIFICATION_TYPE_NOTI) {
-                                       gridbox_remove_item(g_noti_gridbox, node->view, 0);
-                                       _quickpanel_noti_noti_add(ad->list, noti_new, GRIDBOX_PREPEND);
-/*
-                                       gridbox_remove_and_add_item(g_noti_gridbox, node->view,
-                                                       _quickpanel_noti_noti_add
-                                                       ,ad->list, noti_new, GRIDBOX_PREPEND);
-*/
-                               } else if (noti_type == NOTIFICATION_TYPE_ONGOING) {
-                                       old_noti = node->noti;
-                                       node->noti = noti_new;
-
-                                       listbox_update_item(g_noti_listbox, node->view);
+                               if (noti_from_master == NULL) {
+                                       ERR("failed to get a notification from master");
+                                       continue;
                                }
 
-                               if (old_noti != NULL) {
-                                       notification_free(old_noti);
+                               if (notification_clone(noti_from_master, &noti_new) != NOTIFICATION_ERROR_NONE) {
+                                       ERR("failed to create a cloned notification");
+                                       continue;
                                }
-                       } else {
-                               notification_get_display_applist(noti_new, &noti_applist);
-
-                               if (noti_applist & NOTIFICATION_DISPLAY_APP_NOTIFICATION_TRAY) {
-                                       if (noti_type == NOTIFICATION_TYPE_NOTI) {
-                                               _quickpanel_noti_noti_add(ad->list, noti_new, GRIDBOX_PREPEND);
+#ifdef QP_EMERGENCY_MODE_ENABLE
+                               if (quickpanel_emergency_mode_is_on()) {
+                                       if (quickpanel_emergency_mode_notification_filter(noti_new, 0)) {
+                                               DBG("notification filtered");
+                                               notification_free(noti_new);
+                                               return;
+                                       }
+                               }
+#endif
+#ifdef QP_SMART_ALERT_ENABLE
+                               quickpanel_smart_alert_update_info(noti_new);
+#endif
+#ifdef QP_SERVICE_NOTI_LED_ENABLE
+                               quickpanel_noti_led_proc(noti_new, op_type);
+#endif
+                               _print_debuginfo_from_noti(noti_new);
+                               notification_get_layout(noti_new, &noti_layout);
+
+                               if (node != NULL && node->view != NULL && node->noti != NULL) {
+                                       notification_get_type(noti_new, &noti_type);
+
+                                       notification_get_layout(node->noti, &old_noti_layout);
+                                       if (noti_type == NOTIFICATION_TYPE_NOTI || old_noti_layout != noti_layout) {
+                                               if (quickpanel_noti_view_is_view_handler_changed(node->view, noti_new) == 1) {
+                                                       quickpanel_noti_listbox_remove_item(ad->list, node->view, 1);
+                                                       quickpanel_noti_node_remove(s_info.noti_node, priv_id);
+                                                       _noti_add(ad->list, noti_new, GRIDBOX_PREPEND);
+                                               } else {
+                                                       old_noti = node->noti;
+                                                       node->noti = noti_new;
+                                                       quickpanel_noti_listbox_update_item(ad->list, node->view);
+                                               }
                                        } else if (noti_type == NOTIFICATION_TYPE_ONGOING) {
-                                               _quickpanel_noti_ongoing_add(ad->list, noti_new, GRIDBOX_PREPEND);
+                                               old_noti = node->noti;
+                                               node->noti = noti_new;
+
+                                               quickpanel_noti_listbox_update_item(ad->list, node->view);
+                                       } else {
+                                               notification_free(noti_new);
+                                       }
+
+                                       if (old_noti != NULL) {
+                                               notification_free(old_noti);
                                        }
                                } else {
-                                       notification_free(noti_new);
+                                       notification_get_display_applist(noti_new, &noti_applist);
+
+                                       if (noti_applist & NOTIFICATION_DISPLAY_APP_NOTIFICATION_TRAY) {
+                                               if (noti_type == NOTIFICATION_TYPE_NOTI) {
+                                                       _noti_add(ad->list, noti_new, LISTBOX_PREPEND);
+                                               } else if (noti_type == NOTIFICATION_TYPE_ONGOING) {
+                                                       _noti_ongoing_add(ad->list, noti_new, LISTBOX_PREPEND);
+                                               } else {
+                                                       notification_free(noti_new);
+                                               }
+                                       } else {
+                                               notification_free(noti_new);
+                                       }
                                }
                        }
-               } else if (op_type == NOTIFICATION_OP_REFRESH) {
-                       _quickpanel_noti_update_notilist(ad);
-               } else if (op_type == NOTIFICATION_OP_SERVICE_READY) {
-                       _quickpanel_noti_update_notilist(ad);
+                       break;
 
+               case NOTIFICATION_OP_SERVICE_READY:
+                       _update_notilist(ad);
+
+#ifdef QP_SMART_ALERT_ENABLE
+                       quickpanel_smart_alert_update_info(NULL);
+#endif
 #ifdef QP_SERVICE_NOTI_LED_ENABLE
-                       quickpanel_service_noti_init(ad);
-                       quickpanel_service_noti_led_on(NULL);
+                       quickpanel_noti_led_init(ad, s_info.noti_node);
 #endif
-               }
-       }
+                       quickpanel_vim_set_state_ready();
 
-       int noti_count = 0;
+#ifdef QP_REMINDER_ENABLE
+                       if (quickpanel_noti_node_get_item_count(s_info.noti_node, NOTIFICATION_TYPE_NOTI) > 0) {
+                               quickpanel_reminder_start(NULL);
+                       } else {
+                               quickpanel_reminder_stop(NULL);
+                       }
+#endif
+                       //quickpanel_chg_init();
+                       break;
 
-       if ((noti_count = noti_node_get_item_count(g_noti_node, NOTIFICATION_TYPE_NOTI))
-                       <= 0) {
-               _quickpanel_noti_clear_notilist();
-               _quickpanel_noti_section_remove();
-       } else {
-               if (g_noti_section != NULL) {
-                       noti_section_update(g_noti_section, noti_count);
+               default:
+                       SERR("Unknown op type");
+                       break;
                }
        }
 
-       ERR("current noti count:%d", noti_count);
-}
-
-static void _quickpanel_noti_update_desktop_cb(keynode_t *node, void *data)
-{
-       char *event = NULL;
-       char type[10] = {0,};
-       char package[1024] = {0,};
-
-       event = vconf_get_str(vconf_keynode_get_name(node));
-       retif(NULL == event, , "invalid event");
-
-       DBG("%s", event);
+       int noti_count = quickpanel_noti_node_get_item_count(s_info.noti_node, NOTIFICATION_TYPE_NOTI);
+       int ongoing_noti_count = quickpanel_noti_node_get_item_count(s_info.noti_node, NOTIFICATION_TYPE_ONGOING);
 
-       if (sscanf(event, "%10[^:]:%1023s", type, package) != 2) {
-               DBG("Failed to parse the event format : [%s], [%s]", type, package);
+       if (s_info.noti_section_view != NULL) {
+               quickpanel_noti_section_update(s_info.noti_section_view, noti_count+ongoing_noti_count);
        }
-
-       if (strncasecmp(type, "delete", strlen(type)) == 0) {
-               notification_delete_all_by_type(package, NOTIFICATION_TYPE_NONE);
+       if (s_info.ongoing_noti_section_view != NULL) {
+               quickpanel_noti_section_update(s_info.ongoing_noti_section_view, noti_count+ongoing_noti_count);
        }
 
-       if (event != NULL)
-               free(event);
+       SERR("current noti count:%d, ongoing:%d", noti_count, ongoing_noti_count);
 }
 
-static void _quickpanel_noti_update_sim_status_cb(keynode_t *node, void *data)
+static void _update_sim_status_cb(keynode_t *node, void *data)
 {
        struct appdata *ad = data;
 
        if (ad != NULL && ad->list != NULL) {
-               _quickpanel_noti_update_notilist(ad);
+               if (notification_is_service_ready() == 1) {
+                       _update_notilist(ad);
+               }
        }
 }
 
-static int _quickpanel_noti_register_event_handler(struct appdata *ad)
+static Eina_Bool _noti_callback_register_idler_cb(void *data)
+{
+       struct appdata *ad = data;
+       retif(ad == NULL, EINA_FALSE, "Invalid parameter!");
+
+       notification_register_detailed_changed_cb(_detailed_changed_cb, ad);
+
+       return EINA_FALSE;
+}
+
+static int _register_event_handler(struct appdata *ad)
 {
        int ret = 0;
        retif(ad == NULL, QP_FAIL, "Invalid parameter!");
+       retif(ad->dbus_connection == NULL, QP_FAIL, "Invalid parameter!");
 
-       /* Add dbus signal */
-       e_dbus_init();
-       ad->dbus_connection = e_dbus_bus_get(DBUS_BUS_SYSTEM);
-       if (ad->dbus_connection == NULL) {
-               ERR("noti register : failed to get dbus bus");
-               return -1;
-       }
-
-       ad->dbus_handler_size =
+       s_info.dbus_handler_size =
                e_dbus_signal_handler_add(ad->dbus_connection, NULL,
                        QP_NOTI_ONGOING_DBUS_PATH,
                        QP_NOTI_ONGOING_DBUS_INTERFACE, "update_progress",
-                       _quickpanel_noti_item_progress_update_cb,
+                       _item_progress_update_cb,
                        ad);
-       if (ad->dbus_handler_size == NULL)
+       if (s_info.dbus_handler_size == NULL) {
                ERR("fail to add size signal");
+       }
 
-       ad->dbus_handler_progress =
+       s_info.dbus_handler_progress =
                e_dbus_signal_handler_add(ad->dbus_connection, NULL,
                        QP_NOTI_ONGOING_DBUS_PATH,
                        QP_NOTI_ONGOING_DBUS_INTERFACE, "update_size",
-                       _quickpanel_noti_item_size_update_cb,
+                       _item_size_update_cb,
                        ad);
-       if (ad->dbus_handler_progress == NULL)
+       if (s_info.dbus_handler_progress == NULL) {
                ERR("fail to add progress signal");
+       }
 
-       ad->dbus_handler_content =
+       s_info.dbus_handler_content =
                e_dbus_signal_handler_add(ad->dbus_connection, NULL,
                        QP_NOTI_ONGOING_DBUS_PATH,
                        QP_NOTI_ONGOING_DBUS_INTERFACE, "update_content",
-                       _quickpanel_noti_item_content_update_cb,
+                       _item_content_update_cb,
                        ad);
-       if (ad->dbus_handler_content == NULL)
+       if (s_info.dbus_handler_content == NULL) {
                ERR("fail to add content signal");
+       }
 
        /* Notify vconf key */
        ret = vconf_notify_key_changed(VCONFKEY_TELEPHONY_SIM_SLOT,
-                                      _quickpanel_noti_update_sim_status_cb,
+                                      _update_sim_status_cb,
                                       (void *)ad);
-       if (ret != 0)
+       if (ret != 0) {
                ERR("Failed to register SIM_SLOT change callback!");
-
-       /* Notify vconf key */
-       ret = vconf_notify_key_changed(VCONFKEY_MENUSCREEN_DESKTOP,
-                                      _quickpanel_noti_update_desktop_cb,
-                                      (void *)ad);
-       if (ret != 0)
-               ERR("Failed to register DESKTOP change callback!");
+       }
 
        /* Register notification changed cb */
-       notification_register_detailed_changed_cb(_quickpanel_noti_detailed_changed_cb, ad);
+       ecore_idler_add(_noti_callback_register_idler_cb, ad);
 
        return ret;
 }
 
-static int _quickpanel_noti_unregister_event_handler(struct appdata *ad)
+static int _unregister_event_handler(struct appdata *ad)
 {
        int ret = 0;
+       retif(ad == NULL, QP_FAIL, "Invalid parameter!");
+       retif(ad->dbus_connection == NULL, QP_FAIL, "Invalid parameter!");
 
        /* Unregister notification changed cb */
-       notification_unregister_detailed_changed_cb(_quickpanel_noti_detailed_changed_cb, (void *)ad);
-
-       /* Ignore vconf key */
-       ret = vconf_ignore_key_changed(VCONFKEY_MENUSCREEN_DESKTOP,
-                       _quickpanel_noti_update_desktop_cb);
-       if (ret != 0)
-               ERR("Failed to ignore DESKTOP change callback!");
+       notification_unregister_detailed_changed_cb(_detailed_changed_cb, (void *)ad);
 
        ret = vconf_ignore_key_changed(VCONFKEY_TELEPHONY_SIM_SLOT,
-                               _quickpanel_noti_update_sim_status_cb);
-       if (ret != 0)
+                               _update_sim_status_cb);
+       if (ret != 0) {
                ERR("Failed to ignore SIM_SLOT change callback!");
+       }
 
        /* Delete dbus signal */
-       if (ad->dbus_handler_size != NULL) {
+       if (s_info.dbus_handler_size != NULL) {
                e_dbus_signal_handler_del(ad->dbus_connection,
-                               ad->dbus_handler_size);
-               ad->dbus_handler_size = NULL;
+                               s_info.dbus_handler_size);
+               s_info.dbus_handler_size = NULL;
        }
-       if (ad->dbus_handler_progress != NULL) {
+       if (s_info.dbus_handler_progress != NULL) {
                e_dbus_signal_handler_del(ad->dbus_connection,
-                               ad->dbus_handler_progress);
-               ad->dbus_handler_progress = NULL;
+                               s_info.dbus_handler_progress);
+               s_info.dbus_handler_progress = NULL;
        }
-       if (ad->dbus_handler_content != NULL) {
+       if (s_info.dbus_handler_content != NULL) {
                e_dbus_signal_handler_del(ad->dbus_connection,
-                               ad->dbus_handler_content);
-               ad->dbus_handler_content = NULL;
-       }
-
-       if (ad->dbus_connection != NULL) {
-               e_dbus_connection_close(ad->dbus_connection);
-               ad->dbus_connection = NULL;
+                               s_info.dbus_handler_content);
+               s_info.dbus_handler_content = NULL;
        }
 
        return QP_OK;
 }
 
-static int _quickpanel_noti_check_first_start(void)
-{
-       int status = 0;
-       int ret = 0;
-
-       ret = vconf_get_bool(VCONFKEY_QUICKPANEL_STARTED, &status);
-       if (ret == 0 && status == 0) {
-               /* reboot */
-               ret = vconf_set_bool(VCONFKEY_QUICKPANEL_STARTED, 1);
-               INFO("set : %s, result : %d", VCONFKEY_QUICKPANEL_STARTED, ret);
-       }
-
-       if (status)
-               return 0;
-
-       return 1;
-}
-
-static void _quickpanel_noti_init(void *data)
+/*static void _quickpanel_noti_init(void *data)
 {
        struct appdata *ad = NULL;
 
@@ -1089,16 +1134,11 @@ static void _quickpanel_noti_init(void *data)
 
        DBG("wr");
 
-       if (g_noti_listbox == NULL) {
-               g_noti_listbox = listbox_create(ad->list, quickpanel_get_app_data());
-               listbox_set_item_deleted_cb(g_noti_listbox, _quickpanel_list_box_deleted_cb);
-               quickpanel_list_util_sort_insert(ad->list, g_noti_listbox);
-       }
-
-       if (g_noti_gridbox == NULL) {
-               g_noti_gridbox = gridbox_create(ad->list, quickpanel_get_app_data());
-               gridbox_set_item_deleted_cb(g_noti_gridbox, _quickpanel_noti_box_deleted_cb);
-               quickpanel_list_util_sort_insert(ad->list, g_noti_gridbox);
+       if (s_info.noti_box == NULL) {
+               s_info.noti_box = quickpanel_noti_listbox_create(ad->list
+                       , quickpanel_get_app_data(), QP_ITEM_TYPE_ONGOING_NOTI);
+               quickpanel_noti_listbox_set_item_deleted_cb(s_info.noti_box, _quickpanel_list_box_deleted_cb);
+               quickpanel_list_util_sort_insert(ad->list, s_info.noti_box);
        }
 }
 
@@ -1112,77 +1152,52 @@ static void _quickpanel_noti_fini(void *data)
        retif(ad->list == NULL, , "Invalid parameter!");
 
        DBG("dr");
+}*/
 
-       if (g_noti_listbox != NULL) {
-               quickpanel_list_util_item_unpack_by_object(ad->list
-                               , g_noti_listbox);
-               listbox_remove(g_noti_listbox);
-               g_noti_listbox = NULL;
-       }
-
-       if (g_noti_gridbox != NULL) {
-               quickpanel_list_util_item_unpack_by_object(ad->list
-                               , g_noti_gridbox);
-               gridbox_remove(g_noti_gridbox);
-               g_noti_gridbox = NULL;
-       }
-}
-
-static void _quickpanel_noti_cleanup(void *data) {
-       notifiation_clear(NOTIFICATION_TYPE_ONGOING);
-       _quickpanel_noti_delete_volatil_data();
-}
-
-static int quickpanel_noti_init(void *data)
+static int _init(void *data)
 {
        struct appdata *ad = data;
-       int is_first = 0;
-
        retif(ad == NULL, QP_FAIL, "Invalid parameter!");
 
-       noti_node_create(&g_noti_node);
+       quickpanel_noti_node_create(&s_info.noti_node);
 
-       is_first = _quickpanel_noti_check_first_start();
-       if (is_first) {
-               if (notification_is_service_ready()) {
-                       _quickpanel_noti_cleanup(ad);
-               } else {
-                       notification_add_deffered_task(_quickpanel_noti_cleanup, ad);
-               }
-       }
+       //_quickpanel_noti_init(ad);
 
-       _quickpanel_noti_init(ad);
+       _register_event_handler(ad);
 
-       _quickpanel_noti_register_event_handler(ad);
+       // NOTI TIME
+       _noti_time_init(data);
 
        return QP_OK;
 }
 
-static int quickpanel_noti_fini(void *data)
+static int _fini(void *data)
 {
        struct appdata *ad = data;
        retif(ad == NULL, QP_FAIL, "Invalid parameter!");
 
 #ifdef QP_SERVICE_NOTI_LED_ENABLE
-       quickpanel_service_noti_fini(ad);
-       quickpanel_service_noti_led_off(NULL);
+       quickpanel_noti_led_fini(ad);
 #endif
 
        /* Unregister event handler */
-       _quickpanel_noti_unregister_event_handler(data);
+       _unregister_event_handler(data);
 
-       _quickpanel_noti_clear_list_all();
+       _noti_clear_list_all();
 
-       _quickpanel_noti_fini(ad);
+       //_quickpanel_noti_fini(ad);
 
-       if (g_noti_node != NULL) {
-               noti_node_destroy(&g_noti_node);
+       if (s_info.noti_node != NULL) {
+               quickpanel_noti_node_destroy(&s_info.noti_node);
        }
 
+       // NOTI TIME
+       _noti_time_fini(data);
+
        return QP_OK;
 }
 
-static int quickpanel_noti_suspend(void *data)
+static int _suspend(void *data)
 {
        struct appdata *ad = data;
        retif(ad == NULL, QP_FAIL, "Invalid parameter!");
@@ -1190,34 +1205,266 @@ static int quickpanel_noti_suspend(void *data)
        return QP_OK;
 }
 
-static int quickpanel_noti_resume(void *data)
+static void _noti_node_ongoing_update_cb(gpointer key, gpointer value, gpointer user_data)
+{
+       notification_type_e noti_type = NOTIFICATION_TYPE_NONE;
+       Evas_Object *noti_listbox = user_data;
+       noti_node_item *node = (noti_node_item *)value;
+
+       if (noti_listbox != NULL && node != NULL) {
+               if (node->noti != NULL && node->view != NULL) {
+                       notification_get_type(node->noti, &noti_type);
+                       if (noti_type == NOTIFICATION_TYPE_ONGOING) {
+                               quickpanel_noti_listbox_update_item(noti_listbox, node->view);
+                       }
+               }
+       }
+}
+
+static int _resume(void *data)
 {
        struct appdata *ad = data;
        retif(ad == NULL, QP_FAIL, "Invalid parameter!");
 
-       if (ad->list) {
-               listbox_update(g_noti_listbox);
+       if (ad->list != NULL && s_info.noti_node != NULL) {
+               if (quickpanel_noti_node_get_item_count(s_info.noti_node, QP_ITEM_TYPE_ONGOING_NOTI) > 0) {
+                       if (s_info.noti_node->table != NULL) {
+                               g_hash_table_foreach(s_info.noti_node->table, _noti_node_ongoing_update_cb, ad->list);
+                       }
+               }
        }
 
        return QP_OK;
 }
 
-static void quickpanel_noti_refresh(void *data) {
+static void _refresh(void *data)
+{
        struct appdata *ad = NULL;
 
        retif(data == NULL, , "Invalid parameter!");
        ad = data;
 
-       if (g_noti_gridbox != NULL) {
-               gridbox_rotation(g_noti_gridbox, ad->angle);
-       }
+       quickpanel_noti_listbox_rotation(ad->list, ad->angle);
 }
 
-static void quickpanel_noti_lang_changed(void *data)
+static void _lang_changed(void *data)
 {
+       int noti_count = 0;
+       int ongoing_noti_count = 0;
        struct appdata *ad = data;
 
        retif(ad == NULL, , "Invalid parameter!");
 
-       _quickpanel_noti_update_notilist(ad);
+       if (notification_is_service_ready() == 1) {
+
+               _update_notilist(ad);
+
+               noti_count = quickpanel_noti_node_get_item_count(s_info.noti_node, NOTIFICATION_TYPE_NOTI);
+               ongoing_noti_count = quickpanel_noti_node_get_item_count(s_info.noti_node, NOTIFICATION_TYPE_ONGOING);
+
+               if (s_info.noti_section_view != NULL) {
+                       quickpanel_noti_section_update(s_info.noti_section_view, noti_count+ongoing_noti_count);
+               }
+               if (s_info.ongoing_noti_section_view != NULL) {
+                       quickpanel_noti_section_update(s_info.ongoing_noti_section_view, noti_count+ongoing_noti_count);
+               }
+       }
+}
+
+HAPI int quickpanel_noti_get_count(void)
+{
+       return quickpanel_noti_node_get_item_count(s_info.noti_node, NOTIFICATION_TYPE_NONE);
+}
+
+HAPI int quickpanel_noti_get_type_count(notification_type_e noti_type)
+{
+       return quickpanel_noti_node_get_item_count(s_info.noti_node, noti_type);
+}
+
+HAPI int quickpanel_noti_get_geometry(int *limit_h, int *limit_partial_h, int *limit_partial_w)
+{
+       retif(limit_h == NULL, 0, "invalid parameter");
+       retif(limit_partial_h == NULL, 0, "invalid parameter");
+       retif(limit_partial_w == NULL, 0, "invalid parameter");
+       struct appdata *ad = quickpanel_get_app_data();
+
+       return quickpanel_noti_listbox_get_geometry(ad->list,
+                                       limit_h, limit_partial_h, limit_partial_w);
+}
+
+HAPI noti_node_item *quickpanel_noti_node_get_by_priv_id(int priv_id)
+{
+       retif(s_info.noti_node == NULL, NULL, "invalid parameter");
+
+       return quickpanel_noti_node_get(s_info.noti_node, priv_id);
+}
+
+HAPI noti_node_item *quickpanel_noti_node_get_first_noti(void)
+{
+       // get box list
+       Eina_List *l;
+       Eina_List *l_next;
+       Evas_Object *obj = NULL;
+       Eina_List *item_list = NULL;
+       noti_node_item *node = NULL;
+       noti_node_item *node_first_noti = NULL;
+       notification_type_e type = NOTIFICATION_TYPE_NONE;
+       struct appdata *ad = quickpanel_get_app_data();
+
+       item_list = elm_box_children_get(ad->list);
+       retif(item_list == NULL, NULL, "invalid parameter");
+
+       EINA_LIST_FOREACH_SAFE(item_list, l, l_next, obj) {
+               if (obj != NULL) {
+                       node = quickpanel_noti_list_item_node_get(obj);
+                       if (node) {
+                               notification_h noti = node->noti;
+                               if (noti) {
+                                       notification_get_type(noti, &type);
+                                       if (type == NOTIFICATION_TYPE_NOTI) {
+                                               node_first_noti = node;
+                                               break;
+                                       }
+                               }
+                       }
+               }
+       }
+
+       if (item_list != NULL) {
+               eina_list_free(item_list);
+       }
+
+       return node_first_noti;
+}
+
+HAPI void quickpanel_noti_closing_trigger_set(void)
+{
+       struct appdata *ad = quickpanel_get_app_data();
+       quickpanel_noti_listbox_closing_trigger_set(ad->list);
+}
+
+static void _opened(void *data)
+{
+       if (elm_config_access_get() == EINA_TRUE) {
+               elm_access_say(_NOT_LOCALIZED("Notification panel"));
+       }
+}
+
+HAPI void quickpanel_noti_set_clear_all_status()
+{
+       struct appdata *ad = quickpanel_get_app_data();
+       if ((quickpanel_noti_listbox_get_item_count(ad->list) >= 0
+                       || quickpanel_noti_node_get_item_count(s_info.noti_node, NOTIFICATION_TYPE_ONGOING) >= 0)
+                       && quickpanel_noti_node_get_item_count(s_info.noti_node, NOTIFICATION_TYPE_NOTI) <= 0)  {
+               INFO("NOTI SECTION CLEAR ALL HIDE");
+               elm_object_signal_emit(s_info.ongoing_noti_section_view ,
+                               "notifaction,section,clear_all,hide", "base");
+       } else {
+               INFO("NOTI SECTION CLEAR ALL SHOW");
+               elm_object_signal_emit(s_info.ongoing_noti_section_view,
+                               "notifaction,section,clear_all,show", "base");
+       }
+
+}
+
+HAPI void quickpanel_noti_on_clear_all_clicked(void *data, Evas_Object *obj, void *info)
+{
+       quickpanel_media_play_feedback();
+       LOGI("NOTI CLEAR ALL CLICKED");
+
+       DBG("");
+       struct appdata *ad = quickpanel_get_app_data();
+       retif(ad == NULL, , "Invalid parameter!");
+       retif(ad->list == NULL, , "Invalid parameter!");
+
+       quickpanel_noti_closing_trigger_set();
+#ifdef HAVE_X
+       notification_clear(NOTIFICATION_TYPE_NOTI);
+#endif
+       quickpanel_uic_close_quickpanel(EINA_FALSE, EINA_FALSE);
+
+       /*if (s_info.noti_node->n_ongoing == 0)
+       {
+               _ongoing_noti_section_remove();
+       }*/
+}
+
+// TIME REACTION
+
+static void _on_time_changed(keynode_t *key, void *data)
+{
+       struct appdata *ad = data;
+
+       time_t current_time = time(NULL);
+       struct tm loc_time;
+       localtime_r(&current_time, &loc_time);
+
+       if (loc_time.tm_yday != s_info.last_time.tm_yday || loc_time.tm_year != s_info.last_time.tm_year) {
+               _update_notilist(ad);
+       }
+
+       s_info.last_time = loc_time;
+}
+
+static Eina_Bool _notification_time_format_changed_cb(void *data)
+{
+       struct appdata *ad = data;
+
+       _update_notilist(ad);
+
+       return ECORE_CALLBACK_CANCEL;
+}
+
+static void _noti_time_init(void *data)
+{
+       int ret = 0;
+       struct appdata *ad = data;
+       retif_nomsg(ad == NULL, );
+
+       time_t current_time = time(NULL);
+       localtime_r(&current_time, &s_info.last_time);
+
+       ret = vconf_notify_key_changed(VCONFKEY_SETAPPL_TIMEZONE_INT, _on_time_changed, data);
+       msgif(ret != 0, "failed to set key(%s) : %d", VCONFKEY_SETAPPL_TIMEZONE_INT, ret);
+       ret = vconf_notify_key_changed(VCONFKEY_TELEPHONY_SVC_ROAM, _on_time_changed, data);
+       msgif(ret != 0, "failed to set key(%s) : %d", VCONFKEY_TELEPHONY_SVC_ROAM, ret);
+       ret = vconf_notify_key_changed(VCONFKEY_SETAPPL_TIMEZONE_ID, _on_time_changed, data);
+       msgif(ret != 0, "failed to set key(%s) : %d", VCONFKEY_SETAPPL_TIMEZONE_ID, ret);
+}
+
+static void _noti_time_fini(void *data)
+{
+       int ret = 0;
+       struct appdata *ad = data;
+       retif_nomsg(ad == NULL, );
+
+       ret = vconf_ignore_key_changed(VCONFKEY_SETAPPL_TIMEZONE_INT, _on_time_changed);
+       msgif(ret != 0, "failed to set key(%s) : %d", VCONFKEY_SETAPPL_TIMEZONE_INT, ret);
+       ret = vconf_ignore_key_changed(VCONFKEY_SETAPPL_TIMEZONE_ID, _on_time_changed);
+       msgif(ret != 0, "failed to set key(%s) : %d", VCONFKEY_SETAPPL_TIMEZONE_ID, ret);
+       ret = vconf_ignore_key_changed(VCONFKEY_TELEPHONY_SVC_ROAM, _on_time_changed);
+       msgif(ret != 0, "failed to set key(%s) : %d", VCONFKEY_TELEPHONY_SVC_ROAM, ret);
+}
+
+HAPI void quickpanel_noti_update_by_system_time_changed_cb(system_settings_key_e  *key, void *data)
+{
+       struct appdata *ad = data;
+
+#ifdef HAVE_X
+       if (key == SYSTEM_SETTINGS_KEY_TIME_CHANGED
+               ||key == SYSTEM_SETTINGS_KEY_LOCALE_COUNTRY ){
+               _on_time_changed(key,data);
+       } else
+#endif
+       { //key == SYSTEM_SETTINGS_KEY_LOCALE_TIMEFORMAT_24HOUR
+               _notification_time_format_changed_cb(data);
+       }
+}
+
+
+HAPI void quickpanel_noti_init_noti_section(void)
+{
+       if (s_info.ongoing_noti_section_view == NULL) {
+               _ongoing_noti_section_add();
+       }
 }
index 5bac7b0..7c4cda2 100755 (executable)
@@ -1,25 +1,45 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ * Copyright (c) 2009-2015 Samsung Electronics Co., Ltd All Rights Reserved
  *
- * Licensed under the Flora License, Version 1.1 (the License);
+ * 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,
+ * 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_H__
 #define __NOTI_H__
 
 #include "quickpanel-ui.h"
+#include "noti_node.h"
+#include <system_settings.h>
 
 #define NOTI_PRESS_BG 0
 #define NOTI_PRESS_BUTTON_1 1
-char *quickpanel_noti_get_time(time_t t, char *buf, int buf_len);
+
+#define QP_PRELOAD_NOTI_ICON_PATH "/usr/apps/org.tizen.quickpanel/shared/res/noti_icons"
+
+int quickpanel_noti_get_count(void);
+int quickpanel_noti_get_geometry(int *limit_h, int *limit_partial_h, int *limit_partial_w);
+void quickpanel_noti_closing_trigger_set(void);
+
+noti_node_item *quickpanel_noti_node_get_by_priv_id(int priv_id);
+noti_node_item *quickpanel_noti_node_get_first_noti(void);
+
+void quickpanel_noti_set_clear_all_status();
+
+void quickpanel_noti_on_clear_all_clicked(void *data, Evas_Object *obj, void *info);
+int quickpanel_noti_get_type_count(notification_type_e noti_type);
+void quickpanel_noti_init_noti_section(void);
+void quickpanel_noti_update_by_system_time_changed_cb(system_settings_key_e  *key, void *data);
+
 #endif
index 3ca6cb8..00cd204 100755 (executable)
@@ -1,21 +1,23 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ * Copyright (c) 2009-2015 Samsung Electronics Co., Ltd All Rights Reserved
  *
- * Licensed under the Flora License, Version 1.1 (the License);
+ * 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,
+ * 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 <string.h>
-#include <Ecore_X.h>
+#include <notification.h>
 
 #include "quickpanel-ui.h"
 #include "common.h"
 #include "noti_node.h"
 #include "noti.h"
 #include "noti_util.h"
+#ifdef QP_SCREENREADER_ENABLE
+#include "accessibility.h"
+#endif
 #ifdef QP_ANIMATED_IMAGE_ENABLE
 #include "animated_image.h"
 #endif
+#include "animated_icon.h"
 
 #define IMAGE_NO_RESIZE 0
 #define IMAGE_RESIZE 1
 
+#define IMAGE_BY_FILE 0
+#define IMAGE_BY_BUFFER 1
+
 #define TEXT_NO_CR 0
 #define TEXT_CR 1
 
-static void _noti_box_call_item_cb(Evas_Object *noti_box, const char *emission) {
+#define THRESHOLD_DRAGGING_TIME_LIMIT 1.0
+#define LIMIT_ZOOM_RATIO 0.55
+#define LIMIT_FADEOUT_RATIO 0.1
+#define THRESHOLD_DELETE_START 80
+#define THRESHOLD_DELETE_START_Y_LIMIT 60
+#define THRESHOLD_DISTANCE ((BOX_WIDTH_P >> 1))
+
+static struct _info {
+       int box_debug_step;
+} s_info = {
+       .box_debug_step = 0,
+};
+
+static Evas_Object *_check_duplicated_image_loading(Evas_Object *obj, const char *part, const char *file_path)
+{
+       Evas_Object *old_ic = NULL;
+       const char *old_ic_path = NULL;
+
+       retif(obj == NULL, NULL, "Invalid parameter!");
+       retif(part == NULL, NULL, "Invalid parameter!");
+       retif(file_path == NULL, NULL, "Invalid parameter!");
+
+       old_ic = elm_object_part_content_get(obj, part);
+
+       if (quickpanel_animated_icon_is_same_icon(old_ic, file_path) == 1) {
+               return old_ic;
+       }
+
+       if (old_ic != NULL) {
+               elm_image_file_get(old_ic, &old_ic_path, NULL);
+               if (old_ic_path != NULL) {
+                       if (strcmp(old_ic_path, file_path) == 0)
+                               return old_ic;
+               }
+
+               elm_object_part_content_unset(obj, part);
+               evas_object_del(old_ic);
+               old_ic = NULL;
+       }
+
+       return NULL;
+}
+
+static void _noti_box_call_item_cb(Evas_Object *noti_box, const char *emission)
+{
        retif(noti_box == NULL, , "invalid parameter");
        retif(emission == NULL, , "invalid parameter");
 
-       INFO("recevied emission:%s", emission);
+       double time_current = 0.0;
+       static double time_called = 0.0;
+
+       if (time_called == 0) {
+               time_called = ecore_loop_time_get();
+       } else {
+               time_current = ecore_loop_time_get();
+               if ((time_current - time_called) < 0.4) {
+                       DBG("click rejected");
+                       return;
+               }
+       }
 
        void (*cb)(void *data, Evas_Object *obj) = NULL;
        noti_box_h *data = NULL;
-
        data = evas_object_data_get(noti_box, E_DATA_NOTI_BOX_H);
+       retif(data == NULL, , "invalid parameter");
 
        if (strncmp(emission,"selected", strlen("selected")) == 0) {
+               if (data->need_to_cancel_press > 0) {
+                       data->need_to_cancel_press = 0;
+                       return;
+               }
+
                cb = evas_object_data_get(noti_box, E_DATA_CB_SELECTED_ITEM);
 
-               if (cb != NULL && data != NULL) {
-                       cb(data->data, noti_box);
+               if (cb != NULL) {
+                       cb(data->noti_node, noti_box);
                }
-       }
-       if (strncmp(emission,"button_1", strlen("button_1")) == 0) {
+               time_called = time_current;
+       } else if (strncmp(emission,"button_1", strlen("button_1")) == 0) {
+               if (data->need_to_cancel_press > 0) {
+                       data->need_to_cancel_press = 0;
+                       return;
+               }
+
                cb = evas_object_data_get(noti_box, E_DATA_CB_BUTTON_1);
 
-               if (cb != NULL && data != NULL) {
-                       cb(data->data, noti_box);
+               if (cb != NULL) {
+                       cb(data->noti_node, noti_box);
                }
-       }
-       if (strncmp(emission,"deleted", strlen("deleted")) == 0) {
+               time_called = time_current;
+       } else if (strncmp(emission,"deleted", strlen("deleted")) == 0) {
+               data->need_to_cancel_press = 0;
                cb = evas_object_data_get(noti_box, E_DATA_CB_DELETED_ITEM);
 
                if (cb != NULL && data != NULL) {
-                       cb(data->data, noti_box);
+                       cb(data->noti_node, noti_box);
                }
        }
 }
 
+noti_box_h *_box_handler_get(Evas_Object *obj)
+{
+
+       return evas_object_data_get(obj, E_DATA_NOTI_BOX_H);
+}
+
+static void _attach_memfile(Evas_Object *noti_box, notification_image_type_e image_type, void *memfile)
+{
+       char buf[32] = {0,};
+
+       snprintf(buf, sizeof(buf), "%s_%d", E_DATA_NOTI_BOX_MB_BG, image_type);
+
+       void *memfile_attached = evas_object_data_get(noti_box, buf);
+       if (memfile_attached != NULL) {
+               free(memfile_attached);
+       }
+       evas_object_data_set(noti_box, buf, memfile);
+}
+
+static void _deattach_memfile_all(Evas_Object *noti_box)
+{
+       char buf[32] = {0,};
+       void *memfile = NULL;
+       int i = NOTIFICATION_TEXT_TYPE_NONE + 1;
+
+       for ( ; i < NOTIFICATION_TEXT_TYPE_MAX; i++) {
+               snprintf(buf, sizeof(buf), "%s_%d", E_DATA_NOTI_BOX_MB_BG, i);
+
+               memfile = evas_object_data_get(noti_box, buf);
+               if (memfile != NULL) {
+                       free(memfile);
+               }
+               evas_object_data_set(noti_box, buf, NULL);
+               evas_object_data_del(noti_box, buf);
+       }
+}
+
+static void _text_clean_all(Evas_Object *noti_box)
+{
+       int i = 0;
+       const char *text_parts[] = {
+               "object.text.title",
+               "object.text.contents",
+               "object.text.contents.multiline.short",
+               "object.text.contents.multiline",
+               "object.text.count",
+               "object.text.info.1",
+               "object.text.info.1.short",
+               "object.text.info.1.multiline",
+               "object.text.info.sub.1",
+               "object.text.info.2",
+               "object.text.info.2.short",
+               "object.text.info.sub.2",
+               NULL
+       };
+
+       for (i = 0; text_parts[i] != NULL; i++) {
+               elm_object_part_text_set(noti_box, text_parts[i], "");
+               elm_object_part_text_set(noti_box, text_parts[i], NULL);
+       }
+}
+
 static void _signal_cb(void *data, Evas_Object *o, const char *emission, const char *source)
 {
        retif(data == NULL, , "invalid parameter");
@@ -78,8 +215,317 @@ static void _signal_cb(void *data, Evas_Object *o, const char *emission, const c
        _noti_box_call_item_cb(o, emission);
 }
 
+#ifdef QP_SCREENREADER_ENABLE
+static inline void _check_and_add_to_buffer(notification_h noti,
+               notification_text_type_e text_type, Eina_Strbuf *str_buf)
+{
+       char buf[256] = { 0, };
+       char buf_number[QP_UTIL_PHONE_NUMBER_MAX_LEN * 2] = { 0, };
+
+       char *text = NULL;
+       time_t time = 0;
 
-HAPI Evas_Object *noti_box_create(Evas_Object *parent, notification_ly_type_e layout) {
+       if (notification_get_time_from_text(noti, text_type, &time) == NOTIFICATION_ERROR_NONE) {
+               if ((int)time > 0) {
+                       quickpanel_noti_util_get_time(time, buf, sizeof(buf));
+                       text = buf;
+               }
+       } else {
+               notification_get_text(noti, text_type, &text);
+       }
+
+       if (text != NULL) {
+               if (strlen(text) > 0) {
+                       if (quickpanel_common_util_is_phone_number(text)) {
+                               quickpanel_common_util_phone_number_tts_make(buf_number, text,
+                                               (QP_UTIL_PHONE_NUMBER_MAX_LEN * 2) - 1);
+                               DBG("[%s]", buf_number);
+                               eina_strbuf_append(str_buf, buf_number);
+                       } else {
+                               eina_strbuf_append(str_buf, text);
+                       }
+                       eina_strbuf_append_char(str_buf, '\n');
+               }
+       }
+}
+
+static void _noti_box_set_rs_layout_single(Evas_Object *noti_box,
+               notification_h noti)
+{
+       Evas_Object *ao = NULL;
+       Eina_Strbuf *str_buf = NULL;
+       char *dir = NULL;
+       char *domain = NULL;
+
+       notification_get_text_domain(noti, &domain, &dir);
+       if (domain != NULL && dir != NULL) {
+               bindtextdomain(domain, dir);
+       }
+
+       str_buf = eina_strbuf_new();
+       retif(str_buf == NULL, , "invalid parameter");
+
+       _check_and_add_to_buffer(noti, NOTIFICATION_TEXT_TYPE_TITLE, str_buf);
+       _check_and_add_to_buffer(noti, NOTIFICATION_TEXT_TYPE_CONTENT, str_buf);
+       _check_and_add_to_buffer(noti, NOTIFICATION_TEXT_TYPE_INFO_1, str_buf);
+       _check_and_add_to_buffer(noti, NOTIFICATION_TEXT_TYPE_INFO_SUB_1, str_buf);
+       _check_and_add_to_buffer(noti, NOTIFICATION_TEXT_TYPE_INFO_2, str_buf);
+       _check_and_add_to_buffer(noti, NOTIFICATION_TEXT_TYPE_INFO_SUB_2, str_buf);
+
+       if (str_buf != NULL) {
+               ao = quickpanel_accessibility_screen_reader_object_get(noti_box,
+                               SCREEN_READER_OBJ_TYPE_ELM_OBJECT, "focus", noti_box);
+               if (ao != NULL) {
+                       elm_access_info_set(ao, ELM_ACCESS_TYPE, _("IDS_QP_BUTTON_NOTIFICATION"));
+                       elm_access_info_set(ao, ELM_ACCESS_INFO, eina_strbuf_string_get(str_buf));
+               }
+
+               eina_strbuf_free(str_buf);
+       }
+}
+
+static void _noti_box_set_rs_layout_multi(Evas_Object *noti_box,
+               notification_h noti)
+{
+       DBG("");
+
+       Evas_Object *ao = NULL;
+       Eina_Strbuf *str_buf = NULL;
+       char *dir = NULL;
+       char *domain = NULL;
+
+       notification_get_text_domain(noti, &domain, &dir);
+       if (domain != NULL && dir != NULL) {
+               bindtextdomain(domain, dir);
+       }
+
+       str_buf = eina_strbuf_new();
+       retif(str_buf == NULL, , "invalid parameter");
+
+       _check_and_add_to_buffer(noti, NOTIFICATION_TEXT_TYPE_TITLE, str_buf);
+       _check_and_add_to_buffer(noti, NOTIFICATION_TEXT_TYPE_CONTENT, str_buf);
+       _check_and_add_to_buffer(noti, NOTIFICATION_TEXT_TYPE_INFO_1, str_buf);
+       _check_and_add_to_buffer(noti, NOTIFICATION_TEXT_TYPE_INFO_SUB_1, str_buf);
+       _check_and_add_to_buffer(noti, NOTIFICATION_TEXT_TYPE_INFO_2, str_buf);
+       _check_and_add_to_buffer(noti, NOTIFICATION_TEXT_TYPE_INFO_SUB_2, str_buf);
+
+       if (str_buf != NULL) {
+               ao = quickpanel_accessibility_screen_reader_object_get(noti_box,
+                               SCREEN_READER_OBJ_TYPE_ELM_OBJECT, "focus", noti_box);
+               if (ao != NULL) {
+                       elm_access_info_set(ao, ELM_ACCESS_TYPE, _("IDS_QP_BUTTON_NOTIFICATION"));
+                       elm_access_info_set(ao, ELM_ACCESS_INFO, eina_strbuf_string_get(str_buf));
+               }
+
+               eina_strbuf_free(str_buf);
+       }
+}
+
+static void _noti_box_set_rs_layout_thumbnail(Evas_Object *noti_box,
+               notification_h noti)
+{
+       DBG("");
+
+       Evas_Object *ao = NULL;
+       Eina_Strbuf *str_buf = NULL;
+       char *dir = NULL;
+       char *domain = NULL;
+
+       notification_get_text_domain(noti, &domain, &dir);
+       if (domain != NULL && dir != NULL) {
+               bindtextdomain(domain, dir);
+       }
+
+       str_buf = eina_strbuf_new();
+       retif(str_buf == NULL, , "invalid parameter");
+
+       _check_and_add_to_buffer(noti, NOTIFICATION_TEXT_TYPE_TITLE, str_buf);
+       _check_and_add_to_buffer(noti, NOTIFICATION_TEXT_TYPE_CONTENT, str_buf);
+
+       if (str_buf != NULL) {
+               DBG("access:%s", eina_strbuf_string_get(str_buf));
+
+               ao = quickpanel_accessibility_screen_reader_object_get(noti_box,
+                               SCREEN_READER_OBJ_TYPE_ELM_OBJECT, "focus", noti_box);
+               if (ao != NULL) {
+                       elm_access_info_set(ao, ELM_ACCESS_TYPE, _("IDS_QP_BUTTON_NOTIFICATION"));
+                       elm_access_info_set(ao, ELM_ACCESS_INFO, eina_strbuf_string_get(str_buf));
+               }
+
+               eina_strbuf_free(str_buf);
+       }
+}
+#endif
+
+static Eina_Bool _drag_cancel_cb(void *data)
+{
+       QP_VI *vi = data;
+       noti_box_h *box_h = NULL;
+       retif(vi == NULL, EINA_FALSE, "invalid parameter");
+
+       if (vi->target != NULL) {
+               DBG("Canceling dragging");
+
+               box_h = _box_handler_get(vi->target);
+               retif(box_h == NULL, EINA_FALSE, "box_h is NULL");
+
+               box_h->state = NOTIBOX_STATE_GETSTURE_CANCELED;
+               evas_object_map_enable_set(vi->target, EINA_FALSE);
+
+               box_h->vi = NULL;
+       }
+
+       return EINA_TRUE;
+}
+
+static void _mouse_down_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+       int w = 0, h = 0;
+       noti_box_h *box_h = NULL;
+       Evas_Event_Mouse_Down *ev = (Evas_Event_Mouse_Down *)event_info;
+       retif(ev == NULL, , "event_info is NULL");
+
+       box_h = _box_handler_get(obj);
+       retif(box_h == NULL, , "box_h is NULL");
+
+       evas_object_geometry_get(obj, NULL, NULL, &w, &h);
+
+       box_h->press_x = ev->canvas.x;
+       box_h->press_y = ev->canvas.y;
+       box_h->obj_w = w;
+       box_h->obj_h = h;
+       box_h->state = NOTIBOX_STATE_NORMAL;
+
+       s_info.box_debug_step = 1;
+       SDBG("mouse down:%d %d %d", box_h->obj_w, box_h->obj_h, box_h->state);
+
+       if (box_h->vi != NULL) {
+               quickpanel_vi_user_event_del(box_h->vi);
+               box_h->vi = NULL;
+       }
+
+       box_h->need_to_cancel_press = 0;
+}
+
+static void _mouse_move_cb(void* data, Evas* e, Evas_Object* obj, void* event_info)
+{
+       int delta_x = 0;
+       int delta_y = 0;
+       static int delta_prev = -1;
+       int x = 0, y = 0;
+       int w = 0, h = 0;
+       noti_box_h *box_h = NULL;
+       double zoom_ratio = 0.0;
+       double color_ratio = 0.0;
+       Evas_Map *map = NULL;
+       Evas_Event_Mouse_Move* ev = event_info;
+       QP_VI *vi = NULL;
+       retif(ev == NULL, , "event_info is NULL");
+
+       box_h = _box_handler_get(obj);
+       retif(box_h == NULL, , "box_h is NULL");
+
+       if (box_h->state == NOTIBOX_STATE_GETSTURE_CANCELED) {
+               DBG("deletion has been canceled");
+               return;
+       }
+
+       evas_object_geometry_get(obj, &x, &y, &w, &h);
+       delta_x = abs(box_h->press_x - ev->cur.output.x);
+       delta_y = abs(box_h->press_y - ev->cur.output.y);
+
+       if (s_info.box_debug_step == 1) {
+               SDBG("mouse move:%d %d %d", delta_x, delta_y, box_h->state);
+               s_info.box_debug_step = 2;
+       }
+
+       if (box_h->state == NOTIBOX_STATE_NORMAL) {
+               if (delta_x >= THRESHOLD_DELETE_START
+                               && delta_y <= THRESHOLD_DELETE_START_Y_LIMIT) {
+                       DBG("start a deletion");
+                       box_h->state = NOTIBOX_STATE_GETSTURE_WAIT;
+
+                       vi = quickpanel_vi_new_with_data(
+                                       VI_OP_DELETE,
+                                       QP_ITEM_TYPE_NOTI,
+                                       NULL,
+                                       obj,
+                                       NULL,
+                                       NULL,
+                                       NULL,
+                                       _drag_cancel_cb,
+                                       vi,
+                                       NULL,
+                                       0,
+                                       0);
+                       box_h->vi = vi;
+                       box_h->need_to_cancel_press = 1;
+                       quickpanel_vi_user_event_add(vi);
+               }
+       } else if (box_h->state == NOTIBOX_STATE_GETSTURE_WAIT) {
+               if (delta_prev != delta_x) {
+                       delta_x = (delta_x > THRESHOLD_DISTANCE) ? THRESHOLD_DISTANCE : delta_x;
+                       delta_x = (delta_x <= 0) ? 1 : delta_x;
+                       zoom_ratio = (1.0 - LIMIT_ZOOM_RATIO) * (1.0 - (double)delta_x / (double)THRESHOLD_DISTANCE);
+                       color_ratio = LIMIT_FADEOUT_RATIO +
+                                       ((1.0 - LIMIT_FADEOUT_RATIO) * (1.0 - ((double)delta_x / (double)(THRESHOLD_DISTANCE))));
+
+                       map = evas_map_new(4);
+                       if (map != NULL) {
+                               evas_map_util_points_populate_from_object(map, obj);
+                               evas_map_util_zoom(map
+                                               , LIMIT_ZOOM_RATIO + zoom_ratio
+                                               , LIMIT_ZOOM_RATIO + zoom_ratio
+                                               , x + (w >> 1)
+                                               , y + (h >> 1));
+                               evas_map_util_points_color_set(map
+                                               , 255 * color_ratio
+                                               , 255 * color_ratio
+                                               , 255 * color_ratio
+                                               , 255 * color_ratio);
+                               evas_object_map_enable_set(obj, EINA_TRUE);
+                               evas_object_map_set(obj, map);
+                               evas_map_free(map);
+                               quickpanel_list_util_scroll_freeze_set(EINA_TRUE);
+                       }
+                       delta_prev = delta_x;
+               }
+       }
+
+       box_h->distance = delta_x;
+}
+
+static void _mouse_up_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+       noti_box_h *box_h = NULL;
+       box_h = _box_handler_get(obj);
+       retif(box_h == NULL, , "box_h is NULL");
+
+       quickpanel_list_util_scroll_freeze_set(EINA_FALSE);
+
+       if (s_info.box_debug_step == 2) {
+               SDBG("mouse up:%d", box_h->state);
+               s_info.box_debug_step = 3;
+       }
+
+       if (box_h->state == NOTIBOX_STATE_GETSTURE_WAIT) {
+               if (box_h->distance >= (THRESHOLD_DISTANCE - 10)) {
+                       _noti_box_call_item_cb(obj, "deleted");
+               } else {
+                       evas_object_map_enable_set(obj, EINA_FALSE);
+               }
+
+               if (box_h->vi != NULL) {
+                       quickpanel_vi_user_event_del(box_h->vi);
+                       box_h->vi = NULL;
+               }
+       }
+
+       box_h->state = NOTIBOX_STATE_NORMAL;
+}
+
+HAPI Evas_Object *quickpanel_noti_box_create(Evas_Object *parent, notification_ly_type_e layout)
+{
        Evas_Object *box = NULL;
 
        box = elm_layout_add(parent);
@@ -100,11 +546,15 @@ HAPI Evas_Object *noti_box_create(Evas_Object *parent, notification_ly_type_e la
        evas_object_show(box);
 
        noti_box_h *box_h = (noti_box_h *) malloc(sizeof(noti_box_h));
+       retif(box_h == NULL, NULL, "failed to allocate a memory");
+
+       box_h->state = NOTIBOX_STATE_NORMAL;
        box_h->layout = layout;
-       box_h->status = STATE_NORMAL;
-       box_h->data = NULL;
+       box_h->noti_node = NULL;
        evas_object_data_set(box, E_DATA_NOTI_BOX_H, box_h);
-       INFO("created notibox:%p", box);
+
+       Evas_Object *focus = quickpanel_accessibility_ui_get_focus_object(box);
+       elm_object_part_content_set(box, "focus", focus);
 
        //add event
        elm_object_signal_callback_add(box,
@@ -130,56 +580,74 @@ HAPI Evas_Object *noti_box_create(Evas_Object *parent, notification_ly_type_e la
                        parent
        );
 
+       evas_object_event_callback_add(box, EVAS_CALLBACK_MOUSE_DOWN, _mouse_down_cb, NULL);
+       evas_object_event_callback_add(box, EVAS_CALLBACK_MOUSE_MOVE, _mouse_move_cb, NULL);
+       evas_object_event_callback_add(box, EVAS_CALLBACK_MOUSE_UP, _mouse_up_cb, NULL);
+
        return box;
 }
 
-static Evas_Object *_set_image(Evas_Object *noti_box, notification_h noti,
-               notification_image_type_e image_type, const char *part, int is_stretch) {
-
+static Evas_Object *_set_image(Evas_Object *noti_box, notification_h noti, char *image_path,
+               notification_image_type_e image_type, const char *part, int is_stretch, int is_use_buffer)
+{
        Evas_Object *content = NULL;
        char *image = NULL;
-       int w = 0, h =0;
-       int part_w = 0, part_h =0;
-       double scale = 1.0;
-
+       char ext[32] = {0,};
+       void *memfile = NULL;
+       size_t memfile_size = 0;
        retif(part == NULL, NULL,"invalid parameter");
 
-       struct appdata *ad = quickpanel_get_app_data();
-       if (ad != NULL) {
-               scale = ad->scale;
-       }
-
        notification_get_image(noti, image_type, &image);
+       if (image == NULL && image_path != NULL) {
+               image = image_path;
+       }
 
        if (image != NULL) {
-               content = elm_image_add(noti_box);
-               elm_image_file_set(content, image, image);
+               if (is_use_buffer == IMAGE_BY_BUFFER) {
+                       content = quickpanel_animated_icon_get(noti_box, image);
+                       if (content == NULL) {
+                               content = elm_image_add(noti_box);
+
+                               memfile = quickpanel_common_ui_get_buffer_from_image(image, &memfile_size, ext, sizeof(ext));
+                               if (memfile != NULL && memfile_size > 0) {
+                                       _attach_memfile(noti_box, image_type, memfile);
+                                       if (elm_image_memfile_set(content, memfile, memfile_size, ext,
+                                                       quickpanel_animated_image_get_groupname(image)) == EINA_FALSE) {
+                                               ERR("failed to set memfile set");
+                                               elm_image_file_set(content, image,
+                                                               quickpanel_animated_image_get_groupname(image));
+                                       }
+                               } else {
+                                       if (memfile) {
+                                               free(memfile);  // due to prevent
+                                       }
+                                       elm_image_file_set(content, image,
+                                                       quickpanel_animated_image_get_groupname(image));
+                               }
+                       }
+               } else {
+                       content = _check_duplicated_image_loading(noti_box, part, image);
+                       if (content == NULL) {
+                               content = quickpanel_animated_icon_get(noti_box, image);
+                               if (content == NULL) {
+                                       content = elm_image_add(noti_box);
+
+                                       elm_image_file_set(content, image,
+                                                       quickpanel_animated_image_get_groupname(image));
+                               }
+                       } else {
+                               return content;
+                       }
+               }
                if (is_stretch == IMAGE_RESIZE) {
                        elm_image_aspect_fixed_set(content, EINA_FALSE);
                        elm_image_resizable_set(content, EINA_TRUE, EINA_TRUE);
                } else {
-                       elm_image_object_size_get(content, &w, &h);
-
-                       if (strcmp(part, BOX_PART_ICON) == 0) {
-                               part_w = scale * BOX_ICON_SIZE_W;
-                               part_h = scale * BOX_ICON_SIZE_H;
-                       }
-                       if (strcmp(part, BOX_PART_ICON_SUB) == 0) {
-                               part_w = scale * BOX_ICON_SUB_SIZE_W;
-                               part_h = scale * BOX_ICON_SUB_SIZE_H;
-                       }
-
-                       if (part_w != 0 && part_h != 0) {
-                               if (w > part_w || h > part_h) {
-                                       elm_image_aspect_fixed_set(content, EINA_FALSE);
-                                       elm_image_resizable_set(content, EINA_TRUE, EINA_TRUE);
-                               } else {
-                                       elm_image_aspect_fixed_set(content, EINA_TRUE);
-                                       elm_image_resizable_set(content, EINA_FALSE, EINA_FALSE);
-                               }
+                       if (strcmp(part, BOX_PART_ICON) == 0 || strcmp(part, BOX_PART_ICON_SUB) == 0) {
+                               elm_image_resizable_set(content, EINA_FALSE, EINA_TRUE);
                        } else {
                                elm_image_aspect_fixed_set(content, EINA_TRUE);
-                               elm_image_resizable_set(content, EINA_FALSE, EINA_FALSE);
+                               elm_image_fill_outside_set(content, EINA_TRUE);
                        }
                }
 
@@ -191,16 +659,19 @@ static Evas_Object *_set_image(Evas_Object *noti_box, notification_h noti,
 }
 
 static int _set_text(Evas_Object *noti_box, notification_h noti,
-               notification_text_type_e text_type, const char *part, int is_need_effect, int is_support_cr) {
+               notification_text_type_e text_type, const char *part, char *str, int is_need_effect, int is_support_cr)
+{
        char buf[128] = { 0, };
 
        char *text = NULL;
        char *text_utf8 = NULL;
        time_t time = 0;
 
-       if (notification_get_time_from_text(noti, text_type, &time) == NOTIFICATION_ERROR_NONE) {
+       if (str != NULL) {
+               text = str;
+       } else if (notification_get_time_from_text(noti, text_type, &time) == NOTIFICATION_ERROR_NONE) {
                if ((int)time > 0) {
-                       quickpanel_noti_get_time(time, buf, sizeof(buf));
+                       quickpanel_noti_util_get_time(time, buf, sizeof(buf));
                        text = buf;
                }
        } else {
@@ -219,14 +690,15 @@ static int _set_text(Evas_Object *noti_box, notification_h noti,
                                        elm_object_part_text_set(noti_box, part, text);
                                }
                        } else {
-                               quickpanel_util_char_replace(text, _NEWLINE, _SPACE);
+                               quickpanel_common_util_char_replace(text, _NEWLINE, _SPACE);
                                elm_object_part_text_set(noti_box, part, text);
                        }
 
-                       if (is_need_effect == 1)
+                       if (is_need_effect == 1) {
                                elm_object_signal_emit(noti_box, "object.show.effect", part);
-                       else
+                       } else {
                                elm_object_signal_emit(noti_box, "object.show", part);
+                       }
                }
 
                return strlen(text);
@@ -236,7 +708,8 @@ static int _set_text(Evas_Object *noti_box, notification_h noti,
 }
 
 static int _check_text_null(notification_h noti,
-               notification_text_type_e text_type) {
+               notification_text_type_e text_type)
+{
        char *text = NULL;
 
        notification_get_text(noti, text_type, &text);
@@ -249,7 +722,8 @@ static int _check_text_null(notification_h noti,
 }
 
 static int _check_image_null(notification_h noti,
-               notification_image_type_e image_type) {
+               notification_image_type_e image_type)
+{
        char *image = NULL;
 
        notification_get_image(noti, image_type, &image);
@@ -266,12 +740,16 @@ static int _check_image_null(notification_h noti,
 }
 
 static void _noti_box_set_layout_single(Evas_Object *noti_box,
-               notification_h noti) {
+               notification_h noti)
+{
        char *dir = NULL;
        char *domain = NULL;
+       char *pkgname = NULL;
+       char *icon_path = NULL;
        int is_need_effect = 0;
        int is_contents_only = 0;
        int is_sub_info_1_only = 0;
+       int is_contents_and_sub_info_2 = 0;
        Evas_Object *icon = NULL;
 
        if (_check_image_null(noti, NOTIFICATION_IMAGE_TYPE_BACKGROUND) == 0) {
@@ -292,89 +770,134 @@ static void _noti_box_set_layout_single(Evas_Object *noti_box,
                is_sub_info_1_only = 1;
        }
 
+       if (_check_text_null(noti, NOTIFICATION_TEXT_TYPE_INFO_1) == 1
+               && _check_text_null(noti, NOTIFICATION_TEXT_TYPE_INFO_SUB_1) == 1
+               && (_check_text_null(noti, NOTIFICATION_TEXT_TYPE_INFO_2) != 1
+               || _check_text_null(noti, NOTIFICATION_TEXT_TYPE_INFO_SUB_2) != 1)) {
+               is_contents_and_sub_info_2 = 1;
+       }
+
        DBG("is_contents_only:%d is_sub_info_1_only:%d", is_contents_only, is_sub_info_1_only);
 
+       notification_get_pkgname(noti, &pkgname);
        notification_get_text_domain(noti, &domain, &dir);
-       if (domain != NULL && dir != NULL)
+       if (domain != NULL && dir != NULL) {
                bindtextdomain(domain, dir);
+       }
 
        _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_TITLE,
-                       "object.text.title", is_need_effect, TEXT_CR);
+                       "object.text.title", NULL, is_need_effect, TEXT_CR);
 
        if (is_contents_only == 1) {
                _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_CONTENT,
-                               "object.text.contents.multiline", is_need_effect, TEXT_CR);
+                               "object.text.contents.multiline", NULL, is_need_effect, TEXT_CR);
        } else {
-               _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_CONTENT,
-                               "object.text.contents", is_need_effect, TEXT_NO_CR);
+               if (is_contents_and_sub_info_2 == 1) {
+                       _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_CONTENT,
+                                       "object.text.contents.multiline.short", NULL, is_need_effect, TEXT_NO_CR);
+               } else {
+                       _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_CONTENT,
+                                       "object.text.contents", NULL, is_need_effect, TEXT_NO_CR);
+               }
 
                if (is_sub_info_1_only == 1) {
                        _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_INFO_1,
-                                                                               "object.text.info.1.multiline", is_need_effect, TEXT_CR);
+                                                                               "object.text.info.1.multiline", NULL, is_need_effect, TEXT_CR);
                } else {
                        if (_check_text_null(noti, NOTIFICATION_TEXT_TYPE_INFO_1) == 0) {
                                if (_check_text_null(noti, NOTIFICATION_TEXT_TYPE_INFO_SUB_1) == 1) {
                                        _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_INFO_1,
-                                                       "object.text.info.1", is_need_effect, TEXT_NO_CR);
+                                                       "object.text.info.1", NULL, is_need_effect, TEXT_NO_CR);
                                } else {
                                        _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_INFO_1,
-                                                       "object.text.info.1.short", is_need_effect, TEXT_NO_CR);
+                                                       "object.text.info.1.short", NULL, is_need_effect, TEXT_NO_CR);
                                        _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_INFO_SUB_1,
-                                                       "object.text.info.sub.1", is_need_effect, TEXT_NO_CR);
+                                                       "object.text.info.sub.1", NULL, is_need_effect, TEXT_NO_CR);
                                }
                        }
                        _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_INFO_2,
-                                       "object.text.info.2", is_need_effect, TEXT_NO_CR);
+                                       "object.text.info.2", NULL, is_need_effect, TEXT_NO_CR);
                }
        }
 
        if (_check_image_null(noti, NOTIFICATION_IMAGE_TYPE_THUMBNAIL) == 0) {
-               _set_image(noti_box, noti, NOTIFICATION_IMAGE_TYPE_ICON,
-                               "object.icon.sub", IMAGE_NO_RESIZE);
-               icon = _set_image(noti_box, noti, NOTIFICATION_IMAGE_TYPE_THUMBNAIL,
-                               "object.icon", IMAGE_NO_RESIZE);
+               _set_image(noti_box, noti, NULL, NOTIFICATION_IMAGE_TYPE_ICON,
+                               "object.icon.sub", IMAGE_NO_RESIZE, IMAGE_BY_FILE);
+               icon = _set_image(noti_box, noti, NULL, NOTIFICATION_IMAGE_TYPE_THUMBNAIL,
+                               "object.icon", IMAGE_NO_RESIZE, IMAGE_BY_FILE);
 #ifdef QP_ANIMATED_IMAGE_ENABLE
                quickpanel_animated_image_add(icon);
 #endif
        } else {
-               icon = _set_image(noti_box, noti, NOTIFICATION_IMAGE_TYPE_ICON,
-                               "object.icon", IMAGE_NO_RESIZE);
+               icon = _set_image(noti_box, noti, NULL, NOTIFICATION_IMAGE_TYPE_ICON,
+                               "object.icon", IMAGE_NO_RESIZE, IMAGE_BY_FILE);
 #ifdef QP_ANIMATED_IMAGE_ENABLE
                quickpanel_animated_image_add(icon);
 #endif
-               _set_image(noti_box, noti, NOTIFICATION_IMAGE_TYPE_ICON_SUB,
-                               "object.icon.sub", IMAGE_NO_RESIZE);
+               _set_image(noti_box, noti, NULL, NOTIFICATION_IMAGE_TYPE_ICON_SUB,
+                               "object.icon.sub", IMAGE_NO_RESIZE, IMAGE_BY_FILE);
        }
-       _set_image(noti_box, noti, NOTIFICATION_IMAGE_TYPE_BACKGROUND,
-                       "object.icon.background", IMAGE_RESIZE);
+       _set_image(noti_box, noti, NULL, NOTIFICATION_IMAGE_TYPE_BACKGROUND,
+                       "object.icon.background", IMAGE_NO_RESIZE, IMAGE_BY_BUFFER);
 
-       if (_check_image_null(noti, NOTIFICATION_IMAGE_TYPE_BACKGROUND) == 0) {
-               elm_object_signal_emit(noti_box, "box.show.dim", "box.prog");
-       }
-       if (_check_image_null(noti, NOTIFICATION_IMAGE_TYPE_ICON) == 1
+       if (_check_image_null(noti, NOTIFICATION_IMAGE_TYPE_BACKGROUND) == 1
+                       && _check_image_null(noti, NOTIFICATION_IMAGE_TYPE_ICON) == 1
+                       && _check_image_null(noti, NOTIFICATION_IMAGE_TYPE_ICON_SUB) == 1
                        && _check_image_null(noti, NOTIFICATION_IMAGE_TYPE_THUMBNAIL) == 1) {
-               elm_object_signal_emit(noti_box, "box.hide.icon.bg", "box.prog");
-       }
-       if (_check_image_null(noti, NOTIFICATION_IMAGE_TYPE_ICON_SUB) == 0
-                       || _check_image_null(noti, NOTIFICATION_IMAGE_TYPE_THUMBNAIL) == 0) {
-               elm_object_signal_emit(noti_box, "box.show.sub.bg", "box.prog");
+
+               icon_path = quickpanel_common_ui_get_pkginfo_icon(pkgname);
+               if (icon_path != NULL) {
+                       _set_image(noti_box, NULL,
+                                       icon_path, NOTIFICATION_IMAGE_TYPE_ICON,
+                                       "object.icon", IMAGE_NO_RESIZE, IMAGE_BY_FILE);
+                       free(icon_path);
+               }
+       } else {
+               if (_check_image_null(noti, NOTIFICATION_IMAGE_TYPE_BACKGROUND) == 0) {
+                       elm_object_signal_emit(noti_box, "box.show.dim", "box.prog");
+               }
+               if (_check_image_null(noti, NOTIFICATION_IMAGE_TYPE_ICON) == 1
+                               && _check_image_null(noti, NOTIFICATION_IMAGE_TYPE_THUMBNAIL) == 1) {
+                       elm_object_signal_emit(noti_box, "box.hide.icon.bg", "box.prog");
+                       elm_object_signal_emit(noti_box, "box.title.without.icon", "box.prog");
+               }
+               if (((_check_image_null(noti, NOTIFICATION_IMAGE_TYPE_ICON) == 0
+                               ||  _check_image_null(noti, NOTIFICATION_IMAGE_TYPE_THUMBNAIL) == 0)
+                               && _check_image_null(noti, NOTIFICATION_IMAGE_TYPE_ICON_SUB) == 0)) {
+                       elm_object_signal_emit(noti_box, "box.show.sub.bg", "box.prog");
+               }
        }
+
+#ifdef QP_SCREENREADER_ENABLE
+       _noti_box_set_rs_layout_single(noti_box, noti);
+#endif
 }
 
 static void _noti_box_set_layout_multi(Evas_Object *noti_box,
-               notification_h noti) {
-       int length = 0;
+               notification_h noti)
+{
+       char *pkgname = NULL;
+       char *icon_path = NULL;
        char *dir = NULL;
        char *domain = NULL;
-       char buf[128] = {0,};
        int is_need_effect = 0;
+       int is_contents_only = 0;
        int is_sub_info_1_only = 0;
+       int is_contents_and_sub_info_2 = 0;
        Evas_Object *icon = NULL;
 
        if (_check_image_null(noti, NOTIFICATION_IMAGE_TYPE_BACKGROUND) == 0) {
                is_need_effect = 1;
        }
 
+       if (_check_text_null(noti, NOTIFICATION_TEXT_TYPE_EVENT_COUNT) == 1
+           && _check_text_null(noti, NOTIFICATION_TEXT_TYPE_INFO_1) == 1
+               && _check_text_null(noti, NOTIFICATION_TEXT_TYPE_INFO_SUB_1) == 1
+               && _check_text_null(noti, NOTIFICATION_TEXT_TYPE_INFO_2) == 1
+               && _check_text_null(noti, NOTIFICATION_TEXT_TYPE_INFO_SUB_2) == 1) {
+               is_contents_only = 1;
+       }
+
        if (_check_text_null(noti, NOTIFICATION_TEXT_TYPE_INFO_1) != 1
                && _check_text_null(noti, NOTIFICATION_TEXT_TYPE_INFO_SUB_1) == 1
                && _check_text_null(noti, NOTIFICATION_TEXT_TYPE_INFO_2) == 1
@@ -382,264 +905,408 @@ static void _noti_box_set_layout_multi(Evas_Object *noti_box,
                is_sub_info_1_only = 1;
        }
 
+       if (_check_text_null(noti, NOTIFICATION_TEXT_TYPE_EVENT_COUNT) == 1
+               && _check_text_null(noti, NOTIFICATION_TEXT_TYPE_INFO_1) == 1
+               && _check_text_null(noti, NOTIFICATION_TEXT_TYPE_INFO_SUB_1) == 1
+               && (_check_text_null(noti, NOTIFICATION_TEXT_TYPE_INFO_2) != 1
+               || _check_text_null(noti, NOTIFICATION_TEXT_TYPE_INFO_SUB_2) != 1)) {
+               is_contents_and_sub_info_2 = 1;
+       }
+
        DBG("is_sub_info_1_only:%d", is_sub_info_1_only);
 
+       notification_get_pkgname(noti, &pkgname);
        notification_get_text_domain(noti, &domain, &dir);
-       if (domain != NULL && dir != NULL)
+       if (domain != NULL && dir != NULL) {
                bindtextdomain(domain, dir);
+       }
 
        _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_TITLE,
-                       "object.text.title", is_need_effect, TEXT_CR);
+                       "object.text.title", NULL, is_need_effect, TEXT_CR);
        if (_check_text_null(noti, NOTIFICATION_TEXT_TYPE_EVENT_COUNT) == 0) {
-               _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_CONTENT,
-                               "object.text.contents.short", is_need_effect, TEXT_NO_CR);
-               length = _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_EVENT_COUNT,
-                               "object.text.count", is_need_effect, TEXT_NO_CR);
-               length = (length >= 5) ? 5 : length;
-               snprintf(buf, sizeof(buf), "box.count.%d", length);
-               elm_object_signal_emit(noti_box, buf, "box.prog");
+               _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_EVENT_COUNT, "object.text.count", NULL,
+                                               is_need_effect, TEXT_NO_CR);
+               _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_CONTENT, "object.text.contents", NULL,
+                                               is_need_effect, TEXT_NO_CR);
        } else {
-               _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_CONTENT,
-                               "object.text.contents", is_need_effect, TEXT_NO_CR);
+               if (is_contents_only == 1) {
+                       _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_CONTENT,
+                                       "object.text.contents.multiline", NULL, is_need_effect, TEXT_CR);
+               } else if (is_contents_and_sub_info_2 == 1) {
+                               _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_CONTENT,
+                                               "object.text.contents.multiline.short", NULL, is_need_effect, TEXT_NO_CR);
+               } else {
+                       _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_CONTENT,
+                                       "object.text.contents", NULL, is_need_effect, TEXT_NO_CR);
+               }
        }
 
        if (is_sub_info_1_only == 1) {
                _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_INFO_1,
-                                                                       "object.text.info.1.multiline", is_need_effect, TEXT_CR);
+                                                                       "object.text.info.1.multiline", NULL, is_need_effect, TEXT_CR);
        } else {
                if (_check_text_null(noti, NOTIFICATION_TEXT_TYPE_INFO_1) == 0) {
                        if (_check_text_null(noti, NOTIFICATION_TEXT_TYPE_INFO_SUB_1) == 1) {
                                _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_INFO_1,
-                                               "object.text.info.1", is_need_effect, TEXT_NO_CR);
+                                               "object.text.info.1", NULL, is_need_effect, TEXT_NO_CR);
                        } else {
                                _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_INFO_1,
-                                               "object.text.info.1.short", is_need_effect, TEXT_NO_CR);
+                                               "object.text.info.1.short", NULL, is_need_effect, TEXT_NO_CR);
                                _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_INFO_SUB_1,
-                                               "object.text.info.sub.1", is_need_effect, TEXT_NO_CR);
+                                               "object.text.info.sub.1", NULL, is_need_effect, TEXT_NO_CR);
                        }
                }
                if (_check_text_null(noti, NOTIFICATION_TEXT_TYPE_INFO_2) == 0) {
                        if (_check_text_null(noti, NOTIFICATION_TEXT_TYPE_INFO_SUB_2) == 1) {
                                _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_INFO_2,
-                                               "object.text.info.2", is_need_effect, TEXT_NO_CR);
+                                               "object.text.info.2", NULL, is_need_effect, TEXT_NO_CR);
                        } else {
                                _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_INFO_2,
-                                               "object.text.info.2.short", is_need_effect, TEXT_NO_CR);
+                                               "object.text.info.2.short", NULL, is_need_effect, TEXT_NO_CR);
                                _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_INFO_SUB_2,
-                                               "object.text.info.sub.2", is_need_effect, TEXT_NO_CR);
+                                               "object.text.info.sub.2", NULL, is_need_effect, TEXT_NO_CR);
                        }
                }
        }
 
        if (_check_image_null(noti, NOTIFICATION_IMAGE_TYPE_THUMBNAIL) == 0) {
-               _set_image(noti_box, noti, NOTIFICATION_IMAGE_TYPE_ICON,
-                               "object.icon.sub", IMAGE_NO_RESIZE);
-               icon = _set_image(noti_box, noti, NOTIFICATION_IMAGE_TYPE_THUMBNAIL,
-                               "object.icon", IMAGE_NO_RESIZE);
+               _set_image(noti_box, noti, NULL, NOTIFICATION_IMAGE_TYPE_ICON,
+                               "object.icon.sub", IMAGE_NO_RESIZE, IMAGE_BY_FILE);
+               icon = _set_image(noti_box, noti, NULL, NOTIFICATION_IMAGE_TYPE_THUMBNAIL,
+                               "object.icon", IMAGE_NO_RESIZE, IMAGE_BY_FILE);
 #ifdef QP_ANIMATED_IMAGE_ENABLE
                quickpanel_animated_image_add(icon);
 #endif
        } else {
-               icon = _set_image(noti_box, noti, NOTIFICATION_IMAGE_TYPE_ICON,
-                               "object.icon", IMAGE_NO_RESIZE);
+               icon = _set_image(noti_box, noti, NULL, NOTIFICATION_IMAGE_TYPE_ICON,
+                               "object.icon", IMAGE_NO_RESIZE, IMAGE_BY_FILE);
 #ifdef QP_ANIMATED_IMAGE_ENABLE
                quickpanel_animated_image_add(icon);
 #endif
-               _set_image(noti_box, noti, NOTIFICATION_IMAGE_TYPE_ICON_SUB,
-                               "object.icon.sub", IMAGE_NO_RESIZE);
-       }
-       _set_image(noti_box, noti, NOTIFICATION_IMAGE_TYPE_BACKGROUND,
-                       "object.icon.background", IMAGE_RESIZE);
-       if (_check_image_null(noti, NOTIFICATION_IMAGE_TYPE_BACKGROUND) == 0) {
-               elm_object_signal_emit(noti_box, "box.show.dim", "box.prog");
+               _set_image(noti_box, noti, NULL, NOTIFICATION_IMAGE_TYPE_ICON_SUB,
+                               "object.icon.sub", IMAGE_NO_RESIZE, IMAGE_BY_FILE);
        }
-       if (_check_image_null(noti, NOTIFICATION_IMAGE_TYPE_ICON) == 1
+       _set_image(noti_box, noti, NULL, NOTIFICATION_IMAGE_TYPE_BACKGROUND,
+                       "object.icon.background", IMAGE_NO_RESIZE, IMAGE_BY_BUFFER);
+
+       if (_check_image_null(noti, NOTIFICATION_IMAGE_TYPE_BACKGROUND) == 1
+                       && _check_image_null(noti, NOTIFICATION_IMAGE_TYPE_ICON) == 1
+                       && _check_image_null(noti, NOTIFICATION_IMAGE_TYPE_ICON_SUB) == 1
                        && _check_image_null(noti, NOTIFICATION_IMAGE_TYPE_THUMBNAIL) == 1) {
-               elm_object_signal_emit(noti_box, "box.hide.icon.bg", "box.prog");
-       }
-       if (_check_image_null(noti, NOTIFICATION_IMAGE_TYPE_ICON_SUB) == 0
-                       || _check_image_null(noti, NOTIFICATION_IMAGE_TYPE_THUMBNAIL) == 0) {
-               elm_object_signal_emit(noti_box, "box.show.sub.bg", "box.prog");
+
+               icon_path = quickpanel_common_ui_get_pkginfo_icon(pkgname);
+               if (icon_path != NULL) {
+                       _set_image(noti_box, NULL,
+                                       icon_path, NOTIFICATION_IMAGE_TYPE_ICON,
+                                       "object.icon", IMAGE_NO_RESIZE, IMAGE_BY_FILE);
+                       free(icon_path);
+               }
+       } else {
+               if (_check_image_null(noti, NOTIFICATION_IMAGE_TYPE_BACKGROUND) == 0) {
+                       elm_object_signal_emit(noti_box, "box.show.dim", "box.prog");
+               }
+               if (_check_image_null(noti, NOTIFICATION_IMAGE_TYPE_ICON) == 1
+                               && _check_image_null(noti, NOTIFICATION_IMAGE_TYPE_THUMBNAIL) == 1) {
+                       elm_object_signal_emit(noti_box, "box.hide.icon.bg", "box.prog");
+                       elm_object_signal_emit(noti_box, "box.title.without.icon", "box.prog");
+               }
+               if (((_check_image_null(noti, NOTIFICATION_IMAGE_TYPE_ICON) == 0
+                               ||  _check_image_null(noti, NOTIFICATION_IMAGE_TYPE_THUMBNAIL) == 0)
+                               && _check_image_null(noti, NOTIFICATION_IMAGE_TYPE_ICON_SUB) == 0)) {
+                       elm_object_signal_emit(noti_box, "box.show.sub.bg", "box.prog");
+               }
        }
+
+#ifdef QP_SCREENREADER_ENABLE
+       _noti_box_set_rs_layout_multi(noti_box, noti);
+#endif
 }
 
 static void _noti_box_set_layout_thumbnail(Evas_Object *noti_box,
-               notification_h noti) {
+               notification_h noti)
+{
+       char *pkgname = NULL;
+       char *icon_path = NULL;
        char *dir = NULL;
        char *domain = NULL;
        int is_need_effect = 0;
+       int is_sub_info_1_only = 0;
+       int is_show_info = 0;
        Evas_Object *icon = NULL;
 
-       if (_check_image_null(noti, NOTIFICATION_IMAGE_TYPE_BACKGROUND) == 0)
+       if (_check_image_null(noti, NOTIFICATION_IMAGE_TYPE_BACKGROUND) == 0) {
                is_need_effect = 1;
-       else
+       } else {
                is_need_effect = 0;
+       }
 
+       if (_check_text_null(noti, NOTIFICATION_TEXT_TYPE_INFO_1) != 1
+               && _check_text_null(noti, NOTIFICATION_TEXT_TYPE_INFO_2) == 1) {
+               is_sub_info_1_only = 1;
+       }
+
+       if (_check_image_null(noti, NOTIFICATION_IMAGE_TYPE_LIST_1)!= 1
+               && _check_image_null(noti, NOTIFICATION_IMAGE_TYPE_LIST_2) == 1
+               && _check_image_null(noti, NOTIFICATION_IMAGE_TYPE_LIST_3) == 1
+               && _check_image_null(noti, NOTIFICATION_IMAGE_TYPE_LIST_4) == 1
+               && _check_image_null(noti, NOTIFICATION_IMAGE_TYPE_LIST_5) == 1) {
+               is_show_info = 1;
+       }
+
+       notification_get_pkgname(noti, &pkgname);
        notification_get_text_domain(noti, &domain, &dir);
-       if (domain != NULL && dir != NULL)
+       if (domain != NULL && dir != NULL) {
                bindtextdomain(domain, dir);
+       }
 
        _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_TITLE,
-                       "object.text.title", is_need_effect, TEXT_CR);
-       _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_CONTENT,
-                       "object.text.contents", is_need_effect, TEXT_NO_CR);
+                       "object.text.title", NULL, is_need_effect, TEXT_CR);
+       if (_check_text_null(noti, NOTIFICATION_TEXT_TYPE_EVENT_COUNT) == 0) {
+               _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_EVENT_COUNT, "object.text.count", NULL,
+                                               is_need_effect, TEXT_NO_CR);
+               _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_CONTENT, "object.text.contents", NULL,
+                                               is_need_effect, TEXT_NO_CR);
+       } else {
+               _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_CONTENT,
+                               "object.text.contents", NULL, is_need_effect, TEXT_NO_CR);
+       }
+
+       if (is_show_info == 1) {
+               if (is_sub_info_1_only == 1) {
+                       _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_INFO_1,
+                                                                               "object.text.info.1.multiline", NULL, is_need_effect, TEXT_CR);
+               } else {
+                       if (_check_text_null(noti, NOTIFICATION_TEXT_TYPE_INFO_1) == 0) {
+                               _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_INFO_1,
+                                                                               "object.text.info.1", NULL, is_need_effect, TEXT_NO_CR);
+                       }
+                       if (_check_text_null(noti, NOTIFICATION_TEXT_TYPE_INFO_2) == 0) {
+                               _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_INFO_2,
+                                                                               "object.text.info.2", NULL, is_need_effect, TEXT_NO_CR);
+                       }
+               }
+       }
 
        if (_check_image_null(noti, NOTIFICATION_IMAGE_TYPE_THUMBNAIL) == 0) {
-               _set_image(noti_box, noti, NOTIFICATION_IMAGE_TYPE_ICON,
-                               "object.icon.sub", IMAGE_NO_RESIZE);
-               icon = _set_image(noti_box, noti, NOTIFICATION_IMAGE_TYPE_THUMBNAIL,
-                               "object.icon", IMAGE_NO_RESIZE);
+               icon = _set_image(noti_box, noti, NULL, NOTIFICATION_IMAGE_TYPE_THUMBNAIL,
+                               "object.icon", IMAGE_NO_RESIZE, IMAGE_BY_FILE);
 #ifdef QP_ANIMATED_IMAGE_ENABLE
                quickpanel_animated_image_add(icon);
 #endif
+               if (_check_image_null(noti, NOTIFICATION_IMAGE_TYPE_THUMBNAIL) == 0) {
+                       _set_image(noti_box, noti, NULL, NOTIFICATION_IMAGE_TYPE_ICON,
+                                       "object.icon.sub", IMAGE_NO_RESIZE, IMAGE_BY_FILE);
+               }
        } else {
-               icon = _set_image(noti_box, noti, NOTIFICATION_IMAGE_TYPE_ICON,
-                               "object.icon", IMAGE_NO_RESIZE);
+               icon = _set_image(noti_box, noti, NULL, NOTIFICATION_IMAGE_TYPE_ICON,
+                               "object.icon", IMAGE_NO_RESIZE, IMAGE_BY_FILE);
 #ifdef QP_ANIMATED_IMAGE_ENABLE
                quickpanel_animated_image_add(icon);
 #endif
-               _set_image(noti_box, noti, NOTIFICATION_IMAGE_TYPE_ICON_SUB,
-                               "object.icon.sub", IMAGE_NO_RESIZE);
-       }
-       _set_image(noti_box, noti, NOTIFICATION_IMAGE_TYPE_BACKGROUND,
-                       "object.icon.background", IMAGE_RESIZE);
-
-       _set_image(noti_box, noti, NOTIFICATION_IMAGE_TYPE_LIST_1,
-                       "object.thumbnail.list.1", IMAGE_RESIZE);
-       _set_image(noti_box, noti, NOTIFICATION_IMAGE_TYPE_LIST_2,
-                       "object.thumbnail.list.2", IMAGE_RESIZE);
-       _set_image(noti_box, noti, NOTIFICATION_IMAGE_TYPE_LIST_3,
-                       "object.thumbnail.list.3", IMAGE_RESIZE);
-       _set_image(noti_box, noti, NOTIFICATION_IMAGE_TYPE_LIST_4,
-                       "object.thumbnail.list.4", IMAGE_RESIZE);
-       _set_image(noti_box, noti, NOTIFICATION_IMAGE_TYPE_LIST_5,
-                       "object.thumbnail.list.5", IMAGE_RESIZE);
-
-       if (_check_image_null(noti, NOTIFICATION_IMAGE_TYPE_BACKGROUND) == 0) {
-               elm_object_signal_emit(noti_box, "box.show.dim", "box.prog");
+               if (_check_image_null(noti, NOTIFICATION_IMAGE_TYPE_ICON) == 0) {
+                       _set_image(noti_box, noti, NULL, NOTIFICATION_IMAGE_TYPE_ICON_SUB,
+                                       "object.icon.sub", IMAGE_NO_RESIZE, IMAGE_BY_FILE);
+               }
        }
-       if (_check_image_null(noti, NOTIFICATION_IMAGE_TYPE_ICON) == 1
+       _set_image(noti_box, noti, NULL, NOTIFICATION_IMAGE_TYPE_BACKGROUND,
+                       "object.icon.background", IMAGE_NO_RESIZE, IMAGE_BY_BUFFER);
+
+       _set_image(noti_box, noti, NULL, NOTIFICATION_IMAGE_TYPE_LIST_1,
+                       "object.thumbnail.list.1", IMAGE_RESIZE, IMAGE_BY_BUFFER);
+       _set_image(noti_box, noti, NULL, NOTIFICATION_IMAGE_TYPE_LIST_2,
+                       "object.thumbnail.list.2", IMAGE_RESIZE, IMAGE_BY_BUFFER);
+       _set_image(noti_box, noti, NULL, NOTIFICATION_IMAGE_TYPE_LIST_3,
+                       "object.thumbnail.list.3", IMAGE_RESIZE, IMAGE_BY_BUFFER);
+       _set_image(noti_box, noti, NULL, NOTIFICATION_IMAGE_TYPE_LIST_4,
+                       "object.thumbnail.list.4", IMAGE_RESIZE, IMAGE_BY_BUFFER);
+       _set_image(noti_box, noti, NULL, NOTIFICATION_IMAGE_TYPE_LIST_5,
+                       "object.thumbnail.list.5", IMAGE_RESIZE, IMAGE_BY_BUFFER);
+
+       if (_check_image_null(noti, NOTIFICATION_IMAGE_TYPE_BACKGROUND) == 1
+                       && _check_image_null(noti, NOTIFICATION_IMAGE_TYPE_ICON) == 1
+                       && _check_image_null(noti, NOTIFICATION_IMAGE_TYPE_ICON_SUB) == 1
                        && _check_image_null(noti, NOTIFICATION_IMAGE_TYPE_THUMBNAIL) == 1) {
-               elm_object_signal_emit(noti_box, "box.hide.icon.bg", "box.prog");
-       }
-       if (_check_image_null(noti, NOTIFICATION_IMAGE_TYPE_ICON_SUB) == 0
-                       || _check_image_null(noti, NOTIFICATION_IMAGE_TYPE_THUMBNAIL) == 0) {
-               elm_object_signal_emit(noti_box, "box.show.sub.bg", "box.prog");
+
+               icon_path = quickpanel_common_ui_get_pkginfo_icon(pkgname);
+               if (icon_path != NULL) {
+                       _set_image(noti_box, NULL,
+                                       icon_path, NOTIFICATION_IMAGE_TYPE_ICON,
+                                       "object.icon", IMAGE_NO_RESIZE, IMAGE_BY_FILE);
+                       free(icon_path);
+               }
+       } else {
+               if (_check_image_null(noti, NOTIFICATION_IMAGE_TYPE_BACKGROUND) == 0) {
+                       elm_object_signal_emit(noti_box, "box.show.dim", "box.prog");
+               }
+               if (_check_image_null(noti, NOTIFICATION_IMAGE_TYPE_ICON) == 1
+                               && _check_image_null(noti, NOTIFICATION_IMAGE_TYPE_THUMBNAIL) == 1) {
+                       elm_object_signal_emit(noti_box, "box.hide.icon.bg", "box.prog");
+                       elm_object_signal_emit(noti_box, "box.title.without.icon", "box.prog");
+               }
+               if (((_check_image_null(noti, NOTIFICATION_IMAGE_TYPE_ICON) == 0
+                               ||  _check_image_null(noti, NOTIFICATION_IMAGE_TYPE_THUMBNAIL) == 0)
+                               && _check_image_null(noti, NOTIFICATION_IMAGE_TYPE_ICON_SUB) == 0)) {
+                       elm_object_signal_emit(noti_box, "box.show.sub.bg", "box.prog");
+               }
        }
+
+#ifdef QP_SCREENREADER_ENABLE
+       _noti_box_set_rs_layout_thumbnail(noti_box, noti);
+#endif
 }
 
 static void _noti_box_set_layout(Evas_Object *noti_box, notification_h noti,
-               notification_ly_type_e layout) {
+               notification_ly_type_e layout)
+{
 
-       INFO("layout:%d", layout);
+       DBG("notification box layout:%d", layout);
 
        switch (layout) {
-               case NOTIFICATION_LY_NOTI_EVENT_SINGLE:
-                       _noti_box_set_layout_single(noti_box, noti);
-                       break;
-               case NOTIFICATION_LY_NOTI_EVENT_MULTIPLE:
-                       _noti_box_set_layout_multi(noti_box, noti);
-                       break;
-               case NOTIFICATION_LY_NOTI_THUMBNAIL:
-                       _noti_box_set_layout_thumbnail(noti_box, noti);
-                       break;
-               case NOTIFICATION_LY_NONE:
-               case NOTIFICATION_LY_ONGOING_EVENT:
-               case NOTIFICATION_LY_ONGOING_PROGRESS:
-               case NOTIFICATION_LY_MAX:
-                       ERR("not supported layout type:%d", layout);
-                       break;
-       }
-}
-
-HAPI void noti_box_remove(Evas_Object *noti_box) {
+       case NOTIFICATION_LY_NOTI_EVENT_SINGLE:
+               _noti_box_set_layout_single(noti_box, noti);
+               break;
+       case NOTIFICATION_LY_NOTI_EVENT_MULTIPLE:
+               _noti_box_set_layout_multi(noti_box, noti);
+               break;
+       case NOTIFICATION_LY_NOTI_THUMBNAIL:
+               _noti_box_set_layout_thumbnail(noti_box, noti);
+               break;
+       case NOTIFICATION_LY_NONE:
+       case NOTIFICATION_LY_ONGOING_EVENT:
+       case NOTIFICATION_LY_ONGOING_PROGRESS:
+       case NOTIFICATION_LY_MAX:
+               ERR("not supported layout type:%d", layout);
+               break;
+       }
+}
+
+HAPI void quickpanel_noti_box_remove(Evas_Object *noti_box)
+{
 
        retif(noti_box == NULL, , "invalid parameter");
 
        noti_box_h *noti_box_h = evas_object_data_get(noti_box, E_DATA_NOTI_BOX_H);
 
-       if (noti_box_h != NULL)
+       evas_object_data_del(noti_box, E_DATA_NOTI_BOX_H);
+       if (noti_box_h != NULL) {
                free(noti_box_h);
+       }
 
-       evas_object_data_del(noti_box, E_DATA_NOTI_BOX_H);
        evas_object_data_del(noti_box, E_DATA_CB_SELECTED_ITEM);
        evas_object_data_del(noti_box, E_DATA_CB_DELETED_ITEM);
 
-       INFO("removed notibox:%p", noti_box);
+       _deattach_memfile_all(noti_box);
 
        evas_object_del(noti_box);
+       noti_box = NULL;
 }
 
-HAPI void noti_box_set_status(Evas_Object *noti_box, int status) {
-       retif(noti_box == NULL, , "invalid parameter");
-
-       noti_box_h *noti_box_h = evas_object_data_get(noti_box, E_DATA_NOTI_BOX_H);
-
-       if (noti_box_h != NULL) {
-               noti_box_h->status = status;
-       }
-}
-
-HAPI int noti_box_get_status(Evas_Object *noti_box) {
-       retif(noti_box == NULL, STATE_NORMAL, "invalid parameter");
-
-       noti_box_h *noti_box_h = evas_object_data_get(noti_box, E_DATA_NOTI_BOX_H);
-
-       if (noti_box_h != NULL) {
-               return noti_box_h->status;
-       }
-
-       return STATE_DELETING;
-}
-
-HAPI void noti_box_node_set(Evas_Object *noti_box, void *data) {
+HAPI void quickpanel_noti_box_node_set(Evas_Object *noti_box, void *noti_node)
+{
+       int priv_id = -1;
+       noti_node_item *item = noti_node;
        retif(noti_box == NULL, , "invalid parameter");
-       retif(data == NULL, , "invalid parameter");
+       retif(item == NULL, , "invalid parameter");
+       retif(item->noti == NULL, , "invalid parameter");
 
        noti_box_h *noti_box_data = evas_object_data_get(noti_box, E_DATA_NOTI_BOX_H);
 
+       notification_get_id(item->noti, NULL, &priv_id);
+
        if (noti_box_data != NULL) {
-               noti_box_data->data = data;
+               noti_box_data->noti_node = item;
+               noti_box_data->priv_id = priv_id;
 
-               if (data != NULL) {
-                       noti_node_item *item = data;
-                       _noti_box_set_layout(noti_box, item->noti, noti_box_data->layout);
-               }
+               _noti_box_set_layout(noti_box, item->noti, noti_box_data->layout);
        }
 }
 
-HAPI void *noti_box_node_get(Evas_Object *noti_box) {
+HAPI void *quickpanel_noti_box_node_get(Evas_Object *noti_box)
+{
        retif(noti_box == NULL, NULL, "invalid parameter");
 
        noti_box_h *noti_box_data = evas_object_data_get(noti_box, E_DATA_NOTI_BOX_H);
 
        if (noti_box_data != NULL) {
-               return noti_box_data->data;
+               return noti_box_data->noti_node;
        }
 
        return NULL;
 }
 
-HAPI void noti_box_set_item_selected_cb(Evas_Object *noti_box,
-               void(*selected_cb)(void *data, Evas_Object *obj)) {
+#ifdef QP_SCREENREADER_ENABLE
+static void
+_noti_box_focus_selected_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       Evas_Object *noti_box = data;
+       retif(noti_box == NULL, , "invalid parameter");
+
+       _noti_box_call_item_cb(noti_box, "selected");
+
+}
+#endif
+
+HAPI void quickpanel_noti_box_set_item_selected_cb(Evas_Object *noti_box,
+               void(*selected_cb)(void *data, Evas_Object *obj))
+{
        retif(noti_box == NULL, , "invalid parameter");
        retif(selected_cb == NULL, , "invalid parameter");
 
        evas_object_data_set(noti_box, E_DATA_CB_SELECTED_ITEM, selected_cb);
+
+#ifdef QP_SCREENREADER_ENABLE
+       Evas_Object *ao = NULL;
+       ao = quickpanel_accessibility_screen_reader_object_get(noti_box,
+                       SCREEN_READER_OBJ_TYPE_ELM_OBJECT, "focus", noti_box);
+       if (ao != NULL) {
+               evas_object_smart_callback_add(ao, "clicked", _noti_box_focus_selected_cb, noti_box);
+       }
+#endif
 }
 
-HAPI void noti_box_set_item_button_1_cb(Evas_Object *noti_box,
-               void(*button_1_cb)(void *data, Evas_Object *obj)) {
+HAPI void quickpanel_noti_box_set_item_button_1_cb(Evas_Object *noti_box,
+               void(*button_1_cb)(void *data, Evas_Object *obj))
+{
        retif(noti_box == NULL, , "invalid parameter");
        retif(button_1_cb == NULL, , "invalid parameter");
 
        evas_object_data_set(noti_box, E_DATA_CB_BUTTON_1, button_1_cb);
 }
 
-HAPI void noti_box_set_item_deleted_cb(Evas_Object *noti_box,
-               void(*deleted_cb)(void *data, Evas_Object *obj)) {
+HAPI void quickpanel_noti_box_set_item_deleted_cb(Evas_Object *noti_box,
+               void(*deleted_cb)(void *data, Evas_Object *obj))
+{
        retif(noti_box == NULL, , "invalid parameter");
        retif(deleted_cb == NULL, , "invalid parameter");
 
        evas_object_data_set(noti_box, E_DATA_CB_DELETED_ITEM, deleted_cb);
 }
+
+HAPI void quickpanel_noti_box_item_dragging_cancel(Evas_Object *noti_box)
+{
+       retif(noti_box == NULL, , "invalid parameter");
+
+       evas_object_map_enable_set(noti_box, EINA_FALSE);
+}
+
+HAPI void quickpanel_noti_box_item_update(Evas_Object *noti_box)
+{
+       retif(noti_box == NULL, , "invalid parameter");
+
+       noti_node_item *item = NULL;
+       noti_box_h *noti_box_data = evas_object_data_get(noti_box, E_DATA_NOTI_BOX_H);
+
+       if (noti_box_data != NULL) {
+               if (noti_box_data->noti_node != NULL) {
+
+                       item = quickpanel_noti_node_get_by_priv_id(noti_box_data->priv_id);
+
+                       if (item != NULL) {
+                               _deattach_memfile_all(noti_box);
+                               _text_clean_all(noti_box);
+
+                               _noti_box_set_layout(noti_box, item->noti, noti_box_data->layout);
+                       }
+               }
+       }
+}
index 68ab375..a745d58 100755 (executable)
@@ -1,49 +1,68 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ * Copyright (c) 2009-2015 Samsung Electronics Co., Ltd All Rights Reserved
  *
- * Licensed under the Flora License, Version 1.1 (the License);
+ * 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
+ * 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,
+ * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
+ *
  */
 
+
 #ifndef __QUICKPANEL_NOTI_BOX_H__
 #define __QUICKPANEL_NOTI_BOX_H__
 
 #include <notification.h>
-
-#define STATE_NORMAL 1
-#define STATE_DELETING 0
+#include "vi_manager.h"
 
 #define E_DATA_NOTI_BOX_H "noti_box"
 #define E_DATA_CB_SELECTED_ITEM "noti_box_cb_selected"
 #define E_DATA_CB_BUTTON_1 "noti_box_cb_button_1"
 #define E_DATA_CB_DELETED_ITEM "noti_box_cb_deleted"
+#define E_DATA_NOTI_BOX_MB_BG "noti_box_mb"
+
+typedef enum _qp_notibox_state_type {
+       NOTIBOX_STATE_NORMAL = 0,
+       NOTIBOX_STATE_GETSTURE_WAIT,
+       NOTIBOX_STATE_GETSTURE_CANCELED,
+       NOTIBOX_STATE_DELETED,
+} qp_notibox_state_type;
 
 typedef struct _noti_box_h {
        int status;
-       void *data;
+       int priv_id;
+       void *noti_node;
        notification_ly_type_e  layout;
+
+       QP_VI *vi;
+       Ecore_Animator *animator;
+
+       int obj_w;
+       int obj_h;
+       int press_x;
+       int press_y;
+       int distance;
+       int need_to_cancel_press;
+       qp_notibox_state_type state;
 } noti_box_h;
 
-Evas_Object *noti_box_create(Evas_Object *parent, notification_ly_type_e layout);
-void noti_box_node_set(Evas_Object *noti_box, void *data);
-void *noti_box_node_get(Evas_Object *noti_box);
-void noti_box_remove(Evas_Object *noti_box);
-void noti_box_set_item_selected_cb(Evas_Object *noti_box,
+Evas_Object *quickpanel_noti_box_create(Evas_Object *parent, notification_ly_type_e layout);
+void quickpanel_noti_box_node_set(Evas_Object *noti_box, void *noti_node);
+void *quickpanel_noti_box_node_get(Evas_Object *noti_box);
+void quickpanel_noti_box_remove(Evas_Object *noti_box);
+void quickpanel_noti_box_set_item_selected_cb(Evas_Object *noti_box,
                void(*selected_cb)(void *data, Evas_Object *obj));
-void noti_box_set_item_button_1_cb(Evas_Object *noti_box,
+void quickpanel_noti_box_set_item_button_1_cb(Evas_Object *noti_box,
                void(*button_1_cb)(void *data, Evas_Object *obj));
-void noti_box_set_item_deleted_cb(Evas_Object *noti_box,
+void quickpanel_noti_box_set_item_deleted_cb(Evas_Object *noti_box,
                void(*deleted_cb)(void *data, Evas_Object *obj));
-int noti_box_get_status(Evas_Object *noti_box);
-void noti_box_set_status(Evas_Object *noti_box, int status);
-
+void quickpanel_noti_box_item_dragging_cancel(Evas_Object *noti_box);
+void quickpanel_noti_box_item_update(Evas_Object *noti_box);
 #endif
index fbd2457..3253bdd 100755 (executable)
@@ -1,20 +1,20 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ * Copyright (c) 2009-2015 Samsung Electronics Co., Ltd All Rights Reserved
  *
- * Licensed under the Flora License, Version 1.1 (the License);
+ * 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,
+ * 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 "quickpanel-ui.h"
 #include "common.h"
@@ -22,6 +22,7 @@
 #include "quickpanel_def.h"
 #include "noti_gridbox.h"
 #include "noti_box.h"
+#include "vi_manager.h"
 
 #define E_DATA_LAYOUT_PORTRAIT "layout_portrait"
 #define E_DATA_LAYOUT_LANDSCAPE "layout_landscape"
@@ -42,44 +43,98 @@ typedef struct _gridbox_info_layout {
        int limit_w;
 } gridbox_info_layout;
 
-typedef struct _gridbox_info_animation {
-       Evas_Object *gridbox;
-       Evas_Object *item;
+static Eina_Bool _anim_init_cb(void *data);
+static Eina_Bool _anim_job_cb(void *data);
+static Eina_Bool _anim_done_cb(void *data);
 
-       void (*update_cb)(Evas_Object *list, void *data, int is_prepend);
-       Evas_Object *container;
-       void *noti;
-       int pos;
-} gridbox_info_animation;
+static gridbox_info_layout *_gridbox_get_layout(Evas_Object *gridbox)
+{
+       struct appdata *ad = quickpanel_get_app_data();
+       gridbox_info_layout *info_layout = NULL;
 
-static void _gridbox_layout_get_pos(int order, int *x, int *y, void *data) {
-       gridbox_info_layout *info_layout = data;
+       retif(gridbox == NULL, NULL, "invalid parameter");
+       retif(ad == NULL, NULL, "invalid data.");
 
-       retif(data == NULL, , "invalid parameter");
-       retif(x == NULL, , "invalid parameter");
-       retif(y == NULL, , "invalid parameter");
+       if (ad->angle == 270 || ad->angle == 90) {
+               info_layout = evas_object_data_get(gridbox, E_DATA_LAYOUT_LANDSCAPE);
+       } else {
+               info_layout = evas_object_data_get(gridbox, E_DATA_LAYOUT_PORTRAIT);
+       }
+
+       return info_layout;
+}
+
+static void _gridbox_layout_get_pos(int order, int *x, int *y, void *data)
+{
+       gridbox_info_layout *info_layout = data;
+       retif(info_layout == NULL, , "invalid parameter");
 
        int n_per_row = info_layout->n_per_rows;
 
        int row = (order - 1) / n_per_row;
        int column = (order - 1) - (row * n_per_row);
 
-       //DBG("order:%d r:%d c:%d", order, row, column);
-
        int row_x = info_layout->padding_left
                        + ((info_layout->child_w + info_layout->padding_between) * column);
 
        int row_y = info_layout->padding_top
                        + ((info_layout->child_h + info_layout->padding_between) * row);
 
-       *x = row_x;
-       *y = row_y;
+       if (x != NULL) {
+               *x = row_x;
+       }
+
+       if (y != NULL) {
+               *y = row_y;
+       }
+}
+
+static void _gridbox_layout_get_coord(Evas_Object *gridbox, int num_child, int index,
+               void *layout_data, int *coord_x, int *coord_y)
+{
+       int x, y, w, h;
+       int off_x = 0, off_y = 0;
+       int child_w;
+       int space_w = 0;
+       int num_padding_between = 0;
+       struct appdata *ad = quickpanel_get_app_data();
+       gridbox_info_layout *info_layout = NULL;
+
+       retif(gridbox == NULL, , "invalid parameter");
+       retif(ad == NULL, , "invalid data.");
+
+       if (layout_data != NULL) {
+               info_layout = (gridbox_info_layout *) layout_data;
+       } else {
+               info_layout = _gridbox_get_layout(gridbox);
+       }
+       retif(info_layout == NULL, , "invalid data.");
+
+       //box geometry
+       evas_object_geometry_get(gridbox, &x, &y, &w, &h);
+
+       num_padding_between = info_layout->n_per_rows / 2;
+       num_padding_between += (info_layout->n_per_rows > 1 && (info_layout->n_per_rows % 2) > 0) ? 1 : 0;
+
+       space_w = (info_layout->padding_left * 2) + (info_layout->padding_between * num_padding_between);
+       child_w = (info_layout->limit_w - space_w) / info_layout->n_per_rows;
+
+       info_layout->child_w = child_w;
+       _gridbox_layout_get_pos(index, &off_x, &off_y, info_layout);
+
+       if (coord_x != NULL) {
+               *coord_x = x + off_x;
+       }
+       if (coord_y != NULL) {
+               *coord_y = y + off_y;
+       }
 }
 
 static void _gridbox_layout(Evas_Object *o, Evas_Object_Box_Data *priv,
-               void *data) {
+               void *data)
+{
        int n_children;
-       int x, y, w, h;
+       int x, y;
        int off_x = 0, off_y = 0;
        Eina_List *l;
        Eina_List *l_next;
@@ -92,17 +147,17 @@ static void _gridbox_layout(Evas_Object *o, Evas_Object_Box_Data *priv,
        retif(priv == NULL, , "invalid parameter");
        retif(data == NULL, , "invalid parameter");
 
-       gridbox_info_layout *info_layout = (gridbox_info_layout *) data;
+       gridbox_info_layout *info_layout = _gridbox_get_layout(data);
+       retif(info_layout == NULL, , "failed to get layout data");
 
        n_children = eina_list_count(priv->children);
-       DBG("layout function:%d", n_children);
        if (!n_children) {
-               evas_object_size_hint_min_set(o, -1, 0);
+               evas_object_size_hint_min_set(o, ELM_SCALE_SIZE(-1), ELM_SCALE_SIZE(0));
                return;
        }
 
        //box geometry
-       evas_object_geometry_get(o, &x, &y, &w, &h);
+       evas_object_geometry_get(o, &x, &y, NULL, NULL);
 
        num_padding_between = info_layout->n_per_rows / 2;
        num_padding_between += (info_layout->n_per_rows > 1 && (info_layout->n_per_rows % 2) > 0) ? 1 : 0;
@@ -112,11 +167,8 @@ static void _gridbox_layout(Evas_Object *o, Evas_Object_Box_Data *priv,
 
        info_layout->child_w = child_w;
 
-       DBG("grid layout children pos:%d %d", info_layout->child_w, info_layout->child_h);
-
        int order_children = 1;
-       EINA_LIST_FOREACH_SAFE(priv->children, l, l_next, opt)
-       {
+       EINA_LIST_FOREACH_SAFE(priv->children, l, l_next, opt) {
                _gridbox_layout_get_pos(order_children, &off_x, &off_y, info_layout);
                evas_object_move(opt->obj, x + off_x, y + off_y);
                evas_object_size_hint_min_set(opt->obj, info_layout->child_w,
@@ -126,11 +178,11 @@ static void _gridbox_layout(Evas_Object *o, Evas_Object_Box_Data *priv,
                order_children++;
        }
 
-       evas_object_size_hint_min_set(o, -1,
-                       off_y + info_layout->child_h + info_layout->padding_bottom);
+       evas_object_size_hint_min_set(o, ELM_SCALE_SIZE(-1), off_y + info_layout->child_h + info_layout->padding_bottom);
 }
 
-HAPI Evas_Object *gridbox_create(Evas_Object *parent, void *data) {
+HAPI Evas_Object *quickpanel_noti_gridbox_create(Evas_Object *parent, void *data)
+{
 
        retif(parent == NULL, NULL, "invalid parameter");
        retif(data == NULL, NULL, "invalid parameter");
@@ -140,8 +192,7 @@ HAPI Evas_Object *gridbox_create(Evas_Object *parent, void *data) {
        gridbox_info_layout *info_layout_portrait = NULL;
        gridbox_info_layout *info_layout_landscape = NULL;
 
-       info_layout_portrait = (gridbox_info_layout *) malloc(
-                       sizeof(gridbox_info_layout));
+       info_layout_portrait = (gridbox_info_layout *) malloc(sizeof(gridbox_info_layout));
        retif(info_layout_portrait == NULL, NULL, "memory allocation failed");
        info_layout_portrait->padding_between = 12 * ad->scale;
        info_layout_portrait->padding_top = 0;
@@ -153,9 +204,12 @@ HAPI Evas_Object *gridbox_create(Evas_Object *parent, void *data) {
        info_layout_portrait->limit_w = ad->win_width; //400;
        info_layout_portrait->scale = ad->scale;
 
-       info_layout_landscape = (gridbox_info_layout *) malloc(
-                       sizeof(gridbox_info_layout));
-       retif(info_layout_landscape == NULL, NULL, "memory allocation failed");
+       info_layout_landscape = (gridbox_info_layout *) malloc(sizeof(gridbox_info_layout));
+       if (info_layout_landscape == NULL) {
+               free(info_layout_portrait);
+               ERR("memory allocation failed");
+               return NULL;
+       }
        info_layout_landscape->padding_between = 12 * ad->scale;
        info_layout_landscape->padding_top = 0;
        info_layout_landscape->padding_left = 14 * ad->scale;
@@ -171,13 +225,7 @@ HAPI Evas_Object *gridbox_create(Evas_Object *parent, void *data) {
                        EVAS_HINT_EXPAND);
        evas_object_size_hint_align_set(gridbox, EVAS_HINT_FILL, EVAS_HINT_FILL);
 
-       if (ad->angle == 270 || ad->angle == 90)
-               elm_box_layout_set(gridbox, _gridbox_layout, info_layout_landscape,
-                               NULL);
-       else
-               elm_box_layout_set(gridbox, _gridbox_layout, info_layout_portrait,
-                               NULL);
-
+       elm_box_layout_set(gridbox, _gridbox_layout, gridbox, NULL);
        evas_object_show(gridbox);
 
        evas_object_data_set(gridbox, E_DATA_LAYOUT_PORTRAIT, info_layout_portrait);
@@ -193,8 +241,8 @@ HAPI Evas_Object *gridbox_create(Evas_Object *parent, void *data) {
        return gridbox;
 }
 
-HAPI void gridbox_remove(Evas_Object *gridbox) {
-
+HAPI void quickpanel_noti_gridbox_remove(Evas_Object *gridbox)
+{
        retif(gridbox == NULL, , "invalid parameter");
 
        gridbox_info_layout *info_layout_portrait = evas_object_data_get(gridbox,
@@ -202,22 +250,26 @@ HAPI void gridbox_remove(Evas_Object *gridbox) {
        gridbox_info_layout *info_layout_landscape = evas_object_data_get(gridbox,
                        E_DATA_LAYOUT_LANDSCAPE);
 
-       gridbox_remove_all_item(gridbox, 0);
+       quickpanel_noti_gridbox_remove_all_item(gridbox, 0);
        evas_object_data_del(gridbox, E_DATA_LAYOUT_PORTRAIT);
        evas_object_data_del(gridbox, E_DATA_LAYOUT_LANDSCAPE);
        evas_object_data_del(gridbox, E_DATA_CB_DELETE_ITEM);
        evas_object_data_del(gridbox, E_DATA_APP_DATA);
        quickpanel_list_util_item_del_tag(gridbox);
        evas_object_del(gridbox);
+       gridbox = NULL;
 
-       if (info_layout_portrait != NULL)
+       if (info_layout_portrait != NULL) {
                free(info_layout_portrait);
-       if (info_layout_landscape != NULL)
+       }
+       if (info_layout_landscape != NULL) {
                free(info_layout_landscape);
+       }
 }
 
-HAPI void gridbox_set_item_deleted_cb(Evas_Object *gridbox,
-               void(*deleted_cb)(void *data, Evas_Object *obj)) {
+HAPI void quickpanel_noti_gridbox_set_item_deleted_cb(Evas_Object *gridbox,
+               void(*deleted_cb)(void *data, Evas_Object *obj))
+{
        retif(gridbox == NULL, , "invalid parameter");
        retif(deleted_cb == NULL, , "invalid parameter");
 
@@ -225,7 +277,8 @@ HAPI void gridbox_set_item_deleted_cb(Evas_Object *gridbox,
 }
 
 static void _gridbox_call_item_deleted_cb(Evas_Object *gridbox, void *data,
-               Evas_Object *obj) {
+               Evas_Object *obj)
+       {
        retif(gridbox == NULL, , "invalid parameter");
 
        void (*deleted_cb)(void *data, Evas_Object *obj) = NULL;
@@ -237,14 +290,16 @@ static void _gridbox_call_item_deleted_cb(Evas_Object *gridbox, void *data,
        }
 }
 
-HAPI void gridbox_add_item(Evas_Object *gridbox, Evas_Object *item, int is_prepend) {
+HAPI void quickpanel_noti_gridbox_add_item(Evas_Object *gridbox, Evas_Object *item, int is_prepend)
+{
+       QP_VI *vi = NULL;
        const char *signal = NULL;
+       gridbox_info_layout *info_layout = NULL;
 
        retif(gridbox == NULL, , "invalid parameter");
        retif(item == NULL, , "invalid parameter");
 
        struct appdata *ad = evas_object_data_get(gridbox, E_DATA_APP_DATA);
-
        if (ad != NULL) {
                if (ad->angle == 270 || ad->angle == 90) {
                        signal = "box.landscape";
@@ -254,154 +309,438 @@ HAPI void gridbox_add_item(Evas_Object *gridbox, Evas_Object *item, int is_prepe
        }
 
        DBG("set to %s, %x", signal, item);
-
        elm_object_signal_emit(item, signal, "box.prog");
        edje_object_message_signal_process(_EDJ(item));
        elm_layout_sizing_eval(item);
 
-       if (is_prepend == GRIDBOX_PREPEND)
-               elm_box_pack_start(gridbox, item);
-       else
-               elm_box_pack_end(gridbox, item);
+       info_layout = _gridbox_get_layout(gridbox);
+       retif(info_layout == NULL, , "invalid parameter");
+
+       _gridbox_layout_get_coord(gridbox, 0, 1, NULL, NULL, NULL);
+
+       evas_object_size_hint_min_set(item, info_layout->child_w,
+                       info_layout->child_h);
+       evas_object_resize(item, info_layout->child_w,
+                       info_layout->child_h);
+
+       vi = quickpanel_vi_new_with_data(
+                       VI_OP_INSERT,
+                       QP_ITEM_TYPE_NOTI,
+                       gridbox,
+                       item,
+                       _anim_init_cb,
+                       _anim_job_cb,
+                       _anim_done_cb,
+                       _anim_done_cb,
+                       vi,
+                       NULL,
+                       is_prepend,
+                       0);
+       quickpanel_vi_start(vi);
 }
 
-static void _gridbox_remove_item_anim_cb(void *data, Elm_Transit *transit) {
-       DBG("");
-       retif(data == NULL, , "invalid parameter");
-       retif(transit == NULL, , "invalid parameter");
+static void _anim_init_insert(void *data)
+{
+       QP_VI *vi = data;
+       retif(vi == NULL, , "invalid parameter");
+       retif(vi->container == NULL, , "invalid parameter");
+       retif(vi->target == NULL, , "invalid parameter");
+
+       Evas_Object *gridbox = vi->container;
+       Evas_Object *item = vi->target;
+
+       struct appdata *ad = quickpanel_get_app_data();
+       retif(ad == NULL, , "invalid parameter");
 
-       gridbox_info_animation *info_animation = data;
+       evas_object_clip_set(item, evas_object_clip_get(gridbox));
+       evas_object_color_set(item, 0, 0, 0, 0);
+}
+
+static void _anim_job_insert(void *data)
+{
+       QP_VI *vi = data;
+       int index = 1, index_child = 1;
+       int is_prepend = 0;
+       int coord_x, coord_y = 0;
+       int coord_old_x, coord_old_y = 0;
+       int coord_fix_x, coord_fix_y = 0;
+       Evas_Object *gridbox = NULL;
+       Evas_Object *item = NULL;
+       Elm_Transit *transit_layout = NULL;
+       Elm_Transit *transit_fadein = NULL;
+       gridbox_info_layout *info_layout = NULL;
 
-       retif(info_animation->gridbox == NULL, , "invalid parameter");
-       retif(info_animation->item == NULL, , "invalid parameter");
+       retif(vi == NULL, , "invalid parameter");
+       retif(vi->container == NULL, , "invalid parameter");
+       retif(vi->target == NULL, , "invalid parameter");
 
-       DBG("remove:%p", info_animation->item);
+       gridbox = vi->container;
+       item = vi->target;
+       is_prepend = vi->extra_flag_1;
 
-       void *node = noti_box_node_get(info_animation->item);
-       elm_box_unpack(info_animation->gridbox, info_animation->item);
-       noti_box_remove(info_animation->item);
-       _gridbox_call_item_deleted_cb(info_animation->gridbox,
-                       node, NULL);
+       info_layout = _gridbox_get_layout(gridbox);
+       retif(info_layout == NULL, , "invalid parameter");
 
-       if (info_animation->update_cb != NULL) {
-               retif(info_animation->container == NULL, , "invalid parameter");
-               retif(info_animation->noti == NULL, , "invalid parameter");
+       if (is_prepend != 1) {
+               index_child = quickpanel_noti_gridbox_get_item_count(gridbox);
+       }
+       _gridbox_layout_get_coord(gridbox, 0, index_child, NULL, &coord_x, &coord_y);
+       evas_object_move(item, coord_x, coord_y);
+
+       if (is_prepend == 1) {
+               Eina_List *l;
+               Eina_List *l_next;
+               Evas_Object *obj;
+               Eina_List *item_list = elm_box_children_get(gridbox);
+
+               DBG("all count:%d", eina_list_count (item_list));
+
+               EINA_LIST_FOREACH_SAFE(item_list, l, l_next, obj) {
+                       if (obj != NULL) {
+                               transit_layout = elm_transit_add();
+                               if (transit_layout != NULL) {
+                                       evas_object_geometry_get(obj, &coord_old_x, &coord_old_y, NULL, NULL);
+                                       _gridbox_layout_get_coord(gridbox, 0, index + 1, NULL, &coord_x, &coord_y);
+
+                                       coord_x = coord_x - coord_old_x;
+                                       coord_y = coord_y - coord_old_y;
+                                       coord_fix_x = (coord_x != 0) ? coord_x / coord_x : 0;
+                                       coord_fix_y = (coord_y != 0) ? coord_y / coord_y : 0;
+                                       elm_transit_effect_translation_add(transit_layout, 0, 0, coord_x + coord_fix_x, coord_y + coord_fix_y);
+                                       elm_transit_object_add(transit_layout, obj);
+                                       elm_transit_duration_set(transit_layout,
+                                                       quickpanel_vim_get_duration(VI_OP_REORDER));
+                                       elm_transit_tween_mode_set(transit_layout,
+                                                       quickpanel_vim_get_tweenmode(VI_OP_REORDER));
+                                       elm_transit_objects_final_state_keep_set(transit_layout, EINA_TRUE);
+                                       elm_transit_go(transit_layout);
+                               } else {
+                                       ERR("failed to create a transit");
+                               }
+                       }
+                       index++;
+               }
 
-               info_animation->update_cb(info_animation->container,
-                               info_animation->noti, info_animation->pos);
+               if (item_list != NULL) {
+                       eina_list_free(item_list);
+               }
        }
 
-       free(info_animation);
-       info_animation = NULL;
+       transit_fadein = elm_transit_add();
+       if (transit_fadein != NULL) {
+               elm_transit_object_add(transit_fadein, item);
+               elm_transit_effect_color_add(transit_fadein, 0, 0, 0, 0, 255, 255, 255, 255);
+               elm_transit_duration_set(transit_fadein,
+                               quickpanel_vim_get_duration(VI_OP_INSERT));
+               elm_transit_tween_mode_set(transit_fadein,
+                               quickpanel_vim_get_tweenmode(VI_OP_INSERT));
+               elm_transit_del_cb_set(transit_fadein,
+                               quickpanel_vi_done_cb_for_transit, vi);
+               if (transit_layout != NULL) {
+                       elm_transit_chain_transit_add(transit_layout, transit_fadein);
+               } else {
+                       elm_transit_go(transit_fadein);
+               }
+       } else {
+               ERR("failed to create a transit");
+               quickpanel_vi_done(vi);
+       }
 }
 
-HAPI void gridbox_remove_item(Evas_Object *gridbox, Evas_Object *item, int with_animation) {
-       DBG("remove:%p", item);
+static void _anim_done_insert(void *data)
+{
+       QP_VI *vi = data;
+       retif(vi == NULL, , "invalid parameter");
+
+       Evas_Object *gridbox = vi->container;
+       Evas_Object *item = vi->target;
+       int is_prepend = vi->extra_flag_1;
+
        retif(gridbox == NULL, , "invalid parameter");
        retif(item == NULL, , "invalid parameter");
 
-       if (noti_box_get_status(item) == STATE_DELETING) {
-               return ;
+       evas_object_color_set(item, 255, 255, 255, 255);
+
+       if (is_prepend == GRIDBOX_PREPEND) {
+               elm_box_pack_start(gridbox, item);
+       } else {
+               elm_box_pack_end(gridbox, item);
+       }
+}
+
+static void _anim_job_delete(void *data)
+{
+       QP_VI *vi = data;
+       int coord_x, coord_y = 0;
+       int coord_old_x, coord_old_y = 0;
+       int coord_fix_x, coord_fix_y = 0;
+
+       retif(vi == NULL, , "invalid parameter");
+       retif(vi->container == NULL, , "invalid parameter");
+       retif(vi->target == NULL, , "invalid parameter");
+
+       Elm_Transit *transit_layout = NULL;
+       Elm_Transit *transit_fadein = NULL;
+       Evas_Object *gridbox = vi->container;
+       Evas_Object *item = vi->target;
+
+       transit_fadein = elm_transit_add();
+       if (transit_fadein != NULL) {
+               elm_transit_object_add(transit_fadein, item);
+               elm_transit_effect_color_add(transit_fadein, 255, 255, 255, 255, 0, 0, 0, 0);
+               elm_transit_objects_final_state_keep_set(transit_fadein, EINA_TRUE);
+               elm_transit_tween_mode_set(transit_fadein,
+                               quickpanel_vim_get_tweenmode(VI_OP_DELETE));
+               elm_transit_duration_set(transit_fadein,
+                               quickpanel_vim_get_duration(VI_OP_DELETE));
+               elm_transit_go(transit_fadein);
+       } else {
+               ERR("failed to create a transit");
+       }
+
+       Eina_List *l;
+       Eina_List *l_next;
+       Evas_Object *obj;
+       Eina_List *item_list = elm_box_children_get(gridbox);
+
+       DBG("all count:%d", eina_list_count (item_list));
+
+       int index_child = 1;
+       int is_start_relayout = 0;
+       EINA_LIST_FOREACH_SAFE(item_list, l, l_next, obj) {
+               if (obj == item) {
+                       is_start_relayout = 1;
+               } else if (obj != NULL && is_start_relayout == 1) {
+                       transit_layout = elm_transit_add();
+                       if (transit_layout != NULL) {
+                               evas_object_geometry_get(obj, &coord_old_x, &coord_old_y, NULL, NULL);
+                               _gridbox_layout_get_coord(gridbox, 0, index_child - 1, NULL, &coord_x, &coord_y);
+
+                               coord_x = coord_x - coord_old_x;
+                               coord_y = coord_y - coord_old_y;
+                               coord_fix_x = (coord_x != 0) ? coord_x/coord_x : 0;
+                               coord_fix_y = (coord_y != 0) ? coord_y/coord_y : 0;
+                               elm_transit_effect_translation_add(transit_layout, 0, 0, coord_x + coord_fix_x, coord_y + coord_fix_y);
+                               elm_transit_object_add(transit_layout, obj);
+                               elm_transit_duration_set(transit_layout,
+                                               quickpanel_vim_get_duration(VI_OP_REORDER));
+                               elm_transit_tween_mode_set(transit_layout,
+                                               quickpanel_vim_get_tweenmode(VI_OP_REORDER));
+                               elm_transit_objects_final_state_keep_set(transit_layout, EINA_TRUE);
+                               if (transit_fadein != NULL) {
+                                       elm_transit_chain_transit_add(transit_fadein, transit_layout);
+                               }
+                       } else {
+                               ERR("failed to create a transit");
+                       }
+               }
+               index_child++;
        }
-       noti_box_set_status(item, STATE_DELETING);
+
+       if (item_list != NULL) {
+               eina_list_free(item_list);
+       }
+
+       if (transit_layout != NULL) {
+               elm_transit_del_cb_set(transit_layout, quickpanel_vi_done_cb_for_transit, vi);
+       } else if (transit_fadein != NULL) {
+               elm_transit_del_cb_set(transit_fadein, quickpanel_vi_done_cb_for_transit, vi);
+       } else {
+               ERR("failed to create a transit");
+               quickpanel_vi_done(vi);
+       }
+}
+
+static void _anim_done_delete(void *data)
+{
+       QP_VI *vi = data;
+       retif(vi == NULL, , "invalid parameter");
+       retif(vi->container == NULL, , "invalid parameter");
+       retif(vi->target == NULL, , "invalid parameter");
+
+       Evas_Object *gridbox = vi->container;
+       Evas_Object *item = vi->target;
+
+       elm_box_unpack(gridbox, item);
+       quickpanel_noti_box_remove(item);
+       _gridbox_call_item_deleted_cb(gridbox, quickpanel_noti_box_node_get(item), NULL);
+}
+
+HAPI void quickpanel_noti_gridbox_remove_item(Evas_Object *gridbox, Evas_Object *item, int with_animation)
+{
+       QP_VI *vi = NULL;
+       retif(gridbox == NULL, , "invalid parameter");
+       retif(item == NULL, , "invalid parameter");
 
        if (with_animation == 1) {
-               gridbox_info_animation *info_animation = (gridbox_info_animation *) malloc(
-                               sizeof(gridbox_info_animation));
-               if (info_animation == NULL)
-                       return;
-               info_animation->gridbox = gridbox;
-               info_animation->item = item;
-               info_animation->update_cb = NULL;
-               info_animation->container = NULL;
-               info_animation->noti = NULL;
-               info_animation->pos = 0;
-
-               Elm_Transit *transit = elm_transit_add();
-               //Fade in and out with layout object.
-               elm_transit_object_add(transit, item);
-               elm_transit_effect_fade_add(transit);
-               elm_transit_duration_set(transit, 0.7);
-               elm_transit_del_cb_set(transit, _gridbox_remove_item_anim_cb,
-                               info_animation);
-               elm_transit_go(transit);
+               vi = quickpanel_vi_new_with_data(
+                               VI_OP_DELETE,
+                               QP_ITEM_TYPE_NOTI,
+                               gridbox,
+                               item,
+                               _anim_init_cb,
+                               _anim_job_cb,
+                               _anim_done_cb,
+                               _anim_done_cb,
+                               vi,
+                               NULL,
+                               0,
+                               0);
+               quickpanel_vi_start(vi);
        } else {
-               void *node = noti_box_node_get(item);
+               void *node = quickpanel_noti_box_node_get(item);
                elm_box_unpack(gridbox, item);
-               noti_box_remove(item);
+               quickpanel_noti_box_remove(item);
                _gridbox_call_item_deleted_cb(gridbox,
                                node, NULL);
        }
 }
 
-HAPI void gridbox_remove_all_item(Evas_Object *gridbox, int with_animation) {
-       DBG("");
-       retif(gridbox == NULL, , "invalid parameter");
+static void _anim_job_delete_all(void *data)
+{
+       QP_VI *vi = data;
+       retif(vi == NULL, , "invalid parameter");
 
+       quickpanel_vi_done(vi);
+}
+
+static void _anim_done_delete_all(void *data)
+{
+       QP_VI *vi = data;
        Eina_List *l;
        Eina_List *l_next;
-       Evas_Object *obj;
-       Eina_List *item_list = elm_box_children_get(gridbox);
+       Evas_Object *obj = NULL;
+       Eina_List *item_list = NULL;
 
-       EINA_LIST_FOREACH_SAFE(item_list, l, l_next, obj)
-       {
+       retif(vi == NULL, , "invalid parameter");
+       retif(vi->container == NULL, , "invalid parameter");
+
+       Evas_Object *gridbox = vi->container;
+
+       item_list = elm_box_children_get(gridbox);
+       retif(item_list == NULL, , "invalid parameter");
+
+       EINA_LIST_FOREACH_SAFE(item_list, l, l_next, obj) {
                if (obj != NULL) {
-                       // call deleted callback
-                       gridbox_remove_item(gridbox, obj, with_animation);
+                       DBG("try to remove:%p", obj);
+                       quickpanel_noti_gridbox_remove_item(gridbox, obj, EINA_TRUE);
                }
        }
+
+       if (item_list != NULL) {
+               eina_list_free(item_list);
+       }
+}
+
+HAPI void quickpanel_noti_gridbox_remove_all_item(Evas_Object *gridbox, int with_animation)
+{
+       QP_VI *vi = NULL;
+       retif(gridbox == NULL, , "invalid parameter");
+
+       vi = quickpanel_vi_new_with_data(
+                       VI_OP_DELETE_ALL,
+                       QP_ITEM_TYPE_NOTI,
+                       gridbox,
+                       NULL,
+                       _anim_init_cb,
+                       _anim_job_cb,
+                       _anim_done_cb,
+                       _anim_done_cb,
+                       vi,
+                       NULL,
+                       0,
+                       0);
+       quickpanel_vi_start(vi);
+}
+
+static void _anim_job_update(void *data)
+{
+       QP_VI *vi = data;
+       retif(vi == NULL, , "invalid parameter");
+       retif(vi->container == NULL, , "invalid parameter");
+       retif(vi->target == NULL, , "invalid parameter");
+
+       quickpanel_vi_done(data);
 }
 
-HAPI void gridbox_update_item(Evas_Object *gridbox, Evas_Object *item) {
+static void _anim_done_update(void *data)
+{
+       QP_VI *vi = data;
+       retif(vi == NULL, , "invalid parameter");
+       retif(vi->container == NULL, , "invalid parameter");
+       retif(vi->target == NULL, , "invalid parameter");
 
+       Evas_Object *gridbox = vi->container;
+       Evas_Object *item = vi->target;
+
+       if (quickpanel_noti_gridbox_get_item_exist(gridbox, item) == 1) {
+               quickpanel_noti_box_item_update(item);
+       }
+}
+
+HAPI void quickpanel_noti_gridbox_update_item(Evas_Object *gridbox, Evas_Object *item)
+{
+       QP_VI *vi = NULL;
        retif(gridbox == NULL, , "invalid parameter");
        retif(item == NULL, , "invalid parameter");
+
+       vi = quickpanel_vi_new_with_data(
+                       VI_OP_UPDATE,
+                       QP_ITEM_TYPE_NOTI,
+                       gridbox,
+                       item,
+                       _anim_init_cb,
+                       _anim_job_cb,
+                       _anim_done_cb,
+                       _anim_done_cb,
+                       vi,
+                       NULL,
+                       0,
+                       0);
+
+       retif(vi == NULL, , "quickpanel_vi_new_with_data returns NULL");
+       vi->disable_interrupt_userevent = 1;
+       vi->disable_freezing = 1;
+       quickpanel_vi_start(vi);
 }
 
-HAPI void gridbox_remove_and_add_item(Evas_Object *gridbox, Evas_Object *item
+HAPI void quickpanel_noti_gridbox_remove_and_add_item(Evas_Object *gridbox, Evas_Object *item
                ,void (*update_cb)(Evas_Object *list, void *data, int is_prepend)
-               ,void *container, void *data, int pos) {
-
+               ,void *container, void *data, int pos)
+{
+       QP_VI *vi = NULL;
        retif(gridbox == NULL, , "invalid parameter");
        retif(item == NULL, , "invalid parameter");
        retif(update_cb == NULL, , "invalid parameter");
        retif(container == NULL, , "invalid parameter");
        retif(data == NULL, , "invalid parameter");
 
-       if (noti_box_get_status(item) == STATE_DELETING) {
-               return ;
-       }
-       noti_box_set_status(item, STATE_DELETING);
+       vi = quickpanel_vi_new_with_data(
+                       VI_OP_DELETE,
+                       QP_ITEM_TYPE_NOTI,
+                       gridbox,
+                       item,
+                       _anim_init_cb,
+                       _anim_job_cb,
+                       _anim_done_cb,
+                       _anim_done_cb,
+                       vi,
+                       NULL,
+                       0,
+                       0);
+       quickpanel_vi_start(vi);
+}
 
-       gridbox_info_animation *info_animation = (gridbox_info_animation *) malloc(
-                       sizeof(gridbox_info_animation));
-       if (info_animation == NULL)
-               return;
-       info_animation->gridbox = gridbox;
-       info_animation->item = item;
-       info_animation->update_cb = update_cb;
-       info_animation->container = container;
-       info_animation->noti = data;
-       info_animation->pos = pos;
-
-       Elm_Transit *transit = elm_transit_add();
-       //Fade in and out with layout object.
-       elm_transit_object_add(transit, item);
-       elm_transit_effect_fade_add(transit);
-       elm_transit_duration_set(transit, 0.4);
-       elm_transit_del_cb_set(transit, _gridbox_remove_item_anim_cb,
-                       info_animation);
-       elm_transit_go(transit);
-}
-
-HAPI void gridbox_finalize_rotation_cb(void *data) {
+HAPI void gridbox_finalize_rotation_cb(void *data)
+{
        retif(data == NULL, , "invalid parameter");
        Evas_Object *gridbox = data;
 
        elm_box_recalculate(gridbox);
 }
 
-HAPI void gridbox_rotation(Evas_Object *gridbox, int angle) {
+HAPI void quickpanel_noti_gridbox_rotation(Evas_Object *gridbox, int angle)
+{
        const char *signal = NULL;
 
        retif(gridbox == NULL, , "invalid parameter");
@@ -425,42 +764,221 @@ HAPI void gridbox_rotation(Evas_Object *gridbox, int angle) {
                signal = "box.portrait";
        }
 
-       DBG("all count:%d", eina_list_count (item_list));
-
-       EINA_LIST_FOREACH_SAFE(item_list, l, l_next, obj)
-       {
+       EINA_LIST_FOREACH_SAFE(item_list, l, l_next, obj) {
                if (obj != NULL) {
                        elm_object_signal_emit(obj, signal, "box.prog");
                        edje_object_message_signal_process(_EDJ(obj));
-                       elm_layout_sizing_eval(obj);
                        DBG("set to %s, %x", signal, obj);
                }
        }
 
-       if (angle == 270 || angle == 90) {
-               elm_box_layout_set(gridbox, _gridbox_layout, info_layout_landscape,
-                               NULL);
-
-#if 0
-               layout_data = elm_box_transition_new(0.0, _gridbox_layout,
-                               info_layout_portrait, NULL, _gridbox_layout,
-                               info_layout_landscape, NULL, gridbox_finalize_rotation_cb,
-                               gridbox);
-#endif
+       if (item_list != NULL) {
+               eina_list_free(item_list);
+       }
+
+       elm_box_layout_set(gridbox, _gridbox_layout, gridbox, NULL);
+       DBG("rotation angle is %d", angle);
+}
+
+HAPI int quickpanel_noti_gridbox_get_item_count(Evas_Object *gridbox)
+{
+       int item_count = 0;
+       Eina_List *items = NULL;
+       retif(gridbox == NULL, 0, "invalid parameter");
+
+       if ((items = elm_box_children_get(gridbox)) != NULL) {
+               item_count = eina_list_count(items);
+               eina_list_free(items);
+               return item_count;
        } else {
-               elm_box_layout_set(gridbox, _gridbox_layout, info_layout_portrait,
-                               NULL);
-#if 0
-               layout_data = elm_box_transition_new(0.0, _gridbox_layout,
-                               info_layout_landscape, NULL, _gridbox_layout,
-                               info_layout_portrait, NULL, gridbox_finalize_rotation_cb,
-                               gridbox);
-#endif
-       }
-
-#if 0
-       elm_box_layout_set(gridbox, elm_box_layout_transition, layout_data,
-                       elm_box_transition_free);
-#endif
-       DBG("Angle  Rotation  is %d", angle);
+               return 0;
+       }
+}
+
+HAPI int quickpanel_noti_gridbox_get_item_exist(Evas_Object *gridbox, Evas_Object *box)
+{
+       int ret = 0;
+       Eina_List *items = NULL;
+       retif(gridbox == NULL, 0, "invalid parameter");
+
+       if ((items = elm_box_children_get(gridbox)) != NULL) {
+               if (eina_list_data_find(items, box) != NULL) {
+                       ret = 1;
+               }
+               eina_list_free(items);
+       }
+
+       return ret;
+}
+
+static Eina_Bool _anim_init_cb(void *data)
+{
+       int i = 0;
+       QP_VI *vi = data;
+       retif(vi == NULL, EINA_FALSE, "invalid parameter");
+
+       static qp_vi_op_table anim_init_table[] = {
+               {
+                       .op_type = VI_OP_INSERT,
+                       .handler = _anim_init_insert,
+               },
+               {
+                       .op_type = VI_OP_NONE,
+                       .handler = NULL,
+               },
+       };
+
+       for (i = 0; anim_init_table[i].op_type != VI_OP_NONE; i++) {
+               if (anim_init_table[i].op_type != vi->op_type) {
+                       continue;
+               }
+
+               anim_init_table[i].handler(vi);
+               break;
+       }
+
+       return EINA_TRUE;
+}
+
+static Eina_Bool _anim_job_cb(void *data)
+{
+       int i = 0;
+       QP_VI *vi = data;
+       retif(vi == NULL, EINA_FALSE, "invalid parameter");
+
+       static qp_vi_op_table anim_job_table[] = {
+               {
+                       .op_type = VI_OP_INSERT,
+                       .handler = _anim_job_insert,
+               },
+               {
+                       .op_type = VI_OP_DELETE,
+                       .handler = _anim_job_delete,
+               },
+               {
+                       .op_type = VI_OP_DELETE_ALL,
+                       .handler = _anim_job_delete_all,
+               },
+               {
+                       .op_type = VI_OP_UPDATE,
+                       .handler = _anim_job_update,
+               },
+               {
+                       .op_type = VI_OP_NONE,
+                       .handler = NULL,
+               },
+       };
+
+       for (i = 0; anim_job_table[i].op_type != VI_OP_NONE; i++) {
+               if (anim_job_table[i].op_type != vi->op_type) {
+                       continue;
+               }
+
+               anim_job_table[i].handler(vi);
+               break;
+       }
+
+       return EINA_TRUE;
+}
+
+static Eina_Bool _anim_done_cb(void *data)
+{
+       int i = 0;
+       QP_VI *vi = data;
+       retif(vi == NULL, EINA_FALSE, "invalid parameter");
+
+       static qp_vi_op_table anim_done_table[] = {
+               {
+                       .op_type = VI_OP_INSERT,
+                       .handler = _anim_done_insert,
+               },
+               {
+                       .op_type = VI_OP_DELETE,
+                       .handler = _anim_done_delete,
+               },
+               {
+                       .op_type = VI_OP_DELETE_ALL,
+                       .handler = _anim_done_delete_all,
+               },
+               {
+                       .op_type = VI_OP_UPDATE,
+                       .handler = _anim_done_update,
+               },
+               {
+                       .op_type = VI_OP_NONE,
+                       .handler = NULL,
+               },
+       };
+
+       for (i = 0; anim_done_table[i].op_type != VI_OP_NONE; i++) {
+               if (anim_done_table[i].op_type != vi->op_type) {
+                       continue;
+               }
+
+               anim_done_table[i].handler(vi);
+               break;
+       }
+
+       return EINA_TRUE;
+}
+
+HAPI int quickpanel_noti_gridbox_get_geometry(Evas_Object *gridbox,
+               int *limit_h, int *limit_partial_h, int *limit_partial_w)
+{
+
+       int count = 0;
+       int num_last = 0;
+       int x = 0, y = 0, w = 0, h = 0;
+       Eina_List *list = NULL;
+       gridbox_info_layout *info_layout = NULL;
+
+       retif(gridbox == NULL, 0, "invalid parameter");
+       retif(limit_h == NULL, 0, "invalid parameter");
+       retif(limit_partial_h == NULL, 0, "invalid parameter");
+       retif(limit_partial_w == NULL, 0, "invalid parameter");
+       evas_object_geometry_get(gridbox, &x, &y, &w, &h);
+
+       info_layout = _gridbox_get_layout(gridbox);
+       retif(info_layout == NULL, 0, "invalid parameter");
+
+       list = elm_box_children_get(gridbox);
+       if (list != NULL) {
+               count = eina_list_count(list);
+               num_last = count % info_layout->n_per_rows;
+               eina_list_free(list);
+       } else {
+               num_last = 0;
+       }
+
+       *limit_h =  y + h;
+       if (num_last > 0) {
+               *limit_partial_h = *limit_h - info_layout->child_h;
+               *limit_partial_w = num_last * info_layout->child_w;
+       } else {
+               *limit_partial_h = *limit_h;
+               *limit_partial_w = 0;
+       }
+
+       return 1;
+}
+
+static void _notibox_deleted_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+       quickpanel_uic_close_quickpanel(EINA_FALSE, EINA_FALSE);
+}
+
+HAPI void quickpanel_noti_gridbox_closing_trigger_set(Evas_Object *gridbox)
+{
+       Evas_Object *item = NULL;
+       Eina_List *items = NULL;
+       retif(gridbox == NULL, , "invalid parameter");
+
+       if ((items = elm_box_children_get(gridbox)) != NULL) {
+               item = eina_list_nth(items, 0);
+               if (item != NULL) {
+                       evas_object_event_callback_add(item,
+                                       EVAS_CALLBACK_DEL, _notibox_deleted_cb, NULL);
+               }
+               eina_list_free(items);
+       }
 }
index 9096d8f..5e697a4 100755 (executable)
@@ -1,34 +1,42 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ * Copyright (c) 2009-2015 Samsung Electronics Co., Ltd All Rights Reserved
  *
- * Licensed under the Flora License, Version 1.1 (the License);
+ * 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,
+ * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
+ *
  */
 
+
 #ifndef __QUICKPANEL_GRIDBOX_H__
 #define __QUICKPANEL_GRIDBOX_H__
 
 #define GRIDBOX_PREPEND 1
 #define GRIDBOX_APPEND 0
 
-Evas_Object *gridbox_create(Evas_Object *parent, void *data);
-void gridbox_remove(Evas_Object *gridbox);
-void gridbox_add_item(Evas_Object *gridbox, Evas_Object *item, int is_prepend);
-void gridbox_remove_item(Evas_Object *gridbox, Evas_Object *item, int with_animation);
-void gridbox_rotation(Evas_Object *gridbox, int angle);
-void gridbox_remove_and_add_item(Evas_Object *gridbox, Evas_Object *item
+Evas_Object *quickpanel_noti_gridbox_create(Evas_Object *parent, void *data);
+void quickpanel_noti_gridbox_remove(Evas_Object *gridbox);
+void quickpanel_noti_gridbox_add_item(Evas_Object *gridbox, Evas_Object *item, int is_prepend);
+void quickpanel_noti_gridbox_remove_item(Evas_Object *gridbox, Evas_Object *item, int with_animation);
+void quickpanel_noti_gridbox_rotation(Evas_Object *gridbox, int angle);
+void quickpanel_noti_gridbox_remove_and_add_item(Evas_Object *gridbox, Evas_Object *item
                ,void (*update_cb)(Evas_Object *list, void *data, int is_prepend)
                ,void *container, void *data, int pos);
-void gridbox_remove_all_item(Evas_Object *gridbox, int with_animation);
-void gridbox_set_item_deleted_cb(Evas_Object *gridbox,
+void quickpanel_noti_gridbox_remove_all_item(Evas_Object *gridbox, int with_animation);
+void quickpanel_noti_gridbox_set_item_deleted_cb(Evas_Object *gridbox,
                void(*deleted_cb)(void *data, Evas_Object *obj));
+int quickpanel_noti_gridbox_get_item_count(Evas_Object *gridbox);
+int quickpanel_noti_gridbox_get_geometry(Evas_Object *gridbox,
+               int *limit_h, int *limit_partial_h, int *limit_partial_w);
+void quickpanel_noti_gridbox_update_item(Evas_Object *gridbox, Evas_Object *item);
+void quickpanel_noti_gridbox_closing_trigger_set(Evas_Object *gridbox);
+int quickpanel_noti_gridbox_get_item_exist(Evas_Object *gridbox, Evas_Object *box);
 #endif
index dad8096..5eaf40d 100755 (executable)
@@ -1,21 +1,23 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ * Copyright (c) 2009-2015 Samsung Electronics Co., Ltd All Rights Reserved
  *
- * Licensed under the Flora License, Version 1.1 (the License);
+ * 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,
+ * 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 <string.h>
-#include <Ecore_X.h>
+#include <notification.h>
 
 #include "quickpanel-ui.h"
 #include "common.h"
 #include "noti_node.h"
 #include "noti.h"
 #include "noti_util.h"
+#ifdef QP_SCREENREADER_ENABLE
+#include "accessibility.h"
+#endif
 #ifdef QP_ANIMATED_IMAGE_ENABLE
 #include "animated_image.h"
 #endif
+#include "animated_icon.h"
+
+extern Noti_View_H noti_view_h;
+extern Noti_View_H ongoing_noti_view_h;
+
+#define THRESHOLD_DRAGGING_TIME_LIMIT 1.0
+#define LIMIT_ZOOM_RATIO 0.57
+#define LIMIT_FADEOUT_RATIO 0.1
+#define THRESHOLD_DELETE_START 80
+#define THRESHOLD_DELETE_START_Y_LIMIT 60
+#define THRESHOLD_DISTANCE (300)
+
+static struct _info {
+       int item_debug_step;
+       Noti_View_H *view_handlers[NOTIFICATION_LY_MAX + 1];
+} s_info = {
+       .item_debug_step = 0,
+       .view_handlers = {
+               NULL,
+               &noti_view_h,
+               &noti_view_h,
+               &noti_view_h,
+               &ongoing_noti_view_h,
+               &ongoing_noti_view_h,
+               NULL,
+       },
+};
+
+static int _is_item_deletable_by_gesture(noti_list_item_h *handler)
+{
+       notification_type_e type = NOTIFICATION_TYPE_NONE;
+       retif(handler == NULL, 0, "Invalid parameter!");
+       retif(handler->noti_node == NULL, 0, "Invalid parameter!");
+       retif(handler->noti_node->noti == NULL, 0, "Invalid parameter!");
 
-#define QP_DEFAULT_ICON        ICONDIR"/quickpanel_icon_default.png"
-
-
-static Evas_Object *_check_duplicated_progress_loading(Evas_Object *obj, const char *part, const char *style_name) {
-       Evas_Object *old_content = NULL;
-       const char *old_style_name = NULL;
-
-       retif(obj == NULL, NULL, "Invalid parameter!");
-       retif(part == NULL, NULL, "Invalid parameter!");
-       retif(style_name == NULL, NULL, "Invalid parameter!");
-
-       DBG("");
-
-       old_content = elm_object_part_content_get(obj, part);
-       if (old_content != NULL) {
-               old_style_name = elm_object_style_get(old_content);
-               if (old_style_name != NULL) {
-                       DBG("%s", old_style_name);
-                       if (strcmp(old_style_name, style_name) == 0)
-                               return old_content;
+       notification_h noti = handler->noti_node->noti;
+       notification_get_type(noti, &type);
 
-                       elm_object_part_content_unset(obj, part);
-                       evas_object_del(old_content);
-               }
+       if (type == NOTIFICATION_TYPE_NOTI) {
+               return 1;
        }
 
-       return NULL;
+       return 0;
 }
 
-static Evas_Object *_check_duplicated_image_loading(Evas_Object *obj, const char *part, const char *file_path) {
-       Evas_Object *old_ic = NULL;
-       const char *old_ic_path = NULL;
-
-       retif(obj == NULL, NULL, "Invalid parameter!");
-       retif(part == NULL, NULL, "Invalid parameter!");
-       retif(file_path == NULL, NULL, "Invalid parameter!");
-
-       old_ic = elm_object_part_content_get(obj, part);
-       if (old_ic != NULL) {
-               elm_image_file_get(old_ic, &old_ic_path, NULL);
-               if (old_ic_path != NULL) {
-                       DBG("%s:%s", old_ic_path, file_path);
-                       if (strcmp(old_ic_path, file_path) == 0)
-                               return old_ic;
-               }
-
-               elm_object_part_content_unset(obj, part);
-               evas_object_del(old_ic);
-       }
+static void _item_handler_set(Evas_Object *item, noti_list_item_h *handler)
+{
+       retif(item == NULL, , "Invalid parameter!");
+       retif(handler == NULL, , "Invalid parameter!");
 
-       return NULL;
+       evas_object_data_set(item, E_DATA_NOTI_LIST_ITEM_H, handler);
 }
 
-static void _set_text_to_part(Evas_Object *obj, const char *part, const char *text) {
-       const char *old_text = NULL;
+static noti_list_item_h *_item_handler_get(Evas_Object *item)
+{
+       retif(item == NULL, NULL, "Invalid parameter!");
 
-       retif(obj == NULL, , "Invalid parameter!");
-       retif(part == NULL, , "Invalid parameter!");
-       retif(text == NULL, , "Invalid parameter!");
+       return evas_object_data_get(item, E_DATA_NOTI_LIST_ITEM_H);
+}
 
-       old_text = elm_object_part_text_get(obj, part);
-       if (old_text != NULL) {
-               if (strcmp(old_text, text) == 0) {
-                       return ;
-               }
-       }
+static noti_node_item *_get_noti_node(Evas_Object *item)
+{
+       retif(item == NULL, NULL, "invalid parameter");
 
-       elm_object_part_text_set(obj, part, text);
+       noti_list_item_h *handler = _item_handler_get(item);
+       retif(handler == NULL, NULL, "invalid parameter");
+
+       return quickpanel_noti_node_get_by_priv_id(handler->priv_id);
 }
 
-static char *_noti_get_progress(notification_h noti, char *buf,
-                                          int buf_len)
+static void _response_callback_call(Evas_Object *item, const char *emission)
 {
-       double size = 0.0;
-       double percentage = 0.0;
+       static double time_called = 0.0;
+       retif(item == NULL, , "invalid parameter");
+       retif(emission == NULL, , "invalid parameter");
 
-       retif(noti == NULL, NULL, "Invalid parameter!");
-       retif(buf == NULL, NULL, "Invalid parameter!");
+       if (time_called == 0.0) {
+               time_called = ecore_loop_time_get();
+       } else {
+               if ((ecore_loop_time_get() - time_called) < 0.4) {
+                       DBG("click rejected");
+                       return;
+               }
+               time_called = ecore_loop_time_get();
+       }
 
-       notification_get_size(noti, &size);
-       notification_get_progress(noti, &percentage);
+       response_cb cb = NULL;
+       noti_list_item_h *handler = _item_handler_get(item);
+       noti_node_item *noti_node = _get_noti_node(item);
+       if (handler != NULL && noti_node != NULL) {
+               if (strncmp(emission,"selected", strlen("selected")) == 0) {
+                       if (handler->need_to_cancel_press > 0) {
+                               handler->need_to_cancel_press = 0;
+                               return;
+                       }
 
-       if (percentage > 0) {
-               if (percentage < 1.0 ) {
-                       if (snprintf(buf, buf_len, "%d%%", (int)(percentage * 100)) <= 0) {
-                               return NULL;
+                       cb = handler->selected_cb;
+                       if (cb != NULL) {
+                               cb(noti_node, item);
                        }
                }
-               if (percentage >= 1.0) {
-                       snprintf(buf, buf_len, "%d%%", 100);
-               }
-
-               return buf;
-       } else if (size > 0 && percentage == 0) {
-               if (size > (1 << 30)) {
-                       if (snprintf(buf, buf_len, "%.1lfGB",
-                               size / 1000000000.0) <= 0)
-                               return NULL;
-
-                       return buf;
-               } else if (size > (1 << 20)) {
-                       if (snprintf(buf, buf_len, "%.1lfMB",
-                               size / 1000000.0) <= 0)
-                               return NULL;
-
-                       return buf;
-               } else if (size > (1 << 10)) {
-                       if (snprintf(buf, buf_len, "%.1lfKB",
-                               size / 1000.0) <= 0)
-                               return NULL;
-
-                       return buf;
-               } else {
-                       if (snprintf(buf, buf_len, "%lfB", size) <= 0)
-                               return NULL;
+               if (strncmp(emission,"button_1", strlen("button_1")) == 0) {
+                       if (handler->need_to_cancel_press > 0) {
+                               handler->need_to_cancel_press = 0;
+                               return;
+                       }
 
-                       return buf;
+                       cb = handler->button_1_cb;
+                       if (cb != NULL) {
+                               cb(noti_node, item);
+                       }
+               }
+               if (strncmp(emission,"deleted", strlen("deleted")) == 0) {
+                       cb = handler->deleted_cb;
+                       if (cb != NULL) {
+                               cb(noti_node, item);
+                       }
                }
        }
-
-       return NULL;
 }
 
-static void _noti_list_item_ongoing_set_progressbar(Evas_Object *noti_list_item)
+static void _signal_cb(void *data, Evas_Object *o, const char *emission, const char *source)
 {
-       notification_h noti = NULL;
-       Evas_Object *ic = NULL;
-       Evas_Object *old_ic = NULL;
-       double size = 0.0;
-       double percentage = 0.0;
-       notification_type_e type = NOTIFICATION_TYPE_NONE;
-       notification_ly_type_e layout = NOTIFICATION_LY_NONE ;
-
-       retif(noti_list_item == NULL, , "Invalid parameter!");
+       retif(data == NULL, , "invalid parameter");
+       retif(o == NULL, , "invalid parameter");
+       retif(emission == NULL, , "invalid parameter");
 
-       noti_list_item_h *noti_list_item_data = evas_object_data_get(noti_list_item, E_DATA_NOTI_LIST_ITEM_H);
-       retif(noti_list_item == NULL, , "data is NULL");
+       _response_callback_call(o, emission);
+}
 
-       noti_node_item *item = noti_list_item_data->data;
-       retif(item == NULL, , "data is NULL");
+static Eina_Bool _drag_cancel_cb(void *data) {
+       QP_VI *vi = data;
+       noti_list_item_h *handler = NULL;
+       retif(vi == NULL, EINA_FALSE, "invalid parameter");
 
-       noti = item->noti;
-       retif(noti == NULL, , "noti is NULL");
+       if (vi->target != NULL) {
+               DBG("Canceling dragging");
 
-       notification_get_type(noti, &type);
-       if (type == NOTIFICATION_TYPE_ONGOING) {
-               notification_get_size(noti, &size);
-               notification_get_progress(noti, &percentage);
-               notification_get_layout(noti, &layout);
-
-               if (layout != NOTIFICATION_LY_ONGOING_EVENT) {
-                       if (percentage > 0 && percentage <= 1) {
-                               old_ic = _check_duplicated_progress_loading(noti_list_item,
-                                               "elm.swallow.progress", "quickpanel/list_progress");
-                               if (old_ic == NULL) {
-                                       ic = elm_progressbar_add(noti_list_item);
-                                       if (ic == NULL)
-                                               return ;
-                                       elm_object_style_set(ic, "quickpanel/list_progress");
-                               } else {
-                                       ic = old_ic;
-                               }
+               handler = _item_handler_get(vi->target);
+               retif(handler == NULL, EINA_FALSE, "handler is NULL");
 
-                               elm_progressbar_value_set(ic, percentage);
-                               elm_progressbar_horizontal_set(ic, EINA_TRUE);
-                               elm_progressbar_pulse(ic, EINA_FALSE);
-                       } else if (size >= 0 && percentage == 0) {
-                               old_ic = _check_duplicated_progress_loading(noti_list_item,
-                                               "elm.swallow.progress", "quickpanel/pending_list");
-                               if (old_ic == NULL) {
-                                       ic = elm_progressbar_add(noti_list_item);
-                                       if (ic == NULL)
-                                               return ;
-                                       elm_object_style_set(ic, "quickpanel/pending_list");
-                               } else {
-                                       ic = old_ic;
-                               }
+               handler->state = NOTILISTITEM_STATE_GETSTURE_CANCELED;
+               evas_object_map_enable_set(vi->target, EINA_FALSE);
 
-                               elm_progressbar_horizontal_set(ic, EINA_TRUE);
-                               elm_progressbar_pulse(ic, EINA_TRUE);
-                       }
-               }
+               handler->vi = NULL;
        }
 
-       if (ic != NULL) {
-               elm_object_part_content_set(noti_list_item, "elm.swallow.progress", ic);
-       }
+       return EINA_TRUE;
 }
 
-static void _noti_list_item_ongoing_set_icon(Evas_Object *noti_list_item)
+void static _mouse_down_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
 {
-       notification_h noti = NULL;
-       Evas_Object *ic = NULL;
-       Evas_Object *old_ic = NULL;
-       char *icon_path = NULL;
-       char *thumbnail_path = NULL;
-       char *main_icon_path = NULL;
-       char *sub_icon_path = NULL;
-
-       retif(noti_list_item == NULL, , "Invalid parameter!");
-
-       noti_list_item_h *noti_list_item_data = evas_object_data_get(noti_list_item, E_DATA_NOTI_LIST_ITEM_H);
-       retif(noti_list_item == NULL, , "data is NULL");
-
-       noti_node_item *item = noti_list_item_data->data;
-       retif(item == NULL, , "data is NULL");
-
-       noti = item->noti;
-       retif(noti == NULL, , "noti is NULL");
-
-       notification_get_image(noti, NOTIFICATION_IMAGE_TYPE_THUMBNAIL,
-                              &thumbnail_path);
-       notification_get_image(noti, NOTIFICATION_IMAGE_TYPE_ICON, &icon_path);
-
-       if (thumbnail_path != NULL && icon_path != NULL) {
-               main_icon_path = thumbnail_path;
-               sub_icon_path = icon_path;
-       } else if (icon_path != NULL && thumbnail_path == NULL) {
-               main_icon_path = icon_path;
-               sub_icon_path = NULL;
-       } else if (icon_path == NULL && thumbnail_path != NULL) {
-               main_icon_path = thumbnail_path;
-               sub_icon_path = NULL;
-       } else {
-               main_icon_path = NULL;
-               sub_icon_path = NULL;
-       }
+       int w = 0, h = 0;
+       noti_list_item_h *handler = NULL;
+       Evas_Event_Mouse_Down *ev = (Evas_Event_Mouse_Down *)event_info;
+       retif(ev == NULL, , "event_info is NULL");
 
-       if (main_icon_path != NULL) {
-               old_ic = _check_duplicated_image_loading(noti_list_item,
-                               "elm.swallow.thumbnail", main_icon_path);
+       handler = _item_handler_get(obj);
+       retif(handler == NULL, , "handler is NULL");
 
-               if (old_ic == NULL) {
-                       ic = elm_image_add(noti_list_item);
-                       elm_image_resizable_set(ic, EINA_FALSE, EINA_TRUE);
-                       elm_image_file_set(ic, main_icon_path, main_icon_path);
-                       elm_object_part_content_set(noti_list_item, "elm.swallow.thumbnail", ic);
-#ifdef QP_ANIMATED_IMAGE_ENABLE
-                       quickpanel_animated_image_add(ic);
-#endif
-               }
-       }
+       evas_object_geometry_get(obj, NULL, NULL, &w, &h);
 
-       if (sub_icon_path != NULL) {
-               old_ic = _check_duplicated_image_loading(noti_list_item,
-                               "elm.swallow.icon", sub_icon_path);
+       handler->press_x = ev->canvas.x;
+       handler->press_y = ev->canvas.y;
+       handler->obj_w = w;
+       handler->obj_h = h;
+       handler->state = NOTILISTITEM_STATE_NORMAL;
 
-               if (old_ic == NULL) {
-                       ic = elm_image_add(noti_list_item);
-                       elm_image_resizable_set(ic, EINA_FALSE, EINA_TRUE);
-                       elm_image_file_set(ic, sub_icon_path, sub_icon_path);
-                       elm_object_part_content_set(noti_list_item, "elm.swallow.icon", ic);
-               }
-       }
+       s_info.item_debug_step = 1;
+       SDBG("mouse down:%d %d %d", handler->obj_w, handler->obj_h, handler->state);
 
-       if (main_icon_path == NULL && sub_icon_path == NULL) {
-               old_ic = _check_duplicated_image_loading(noti_list_item,
-                               "elm.swallow.thumbnail", QP_DEFAULT_ICON);
-
-               if (old_ic == NULL) {
-                       ic = elm_image_add(noti_list_item);
-                       elm_image_resizable_set(ic, EINA_FALSE, EINA_TRUE);
-                       elm_image_file_set(ic, QP_DEFAULT_ICON, QP_DEFAULT_ICON);
-                       elm_object_part_content_set(noti_list_item, "elm.swallow.thumbnail", ic);
-#ifdef QP_ANIMATED_IMAGE_ENABLE
-                       quickpanel_animated_image_add(ic);
-#endif
-               }
+       if (handler->vi != NULL) {
+               quickpanel_vi_user_event_del(handler->vi);
+               handler->vi = NULL;
        }
+
+       handler->need_to_cancel_press = 0;
 }
 
-static void _noti_list_item_ongoing_set_text(Evas_Object *noti_list_item)
+static void _mouse_move_cb(void* data, Evas* e, Evas_Object* obj, void* event_info)
 {
-       notification_h noti = NULL;
-       notification_error_e noti_err = NOTIFICATION_ERROR_NONE;
-       char *text = NULL;
-       char *text_utf8 = NULL;
-       char *domain = NULL;
-       char *dir = NULL;
-       char *pkgname = NULL;
-       char *caller_pkgname = NULL;
-       int group_id = 0, priv_id = 0;
-       char buf[128] = { 0, };
-       notification_type_e type = NOTIFICATION_TYPE_NONE;
-       double size = 0.0;
-       double percentage = 0.0;
-       int isProgressBarEnabled = 1;
-       notification_ly_type_e layout = NOTIFICATION_LY_NONE ;
-
-       retif(noti_list_item == NULL, , "Invalid parameter!");
-
-       noti_list_item_h *noti_list_item_data = evas_object_data_get(noti_list_item, E_DATA_NOTI_LIST_ITEM_H);
-       retif(noti_list_item == NULL, , "data is NULL");
-
-       noti_node_item *item = noti_list_item_data->data;
-       retif(item == NULL, , "data is NULL");
-
-       noti = item->noti;
-       retif(noti == NULL, , "noti is NULL");
-
-       /* Set text domain */
-       notification_get_text_domain(noti, &domain, &dir);
-       if (domain != NULL && dir != NULL)
-               bindtextdomain(domain, dir);
+       int delta_x = 0;
+       static int vi_start_x = 0;
+       static int delta_prev = -1;
+       int x = 0, y = 0;
+       int w = 0, h = 0;
+       noti_list_item_h *handler = NULL;
+       Evas_Map *map = NULL;
+       Evas_Event_Mouse_Move* ev = event_info;
+       QP_VI *vi = NULL;
+       retif(ev == NULL, , "event_info is NULL");
+
+       handler = _item_handler_get(obj);
+       retif(handler == NULL, , "handler is NULL");
+
+       if (handler->state == NOTILISTITEM_STATE_GETSTURE_CANCELED) {
+               DBG("deletion has been canceled");
+               return;
+       }
 
-       /* Get pkgname & id */
-       notification_get_pkgname(noti, &pkgname);
-       notification_get_application(noti, &caller_pkgname);
-       notification_get_id(noti, &group_id, &priv_id);
-       notification_get_type(noti, &type);
-       notification_get_size(noti, &size);
-       notification_get_progress(noti, &percentage);
-       notification_get_layout(noti, &layout);
+       evas_object_geometry_get(obj, &x, &y, &w, &h);
+       delta_x = ev->cur.output.x - handler->press_x;
 
-       DBG("percentage:%f size:%f", percentage, size);
+       if (s_info.item_debug_step == 1) {
+               SDBG("mouse move:%d %d %d", delta_x, vi_start_x, handler->state);
+               s_info.item_debug_step = 2;
+       }
 
-       if (percentage <= 0.0 && size <= 0.0) {
-               isProgressBarEnabled = 0;
+       if (handler->state == NOTILISTITEM_STATE_NORMAL && _is_item_deletable_by_gesture(handler) == 1) {
+               if (abs(delta_x) >= THRESHOLD_DELETE_START) {
+                       DBG("start a deletion");
+                       handler->state = NOTILISTITEM_STATE_GETSTURE_WAIT;
+
+                       vi_start_x = delta_x;
+
+                       vi = quickpanel_vi_new_with_data(
+                                       VI_OP_DELETE,
+                                       QP_ITEM_TYPE_NOTI,
+                                       NULL,
+                                       obj,
+                                       NULL,
+                                       NULL,
+                                       NULL,
+                                       NULL, //_drag_cancel_cb,
+                                       vi,
+                                       NULL,
+                                       0,
+                                       0);
+                       handler->vi = vi;
+                       handler->need_to_cancel_press = 1;
+                       quickpanel_vi_user_event_add(vi);
+               }
+       } else if (handler->state == NOTILISTITEM_STATE_GETSTURE_WAIT) {
+               if (delta_prev != delta_x) {
+                       map = evas_map_new(4);
+                       if (map != NULL) {
+                               evas_map_util_points_populate_from_object(map, obj);
+                               evas_map_util_points_populate_from_geometry(map, x + delta_x - vi_start_x, y, w, h, 0);
+                               evas_object_map_enable_set(obj, EINA_TRUE);
+                               evas_object_map_set(obj, map);
+                               evas_map_free(map);
+                               quickpanel_list_util_scroll_freeze_set(EINA_TRUE);
+                       }
+                       delta_prev = delta_x;
+               }
        }
 
-       noti_err = notification_get_text(noti,
-                                                       NOTIFICATION_TEXT_TYPE_TITLE,
-                                                       &text);
+       handler->distance = delta_x;
+}
 
-       if (noti_err == NOTIFICATION_ERROR_NONE && text != NULL) {
-               quickpanel_util_char_replace(text, _NEWLINE, _SPACE);
-               _set_text_to_part(noti_list_item, "elm.text.title", text);
+static void _mouse_up_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+       int x = 0;
+       noti_list_item_h *handler = NULL;
+       Elm_Transit *transit_flick = NULL;
+       //double scale = elm_config_scale_get();
+       handler = _item_handler_get(obj);
+       retif(handler == NULL, , "handler is NULL");
+
+       quickpanel_list_util_scroll_freeze_set(EINA_FALSE);
+
+       if (s_info.item_debug_step == 2) {
+               SDBG("mouse up:%d", handler->state);
+               s_info.item_debug_step = 3;
        }
 
-       noti_err = notification_get_text(noti,
-                       NOTIFICATION_TEXT_TYPE_CONTENT,
-                                                       &text);
-       if (noti_err == NOTIFICATION_ERROR_NONE && text != NULL) {
-               if (layout == NOTIFICATION_LY_ONGOING_EVENT) {
-                       text_utf8 = elm_entry_utf8_to_markup(text);
-                       if (text_utf8 != NULL) {
-                               _set_text_to_part(noti_list_item, "elm.text.content.multiline", text_utf8);
-                               free(text_utf8);
-                       } else {
-                               _set_text_to_part(noti_list_item, "elm.text.content.multiline", text);
+       if (handler->state == NOTILISTITEM_STATE_GETSTURE_WAIT) {
+               if (abs(handler->distance) >= (THRESHOLD_DISTANCE - 10)
+                       && _is_item_deletable_by_gesture(handler) == 1) {
+                       x = abs(handler->distance) - THRESHOLD_DELETE_START;
+
+                       if (handler->distance > 0) {
+                               evas_object_map_set(obj, NULL);
+                               transit_flick = elm_transit_add();
+                               if (transit_flick != NULL) {
+                                       elm_transit_effect_translation_add(transit_flick, x, 0, 480, 0);
+                                       elm_transit_object_add(transit_flick, obj);
+                                       elm_transit_duration_set(transit_flick, 0.25 * (480 - x ) / 480);
+                                       elm_transit_tween_mode_set(transit_flick, ELM_TRANSIT_TWEEN_MODE_LINEAR);
+                                       elm_transit_objects_final_state_keep_set(transit_flick, EINA_TRUE);
+                                       elm_transit_go(transit_flick);
+
+                                       _response_callback_call(obj, "deleted");
+                               }
+                       } else if (handler->distance < 0) {
+                               evas_object_map_set(obj, NULL);
+                               transit_flick = elm_transit_add();
+                               if (transit_flick != NULL) {
+                                       elm_transit_effect_translation_add(transit_flick, -x, 0, -480, 0);
+                                       elm_transit_object_add(transit_flick, obj);
+                                       elm_transit_duration_set(transit_flick, 0.25 * ( 480 - x ) / 480);
+                                       elm_transit_tween_mode_set(transit_flick, ELM_TRANSIT_TWEEN_MODE_LINEAR);
+                                       elm_transit_objects_final_state_keep_set(transit_flick, EINA_TRUE);
+                                       elm_transit_go(transit_flick);
+
+                                       _response_callback_call(obj, "deleted");
+                               }
                        }
-
-                       elm_object_signal_emit(noti_list_item, "elm,state,elm.text.content.multiline,active", "elm");
                } else {
-                       quickpanel_util_char_replace(text, _NEWLINE, _SPACE);
-                       _set_text_to_part(noti_list_item, "elm.text.content", text);
-                       elm_object_signal_emit(noti_list_item, "elm,state,elm.text.content,active", "elm");
+                       evas_object_map_enable_set(obj, EINA_FALSE);
                }
-       }
 
-       if (isProgressBarEnabled != 0
-                       && layout != NOTIFICATION_LY_ONGOING_EVENT) {
-               text = _noti_get_progress(noti, buf,
-                                                                         sizeof(buf));
-               if (text != NULL) {
-                       quickpanel_util_char_replace(text, _NEWLINE, _SPACE);
-                       _set_text_to_part(noti_list_item, "elm.text.time", text);
+               if (handler->vi != NULL) {
+                       quickpanel_vi_user_event_del(handler->vi);
+                       handler->vi = NULL;
                }
-       }
-}
+       } else if (handler->state == NOTILISTITEM_STATE_GETSTURE_CANCELED) {
+               evas_object_map_enable_set(obj, EINA_FALSE);
 
-static void _noti_list_item_call_item_cb(Evas_Object *noti_list_item, const char *emission) {
-       retif(noti_list_item == NULL, , "invalid parameter");
-       retif(emission == NULL, , "invalid parameter");
+               if (handler->vi != NULL) {
+                       quickpanel_vi_user_event_del(handler->vi);
+                       handler->vi = NULL;
+               }
+       }
 
-       DBG("%s", emission);
+       handler->state = NOTILISTITEM_STATE_NORMAL;
+}
 
-       void (*cb)(void *data, Evas_Object *obj) = NULL;
-       noti_list_item_h *data = NULL;
+static Evas_Event_Flags
+_flick_end_cb(void *data, void *event_info)
+{
+       int x = 0;
+       noti_list_item_h *handler = NULL;
+       Evas_Object *view = NULL;
+       Elm_Transit *transit_flick = NULL;
+       Elm_Gesture_Momentum_Info *info = (Elm_Gesture_Momentum_Info *)event_info;
+       //double scale = elm_config_scale_get();
 
-       data = evas_object_data_get(noti_list_item, E_DATA_NOTI_LIST_ITEM_H);
+       view = (Evas_Object *)data;
+       handler = _item_handler_get(view);
 
-       if (strncmp(emission,"selected", strlen("selected")) == 0) {
-               cb = evas_object_data_get(noti_list_item, E_DATA_NOTI_LIST_CB_SELECTED_ITEM);
+       if (handler != NULL) {
+               handler->state = NOTILISTITEM_STATE_GETSTURE_CANCELED;
 
-               if (cb != NULL && data != NULL) {
-                       cb(data->data, noti_list_item);
+               if (_is_item_deletable_by_gesture(handler) != 1) {
+                       return EVAS_EVENT_FLAG_NONE;
                }
-       }
-       if (strncmp(emission,"button_1", strlen("button_1")) == 0) {
-               cb = evas_object_data_get(noti_list_item, E_DATA_NOTI_LIST_CB_BUTTON_1);
 
-               if (cb != NULL && data != NULL) {
-                       cb(data->data, noti_list_item);
-               }
+               x = abs(handler->distance) - THRESHOLD_DELETE_START;
        }
-       if (strncmp(emission,"deleted", strlen("deleted")) == 0) {
-               cb = evas_object_data_get(noti_list_item, E_DATA_NOTI_LIST_CB_DELETED_ITEM);
 
-               if (cb != NULL && data != NULL) {
-                       cb(data->data, noti_list_item);
+       if (info->x2 - info->x1 > 50) {
+               DBG("Flick event is occurred to right.");
+               evas_object_map_set(view, NULL);
+               transit_flick = elm_transit_add();
+               if (transit_flick != NULL) {
+                       elm_transit_effect_translation_add(transit_flick, x, 0, 480, 0);
+                       elm_transit_object_add(transit_flick, view);
+                       elm_transit_duration_set(transit_flick, 0.25 * (480 - x ) /480);
+                       elm_transit_tween_mode_set(transit_flick, ELM_TRANSIT_TWEEN_MODE_LINEAR);
+                       elm_transit_objects_final_state_keep_set(transit_flick, EINA_TRUE);
+                       elm_transit_go(transit_flick);
+
+                       _response_callback_call(view, "deleted");
+               }
+       } else if (info->x1 - info->x2 > 50) {
+               DBG("Flick event is occurred to left.");
+               evas_object_map_set(view, NULL);
+               transit_flick = elm_transit_add();
+               if (transit_flick != NULL) {
+                       elm_transit_effect_translation_add(transit_flick, -x, 0, -480, 0);
+                       elm_transit_object_add(transit_flick, view);
+                       elm_transit_duration_set(transit_flick, 0.25 * ( 480 - x ) / 480);
+                       elm_transit_tween_mode_set(transit_flick, ELM_TRANSIT_TWEEN_MODE_LINEAR);
+                       elm_transit_objects_final_state_keep_set(transit_flick, EINA_TRUE);
+                       elm_transit_go(transit_flick);
+
+                       _response_callback_call(view, "deleted");
                }
        }
+
+       return EVAS_EVENT_FLAG_NONE;
 }
 
-static void _signal_cb(void *data, Evas_Object *o, const char *emission, const char *source)
+HAPI Evas_Object *quickpanel_noti_list_item_create(Evas_Object *parent, notification_h noti)
 {
-       retif(data == NULL, , "invalid parameter");
-       retif(o == NULL, , "invalid parameter");
-       retif(emission == NULL, , "invalid parameter");
+       Evas_Object *view = NULL;
+       retif(noti == NULL, NULL, "invalid parameter");
 
-       _noti_list_item_call_item_cb(o, emission);
-}
+       notification_ly_type_e layout = NOTIFICATION_LY_NOTI_EVENT_SINGLE;
+       notification_get_layout(noti, &layout);
+
+       retif(s_info.view_handlers[layout] == NULL, NULL, "invalid parameter");
+       retif(s_info.view_handlers[layout]->create == NULL, NULL, "invalid parameter");
+
+       view = s_info.view_handlers[layout]->create(noti, parent);
+       if (view != NULL) {
+               noti_list_item_h *handler = (noti_list_item_h *) malloc(sizeof(noti_list_item_h));
+               retif(handler == NULL, NULL, "failed to allocate a memory");
+
+               memset(handler, 0, sizeof(noti_list_item_h));
+
+               handler->layout = layout;
+               handler->status = STATE_NORMAL;
+               handler->noti_node = NULL;
+               handler->state = NOTILISTITEM_STATE_NORMAL;
+
+               _item_handler_set(view, handler);
+
+               Evas_Object *focus = quickpanel_accessibility_ui_get_focus_object(view);
+               elm_object_part_content_set(view, "focus", focus);
+
+               //add event
+               elm_object_signal_callback_add(view,
+                               "selected",
+                               "edje",
+                               _signal_cb,
+                               parent
+               );
+
+               //add event
+               elm_object_signal_callback_add(view,
+                               "button_1",
+                               "edje",
+                               _signal_cb,
+                               parent
+               );
+
+               //add event
+               elm_object_signal_callback_add(view,
+                               "deleted",
+                               "edje",
+                               _signal_cb,
+                               parent
+               );
+
+               DBG("created box:%p", view);
+
+               evas_object_event_callback_add(view, EVAS_CALLBACK_MOUSE_DOWN, _mouse_down_cb, NULL);
+               evas_object_event_callback_add(view, EVAS_CALLBACK_MOUSE_MOVE, _mouse_move_cb, NULL);
+               evas_object_event_callback_add(view, EVAS_CALLBACK_MOUSE_UP, _mouse_up_cb, NULL);
+
+               Evas_Object *gl = elm_gesture_layer_add(parent);
+               elm_gesture_layer_flick_time_limit_ms_set(gl, 300);
+               elm_gesture_layer_attach(gl, view);
+
+               elm_gesture_layer_cb_set(gl, ELM_GESTURE_N_FLICKS, ELM_GESTURE_STATE_END, _flick_end_cb, view);
+       } else {
+               ERR("failed to create notification view(%s)"
+                       , s_info.view_handlers[layout]->name);
+       }
 
-HAPI Evas_Object *noti_list_item_create(Evas_Object *parent, notification_ly_type_e layout) {
-       Evas_Object *box = NULL;
-
-       retif(parent == NULL, NULL, "Invalid parameter!");
-
-       box = elm_layout_add(parent);
-
-       DBG("");
-       elm_layout_file_set(box, DEFAULT_EDJ,
-                       "quickpanel/listitem/default");
-
-       evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
-       evas_object_size_hint_align_set(box, EVAS_HINT_FILL, EVAS_HINT_FILL);
-       evas_object_show(box);
-
-       noti_list_item_h *box_h = (noti_list_item_h *) malloc(sizeof(noti_list_item_h));
-       box_h->layout = layout;
-       box_h->status = STATE_NORMAL;
-       box_h->data = NULL;
-       evas_object_data_set(box, E_DATA_NOTI_LIST_ITEM_H, box_h);
-       DBG("created box:%p", box);
-
-       //add event
-       elm_object_signal_callback_add(box,
-                       "selected",
-                       "edje",
-                       _signal_cb,
-                       parent
-       );
-
-       //add event
-       elm_object_signal_callback_add(box,
-                       "button_1",
-                       "edje",
-                       _signal_cb,
-                       parent
-       );
-
-       //add event
-       elm_object_signal_callback_add(box,
-                       "deleted",
-                       "edje",
-                       _signal_cb,
-                       parent
-       );
-
-       return box;
+       return view;
 }
 
-static void _noti_list_item_set_layout_ongoing_noti(Evas_Object *noti_list_item,
-               notification_h noti) {
-       DBG("");
-       retif(noti_list_item == NULL, , "invalid parameter");
+HAPI void quickpanel_noti_list_item_update(Evas_Object *item)
+{
+       retif(item == NULL, , "invalid parameter");
 
-       _noti_list_item_ongoing_set_progressbar(noti_list_item);
-       _noti_list_item_ongoing_set_icon(noti_list_item);
-       _noti_list_item_ongoing_set_text(noti_list_item);
-}
+       noti_list_item_h *handler = _item_handler_get(item);
+       if (handler != NULL) {
+               retif(s_info.view_handlers[handler->layout] == NULL, , "invalid parameter");
+               retif(s_info.view_handlers[handler->layout]->update == NULL, , "invalid parameter");
 
-static void _noti_list_item_set_layout(Evas_Object *noti_list_item, notification_h noti,
-               notification_ly_type_e layout) {
-
-       DBG("layout:%d", layout);
-
-       switch (layout) {
-               case NOTIFICATION_LY_NOTI_EVENT_SINGLE:
-                       break;
-               case NOTIFICATION_LY_NOTI_EVENT_MULTIPLE:
-                       break;
-               case NOTIFICATION_LY_NOTI_THUMBNAIL:
-                       break;
-               case NOTIFICATION_LY_NONE:
-                       break;
-               case NOTIFICATION_LY_ONGOING_EVENT:
-               case NOTIFICATION_LY_ONGOING_PROGRESS:
-                       _noti_list_item_set_layout_ongoing_noti(noti_list_item, noti);
-                       break;
-               case NOTIFICATION_LY_MAX:
-                       DBG("not supported layout type:%d", layout);
-                       break;
+               noti_node_item *noti_node = _get_noti_node(item);
+               s_info.view_handlers[handler->layout]->update(noti_node, handler->layout, item);
        }
 }
 
-HAPI void noti_list_item_remove(Evas_Object *noti_list_item) {
-
-       retif(noti_list_item == NULL, , "invalid parameter");
-
-       noti_list_item_h *noti_list_item_h = evas_object_data_get(noti_list_item, E_DATA_NOTI_LIST_ITEM_H);
-
-       if (noti_list_item_h != NULL)
-               free(noti_list_item_h);
-
-       evas_object_data_del(noti_list_item, E_DATA_NOTI_LIST_ITEM_H);
-       evas_object_data_del(noti_list_item, E_DATA_NOTI_LIST_CB_SELECTED_ITEM);
-       evas_object_data_del(noti_list_item, E_DATA_NOTI_LIST_CB_BUTTON_1);
-       evas_object_data_del(noti_list_item, E_DATA_NOTI_LIST_CB_DELETED_ITEM);
-
-       evas_object_del(noti_list_item);
-}
+HAPI void quickpanel_noti_list_item_remove(Evas_Object *item)
+{
+       retif(item == NULL, , "invalid parameter");
+
+       noti_list_item_h *handler = _item_handler_get(item);
+       if (handler != NULL) {
+               retif(s_info.view_handlers[handler->layout] == NULL, , "invalid parameter");
+               
+               if (s_info.view_handlers[handler->layout] != NULL) {
+                       if (s_info.view_handlers[handler->layout]->remove != NULL) {
+                               noti_node_item *noti_node = _get_noti_node(item);
+                               s_info.view_handlers[handler->layout]->remove(noti_node, handler->layout, item);
+                       }
+               }
 
-HAPI void noti_list_item_update(Evas_Object *noti_list_item) {
-       retif(noti_list_item == NULL, , "invalid parameter");
+               free(handler);
+       }
 
-       _noti_list_item_ongoing_set_progressbar(noti_list_item);
-       _noti_list_item_ongoing_set_icon(noti_list_item);
-       _noti_list_item_ongoing_set_text(noti_list_item);
+       evas_object_data_del(item, E_DATA_NOTI_LIST_ITEM_H);
+       evas_object_del(item);
+       item = NULL;
 }
 
-HAPI void noti_list_item_set_status(Evas_Object *noti_list_item, int status) {
-       retif(noti_list_item == NULL, , "invalid parameter");
-
-       noti_list_item_h *noti_list_item_h = evas_object_data_get(noti_list_item, E_DATA_NOTI_LIST_ITEM_H);
+HAPI void quickpanel_noti_list_item_set_status(Evas_Object *item, int status)
+{
+       retif(item == NULL, , "invalid parameter");
 
-       if (noti_list_item_h != NULL) {
-               noti_list_item_h->status = status;
+       noti_list_item_h *handler = _item_handler_get(item);
+       if (handler != NULL) {
+               handler->status = status;
        }
 }
 
-HAPI int noti_list_item_get_status(Evas_Object *noti_list_item) {
-       retif(noti_list_item == NULL, STATE_NORMAL, "invalid parameter");
-
-       noti_list_item_h *noti_list_item_h = evas_object_data_get(noti_list_item, E_DATA_NOTI_LIST_ITEM_H);
+HAPI int quickpanel_noti_list_item_get_status(Evas_Object *item)
+{
+       retif(item == NULL, STATE_NORMAL, "invalid parameter");
 
-       if (noti_list_item_h != NULL) {
-               return noti_list_item_h->status;
+       noti_list_item_h *handler = _item_handler_get(item);
+       if (handler != NULL) {
+               return handler->status;
        }
 
        return STATE_DELETING;
 }
 
-HAPI void noti_list_item_node_set(Evas_Object *noti_list_item, void *data) {
-       retif(noti_list_item == NULL, , "invalid parameter");
-       retif(data == NULL, , "invalid parameter");
-
-       noti_list_item_h *noti_list_item_data = evas_object_data_get(noti_list_item, E_DATA_NOTI_LIST_ITEM_H);
+HAPI void quickpanel_noti_list_item_node_set(Evas_Object *item, noti_node_item *noti_node)
+{
+       int priv_id = 0;
+       retif(item == NULL, , "invalid parameter");
+       retif(noti_node == NULL, , "invalid parameter");
+
+       noti_list_item_h *handler = _item_handler_get(item);
+       if (handler != NULL) {
+               handler->noti_node = noti_node;
+               notification_get_id(handler->noti_node->noti, NULL, &priv_id);
+               handler->priv_id = priv_id;
+               quickpanel_noti_list_item_update(item);
+       }
+}
 
-       if (noti_list_item_data != NULL) {
-               noti_list_item_data->data = data;
+HAPI void *quickpanel_noti_list_item_node_get(Evas_Object *item)
+{
+       retif(item == NULL, NULL, "invalid parameter");
 
-               if (data != NULL) {
-                       noti_node_item *item = data;
-                       _noti_list_item_set_layout(noti_list_item, item->noti, noti_list_item_data->layout);
-               }
+       noti_node_item *noti_node = _get_noti_node(item);
+       if (noti_node != NULL) {
+               return noti_node;
        }
+
+       return NULL;
 }
 
-HAPI void *noti_list_item_node_get(Evas_Object *noti_list_item) {
-       retif(noti_list_item == NULL, NULL, "invalid parameter");
+#ifdef QP_SCREENREADER_ENABLE
+static void _focus_selected_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       Evas_Object *item = data;
+       retif(item == NULL, , "invalid parameter");
 
-       noti_list_item_h *noti_list_item_data = evas_object_data_get(noti_list_item, E_DATA_NOTI_LIST_ITEM_H);
+       _response_callback_call(item, "selected");
+}
+#endif
+
+HAPI void quickpanel_noti_list_item_set_item_selected_cb(Evas_Object *item, response_cb callback)
+{
+       retif(item == NULL, , "invalid parameter");
+       retif(callback == NULL, , "invalid parameter");
 
-       if (noti_list_item_data != NULL) {
-               return noti_list_item_data->data;
+       noti_list_item_h *handler = _item_handler_get(item);
+       if (handler != NULL) {
+               handler->selected_cb = callback;
        }
 
-       return NULL;
+#ifdef QP_SCREENREADER_ENABLE
+       Evas_Object *ao = NULL;
+       ao = quickpanel_accessibility_screen_reader_object_get(item,
+                       SCREEN_READER_OBJ_TYPE_ELM_OBJECT, "focus", item);
+       if (ao != NULL) {
+               evas_object_smart_callback_add(ao, "clicked", _focus_selected_cb, item);
+       }
+#endif
 }
 
-HAPI void noti_list_item_set_item_selected_cb(Evas_Object *noti_list_item,
-               void(*selected_cb)(void *data, Evas_Object *obj)) {
-       retif(noti_list_item == NULL, , "invalid parameter");
-       retif(selected_cb == NULL, , "invalid parameter");
+HAPI void quickpanel_noti_list_item_set_item_button_1_cb(Evas_Object *item, response_cb callback)
+{
+       retif(item == NULL, , "invalid parameter");
+       retif(callback == NULL, , "invalid parameter");
 
-       evas_object_data_set(noti_list_item, E_DATA_NOTI_LIST_CB_SELECTED_ITEM, selected_cb);
+       noti_list_item_h *handler = _item_handler_get(item);
+       if (handler != NULL) {
+               handler->button_1_cb = callback;
+       }
 }
 
-HAPI void noti_list_item_set_item_button_1_cb(Evas_Object *noti_list_item,
-               void(*button_1_cb)(void *data, Evas_Object *obj)) {
-       retif(noti_list_item == NULL, , "invalid parameter");
-       retif(button_1_cb == NULL, , "invalid parameter");
+HAPI void quickpanel_noti_list_item_set_item_deleted_cb(Evas_Object *item, response_cb callback)
+{
+       retif(item == NULL, , "invalid parameter");
+       retif(callback == NULL, , "invalid parameter");
 
-       evas_object_data_set(noti_list_item, E_DATA_NOTI_LIST_CB_BUTTON_1, button_1_cb);
+       noti_list_item_h *handler = _item_handler_get(item);
+       if (handler != NULL) {
+               handler->deleted_cb = callback;
+       }
 }
 
-HAPI void noti_list_item_set_item_deleted_cb(Evas_Object *noti_list_item,
-               void(*deleted_cb)(void *data, Evas_Object *obj)) {
-       retif(noti_list_item == NULL, , "invalid parameter");
-       retif(deleted_cb == NULL, , "invalid parameter");
-
-       evas_object_data_set(noti_list_item, E_DATA_NOTI_LIST_CB_DELETED_ITEM, deleted_cb);
+HAPI noti_list_item_h *quickpanel_noti_list_item_handler_get(Evas_Object *item)
+{
+       return _item_handler_get(item);
 }
index b829ae5..6573c0a 100755 (executable)
@@ -1,51 +1,87 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ * Copyright (c) 2009-2015 Samsung Electronics Co., Ltd All Rights Reserved
  *
- * Licensed under the Flora License, Version 1.1 (the License);
+ * 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,
+ * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
+ *
  */
 
+
 #ifndef __QUICKPANEL_NOTI_LIST_ITEM_H__
 #define __QUICKPANEL_NOTI_LIST_ITEM_H__
 
 #include <notification.h>
+#include "noti_node.h"
+#include "vi_manager.h"
 
 #define STATE_NORMAL 1
 #define STATE_DELETING 0
 
 #define E_DATA_NOTI_LIST_ITEM_H "noti_list_item"
-#define E_DATA_NOTI_LIST_CB_SELECTED_ITEM "noti_list_item_cb_selected"
-#define E_DATA_NOTI_LIST_CB_BUTTON_1 "noti_list_item_cb_button_1"
-#define E_DATA_NOTI_LIST_CB_DELETED_ITEM "noti_list_item_cb_deleted"
+
+typedef Evas_Object *(*creater_cb)(notification_h, Evas_Object *);
+typedef void (*action_cb)(noti_node_item *, notification_ly_type_e, Evas_Object *);
+typedef void (*response_cb)(noti_node_item *, Evas_Object *);
+
+typedef enum _qp_notilistitem_state_type {
+       NOTILISTITEM_STATE_NORMAL = 0,
+       NOTILISTITEM_STATE_GETSTURE_WAIT,
+       NOTILISTITEM_STATE_GETSTURE_CANCELED,
+       NOTILISTITEM_STATE_DELETED,
+} qp_notilistitem_state_type;
+
+typedef struct _Noti_View_H {
+       char *name;
+
+       /* func */
+       creater_cb create;
+       action_cb update;
+       action_cb remove;
+} Noti_View_H;
 
 typedef struct _noti_list_item_h {
        int status;
-       void *data;
-       notification_ly_type_e  layout;
+       int priv_id;
+       notification_ly_type_e layout;
+       noti_node_item *noti_node;
+
+       response_cb selected_cb;
+       response_cb button_1_cb;
+       response_cb deleted_cb;
+
+       QP_VI *vi;
+       Ecore_Animator *animator;
+
+       int obj_w;
+       int obj_h;
+       int press_x;
+       int press_y;
+       int distance;
+       int need_to_cancel_press;
+       qp_notilistitem_state_type state;
 } noti_list_item_h;
 
-Evas_Object *noti_list_item_create(Evas_Object *parent, notification_ly_type_e layout);
-void noti_list_item_node_set(Evas_Object *noti_list_item, void *data);
-void *noti_list_item_node_get(Evas_Object *noti_list_item);
-void noti_list_item_remove(Evas_Object *noti_list_item);
-void noti_list_item_set_item_selected_cb(Evas_Object *noti_list_item,
-               void(*selected_cb)(void *data, Evas_Object *obj));
-void noti_list_item_set_item_button_1_cb(Evas_Object *noti_list_item,
-               void(*button_1_cb)(void *data, Evas_Object *obj));
-void noti_list_item_set_item_deleted_cb(Evas_Object *noti_list_item,
-               void(*deleted_cb)(void *data, Evas_Object *obj));
-int noti_list_item_get_status(Evas_Object *noti_list_item);
-void noti_list_item_set_status(Evas_Object *noti_list_item, int status);
-void noti_list_item_update(Evas_Object *noti_list_item);
+Evas_Object *quickpanel_noti_list_item_create(Evas_Object *parent, notification_h noti);
+void quickpanel_noti_list_item_update(Evas_Object *item);
+void quickpanel_noti_list_item_remove(Evas_Object *item);
+
+void quickpanel_noti_list_item_node_set(Evas_Object *item, noti_node_item *noti_node);
+void *quickpanel_noti_list_item_node_get(Evas_Object *item);
+int quickpanel_noti_list_item_get_status(Evas_Object *item);
+void quickpanel_noti_list_item_set_status(Evas_Object *item, int status);
 
+void quickpanel_noti_list_item_set_item_selected_cb(Evas_Object *item, response_cb selected_cb);
+void quickpanel_noti_list_item_set_item_button_1_cb(Evas_Object *item, response_cb callback);
+void quickpanel_noti_list_item_set_item_deleted_cb(Evas_Object *item, response_cb callback);
 
+noti_list_item_h *quickpanel_noti_list_item_handler_get(Evas_Object *item);
 #endif
index 6cc0db7..9066fd4 100755 (executable)
@@ -1,20 +1,20 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ * Copyright (c) 2009-2015 Samsung Electronics Co., Ltd All Rights Reserved
  *
- * Licensed under the Flora License, Version 1.1 (the License);
+ * 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,
+ * 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 "quickpanel-ui.h"
 #include "common.h"
 #include "quickpanel_def.h"
 #include "noti_listbox.h"
 #include "noti_list_item.h"
+#include "vi_manager.h"
+#include "noti.h"
 
 #define E_DATA_LAYOUT_PORTRAIT "layout_portrait"
 #define E_DATA_LAYOUT_LANDSCAPE "layout_landscape"
 #define E_DATA_CB_DELETE_ITEM "cb_delete_item"
 #define E_DATA_CB_REMOVED "cb_removed"
 #define E_DATA_APP_DATA "app_data"
+#define E_DATA_IS_HIDED "hided"
+
+static Eina_Bool _anim_init_cb(void *data);
+static Eina_Bool _anim_job_cb(void *data);
+static Eina_Bool _anim_done_cb(void *data);
+
+static void _listbox_flag_set(Evas_Object *container, const char *key, int value)
+{
+       retif(container == NULL, , "invalid parameter");
+       retif(key == NULL, , "invalid parameter");
+
+       evas_object_data_set(container, key, (void *)value);
+}
+
+static int _listbox_flag_get(Evas_Object *container, const char *key)
+{
+       retif(container == NULL, 0, "invalid parameter");
+       retif(key == NULL, 0, "invalid parameter");
+
+       return (int)evas_object_data_get(container, key);
+}
+
+static int _listbox_layout_item_valid(Evas_Object *container, Evas_Object *item)
+{
+       int ret = 0;
+       Eina_List *list = NULL;
+       retif(container == NULL, 0, "invalid parameter");
+       list = elm_box_children_get(container);
+       retif(list == NULL, 0, "invalid parameter. containter[%p]", container);
+
+       if (eina_list_data_find(list, item) != NULL) {
+               ret = 1;
+       }
+
+       eina_list_free(list);
+
+       return ret;
+}
+
+static void _listbox_layout_get_coord(Evas_Object *container, int insert_position,
+       int *coord_x, int *coord_y, Evas_Object *noti_section)
+{
+       int x, y, h;
+       int off_y = 0;
+       struct appdata *ad = quickpanel_get_app_data();
+
+       retif(container == NULL, , "invalid parameter");
+       retif(ad == NULL, , "invalid data.");
+
+       if (insert_position == 0) {
+               Eina_List *l;
+               Eina_List *l_next;
+               Evas_Object *obj = NULL;
+               Eina_List *item_list = elm_box_children_get(container);
+               noti_node_item *node = NULL;
+               notification_type_e type = NOTIFICATION_TYPE_NONE;
+
+               EINA_LIST_FOREACH_SAFE(item_list, l, l_next, obj) {
+                       node = quickpanel_noti_list_item_node_get(obj);
+                       if (node) {
+                               notification_h noti = node->noti;
+                               if (noti) {
+                                       notification_get_type(noti, &type);
+                                       if (type == NOTIFICATION_TYPE_NOTI) {
+                                               break;
+                                       } else {
+                                               evas_object_geometry_get(obj, NULL, NULL, NULL, &h);
+                                               off_y += h;
+                                       }
+                               }
+                       } else {
+                               evas_object_geometry_get(obj, NULL, NULL, NULL, &h);
+                               off_y += h;
+                       }
+               }
+
+               if (item_list != NULL) {
+                       eina_list_free(item_list);
+               }
+       }
+       else if (insert_position == 1) {
+               Eina_List *l;
+               Eina_List *l_next;
+               Evas_Object *obj = NULL;
+               Eina_List *item_list = elm_box_children_get(container);
+
+               EINA_LIST_FOREACH_SAFE(item_list, l, l_next, obj) {
+                       if (obj != NULL) {
+                               evas_object_geometry_get(obj, NULL, NULL, NULL, &h);
+                               off_y += h;
+                       }
+                       if (obj == noti_section) {
+                               break;
+                       }
+               }
+
+               if (item_list != NULL) {
+                       eina_list_free(item_list);
+               }
+       }
+
+       evas_object_geometry_get(container, &x, &y, NULL, &h);
+       if (off_y == 0 || y == 0) {
+               ERR("Failed get a valid height offset : %d %d", off_y, y);
+       }
+
+       if (coord_x != NULL) {
+               *coord_x = x;
+       }
+       if (coord_y != NULL) {
+               *coord_y = y + off_y;
+       }
+}
+
+static void _listbox_layout_size_get(Evas_Object *container, int *w, int *h)
+{
+       int h_temp = 0;
+       int w_item = 0, h_item = 0;
+       Evas_Object *obj = NULL;
+       struct appdata *ad = quickpanel_get_app_data();
+       retif(ad == NULL, , "invalid data.");
+       retif(container == NULL, , "invalid parameter");
+
+       Eina_List *item_list = elm_box_children_get(container);
+
+       EINA_LIST_FREE(item_list, obj)
+       {
+               if (obj != NULL) {
+                       evas_object_geometry_get(obj, NULL, NULL, NULL, &h_temp);
+                       h_item += h_temp;
+               }
+       }
+       evas_object_geometry_get(container, NULL, NULL, &w_item, NULL);
+
+       if (w != NULL) {
+               *w = w_item;
+       }
+       if (h != NULL) {
+               *h = h_item;
+       }
+}
+
+HAPI Evas_Object *quickpanel_noti_listbox_create(Evas_Object *parent, void *data, qp_item_type_e item_type)
+{
 
-typedef struct _listbox_info_layout {
-       int n_per_rows;
-       int padding_top;
-       int padding_left;
-       int padding_right;
-       int padding_bottom;
-       int padding_between;
-       int child_w;
-       int child_h;
-       double scale;
-} listbox_info_layout;
-
-typedef struct _listbox_info_animation {
-       Evas_Object *listbox;
-       Evas_Object *item;
-
-       void (*update_cb)(Evas_Object *list, void *data, int is_prepend);
-       Evas_Object *container;
-       void *noti;
-       int pos;
-} listbox_info_animation;
-
-HAPI Evas_Object *listbox_create(Evas_Object *parent, void *data) {
        struct appdata *ad = data;
        Evas_Object *listbox = NULL;
 
@@ -67,27 +190,30 @@ HAPI Evas_Object *listbox_create(Evas_Object *parent, void *data) {
 
        evas_object_data_set(listbox, E_DATA_CB_DELETE_ITEM, NULL);
        evas_object_data_set(listbox, E_DATA_APP_DATA, ad);
+       _listbox_flag_set(listbox, E_DATA_IS_HIDED, 0);
 
        qp_item_data *qid
-               = quickpanel_list_util_item_new(QP_ITEM_TYPE_ONGOING_NOTI, NULL);
+               = quickpanel_list_util_item_new(item_type, NULL);
        quickpanel_list_util_item_set_tag(listbox, qid);
 
        return listbox;
 }
 
-HAPI void listbox_remove(Evas_Object *listbox) {
-
+HAPI void quickpanel_noti_listbox_remove(Evas_Object *listbox)
+{
        retif(listbox == NULL, , "invalid parameter");
 
-       listbox_remove_all_item(listbox, 0);
+       quickpanel_noti_listbox_remove_all_item(listbox, 0);
        evas_object_data_del(listbox, E_DATA_CB_DELETE_ITEM);
        evas_object_data_del(listbox, E_DATA_APP_DATA);
        quickpanel_list_util_item_del_tag(listbox);
        evas_object_del(listbox);
+       listbox = NULL;
 }
 
-HAPI void listbox_set_item_deleted_cb(Evas_Object *listbox,
-               void(*deleted_cb)(void *data, Evas_Object *obj)) {
+HAPI void quickpanel_noti_listbox_set_item_deleted_cb(Evas_Object *listbox,
+               void(*deleted_cb)(void *data, Evas_Object *obj))
+{
        retif(listbox == NULL, , "invalid parameter");
        retif(deleted_cb == NULL, , "invalid parameter");
 
@@ -95,7 +221,8 @@ HAPI void listbox_set_item_deleted_cb(Evas_Object *listbox,
 }
 
 static void _listbox_call_item_deleted_cb(Evas_Object *listbox, void *data,
-               Evas_Object *obj) {
+               Evas_Object *obj)
+{
        retif(listbox == NULL, , "invalid parameter");
 
        void (*deleted_cb)(void *data, Evas_Object *obj) = NULL;
@@ -107,9 +234,10 @@ static void _listbox_call_item_deleted_cb(Evas_Object *listbox, void *data,
        }
 }
 
-HAPI void listbox_add_item(Evas_Object *listbox, Evas_Object *item, int is_prepend) {
+HAPI void quickpanel_noti_listbox_add_item(Evas_Object *listbox, Evas_Object *item, int insert_pos, Evas_Object *noti_section)
+{
+       QP_VI *vi = NULL;
        const char *signal = NULL;
-
        retif(listbox == NULL, , "invalid parameter");
        retif(item == NULL, , "invalid parameter");
 
@@ -129,188 +257,654 @@ HAPI void listbox_add_item(Evas_Object *listbox, Evas_Object *item, int is_prepe
        edje_object_message_signal_process(_EDJ(item));
        elm_layout_sizing_eval(item);
 
-       if (is_prepend == LISTBOX_PREPEND)
-               elm_box_pack_start(listbox, item);
-       else
-               elm_box_pack_end(listbox, item);
+       vi = quickpanel_vi_new_with_data(
+                       VI_OP_INSERT,
+                       QP_ITEM_TYPE_ONGOING_NOTI,
+                       listbox,
+                       item,
+                       _anim_init_cb,
+                       _anim_job_cb,
+                       _anim_done_cb,
+                       _anim_done_cb,
+                       vi,
+                       noti_section,
+                       insert_pos,
+                       0);
+       quickpanel_vi_start(vi);
 }
 
-static void _listbox_remove_item_anim_cb(void *data, Elm_Transit *transit) {
-       DBG("");
-       retif(data == NULL, , "invalid parameter");
-       retif(transit == NULL, , "invalid parameter");
-
-       listbox_info_animation *info_animation = data;
-
-       retif(info_animation->listbox == NULL, , "invalid parameter");
-       retif(info_animation->item == NULL, , "invalid parameter");
-
-       DBG("remove:%p", info_animation->item);
-       void *node = noti_list_item_node_get(info_animation->item);
-       elm_box_unpack(info_animation->listbox, info_animation->item);
-       noti_list_item_remove(info_animation->item);
-       _listbox_call_item_deleted_cb(info_animation->listbox,
-                       node, NULL);
-
-       if (info_animation->update_cb != NULL) {
-               retif(info_animation->container == NULL, , "invalid parameter");
-               retif(info_animation->noti == NULL, , "invalid parameter");
-
-               info_animation->update_cb(info_animation->container,
-                               info_animation->noti, info_animation->pos);
-       }
-
-       free(info_animation);
-       info_animation = NULL;
-}
-
-HAPI void listbox_remove_item(Evas_Object *listbox, Evas_Object *item, int with_animation) {
+HAPI void quickpanel_noti_listbox_remove_item(Evas_Object *listbox, Evas_Object *item, int with_animation)
+{
+       QP_VI *vi = NULL;
        retif(listbox == NULL, , "invalid parameter");
        retif(item == NULL, , "invalid parameter");
 
-       if (noti_list_item_get_status(item) == STATE_DELETING) {
-               return ;
-       }
-       noti_list_item_set_status(item, STATE_DELETING);
 
        DBG("remove:%p", item);
 
        if (with_animation == 1) {
-               listbox_info_animation *info_animation = (listbox_info_animation *) malloc(
-                               sizeof(listbox_info_animation));
-               if (info_animation == NULL)
-                       return;
-               info_animation->listbox = listbox;
-               info_animation->item = item;
-               info_animation->update_cb = NULL;
-               info_animation->container = NULL;
-               info_animation->noti = NULL;
-               info_animation->pos = 0;
-
-               Elm_Transit *transit = elm_transit_add();
-               //Fade in and out with layout object.
-               elm_transit_object_add(transit, item);
-               elm_transit_effect_fade_add(transit);
-               elm_transit_duration_set(transit, 0.7);
-               elm_transit_del_cb_set(transit, _listbox_remove_item_anim_cb,
-                               info_animation);
-               elm_transit_go(transit);
+               vi = quickpanel_vi_new_with_data(
+                               VI_OP_DELETE,
+                               QP_ITEM_TYPE_ONGOING_NOTI,
+                               listbox,
+                               item,
+                               _anim_init_cb,
+                               _anim_job_cb,
+                               _anim_done_cb,
+                               _anim_done_cb,
+                               vi,
+                               NULL,
+                               0,
+                               0);
+               quickpanel_vi_start(vi);
        } else {
                DBG("%p", item);
-               void *node = noti_list_item_node_get(item);
+               void *node = quickpanel_noti_list_item_node_get(item);
                elm_box_unpack(listbox, item);
-               noti_list_item_remove(item);
+               quickpanel_noti_list_item_remove(item);
                _listbox_call_item_deleted_cb(listbox,
                                node, NULL);
        }
 }
 
-HAPI void listbox_remove_all_item(Evas_Object *listbox, int with_animation) {
-       DBG("");
-       retif(listbox == NULL, , "invalid parameter");
+static void _anim_job_delete_all(void *data)
+{
+       QP_VI *vi = data;
+       retif(vi == NULL, , "invalid parameter");
 
+       quickpanel_vi_done(vi);
+}
+
+static void _anim_done_delete_all(void *data)
+{
+       QP_VI *vi = data;
        Eina_List *l;
        Eina_List *l_next;
-       Evas_Object *obj;
-       Eina_List *item_list = elm_box_children_get(listbox);
+       Evas_Object *obj = NULL;
+       Eina_List *item_list = NULL;
 
-       EINA_LIST_FOREACH_SAFE(item_list, l, l_next, obj)
-       {
+       retif(vi == NULL, , "invalid parameter");
+       retif(vi->container == NULL, , "invalid parameter");
+
+       Evas_Object *listbox = vi->container;
+
+       item_list = elm_box_children_get(listbox);
+       retif(item_list == NULL, , "invalid parameter");
+
+       EINA_LIST_FOREACH_SAFE(item_list, l, l_next, obj) {
                if (obj != NULL) {
-                       // call deleted callback
-                       listbox_remove_item(listbox, obj, with_animation);
+                       DBG("try to remove:%p", obj);
+                       quickpanel_noti_listbox_remove_item(listbox, obj, EINA_TRUE);
                }
        }
+
+       if (item_list != NULL) {
+               eina_list_free(item_list);
+       }
 }
 
-HAPI void listbox_update(Evas_Object *listbox) {
+HAPI void quickpanel_noti_listbox_remove_all_item(Evas_Object *listbox, int with_animation)
+{
+       QP_VI *vi = NULL;
+       retif(listbox == NULL, , "invalid parameter");
+
+       vi = quickpanel_vi_new_with_data(
+                       VI_OP_DELETE_ALL,
+                       QP_ITEM_TYPE_ONGOING_NOTI,
+                       listbox,
+                       NULL,
+                       _anim_init_cb,
+                       _anim_job_cb,
+                       _anim_done_cb,
+                       _anim_done_cb,
+                       vi,
+                       NULL,
+                       0,
+                       0);
+       quickpanel_vi_start(vi);
+}
+
+HAPI void quickpanel_noti_listbox_update(Evas_Object *listbox)
+{
        retif(listbox == NULL, , "invalid parameter");
 
-       Eina_List *l;
-       Eina_List *l_next;
        Evas_Object *obj;
        Eina_List *item_list = elm_box_children_get(listbox);
 
-       DBG("all count:%d", eina_list_count(item_list));
+       EINA_LIST_FREE(item_list, obj)
+       {
+               quickpanel_noti_list_item_update(obj);
+       }
+}
+
+HAPI void quickpanel_noti_listbox_items_visibility_set(Evas_Object *listbox, int is_visible)
+{
+       retif(listbox == NULL, , "invalid parameter");
+
+       _listbox_flag_set(listbox, E_DATA_IS_HIDED, is_visible);
+}
 
-       EINA_LIST_FOREACH_SAFE(item_list, l, l_next, obj)
+HAPI void quickpanel_noti_listbox_update_item(Evas_Object *listbox, Evas_Object *item)
+{
+       retif(listbox == NULL, , "invalid parameter");
+       retif(item == NULL, , "invalid parameter");
+
+       if (_listbox_layout_item_valid(listbox, item)) {
+               quickpanel_noti_list_item_update(item);
+       }
+}
+
+HAPI void quickpanel_noti_listbox_rotation(Evas_Object *listbox, int angle)
+{
+       int h = 0;
+       Evas_Object *obj = NULL;
+       struct appdata *ad = quickpanel_get_app_data();
+       retif(ad == NULL, , "invalid parameter");
+       retif(listbox == NULL, , "invalid parameter");
+
+       Eina_List *item_list = elm_box_children_get(listbox);
+
+       DBG("items in listbox:%d", eina_list_count(item_list));
+
+       EINA_LIST_FREE(item_list, obj)
        {
                if (obj != NULL) {
-                       noti_list_item_update(obj);
+                       evas_object_geometry_get(obj, NULL, NULL, NULL, &h);
+                       if (angle == 270 || angle == 90) {
+                               evas_object_resize(obj, ad->win_height, h);
+                       } else {
+                               evas_object_resize(obj, ad->win_width, h);
+                       }
+                       elm_layout_sizing_eval(obj);
                }
        }
+
+       _listbox_layout_size_get(listbox, NULL, &h);
+
+       if (angle == 270 || angle == 90) {
+               evas_object_resize(listbox, ad->win_height, h);
+       } else {
+               evas_object_resize(listbox, ad->win_width, h);
+       }
+       DBG("listbox has been rotated to %d", angle);
 }
 
-HAPI void listbox_update_item(Evas_Object *listbox, Evas_Object *item) {
-       retif(listbox == NULL, , "invalid parameter");
-       retif(item == NULL, , "invalid parameter");
+HAPI int quickpanel_noti_listbox_get_item_count(Evas_Object *listbox)
+{
+       int item_count = 0;
+       Eina_List *items = NULL;
+       retif(listbox == NULL, 0, "invalid parameter");
 
-       noti_list_item_update(item);
+       if ((items = elm_box_children_get(listbox)) != NULL) {
+               item_count = eina_list_count(items);
+               eina_list_free(items);
+               return item_count;
+       } else {
+               return 0;
+       }
 }
 
-HAPI void listbox_remove_and_add_item(Evas_Object *listbox, Evas_Object *item
-               ,void (*update_cb)(Evas_Object *list, void *data, int is_prepend)
-               ,void *container, void *data, int pos) {
+static void _anim_init_insert(void *data)
+{
 
-       retif(listbox == NULL, , "invalid parameter");
-       retif(item == NULL, , "invalid parameter");
-       retif(update_cb == NULL, , "invalid parameter");
-       retif(container == NULL, , "invalid parameter");
-       retif(data == NULL, , "invalid parameter");
-
-       if (noti_list_item_get_status(item) == STATE_DELETING) {
-               return ;
-       }
-       noti_list_item_set_status(item, STATE_DELETING);
-
-       listbox_info_animation *info_animation = (listbox_info_animation *) malloc(
-                       sizeof(listbox_info_animation));
-       if (info_animation == NULL)
-               return;
-       info_animation->listbox = listbox;
-       info_animation->item = item;
-       info_animation->update_cb = update_cb;
-       info_animation->container = container;
-       info_animation->noti = data;
-       info_animation->pos = pos;
-
-       Elm_Transit *transit = elm_transit_add();
-       //Fade in and out with layout object.
-       elm_transit_object_add(transit, item);
-       elm_transit_effect_fade_add(transit);
-       elm_transit_duration_set(transit, 0.4);
-       elm_transit_del_cb_set(transit, _listbox_remove_item_anim_cb,
-                       info_animation);
-       elm_transit_go(transit);
+       QP_VI *vi = data;
+       retif(vi == NULL, , "invalid parameter");
+       retif(vi->container == NULL, , "invalid parameter");
+       retif(vi->target == NULL, , "invalid parameter");
+
+       Evas_Object *container = vi->container;
+       Evas_Object *item = vi->target;
+
+       evas_object_clip_set(item, evas_object_clip_get(container));
+       evas_object_color_set(item, 0, 0, 0, 0);
 }
 
-HAPI void listbox_rotation(Evas_Object *listbox, int angle) {
-       const char *signal = NULL;
+static void _anim_job_insert(void *data)
+{
 
-       retif(listbox == NULL, , "invalid parameter");
+       QP_VI *vi = data;
+       Eina_List *l;
+       Eina_List *l_next;
+       Evas_Object *obj = NULL;
+       Eina_List *item_list = NULL;
+       int item_width, item_height = 0;
+       int coord_x = 0, coord_y = 0;
+       int insert_position = 0;
+       Elm_Transit *transit_layout_parent = NULL;
+       Elm_Transit *transit_layout = NULL;
+       Elm_Transit *transit_fadein = NULL;
+       Evas_Object *container = NULL;
+       Evas_Object *item = NULL;
+       int flag = 0;
+       noti_node_item *node = NULL;
+       notification_type_e type = NOTIFICATION_TYPE_NONE;
+
+       retif(vi == NULL, , "invalid parameter");
+       retif(vi->container == NULL, , "invalid parameter");
+       retif(vi->target == NULL, , "invalid parameter");
+
+       container = vi->container;
+       item = vi->target;
+       insert_position = vi->extra_flag_1;
+       item_list = elm_box_children_get(container);
+
+       _listbox_layout_get_coord(container, insert_position, &coord_x, &coord_y, (Evas_Object *)vi->extra_data_2);
+       evas_object_move(item, coord_x, coord_y);
+
+       evas_object_geometry_get(item, NULL, NULL, &item_width, &item_height);
+       if (item_width == 0 && item_height == 0) {
+               ERR("failed to get a size of item %d %d", item_width, item_height);
+               evas_object_size_hint_min_get (item, &item_width, &item_height);
+       }
+
+       transit_layout_parent = quickpanel_list_util_get_reorder_transit(container, NULL, item_height);
+
+       if (insert_position) {
+               EINA_LIST_FOREACH_SAFE(item_list, l, l_next, obj) {
+                       if (obj == (Evas_Object *)vi->extra_data_2) {
+                               flag = 1;
+                       }
+                       else if (flag == 1) {
+                               transit_layout = elm_transit_add();
+                               if (transit_layout != NULL) {
+                                       elm_transit_effect_translation_add(transit_layout, 0, 0, 0, item_height);
+                                       elm_transit_object_add(transit_layout, obj);
+                                       elm_transit_duration_set(transit_layout,
+                                                       quickpanel_vim_get_duration(VI_OP_REORDER));
+                                       elm_transit_tween_mode_set(transit_layout,
+                                                       quickpanel_vim_get_tweenmode(VI_OP_REORDER));
+                                       elm_transit_objects_final_state_keep_set(transit_layout, EINA_TRUE);
+
+                                       elm_transit_go(transit_layout);
+                               } else {
+                                       ERR("failed to create a transit");
+                               }
+                       }
+               }
+       }
+       else if (insert_position == 0) {
+               EINA_LIST_FOREACH_SAFE(item_list, l, l_next, obj) {
+                       node = quickpanel_noti_list_item_node_get(obj);
+                       if (node) {
+                               notification_h noti = node->noti;
+                               if (noti) {
+                                       notification_get_type(noti, &type);
+                                       if (type == NOTIFICATION_TYPE_NOTI) {
+                                               flag = 1;
+                                       }
+                               }
+                       }
+                       if (flag == 1) {
+                               transit_layout = elm_transit_add();
+                               if (transit_layout != NULL) {
+                                       elm_transit_effect_translation_add(transit_layout, 0, 0, 0, item_height);
+                                       elm_transit_object_add(transit_layout, obj);
+                                       elm_transit_duration_set(transit_layout,
+                                                       quickpanel_vim_get_duration(VI_OP_REORDER));
+                                       elm_transit_tween_mode_set(transit_layout,
+                                                       quickpanel_vim_get_tweenmode(VI_OP_REORDER));
+                                       elm_transit_objects_final_state_keep_set(transit_layout, EINA_TRUE);
+
+                                       elm_transit_go(transit_layout);
+                               } else {
+                                       ERR("failed to create a transit");
+                               }
+                       }
+               }
+       }
 
+       if (item_list != NULL) {
+               eina_list_free(item_list);
+       }
+
+       transit_fadein = elm_transit_add();
+       if (transit_fadein != NULL) {
+               elm_transit_object_add(transit_fadein, item);
+               elm_transit_effect_color_add(transit_fadein, 0, 0, 0, 0, 255, 255, 255, 255);
+               elm_transit_duration_set(transit_fadein,
+                               quickpanel_vim_get_duration(VI_OP_INSERT));
+               elm_transit_tween_mode_set(transit_fadein,
+                               quickpanel_vim_get_tweenmode(VI_OP_INSERT));
+               elm_transit_del_cb_set(transit_fadein, quickpanel_vi_done_cb_for_transit, vi);
+
+               if (transit_layout != NULL) {
+                       elm_transit_chain_transit_add(transit_layout, transit_fadein);
+               } else {
+                       if (transit_layout_parent != NULL) {
+                               elm_transit_chain_transit_add(transit_layout_parent, transit_fadein);
+                       } else {
+                               elm_transit_go(transit_fadein);
+                       }
+               }
+       } else {
+               ERR("Failed to create all the transit");
+               quickpanel_vi_done(vi);
+       }
+}
+
+static void _anim_done_insert(void *data)
+{
+
+       QP_VI *vi = data;
+       int inset_position = 0;
        Eina_List *l;
        Eina_List *l_next;
-       Evas_Object *obj;
-       Eina_List *item_list = elm_box_children_get(listbox);
+       Eina_List *item_list = NULL;
+       Evas_Object *obj = NULL;
+       noti_node_item *node = NULL;
+       notification_type_e type = NOTIFICATION_TYPE_NONE;
+       int flag = 0;
+
+       retif(vi == NULL, , "invalid parameter");
+       retif(vi->container == NULL, , "invalid parameter");
+       retif(vi->target == NULL, , "invalid parameter");
+
+       Evas_Object *container = vi->container;
+       Evas_Object *item = vi->target;
+       inset_position = vi->extra_flag_1;
+       item_list = elm_box_children_get(container);
+
+       evas_object_color_set(item, 255, 255, 255, 255);
+
+       if (inset_position == LISTBOX_PREPEND) {
+               EINA_LIST_FOREACH_SAFE(item_list, l, l_next, obj) {
+                       if (obj == (Evas_Object *)vi->extra_data_2) {
+                               elm_box_pack_after(container, item, obj);
+                               break;
+                       }
+               }
+       } else if (inset_position == LISTBOX_APPEND) {
+               EINA_LIST_FOREACH_SAFE(item_list, l, l_next, obj) {
+                       node = quickpanel_noti_list_item_node_get(obj);
+                       if (node) {
+                               notification_h noti = node->noti;
+                               if (noti) {
+                                       notification_get_type(noti, &type);
+                                       if (type == NOTIFICATION_TYPE_NOTI) {
+                                               //node_first_noti = node;
+                                               elm_box_pack_before(container, item, obj);
+                                               flag = 1;
+                                               break;
+                                       }
+                               }
+                       }
+               }
+               if (flag == 0) {
+                       elm_box_pack_end(container, item);
+               }
+       } else {
+               int ongoing_count = quickpanel_noti_get_type_count(NOTIFICATION_TYPE_ONGOING);
+               DBG("NOTI INSERT AT: %d", ongoing_count);
 
-       if (angle == 270 || angle == 90) {
-               signal = "box.landscape";
+               if (ongoing_count == 0) {
+                       DBG("NOTI INSERT START");
+                       elm_box_pack_start(container, item);
+               } else {
+                       Eina_List *items = elm_box_children_get(container);
+                       if (!items) {
+                               ERR("Failed to recieve container items, adding new notification to end of the list");
+                               elm_box_pack_end(container, item);
+                               return;
+                       }
+
+                       Evas_Object *before = eina_list_nth (items, ongoing_count - 1);
+                       if (!before) {
+                               ERR("Failed to recieve preceding item, adding new notification to end of the list");
+                               elm_box_pack_end(container, item);
+                               return;
+                       }
+
+                       DBG("NOTI INSERT BEFORE: %p", before);
+                       elm_box_pack_after(container, item, before);
+               }
+       }
+}
+
+static void _anim_job_delete(void *data)
+{
+       QP_VI *vi = data;
+       Eina_List *l;
+       Eina_List *l_next;
+       Evas_Object *obj = NULL;
+       Eina_List *item_list = NULL;
+       int is_start_relayout = 0;
+       int item_width, item_height = 0;
+       Elm_Transit *transit_layout_parent = NULL;
+       Elm_Transit *transit_layout = NULL;
+       Elm_Transit *transit_fadeout = NULL;
+       Evas_Object *container = NULL;
+       Evas_Object *item = NULL;
+
+       retif(vi == NULL, , "invalid parameter");
+       retif(vi->container == NULL, , "invalid parameter");
+       retif(vi->target == NULL, , "invalid parameter");
+
+       container = vi->container;
+       item = vi->target;
+       item_list = elm_box_children_get(container);
+
+       evas_object_geometry_get(item, NULL, NULL, &item_width, &item_height);
+       if (item_width == 0 && item_height == 0) {
+               ERR("failed to get a size of item %d %d", item_width, item_height);
+               evas_object_size_hint_min_get (item, &item_width, &item_height);
+       }
+
+       transit_fadeout = elm_transit_add();
+       if (transit_fadeout != NULL) {
+               elm_transit_object_add(transit_fadeout, item);
+               elm_transit_effect_color_add(transit_fadeout, 255, 255, 255, 255, 0, 0, 0, 0);
+               elm_transit_objects_final_state_keep_set(transit_fadeout, EINA_TRUE);
+               elm_transit_duration_set(transit_fadeout, quickpanel_vim_get_duration(VI_OP_DELETE));
+               elm_transit_go(transit_fadeout);
        } else {
-               signal = "box.portrait";
+               ERR("failed to create a transit");
        }
 
-       DBG("all count:%d", eina_list_count(item_list));
+       EINA_LIST_FOREACH_SAFE(item_list, l, l_next, obj) {
+               if (obj == item) {
+                       is_start_relayout = 1;
+               } else if (obj != NULL && is_start_relayout == 1) {
+                       transit_layout = elm_transit_add();
+                       if (transit_layout != NULL) {
+                               elm_transit_effect_translation_add(transit_layout, 0, 0, 0, -item_height);
+                               elm_transit_object_add(transit_layout, obj);
+                               elm_transit_duration_set(transit_layout,
+                                               quickpanel_vim_get_duration(VI_OP_REORDER));
+                               elm_transit_tween_mode_set(transit_layout,
+                                               quickpanel_vim_get_tweenmode(VI_OP_REORDER));
+                               elm_transit_objects_final_state_keep_set(transit_layout, EINA_TRUE);
+                               if (transit_fadeout != NULL) {
+                                       elm_transit_chain_transit_add(transit_fadeout, transit_layout);
+                               }
+                       } else {
+                               ERR("failed to create a transit");
+                       }
+               }
+       }
 
-       EINA_LIST_FOREACH_SAFE(item_list, l, l_next, obj)
-       {
-               if (obj != NULL) {
-                       elm_object_signal_emit(obj, signal, "box.prog");
-                       edje_object_message_signal_process(_EDJ(obj));
-                       elm_layout_sizing_eval(obj);
-                       DBG("set to %s, %x", signal, obj);
+       if (item_list != NULL) {
+               eina_list_free(item_list);
+       }
+
+       transit_layout_parent = quickpanel_list_util_get_reorder_transit(container,
+                       transit_fadeout, -item_height);
+
+       if (transit_layout_parent != NULL) {
+               elm_transit_del_cb_set(transit_layout_parent, quickpanel_vi_done_cb_for_transit,
+                                               vi);
+       } else if (transit_layout != NULL) {
+               elm_transit_del_cb_set(transit_layout, quickpanel_vi_done_cb_for_transit,
+                                               vi);
+       } else if (transit_fadeout != NULL) {
+               elm_transit_del_cb_set(transit_fadeout, quickpanel_vi_done_cb_for_transit,
+                                               vi);
+       } else {
+               ERR("Failed to create all the transit");
+               quickpanel_vi_done(vi);
+       }
+}
+
+static void _anim_done_delete(void *data)
+{
+       int w = 0, h = 0;
+       QP_VI *vi = data;
+
+       retif(vi == NULL, , "invalid parameter");
+       retif(vi->container == NULL, , "invalid parameter");
+       retif(vi->target == NULL, , "invalid parameter");
+
+       Evas_Object *container = vi->container;
+       Evas_Object *item = vi->target;
+
+       elm_box_unpack(container, item);
+       quickpanel_noti_list_item_remove(item);
+       _listbox_call_item_deleted_cb(container,
+                       quickpanel_noti_list_item_node_get(item), NULL);
+
+       if (_listbox_flag_get(container, E_DATA_IS_HIDED) == 1) {
+               _listbox_layout_size_get(container, &w, &h);
+               evas_object_resize(container, w, h);
+       }
+}
+
+static Eina_Bool _anim_init_cb(void *data)
+{
+       QP_VI *vi = data;
+       retif(vi == NULL, EINA_FALSE, "invalid parameter");
+
+       static qp_vi_op_table anim_init_table[] = {
+               {
+                       .op_type = VI_OP_INSERT,
+                       .handler = _anim_init_insert,
+               },
+               {
+                       .op_type = VI_OP_NONE,
+                       .handler = NULL,
+               },
+       };
+
+       int i = 0;
+       for (i = 0; anim_init_table[i].op_type != VI_OP_NONE; i++) {
+               if (anim_init_table[i].op_type != vi->op_type) {
+                       continue;
+               }
+
+               anim_init_table[i].handler(vi);
+               break;
+       }
+
+       return EINA_TRUE;
+}
+
+static Eina_Bool _anim_job_cb(void *data)
+{
+       QP_VI *vi = data;
+       retif(vi == NULL, EINA_FALSE, "invalid parameter");
+
+       static qp_vi_op_table anim_job_table[] = {
+               {
+                       .op_type = VI_OP_INSERT,
+                       .handler = _anim_job_insert,
+               },
+               {
+                       .op_type = VI_OP_DELETE,
+                       .handler = _anim_job_delete,
+               },
+               {
+                       .op_type = VI_OP_DELETE_ALL,
+                       .handler = _anim_job_delete_all,
+               },
+               {
+                       .op_type = VI_OP_NONE,
+                       .handler = NULL,
+               },
+       };
+
+       int i = 0;
+       for (i = 0; anim_job_table[i].op_type != VI_OP_NONE; i++) {
+               if (anim_job_table[i].op_type != vi->op_type) {
+                       continue;
+               }
+               anim_job_table[i].handler(vi);
+               break;
+       }
+
+       return EINA_TRUE;
+}
+
+static Eina_Bool _anim_done_cb(void *data)
+{
+       QP_VI *vi = data;
+       retif(vi == NULL, EINA_FALSE, "invalid parameter");
+
+       static qp_vi_op_table anim_done_table[] = {
+               {
+                       .op_type = VI_OP_INSERT,
+                       .handler = _anim_done_insert,
+               },
+               {
+                       .op_type = VI_OP_DELETE,
+                       .handler = _anim_done_delete,
+               },
+               {
+                       .op_type = VI_OP_DELETE_ALL,
+                       .handler = _anim_done_delete_all,
+               },
+               {
+                       .op_type = VI_OP_NONE,
+                       .handler = NULL,
+               },
+       };
+
+       int i = 0;
+       for (i = 0; anim_done_table[i].op_type != VI_OP_NONE; i++) {
+               if (anim_done_table[i].op_type != vi->op_type) {
+                       continue;
                }
+
+               anim_done_table[i].handler(vi);
+               break;
        }
 
-       DBG("Angle  Rotation  is %d", angle);
+       return EINA_TRUE;
+}
+
+HAPI int quickpanel_noti_listbox_get_geometry(Evas_Object *listbox,
+               int *limit_h, int *limit_partial_h, int *limit_partial_w)
+{
+
+       int x = 0, y = 0, w = 0, h = 0;
+
+       retif(listbox == NULL, 0, "invalid parameter");
+       retif(limit_h == NULL, 0, "invalid parameter");
+       retif(limit_partial_h == NULL, 0, "invalid parameter");
+       retif(limit_partial_w == NULL, 0, "invalid parameter");
+       evas_object_geometry_get(listbox, &x, &y, &w, &h);
+
+       *limit_h =  y + h;
+       *limit_partial_h = *limit_h;
+       *limit_partial_w = 0;
+
+       return 1;
+}
+
+static void _notibox_deleted_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+       quickpanel_uic_close_quickpanel(EINA_FALSE, EINA_FALSE);
+}
+
+HAPI void quickpanel_noti_listbox_closing_trigger_set(Evas_Object *listbox)
+{
+       Evas_Object *item = NULL;
+       Eina_List *items = NULL;
+       retif(listbox == NULL, , "invalid parameter");
+
+       if ((items = elm_box_children_get(listbox)) != NULL) {
+               item = eina_list_nth(items, 0);
+               if (item != NULL) {
+                       evas_object_event_callback_add(item,
+                                       EVAS_CALLBACK_DEL, _notibox_deleted_cb, NULL);
+               }
+               eina_list_free(items);
+       }
 }
index 070e1c6..8f414e8 100755 (executable)
@@ -1,36 +1,44 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ * Copyright (c) 2009-2015 Samsung Electronics Co., Ltd All Rights Reserved
  *
- * Licensed under the Flora License, Version 1.1 (the License);
+ * 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,
+ * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
+ *
  */
 
+
 #ifndef __QUICKPANEL_NOTI_LISTBOX_H__
 #define __QUICKPANEL_NOTI_LISTBOX_H__
 
+#include "list_util.h"
+
+#define LISTBOX_INSERT_AFTER -1
 #define LISTBOX_PREPEND 1
 #define LISTBOX_APPEND 0
 
-Evas_Object *listbox_create(Evas_Object *parent, void *data);
-void listbox_remove(Evas_Object *listbox);
-void listbox_add_item(Evas_Object *listbox, Evas_Object *item, int is_prepend);
-void listbox_remove_item(Evas_Object *listbox, Evas_Object *item, int with_animation);
-void listbox_rotation(Evas_Object *listbox, int angle);
-void listbox_remove_and_add_item(Evas_Object *listbox, Evas_Object *item
-               ,void (*update_cb)(Evas_Object *list, void *data, int is_prepend)
-               ,void *container, void *data, int pos);
-void listbox_remove_all_item(Evas_Object *listbox, int with_animation);
-void listbox_set_item_deleted_cb(Evas_Object *listbox,
+Evas_Object *quickpanel_noti_listbox_create(Evas_Object *parent, void *data, qp_item_type_e item_type);
+void quickpanel_noti_listbox_remove(Evas_Object *listbox);
+void quickpanel_noti_listbox_add_item(Evas_Object *listbox, Evas_Object *item, int is_prepend, Evas_Object *noti_section);
+void quickpanel_noti_listbox_remove_item(Evas_Object *listbox, Evas_Object *item, int with_animation);
+void quickpanel_noti_listbox_rotation(Evas_Object *listbox, int angle);
+void quickpanel_noti_listbox_remove_all_item(Evas_Object *listbox, int with_animation);
+void quickpanel_noti_listbox_set_item_deleted_cb(Evas_Object *listbox,
                void(*deleted_cb)(void *data, Evas_Object *obj));
-void listbox_update(Evas_Object *listbox);
-void listbox_update_item(Evas_Object *listbox, Evas_Object *item);
+void quickpanel_noti_listbox_update(Evas_Object *listbox);
+void quickpanel_noti_listbox_update_item(Evas_Object *listbox, Evas_Object *item);
+int quickpanel_noti_listbox_get_item_count(Evas_Object *listbox);
+void quickpanel_noti_listbox_items_visibility_set(Evas_Object *listbox, int is_visible);
+int quickpanel_noti_listbox_get_geometry(Evas_Object *listbox,
+               int *limit_h, int *limit_partial_h, int *limit_partial_w);
+void quickpanel_noti_listbox_closing_trigger_set(Evas_Object *listbox);
+
 #endif
index 0d9166e..763d6a8 100755 (executable)
@@ -1,19 +1,21 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ * Copyright (c) 2009-2015 Samsung Electronics Co., Ltd All Rights Reserved
  *
- * Licensed under the Flora License, Version 1.1 (the License);
+ * 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,
+ * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
+ *
  */
 
+
 #include "quickpanel-ui.h"
 #include "common.h"
 #include "list_util.h"
@@ -21,7 +23,7 @@
 
 static void _noti_node_free(noti_node_item *node);
 
-HAPI void noti_node_create(noti_node **handle)
+HAPI void quickpanel_noti_node_create(noti_node **handle)
 {
        retif(handle == NULL, , "Invalid parameter!");
 
@@ -39,7 +41,7 @@ HAPI void noti_node_create(noti_node **handle)
        }
 }
 
-HAPI void noti_node_destroy(noti_node **handle)
+HAPI void quickpanel_noti_node_destroy(noti_node **handle)
 {
        retif(handle == NULL, , "Invalid parameter!");
        retif(*handle == NULL, , "Invalid parameter!");
@@ -52,7 +54,7 @@ HAPI void noti_node_destroy(noti_node **handle)
        *handle = NULL;
 }
 
-HAPI noti_node_item *noti_node_add(noti_node *handle, notification_h noti, void *view)
+HAPI noti_node_item *quickpanel_noti_node_add(noti_node *handle, notification_h noti, void *view)
 {
        int priv_id = 0;
        notification_type_e noti_type = NOTIFICATION_TYPE_NONE;
@@ -74,48 +76,61 @@ HAPI noti_node_item *noti_node_add(noti_node *handle, notification_h noti, void
 
                notification_get_type(noti, &noti_type);
 
-               if (noti_type == NOTIFICATION_TYPE_NOTI)
+               if (noti_type == NOTIFICATION_TYPE_NOTI) {
                        handle->n_noti++;
-               else if (noti_type == NOTIFICATION_TYPE_ONGOING)
+               } else if (noti_type == NOTIFICATION_TYPE_ONGOING) {
                        handle->n_ongoing++;
+               }
 
+               DBG("n_noti = [%d] n_ongoing = [%d]", handle->n_noti, handle->n_ongoing);
                return node;
        }
 
        return NULL;
 }
 
-HAPI void noti_node_remove(noti_node *handle, int priv_id)
+HAPI void quickpanel_noti_node_remove(noti_node *handle, int priv_id)
 {
        notification_type_e noti_type = NOTIFICATION_TYPE_NONE;
 
        retif(handle == NULL, , "Invalid parameter!");
        retif(handle->table == NULL, , "Invalid parameter!");
 
-       noti_node_item *item = noti_node_get(handle, priv_id);
+       noti_node_item *item = quickpanel_noti_node_get(handle, priv_id);
 
        if (item != NULL) {
                if (item->noti != NULL) {
                        notification_get_type(item->noti, &noti_type);
 
-                       if (noti_type == NOTIFICATION_TYPE_NOTI)
+                       if (noti_type == NOTIFICATION_TYPE_NOTI) {
                                handle->n_noti--;
-                       else if (noti_type == NOTIFICATION_TYPE_ONGOING)
+                       } else if (noti_type == NOTIFICATION_TYPE_ONGOING) {
                                handle->n_ongoing--;
+                       }
                }
 
                notification_free(item->noti);
                item->noti = NULL;
                item->view = NULL;
 
-               if (g_hash_table_remove(handle->table, GINT_TO_POINTER(priv_id)))
-               {
-                       INFO("success to remove %d", priv_id);
+               if (g_hash_table_remove(handle->table, GINT_TO_POINTER(priv_id))) {
+                       DBG("success to remove %d", priv_id);
                }
        }
 }
 
-HAPI noti_node_item *noti_node_get(noti_node *handle, int priv_id)
+HAPI void quickpanel_noti_node_remove_all(noti_node *handle)
+{
+       retif(handle == NULL, , "Invalid parameter!");
+       retif(handle->table == NULL, , "Invalid parameter!");
+
+       g_hash_table_remove_all(handle->table);
+       handle->n_noti = 0;
+       handle->n_ongoing = 0;
+       DBG("all the nodes are removed");
+}
+
+HAPI noti_node_item *quickpanel_noti_node_get(noti_node *handle, int priv_id)
 {
        retif(handle == NULL, NULL, "Invalid parameter!");
        retif(handle->table == NULL, NULL, "Invalid parameter!");
@@ -124,14 +139,19 @@ HAPI noti_node_item *noti_node_get(noti_node *handle, int priv_id)
                        (handle->table, GINT_TO_POINTER(priv_id));
 }
 
-HAPI int noti_node_get_item_count(noti_node *handle, notification_type_e noti_type)
+HAPI int quickpanel_noti_node_get_item_count(noti_node *handle, notification_type_e noti_type)
 {
        retif(handle == NULL, 0, "Invalid parameter!");
 
-       if (noti_type == NOTIFICATION_TYPE_NOTI)
+       DBG("n_noti %d , n_ongoing %d ", handle->n_noti, handle->n_ongoing);
+
+       if (noti_type == NOTIFICATION_TYPE_NOTI) {
                return handle->n_noti;
-       else if (noti_type == NOTIFICATION_TYPE_ONGOING)
+       } else if (noti_type == NOTIFICATION_TYPE_ONGOING) {
                return handle->n_ongoing;
+       } else if (noti_type == NOTIFICATION_TYPE_NONE) {
+               return handle->n_noti + handle->n_ongoing;
+       }
 
        return 0;
 }
index 5a43239..9ebdce6 100755 (executable)
@@ -1,19 +1,21 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ * Copyright (c) 2009-2015 Samsung Electronics Co., Ltd All Rights Reserved
  *
- * Licensed under the Flora License, Version 1.1 (the License);
+ * 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,
+ * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
+ *
  */
 
+
 #ifndef __QUICKPANEL_NOTI_NODE_H__
 #define __QUICKPANEL_NOTI_NODE_H__
 
@@ -31,11 +33,12 @@ typedef struct _noti_node_item {
        void *view;
 } noti_node_item;
 
-void noti_node_create(noti_node **handle);
-void noti_node_destroy(noti_node **handle);
-noti_node_item *noti_node_add(noti_node *handle, notification_h noti, void *view);
-void noti_node_remove(noti_node *handle, int priv_id);
-noti_node_item *noti_node_get(noti_node *handle, int priv_id);
-int noti_node_get_item_count(noti_node *handle, notification_type_e noti_type);
+void quickpanel_quickpanel_noti_node_create(noti_node **handle);
+void quickpanel_noti_node_destroy(noti_node **handle);
+noti_node_item *quickpanel_noti_node_add(noti_node *handle, notification_h noti, void *view);
+void quickpanel_noti_node_remove(noti_node *handle, int priv_id);
+void quickpanel_noti_node_remove_all(noti_node *handle);
+noti_node_item *quickpanel_noti_node_get(noti_node *handle, int priv_id);
+int quickpanel_noti_node_get_item_count(noti_node *handle, notification_type_e noti_type);
 
 #endif
index 4a1d55d..64fe30a 100755 (executable)
@@ -1,19 +1,21 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ * Copyright (c) 2009-2015 Samsung Electronics Co., Ltd All Rights Reserved
  *
- * Licensed under the Flora License, Version 1.1 (the License);
+ * 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,
+ * 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 "quickpanel-ui.h"
 #include "quickpanel_def.h"
 #include "noti.h"
 #include "noti_section.h"
 #include "list_util.h"
+#ifdef QP_SCREENREADER_ENABLE
+#include "accessibility.h"
+#endif
 
-static void _noti_section_button_clicked_cb(void *data, Evas_Object * obj,
-                                       void *event_info)
-{
-       notification_error_e noti_err = NOTIFICATION_ERROR_NONE;
-
-       noti_err = notifiation_clear(NOTIFICATION_TYPE_NOTI);
-
-       DBG("notiifcations going to be cleared: noti_err(%d)", noti_err);
+ #define NOTI_CLEAR_ALL_SECTION "quickpanel/notisection/clear_all"
+ #define NOTI_DEFAULT_SECTION "quickpanel/notisection/default"
 
-       quickpanel_play_feedback();
-}
-
-static void _noti_section_set_button(Evas_Object *noti_section)
+static void _noti_section_set_text(Evas_Object *noti_section, int count)
 {
-       Evas_Object *eo = NULL;
-       Evas_Object *old_eo = NULL;
+#ifdef QP_SCREENREADER_ENABLE
+       Evas_Object *ao = NULL;
+#endif
 
-       retif(noti_section == NULL, , "invalid parameter");
+       DBG("count is : %d ", count);
 
-       old_eo = elm_object_part_content_get(noti_section, "elm.swallow.icon");
-
-       if (old_eo == NULL) {
-               eo = elm_button_add(noti_section);
-               retif(eo == NULL, , "Failed to create clear button!");
-               elm_object_style_set(eo, "quickpanel_standard");
-               evas_object_smart_callback_add(eo, "clicked",
-                               _noti_section_button_clicked_cb, NULL);
-               elm_object_part_content_set(noti_section, "elm.swallow.icon", eo);
-       } else {
-               eo = old_eo;
-       }
-
-       elm_object_text_set(eo, _S("IDS_COM_BODY_CLEAR_ALL"));
-}
-
-static void _noti_section_set_text(Evas_Object *noti_section, int count)
-{
        char text[128] = {0,};
-       char format[256] = {0,};
+       char *format = NULL;
        const char *old_text = NULL;
 
        retif(noti_section == NULL, , "invalid parameter");
 
-       snprintf(format, sizeof(format), "%s %%d", _("IDS_QP_BODY_NOTIFICATIONS_ABB2"));
+       format = _("IDS_QP_HEADER_NOTIFICATIONS_HPD_ABB");
        snprintf(text, sizeof(text), format, count);
 
-       old_text = elm_object_part_text_get(noti_section, "elm.text.text");
+       old_text = elm_object_part_text_get(noti_section, "elm.text.notifications_number");
        if (old_text != NULL) {
                if (strcmp(old_text, text) == 0) {
-                       return ;
+                       return;
                }
        }
 
-       elm_object_part_text_set(noti_section, "elm.text.text", text);
+#ifdef QP_SCREENREADER_ENABLE
+       ao = quickpanel_accessibility_screen_reader_object_get(noti_section,
+                       SCREEN_READER_OBJ_TYPE_ELM_OBJECT, "focus.label", noti_section);
+
+       if (ao != NULL) {
+               elm_access_info_set(ao, ELM_ACCESS_TYPE, "");
+               elm_access_info_set(ao, ELM_ACCESS_INFO, text);
+       }
+#endif
+
+       DBG("Trying to set text :%s ", text);
+
+       elm_object_part_text_set(noti_section, "elm.text.notifications_number", text);
+       elm_object_part_text_set(noti_section, "text.button.clear_all", _("IDS_QP_HEADER_CLEAR_ALL_ABB"));
 }
 
-HAPI Evas_Object *noti_section_create(Evas_Object *parent) {
+HAPI Evas_Object *quickpanel_noti_section_create(Evas_Object *parent, qp_item_type_e type)
+{
        Eina_Bool ret = EINA_FALSE;
        Evas_Object *section = NULL;
 
+       struct appdata *ad = quickpanel_get_app_data();
+       retif(ad == NULL, NULL, "invalid parameter");
        retif(parent == NULL, NULL, "invalid parameter");
 
        section = elm_layout_add(parent);
-       ret = elm_layout_file_set(section, DEFAULT_EDJ,
-                       "quickpanel/notisection/default");
+       if (type == QP_ITEM_TYPE_ONGOING_NOTI_GROUP) {
+               ret = elm_layout_file_set(section, DEFAULT_EDJ,
+                               NOTI_CLEAR_ALL_SECTION);
+       } else { //in higgs there is only one type of notifications
+               ret = elm_layout_file_set(section, DEFAULT_EDJ,
+                               NOTI_CLEAR_ALL_SECTION);
+       }
        retif(ret == EINA_FALSE, NULL, "failed to load layout");
 
        evas_object_size_hint_weight_set(section, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
        evas_object_size_hint_align_set(section, EVAS_HINT_FILL, EVAS_HINT_FILL);
+       quickpanel_uic_initial_resize(section, QP_THEME_LIST_ITEM_NOTI_SECTION_HEIGHT);
        evas_object_show(section);
 
        qp_item_data *qid
-               = quickpanel_list_util_item_new(QP_ITEM_TYPE_NOTI_GROUP, NULL);
+               = quickpanel_list_util_item_new(type, NULL);
        quickpanel_list_util_item_set_tag(section, qid);
+       quickpanel_list_util_sort_insert(ad->list, section);
+
+       Evas_Object *focus = quickpanel_accessibility_ui_get_focus_object(section);
+       elm_object_part_content_set(section, "focus", focus);
+       evas_object_smart_callback_add(focus, "clicked", quickpanel_noti_on_clear_all_clicked, NULL);
+
+       focus = quickpanel_accessibility_ui_get_focus_object(section);
+       elm_object_part_content_set(section, "focus.label", focus);
 
        return section;
 }
 
-HAPI void noti_section_update(Evas_Object *noti_section, int noti_count) {
+static void _focus_pair_set(Evas_Object *view)
+{
+       Evas_Object *label = NULL;
+       Evas_Object *button = NULL;
+       retif(view == NULL, , "Invalid parameter!");
+
+       label = elm_object_part_content_get(view, "focus.label");
+       button = elm_object_part_content_get(view, "elm.swallow.icon");
+
+       if (label != NULL && button != NULL) {
+               /* label */
+               elm_object_focus_next_object_set(label, button, ELM_FOCUS_RIGHT);
+               elm_object_focus_next_object_set(label, button, ELM_FOCUS_DOWN);
+
+               /* button */
+               elm_object_focus_next_object_set(button, label, ELM_FOCUS_LEFT);
+               elm_object_focus_next_object_set(button, label, ELM_FOCUS_UP);
+       }
+}
+
+HAPI void quickpanel_noti_section_update(Evas_Object *noti_section, int noti_count)
+{
        retif(noti_section == NULL, , "invalid parameter");
 
-       _noti_section_set_button(noti_section);
        _noti_section_set_text(noti_section, noti_count);
+       _focus_pair_set(noti_section);
+
+       quickpanel_noti_set_clear_all_status();
 }
 
-HAPI void noti_section_remove(Evas_Object *noti_section) {
+HAPI void quickpanel_noti_section_set_deleted_cb(Evas_Object *noti_section,
+               Evas_Object_Event_Cb func, void *data)
+{
+       retif(noti_section == NULL, , "invalid parameter");
+       retif(func == NULL, , "invalid parameter");
+
+       evas_object_event_callback_add(noti_section, EVAS_CALLBACK_DEL, func, data);
+}
+
+HAPI void quickpanel_noti_section_remove(Evas_Object *noti_section)
+{
+       struct appdata *ad = quickpanel_get_app_data();
+       retif(ad == NULL, , "invalid parameter");
        retif(noti_section == NULL, , "invalid parameter");
 
        quickpanel_list_util_item_del_tag(noti_section);
-       evas_object_del(noti_section);
+       quickpanel_list_util_item_unpack_by_object(ad->list, noti_section, 0, 0);
 }
index 12dd863..cf0c60e 100755 (executable)
@@ -1,24 +1,29 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ * Copyright (c) 2009-2015 Samsung Electronics Co., Ltd All Rights Reserved
  *
- * Licensed under the Flora License, Version 1.1 (the License);
+ * 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,
+ * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
+ *
  */
 
 #ifndef __QUICKPANEL_NOTI_SECTION_H__
 #define __QUICKPANEL_NOTI_SECTION_H__
 
-Evas_Object *noti_section_create(Evas_Object *parent);
-void noti_section_update(Evas_Object *noti_section, int noti_count);
-void noti_section_remove(Evas_Object *noti_section) ;
+#include "list_util.h"
+
+Evas_Object *quickpanel_noti_section_create(Evas_Object *parent, qp_item_type_e type);
+void quickpanel_noti_section_update(Evas_Object *noti_section, int noti_count);
+void quickpanel_noti_section_remove(Evas_Object *noti_section) ;
+void quickpanel_noti_section_set_deleted_cb(Evas_Object *noti_section,
+               Evas_Object_Event_Cb func, void *data);
 
 #endif
\ No newline at end of file
index 0f97551..b9ed40e 100755 (executable)
@@ -1,32 +1,37 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ * Copyright (c) 2009-2015 Samsung Electronics Co., Ltd All Rights Reserved
  *
- * Licensed under the Flora License, Version 1.1 (the License);
+ * 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
+ * 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,
+ * 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 <unicode/uloc.h>
 #include <unicode/udat.h>
 #include <unicode/udatpg.h>
 #include <unicode/ustring.h>
 #include <runtime_info.h>
-
+#include <vconf.h>
+#include <system_settings.h>
 #include "quickpanel-ui.h"
 #include "common.h"
 #include "noti_util.h"
 
 #define QP_NOTI_DAY_DEC        (24 * 60 * 60)
+#define QP_NOTI_TIME_LEN_LIMIT 12
 
-HAPI int quickpanel_noti_get_event_count_from_noti(notification_h noti) {
+HAPI int quickpanel_noti_util_get_event_count_from_noti(notification_h noti)
+{
        char *text_count = NULL;
 
        retif(noti == NULL, 0, "Invalid parameter!");
@@ -38,7 +43,8 @@ HAPI int quickpanel_noti_get_event_count_from_noti(notification_h noti) {
        return 1;
 }
 
-HAPI int quickpanel_noti_get_event_count_by_pkgname(const char *pkgname) {
+HAPI int quickpanel_noti_util_get_event_count_by_pkgname(const char *pkgname)
+{
        int count = 0;
        notification_h noti = NULL;
        notification_list_h noti_list = NULL;
@@ -49,7 +55,7 @@ HAPI int quickpanel_noti_get_event_count_by_pkgname(const char *pkgname) {
        if (noti_list != NULL) {
                noti = notification_list_get_data(noti_list);
                if (noti != NULL) {
-                       count = quickpanel_noti_get_event_count_from_noti(noti);
+                       count = quickpanel_noti_util_get_event_count_from_noti(noti);
                }
                notification_free_list(noti_list);
                return count;
@@ -58,25 +64,88 @@ HAPI int quickpanel_noti_get_event_count_by_pkgname(const char *pkgname) {
        return 0;
 }
 
-HAPI char *quickpanel_noti_get_time(time_t t, char *buf, int buf_len)
+static char* _get_locale(void)
 {
+       char locale_tmp[32] = { 0, };
+       char *locale = NULL;
+       int ret = 0;
+
+#ifdef HAVE_X
+       ret = system_settings_get_value_string(SYSTEM_SETTINGS_KEY_LOCALE_COUNTRY, &locale);
+       msgif(ret != SYSTEM_SETTINGS_ERROR_NONE, "ailed to set key(%s) : %d", SYSTEM_SETTINGS_KEY_LOCALE_COUNTRY, ret);
+#endif
+
+       if (locale == NULL) {
+               ERR("vconf_get_str() failed : region format");
+               return strdup("en_US");
+       }
+
+       strncpy(locale_tmp, locale, sizeof(locale_tmp) - 1);
+
+       // remove .UTF-8
+       if (strlen(locale_tmp) > 0) {
+               char *p = strstr(locale_tmp, ".UTF-8");
+               if (p) {
+                       *p = 0;
+               }
+       }
+
+       free(locale);
+
+       if (strlen(locale_tmp) > 0) {
+               return strdup(locale_tmp);
+       }
+
+       return strdup("en_US");
+}
+
+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;
+}
+
+static char* _get_timezone(void)
+{
+       char buf[1024] = {0,};
+       ssize_t len = readlink("/opt/etc/localtime", buf, sizeof(buf)-1);
+
+       if (len != -1) {
+               buf[len] = '\0';
+       } else {
+               ERR("failed to get a timezone information");
+               return _get_timezone_from_vconf();
+       }
+
+       return strdup(buf + 20);
+}
+
+HAPI char *quickpanel_noti_util_get_time(time_t t, char *buf, int buf_len)
+{
+       int ret = 0;
        UErrorCode status = U_ZERO_ERROR;
-       UDateTimePatternGenerator *generator;
-       UDateFormat *formatter;
+       UDate date;
+       UDateTimePatternGenerator *generator = NULL;
+       UDateFormat *formatter = NULL;
+       UChar utimezone_id[40] = {0,};
        UChar skeleton[40] = { 0 };
        UChar pattern[40] = { 0 };
        UChar formatted[40] = { 0 };
        int32_t patternCapacity, formattedCapacity;
-       int32_t skeletonLength, patternLength, formattedLength;
-       UDate date;
-       const char *locale;
-       const char customSkeleton[] = UDAT_YEAR_NUM_MONTH_DAY;
+       int32_t skeletonLength, patternLength;
+       time_t today;
+       struct tm loc_time;
+       char *timezone = NULL;
+       char *locale = NULL;
        char bf1[32] = { 0, };
        bool is_24hour_enabled = FALSE;
-
-       struct tm loc_time;
-       time_t today, yesterday;
-       int ret = 0;
+       int is_show_time = 0;
 
        today = time(NULL);
        localtime_r(&today, &loc_time);
@@ -86,84 +155,135 @@ HAPI char *quickpanel_noti_get_time(time_t t, char *buf, int buf_len)
        loc_time.tm_hour = 0;
        today = mktime(&loc_time);
 
-       yesterday = today - QP_NOTI_DAY_DEC;
-
        localtime_r(&t, &loc_time);
 
-       if (t >= yesterday && t < today) {
-               ret = snprintf(buf, buf_len, _S("IDS_COM_BODY_YESTERDAY"));
-       } else if (t < yesterday) {
-               /* set UDate  from time_t */
-               date = (UDate) t * 1000;
+       if (buf == NULL) {
+               return NULL;
+       }
 
-               /* get default locale  */
-               /* for thread saftey  */
-               uloc_setDefault(secure_getenv("LC_TIME"), &status);
-               locale = uloc_getDefault();
+       if (t < today) {
+               /* ascii to unicode for input skeleton */
+               u_uastrcpy(skeleton, UDAT_ABBR_MONTH_DAY);
+               skeletonLength = strlen(UDAT_ABBR_MONTH_DAY);
+               is_show_time = 0;
+       } else {
+#ifdef HAVE_X
+               ret = system_settings_get_value_bool(SYSTEM_SETTINGS_KEY_LOCALE_TIMEFORMAT_24HOUR, &is_24hour_enabled);
+#endif
+               if (ret == SYSTEM_SETTINGS_ERROR_NONE && is_24hour_enabled == true) {
+                       /* ascii to unicode for input skeleton */
+                       u_uastrcpy(skeleton, "HHmm");
+                       skeletonLength = strlen("HHmm");
+               } else {
+                       /* ascii to unicode for input skeleton */
+                       u_uastrcpy(skeleton, "hhmm");
+                       skeletonLength = strlen("hhmm");
+               }
+               is_show_time = 1;
+       }
 
-               /* open datetime pattern generator */
-               generator = udatpg_open(locale, &status);
-               if (generator == NULL)
-                       return NULL;
+       /* set UDate  from time_t */
+       date = (UDate)t * 1000;
 
-               /* calculate pattern string capacity */
-               patternCapacity =
-                   (int32_t) (sizeof(pattern) / sizeof((pattern)[0]));
+       patternCapacity =
+               (int32_t) (sizeof(pattern) / sizeof((pattern)[0]));
 
-               /* ascii to unicode for input skeleton */
-               u_uastrcpy(skeleton, customSkeleton);
+       timezone = _get_timezone();
+       locale = _get_locale();
 
-               /* get skeleton length */
-               skeletonLength = strlen(customSkeleton);
+       if (u_uastrncpy(utimezone_id, timezone, 40) == NULL) {
+               ERR("u_uastrncpy() error.");
+               ret = 0;
+               goto err;
+       }
 
-               /* get best pattern using skeleton */
-               patternLength =
-                   udatpg_getBestPattern(generator, skeleton, skeletonLength,
-                                         pattern, patternCapacity, &status);
+       ucal_setDefaultTimeZone(utimezone_id , &status);
+       if (U_FAILURE(status)) {
+               ERR("ucal_setDefaultTimeZone() is failed.");
+               ret = 0;
+               goto err;
+       }
 
-               /* open datetime formatter using best pattern */
-               formatter =
-                   udat_open(UDAT_IGNORE, UDAT_DEFAULT, locale, NULL, -1,
-                             pattern, patternLength, &status);
-               if (formatter == NULL) {
-                       udatpg_close(generator);
-                       return NULL;
-               }
+#ifdef HAVE___SECURE_GETENV
+       uloc_setDefault(__secure_getenv("LC_TIME"), &status);
+#elif defined HAVE_SECURE_GETENV
+       uloc_setDefault(secure_getenv("LC_TIME"), &status);
+#else
+       uloc_setDefault(getenv("LC_TIME"), &status);
+#endif
+       if (U_FAILURE(status)) {
+               ERR("uloc_setDefault() is failed.");
+               ret = 0;
+               goto err;
+       }
 
-               /* calculate formatted string capacity */
-               formattedCapacity =
-                   (int32_t) (sizeof(formatted) / sizeof((formatted)[0]));
+       /* open datetime pattern generator */
+       generator = udatpg_open(locale, &status);
+       if (generator == NULL) {
+               ret = 0;
+               goto err;
+       }
 
-               /* formatting date using formatter by best pattern */
-               formattedLength =
-                   udat_format(formatter, date, formatted, formattedCapacity,
-                               NULL, &status);
+       /* get best pattern using skeleton */
+       patternLength =
+               udatpg_getBestPattern(generator, skeleton, skeletonLength,
+                                 pattern, patternCapacity, &status);
+
+       /* open datetime formatter using best pattern */
+       formatter =
+               udat_open(UDAT_IGNORE, UDAT_IGNORE, locale, NULL, -1,
+                         pattern, patternLength, &status);
+       if (formatter == NULL) {
+               ret = 0;
+               goto err;
+       }
 
-               /* unicode to ascii to display */
-               u_austrcpy(bf1, formatted);
+       /* calculate formatted string capacity */
+       formattedCapacity =
+               (int32_t) (sizeof(formatted) / sizeof((formatted)[0]));
 
-               /* close datetime pattern generator */
-               udatpg_close(generator);
+       /* formatting date using formatter by best pattern */
+       udat_format(formatter, date, formatted, formattedCapacity,
+                       NULL, &status);
 
-               /* close datetime formatter */
-               udat_close(formatter);
+       /* unicode to ascii to display */
+       u_austrcpy(bf1, formatted);
+       ret = snprintf(buf, buf_len, "%s", bf1);
 
-               ret = snprintf(buf, buf_len, "%s", bf1);
-       } else {
-               ret = runtime_info_get_value_bool(
-                                       RUNTIME_INFO_KEY_24HOUR_CLOCK_FORMAT_ENABLED, &is_24hour_enabled);
-               if (ret == RUNTIME_INFO_ERROR_NONE && is_24hour_enabled == TRUE) {
+       if (is_show_time == 1 && strlen(buf) > QP_NOTI_TIME_LEN_LIMIT) {
+               if (is_24hour_enabled == TRUE) {
                        ret = strftime(buf, buf_len, "%H:%M", &loc_time);
                } else {
                        strftime(bf1, sizeof(bf1), "%l:%M", &loc_time);
 
-                       if (loc_time.tm_hour >= 0 && loc_time.tm_hour < 12)
+                       if (loc_time.tm_hour >= 0 && loc_time.tm_hour < 12) {
                                ret = snprintf(buf, buf_len, "%s%s", bf1, "AM");
-                       else
+                       } else {
                                ret = snprintf(buf, buf_len, "%s%s", bf1, "PM");
+                       }
                }
-
        }
 
+       err:
+               if (timezone) {
+                       free(timezone);
+                       timezone = NULL;
+               }
+
+               if (locale) {
+                       free(locale);
+                       locale = NULL;
+               }
+
+               if (generator) {
+                       udatpg_close(generator);
+                       generator = NULL;
+               }
+
+               if (formatter) {
+                       udat_close(formatter);
+                       formatter = NULL;
+               }
+
        return ret <= 0 ? NULL : buf;
 }
index e12003d..5aca4f9 100755 (executable)
@@ -1,26 +1,28 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ * Copyright (c) 2009-2015 Samsung Electronics Co., Ltd All Rights Reserved
  *
- * Licensed under the Flora License, Version 1.1 (the License);
+ * 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
+ * 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,
+ * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
+ *
  */
 
+
 #ifndef _QP_NOTI_UTIL_DEF_
 #define _QP_NOTI_UTIL_DEF_
 
 #include <notification.h>
 
-HAPI int quickpanel_noti_get_event_count_from_noti(notification_h noti);
-int quickpanel_noti_get_event_count_by_pkgname(const char *pkgname);
-char *quickpanel_noti_get_time(time_t t, char *buf, int buf_len);
+HAPI int quickpanel_noti_util_get_event_count_from_noti(notification_h noti);
+int quickpanel_noti_util_get_event_count_by_pkgname(const char *pkgname);
+char *quickpanel_noti_util_get_time(time_t t, char *buf, int buf_len);
 
 #endif
diff --git a/daemon/notifications/noti_view.c b/daemon/notifications/noti_view.c
new file mode 100644 (file)
index 0000000..b62366e
--- /dev/null
@@ -0,0 +1,201 @@
+/*
+ * 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 <string.h>
+#include <notification.h>
+
+#include "quickpanel-ui.h"
+#include "common.h"
+#include "list_util.h"
+#include "quickpanel_def.h"
+#include "noti_list_item.h"
+#include "noti_node.h"
+#include "noti.h"
+#include "noti_util.h"
+#ifdef QP_SCREENREADER_ENABLE
+#include "accessibility.h"
+#endif
+#ifdef QP_ANIMATED_IMAGE_ENABLE
+#include "animated_image.h"
+#endif
+#include "animated_icon.h"
+#include "noti_list_item.h"
+
+#define NOTI_LAYOUT_LISTTYPE 0
+#define NOTI_LAYOUT_BOXTYPE 1
+
+#define E_DATA_VIEW_HANDLER_KEY "view_handler_cache"
+
+extern Noti_View_H noti_view_listtype_h;
+extern Noti_View_H noti_view_boxtype_h;
+
+static struct _info {
+       Noti_View_H *view_handlers[NOTI_LAYOUT_BOXTYPE + 1];
+} s_info = {
+       .view_handlers = {
+               &noti_view_listtype_h,
+               &noti_view_boxtype_h,
+       },
+};
+
+#ifdef BOX_TYPE_SUPPORTED
+static int _is_image_exist(notification_h noti, notification_image_type_e image_type)
+{
+       char *image = NULL;
+
+       notification_get_image(noti, image_type, &image);
+
+       if (image == NULL) {
+               return 0;
+       }
+
+       if (strncasecmp(image, "(null)", strlen(image)) == 0) {
+               return 0;
+       }
+
+       return 1;
+}
+
+static int _is_text_exist(notification_h noti, notification_text_type_e text_type)
+{
+       char *text = NULL;
+
+       notification_get_text(noti, text_type, &text);
+
+       if (text == NULL) {
+               return 0;
+       }
+
+       return 1;
+}
+#endif
+
+static void _view_handler_set(Evas_Object *item, Noti_View_H *handler)
+{
+       retif(item == NULL, , "Invalid parameter!");
+       retif(handler == NULL, , "Invalid parameter!");
+
+       evas_object_data_set(item, E_DATA_VIEW_HANDLER_KEY, handler);
+}
+
+static Noti_View_H *_view_handler_cached_get(Evas_Object *item)
+{
+       retif(item == NULL, NULL, "Invalid parameter!");
+
+       return (Noti_View_H *)evas_object_data_get(item, E_DATA_VIEW_HANDLER_KEY);
+}
+
+static Noti_View_H *_view_handler_get_by_contents(notification_h noti)
+{
+#ifdef BOX_TYPE_SUPPORTED      // Box type is not supported in Kiran
+       int ret = 0;
+
+       ret += _is_text_exist(noti, NOTIFICATION_TEXT_TYPE_INFO_1);
+       ret += _is_text_exist(noti, NOTIFICATION_TEXT_TYPE_INFO_2);
+       ret += _is_image_exist(noti, NOTIFICATION_IMAGE_TYPE_BACKGROUND);
+
+       if (ret > 0) {
+               return s_info.view_handlers[NOTI_LAYOUT_BOXTYPE];
+       }
+#endif
+       return s_info.view_handlers[NOTI_LAYOUT_LISTTYPE];
+}
+
+static void _view_handler_del(Evas_Object *item)
+{
+       retif(item == NULL, , "Invalid parameter!");
+
+       evas_object_data_del(item, E_DATA_VIEW_HANDLER_KEY);
+}
+
+static Evas_Object *_create(notification_h noti, Evas_Object *parent)
+{
+       Evas_Object *view = NULL;
+       Noti_View_H *view_handler = NULL;
+       retif(parent == NULL, NULL, "Invalid parameter!");
+       retif(noti == NULL, NULL, "Invalid parameter!");
+
+       view_handler = _view_handler_get_by_contents(noti);
+       if (view_handler != NULL && view_handler->create != NULL) {
+               view = view_handler->create(noti, parent);
+               if (view == NULL) {
+                       ERR("failed to create notification view(%s)", view_handler->name);
+               } else {
+                       _view_handler_set(view, view_handler);
+               }
+       } else {
+               ERR("create handler isn't supported");
+       }
+
+       return view;
+}
+
+static void _update(noti_node_item *noti_node, notification_ly_type_e layout, Evas_Object *item)
+{
+       Noti_View_H *view_handler = NULL;
+       retif(item == NULL, , "Invalid parameter!");
+       retif(noti_node == NULL, , "Invalid parameter!");
+       retif(noti_node->noti == NULL, , "Invalid parameter!");
+
+       view_handler = _view_handler_get_by_contents(noti_node->noti);
+       if (view_handler != NULL && view_handler->update != NULL) {
+               _view_handler_set(item, view_handler);
+               view_handler->update(noti_node, layout, item);
+       } else {
+               ERR("update handler isn't supported");
+       }
+}
+
+static void _remove(noti_node_item *noti_node, notification_ly_type_e layout, Evas_Object *item)
+{
+       Noti_View_H *view_handler = NULL;
+       retif(item == NULL, , "Invalid parameter!");
+       retif(noti_node == NULL, , "Invalid parameter!");
+       retif(noti_node->noti == NULL, , "Invalid parameter!");
+
+       view_handler = _view_handler_cached_get(item);
+       if (view_handler != NULL && view_handler->remove != NULL) {
+               _view_handler_del(item);
+               view_handler->remove(noti_node, layout, item);
+       } else {
+               ERR("remove handler isn't supported");
+       }
+}
+
+HAPI int quickpanel_noti_view_is_view_handler_changed(Evas_Object *item, notification_h noti)
+{
+       Noti_View_H *view_handler_old = NULL;
+       Noti_View_H *view_handler_new = NULL;
+
+       view_handler_old = _view_handler_cached_get(item);
+       view_handler_new = _view_handler_get_by_contents(noti);
+
+       if (view_handler_old != view_handler_new) {
+               return 1;
+       }
+
+       return 0;
+}
+
+Noti_View_H noti_view_h = {
+       .name                   = "noti_view",
+
+       .create                 = _create,
+       .update                 = _update,
+       .remove                 = _remove,
+};
diff --git a/daemon/notifications/noti_view.h b/daemon/notifications/noti_view.h
new file mode 100644 (file)
index 0000000..2e6b07c
--- /dev/null
@@ -0,0 +1,26 @@
+/*
+ * 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 _QP_NOTI_VIEW_H_
+#define _QP_NOTI_VIEW_H_
+
+#include <notification.h>
+
+int quickpanel_noti_view_is_view_handler_changed(Evas_Object *item, notification_h noti);
+
+#endif
diff --git a/daemon/notifications/noti_view_boxtype.c b/daemon/notifications/noti_view_boxtype.c
new file mode 100644 (file)
index 0000000..f4c8de5
--- /dev/null
@@ -0,0 +1,1016 @@
+/*
+ * 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 <string.h>
+#include <notification.h>
+
+#include "quickpanel-ui.h"
+#include "common.h"
+#include "list_util.h"
+#include "quickpanel_def.h"
+#include "noti_box.h"
+#include "noti_node.h"
+#include "noti.h"
+#include "noti_util.h"
+#include "noti_list_item.h"
+#ifdef QP_SCREENREADER_ENABLE
+#include "accessibility.h"
+#endif
+#ifdef QP_ANIMATED_IMAGE_ENABLE
+#include "animated_image.h"
+#endif
+#include "animated_icon.h"
+
+#define IMAGE_NO_RESIZE 0
+#define IMAGE_RESIZE 1
+
+#define IMAGE_BY_FILE 0
+#define IMAGE_BY_BUFFER 1
+
+#define TEXT_NO_CR 0
+#define TEXT_CR 1
+
+#define THRESHOLD_DRAGGING_TIME_LIMIT 1.0
+#define LIMIT_ZOOM_RATIO 0.55
+#define LIMIT_FADEOUT_RATIO 0.1
+#define THRESHOLD_DELETE_START 80
+#define THRESHOLD_DELETE_START_Y_LIMIT 60
+#define THRESHOLD_DISTANCE ((BOX_WIDTH_P >> 1))
+
+static Evas_Object *_check_duplicated_image_loading(Evas_Object *obj, const char *part, const char *file_path)
+{
+       Evas_Object *old_ic = NULL;
+       const char *old_ic_path = NULL;
+
+       retif(obj == NULL, NULL, "Invalid parameter!");
+       retif(part == NULL, NULL, "Invalid parameter!");
+       retif(file_path == NULL, NULL, "Invalid parameter!");
+
+       old_ic = elm_object_part_content_get(obj, part);
+
+       if (quickpanel_animated_icon_is_same_icon(old_ic, file_path) == 1) {
+               return old_ic;
+       }
+
+       if (old_ic != NULL) {
+               elm_image_file_get(old_ic, &old_ic_path, NULL);
+               if (old_ic_path != NULL) {
+                       if (strcmp(old_ic_path, file_path) == 0) {
+                               return old_ic;
+                       }
+               }
+
+               elm_object_part_content_unset(obj, part);
+               evas_object_del(old_ic);
+               old_ic = NULL;
+       }
+
+       return NULL;
+}
+
+static void _attach_memfile(Evas_Object *noti_box, notification_image_type_e image_type, void *memfile)
+{
+       char buf[32] = {0,};
+
+       snprintf(buf, sizeof(buf), "%s_%d", E_DATA_NOTI_BOX_MB_BG, image_type);
+
+       void *memfile_attached = evas_object_data_get(noti_box, buf);
+       if (memfile_attached != NULL) {
+               free(memfile_attached);
+       }
+       evas_object_data_set(noti_box, buf, memfile);
+}
+
+static void _deattach_memfile_all(Evas_Object *noti_box)
+{
+       char buf[32] = {0,};
+       void *memfile = NULL;
+       int i = NOTIFICATION_TEXT_TYPE_NONE + 1;
+
+       for ( ; i < NOTIFICATION_TEXT_TYPE_MAX; i++) {
+               snprintf(buf, sizeof(buf), "%s_%d", E_DATA_NOTI_BOX_MB_BG, i);
+
+               memfile = evas_object_data_get(noti_box, buf);
+               if (memfile != NULL) {
+                       free(memfile);
+               }
+               evas_object_data_set(noti_box, buf, NULL);
+               evas_object_data_del(noti_box, buf);
+       }
+}
+
+static void _text_clean_all(Evas_Object *noti_box)
+{
+       int i = 0;
+       const char *text_parts[] = {
+               "object.text.title",
+               "object.text.contents",
+               "object.text.contents.multiline.short",
+               "object.text.contents.multiline",
+               "object.text.count",
+               "object.text.time",
+               "object.text.info.1",
+               "object.text.info.1.short",
+               "object.text.info.1.multiline",
+               "object.text.info.sub.1",
+               "object.text.info.2",
+               "object.text.info.2.short",
+               "object.text.info.sub.2",
+               NULL
+       };
+
+       for (i = 0; text_parts[i] != NULL; i++) {
+               elm_object_part_text_set(noti_box, text_parts[i], "");
+               elm_object_part_text_set(noti_box, text_parts[i], NULL);
+       }
+}
+
+#ifdef QP_SCREENREADER_ENABLE
+static inline void _check_and_add_to_buffer(notification_h noti,
+               notification_text_type_e text_type, Eina_Strbuf *str_buf)
+{
+       char buf[256] = { 0, };
+       char buf_number[QP_UTIL_PHONE_NUMBER_MAX_LEN * 2] = { 0, };
+
+       char *text = NULL;
+       time_t time = 0;
+
+       if (notification_get_time_from_text(noti, text_type, &time) == NOTIFICATION_ERROR_NONE) {
+               if ((int)time > 0) {
+                       quickpanel_noti_util_get_time(time, buf, sizeof(buf));
+                       text = buf;
+               }
+       } else {
+               notification_get_text(noti, text_type, &text);
+       }
+
+       if (text != NULL) {
+               if (strlen(text) > 0) {
+                       if (quickpanel_common_util_is_phone_number(text)) {
+                               quickpanel_common_util_phone_number_tts_make(buf_number, text,
+                                               (QP_UTIL_PHONE_NUMBER_MAX_LEN * 2) - 1);
+                               DBG("[%s]", buf_number);
+                               eina_strbuf_append(str_buf, buf_number);
+                       } else {
+                               eina_strbuf_append(str_buf, text);
+                       }
+                       eina_strbuf_append_char(str_buf, '\n');
+               }
+       }
+}
+
+static void _noti_box_set_rs_layout_single(Evas_Object *noti_box,
+               notification_h noti)
+{
+       Evas_Object *ao = NULL;
+       Eina_Strbuf *str_buf = NULL;
+       char *dir = NULL;
+       char *domain = NULL;
+
+       notification_get_text_domain(noti, &domain, &dir);
+       if (domain != NULL && dir != NULL) {
+               bindtextdomain(domain, dir);
+       }
+
+       str_buf = eina_strbuf_new();
+       retif(str_buf == NULL, , "invalid parameter");
+
+       _check_and_add_to_buffer(noti, NOTIFICATION_TEXT_TYPE_TITLE, str_buf);
+       _check_and_add_to_buffer(noti, NOTIFICATION_TEXT_TYPE_CONTENT, str_buf);
+
+       time_t noti_time = 0.0;
+       char buf[512] = {0,};
+       notification_get_time(noti, &noti_time);
+       if (noti_time == 0.0) {
+               notification_get_insert_time(noti, &noti_time);
+       }
+       quickpanel_noti_util_get_time(noti_time, buf, 512);
+       eina_strbuf_append(str_buf, buf);
+       eina_strbuf_append_char(str_buf, '\n');
+
+       _check_and_add_to_buffer(noti, NOTIFICATION_TEXT_TYPE_INFO_1, str_buf);
+       _check_and_add_to_buffer(noti, NOTIFICATION_TEXT_TYPE_INFO_SUB_1, str_buf);
+       _check_and_add_to_buffer(noti, NOTIFICATION_TEXT_TYPE_INFO_2, str_buf);
+       _check_and_add_to_buffer(noti, NOTIFICATION_TEXT_TYPE_INFO_SUB_2, str_buf);
+
+       if (str_buf != NULL) {
+               ao = quickpanel_accessibility_screen_reader_object_get(noti_box,
+                               SCREEN_READER_OBJ_TYPE_ELM_OBJECT, "focus", noti_box);
+               if (ao != NULL) {
+                       elm_access_info_set(ao, ELM_ACCESS_TYPE, _("IDS_QP_BUTTON_NOTIFICATION"));
+                       elm_access_info_set(ao, ELM_ACCESS_INFO, eina_strbuf_string_get(str_buf));
+               }
+
+               eina_strbuf_free(str_buf);
+       }
+}
+
+static void _noti_box_set_rs_layout_multi(Evas_Object *noti_box,
+               notification_h noti)
+{
+       DBG("");
+
+       Evas_Object *ao = NULL;
+       Eina_Strbuf *str_buf = NULL;
+       char *dir = NULL;
+       char *domain = NULL;
+
+       notification_get_text_domain(noti, &domain, &dir);
+       if (domain != NULL && dir != NULL) {
+               bindtextdomain(domain, dir);
+       }
+
+       str_buf = eina_strbuf_new();
+       retif(str_buf == NULL, , "invalid parameter");
+
+       _check_and_add_to_buffer(noti, NOTIFICATION_TEXT_TYPE_TITLE, str_buf);
+       _check_and_add_to_buffer(noti, NOTIFICATION_TEXT_TYPE_CONTENT, str_buf);
+
+       time_t noti_time = 0.0;
+       char buf[512] = {0,};
+       notification_get_time(noti, &noti_time);
+       if (noti_time == 0.0) {
+               notification_get_insert_time(noti, &noti_time);
+       }
+       quickpanel_noti_util_get_time(noti_time, buf, 512);
+       eina_strbuf_append(str_buf, buf);
+       eina_strbuf_append_char(str_buf, '\n');
+
+       _check_and_add_to_buffer(noti, NOTIFICATION_TEXT_TYPE_INFO_1, str_buf);
+       _check_and_add_to_buffer(noti, NOTIFICATION_TEXT_TYPE_INFO_SUB_1, str_buf);
+       _check_and_add_to_buffer(noti, NOTIFICATION_TEXT_TYPE_INFO_2, str_buf);
+       _check_and_add_to_buffer(noti, NOTIFICATION_TEXT_TYPE_INFO_SUB_2, str_buf);
+
+       if (str_buf != NULL) {
+               ao = quickpanel_accessibility_screen_reader_object_get(noti_box,
+                               SCREEN_READER_OBJ_TYPE_ELM_OBJECT, "focus", noti_box);
+               if (ao != NULL) {
+                       elm_access_info_set(ao, ELM_ACCESS_TYPE, _("IDS_QP_BUTTON_NOTIFICATION"));
+                       elm_access_info_set(ao, ELM_ACCESS_INFO, eina_strbuf_string_get(str_buf));
+               }
+
+               eina_strbuf_free(str_buf);
+       }
+}
+
+static void _noti_box_set_rs_layout_thumbnail(Evas_Object *noti_box,
+               notification_h noti)
+{
+       DBG("");
+
+       Evas_Object *ao = NULL;
+       Eina_Strbuf *str_buf = NULL;
+       char *dir = NULL;
+       char *domain = NULL;
+
+       notification_get_text_domain(noti, &domain, &dir);
+       if (domain != NULL && dir != NULL) {
+               bindtextdomain(domain, dir);
+       }
+
+       str_buf = eina_strbuf_new();
+       retif(str_buf == NULL, , "invalid parameter");
+
+       _check_and_add_to_buffer(noti, NOTIFICATION_TEXT_TYPE_TITLE, str_buf);
+       _check_and_add_to_buffer(noti, NOTIFICATION_TEXT_TYPE_CONTENT, str_buf);
+
+       time_t noti_time = 0.0;
+       char buf[512] = {0,};
+       notification_get_time(noti, &noti_time);
+       if (noti_time == 0.0) {
+               notification_get_insert_time(noti, &noti_time);
+       }
+       quickpanel_noti_util_get_time(noti_time, buf, 512);
+       eina_strbuf_append(str_buf, buf);
+       eina_strbuf_append_char(str_buf, '\n');
+
+       if (str_buf != NULL) {
+               DBG("access:%s", eina_strbuf_string_get(str_buf));
+
+               ao = quickpanel_accessibility_screen_reader_object_get(noti_box,
+                               SCREEN_READER_OBJ_TYPE_ELM_OBJECT, "focus", noti_box);
+               if (ao != NULL) {
+                       elm_access_info_set(ao, ELM_ACCESS_TYPE, _("IDS_QP_BUTTON_NOTIFICATION"));
+                       elm_access_info_set(ao, ELM_ACCESS_INFO, eina_strbuf_string_get(str_buf));
+               }
+
+               eina_strbuf_free(str_buf);
+       }
+}
+#endif
+
+static Evas_Object *_set_image(Evas_Object *noti_box, notification_h noti, char *image_path,
+               notification_image_type_e image_type, const char *part, int is_stretch, int is_use_buffer)
+{
+       Evas_Object *content = NULL;
+       char *image = NULL;
+       char ext[32] = {0,};
+       void *memfile = NULL;
+       size_t memfile_size = 0;
+       retif(part == NULL, NULL,"invalid parameter");
+
+       notification_get_image(noti, image_type, &image);
+       if (image == NULL && image_path != NULL) {
+               image = image_path;
+       }
+
+       if (image != NULL) {
+               if (is_use_buffer == IMAGE_BY_BUFFER) {
+                       content = quickpanel_animated_icon_get(noti_box, image);
+                       if (content == NULL) {
+                               content = elm_image_add(noti_box);
+
+                               memfile = quickpanel_common_ui_get_buffer_from_image(image, &memfile_size, ext, sizeof(ext));
+                               if (memfile != NULL && memfile_size > 0) {
+                                       _attach_memfile(noti_box, image_type, memfile);
+                                       if (elm_image_memfile_set(content, memfile, memfile_size, ext,
+                                                       quickpanel_animated_image_get_groupname(image)) == EINA_FALSE) {
+                                               ERR("failed to set memfile set");
+                                               elm_image_file_set(content, image,
+                                                               quickpanel_animated_image_get_groupname(image));
+                                       }
+                               } else {
+                                       if (memfile) {
+                                               free(memfile);  // due to prevent
+                                       }
+                                       elm_image_file_set(content, image,
+                                                       quickpanel_animated_image_get_groupname(image));
+                               }
+                       }
+               } else {
+                       content = _check_duplicated_image_loading(noti_box, part, image);
+                       if (content == NULL) {
+                               content = quickpanel_animated_icon_get(noti_box, image);
+                               if (content == NULL) {
+                                       content = elm_image_add(noti_box);
+
+                                       elm_image_file_set(content, image,
+                                                       quickpanel_animated_image_get_groupname(image));
+                               }
+                       } else {
+                               return content;
+                       }
+               }
+               if (is_stretch == IMAGE_RESIZE) {
+                       elm_image_aspect_fixed_set(content, EINA_FALSE);
+                       elm_image_resizable_set(content, EINA_TRUE, EINA_TRUE);
+               } else {
+                       if (strcmp(part, BOX_PART_ICON) == 0 || strcmp(part, BOX_PART_ICON_SUB) == 0) {
+                               elm_image_resizable_set(content, EINA_FALSE, EINA_TRUE);
+                       } else {
+                               elm_image_aspect_fixed_set(content, EINA_TRUE);
+                               elm_image_fill_outside_set(content, EINA_TRUE);
+                       }
+               }
+
+               elm_object_part_content_set(noti_box, part, content);
+               elm_object_signal_emit(noti_box, "object.show", part);
+       }
+
+       return content;
+}
+
+static int _set_text(Evas_Object *noti_box, notification_h noti,
+               notification_text_type_e text_type, const char *part, char *str, int is_need_effect, int is_support_cr)
+{
+       char buf[128] = { 0, };
+
+       char *text = NULL;
+       char *text_utf8 = NULL;
+       time_t time = 0;
+
+       if (str != NULL) {
+               text = str;
+       } else if (notification_get_time_from_text(noti, text_type, &time) == NOTIFICATION_ERROR_NONE) {
+               if ((int)time > 0) {
+                       quickpanel_noti_util_get_time(time, buf, sizeof(buf));
+                       text = buf;
+               }
+       } else {
+               notification_get_text(noti, text_type, &text);
+       }
+
+       if (text != NULL) {
+               if (strlen(text) > 0) {
+
+                       if (is_support_cr == TEXT_CR) {
+                               text_utf8 = elm_entry_utf8_to_markup(text);
+                               if (text_utf8 != NULL) {
+                                       elm_object_part_text_set(noti_box, part, text_utf8);
+                                       free(text_utf8);
+                               } else {
+                                       elm_object_part_text_set(noti_box, part, text);
+                               }
+                       } else {
+                               quickpanel_common_util_char_replace(text, _NEWLINE, _SPACE);
+                               elm_object_part_text_set(noti_box, part, text);
+                       }
+
+                       if (is_need_effect == 1) {
+                               elm_object_signal_emit(noti_box, "object.show.effect", part);
+                       } else {
+                               elm_object_signal_emit(noti_box, "object.show", part);
+                       }
+               }
+
+               return strlen(text);
+       }
+
+       return 0;
+}
+
+static int _check_text_null(notification_h noti,
+               notification_text_type_e text_type)
+{
+       char *text = NULL;
+
+       notification_get_text(noti, text_type, &text);
+
+       if (text == NULL) {
+               return 1;
+       }
+
+       return 0;
+}
+
+static int _check_image_null(notification_h noti,
+               notification_image_type_e image_type)
+{
+       char *image = NULL;
+
+       notification_get_image(noti, image_type, &image);
+
+       if (image == NULL) {
+               return 1;
+       }
+
+       if (strncasecmp(image, "(null)", strlen(image)) == 0) {
+               return 1;
+       }
+
+       return 0;
+}
+
+static void _noti_box_set_layout_single(Evas_Object *noti_box,
+               notification_h noti)
+{
+       char *dir = NULL;
+       char *domain = NULL;
+       char *pkgname = NULL;
+       char *icon_path = NULL;
+       int is_need_effect = 0;
+       int is_contents_only = 0;
+       int is_sub_info_1_only = 0;
+       int is_contents_and_sub_info_2 = 0;
+       Evas_Object *icon = NULL;
+
+       if (_check_image_null(noti, NOTIFICATION_IMAGE_TYPE_BACKGROUND) == 0) {
+               is_need_effect = 1;
+       }
+
+       if (_check_text_null(noti, NOTIFICATION_TEXT_TYPE_INFO_1) == 1
+               && _check_text_null(noti, NOTIFICATION_TEXT_TYPE_INFO_SUB_1) == 1
+               && _check_text_null(noti, NOTIFICATION_TEXT_TYPE_INFO_2) == 1
+               && _check_text_null(noti, NOTIFICATION_TEXT_TYPE_INFO_SUB_2) == 1) {
+               is_contents_only = 1;
+       }
+
+       if (_check_text_null(noti, NOTIFICATION_TEXT_TYPE_INFO_1) != 1
+               && _check_text_null(noti, NOTIFICATION_TEXT_TYPE_INFO_SUB_1) == 1
+               && _check_text_null(noti, NOTIFICATION_TEXT_TYPE_INFO_2) == 1
+               && _check_text_null(noti, NOTIFICATION_TEXT_TYPE_INFO_SUB_2) == 1) {
+               is_sub_info_1_only = 1;
+       }
+
+       if (_check_text_null(noti, NOTIFICATION_TEXT_TYPE_INFO_1) == 1
+               && _check_text_null(noti, NOTIFICATION_TEXT_TYPE_INFO_SUB_1) == 1
+               && (_check_text_null(noti, NOTIFICATION_TEXT_TYPE_INFO_2) != 1
+               || _check_text_null(noti, NOTIFICATION_TEXT_TYPE_INFO_SUB_2) != 1)) {
+               is_contents_and_sub_info_2 = 1;
+       }
+
+       DBG("is_contents_only:%d is_sub_info_1_only:%d", is_contents_only, is_sub_info_1_only);
+
+       notification_get_pkgname(noti, &pkgname);
+       notification_get_text_domain(noti, &domain, &dir);
+       if (domain != NULL && dir != NULL) {
+               bindtextdomain(domain, dir);
+       }
+
+       _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_TITLE,
+                       "object.text.title", NULL, is_need_effect, TEXT_CR);
+
+       if (is_contents_only == 1) {
+               _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_CONTENT,
+                               "object.text.contents", NULL, is_need_effect, TEXT_CR);
+       } else {
+               if (is_contents_and_sub_info_2 == 1) {
+                       _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_CONTENT,
+                                       "object.text.contents", NULL, is_need_effect, TEXT_NO_CR);
+               } else {
+                       _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_CONTENT,
+                                       "object.text.contents", NULL, is_need_effect, TEXT_NO_CR);
+               }
+
+               if (is_sub_info_1_only == 1) {
+                       _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_INFO_1,
+                                                                               "object.text.info.1.multiline", NULL, is_need_effect, TEXT_CR);
+               } else {
+                       if (_check_text_null(noti, NOTIFICATION_TEXT_TYPE_INFO_1) == 0) {
+                               if (_check_text_null(noti, NOTIFICATION_TEXT_TYPE_INFO_SUB_1) == 1) {
+                                       _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_INFO_1,
+                                                       "object.text.info.1", NULL, is_need_effect, TEXT_NO_CR);
+                               } else {
+                                       _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_INFO_1,
+                                                       "object.text.info.1.short", NULL, is_need_effect, TEXT_NO_CR);
+                                       _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_INFO_SUB_1,
+                                                       "object.text.info.sub.1", NULL, is_need_effect, TEXT_NO_CR);
+                               }
+                       }
+                       _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_INFO_2,
+                                       "object.text.info.2", NULL, is_need_effect, TEXT_NO_CR);
+               }
+       }
+
+       time_t noti_time = 0.0;
+       char buf[512] = {0,};
+       notification_get_time(noti, &noti_time);
+       if (noti_time == 0.0) {
+               notification_get_insert_time(noti, &noti_time);
+       }
+       quickpanel_noti_util_get_time(noti_time, buf, 512);
+       _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_NONE,
+                       "object.text.time", buf, is_need_effect, TEXT_NO_CR);
+
+       if (_check_image_null(noti, NOTIFICATION_IMAGE_TYPE_THUMBNAIL) == 0) {
+               _set_image(noti_box, noti, NULL, NOTIFICATION_IMAGE_TYPE_ICON,
+                               "object.icon.sub", IMAGE_NO_RESIZE, IMAGE_BY_FILE);
+               icon = _set_image(noti_box, noti, NULL, NOTIFICATION_IMAGE_TYPE_THUMBNAIL,
+                               "object.icon", IMAGE_NO_RESIZE, IMAGE_BY_FILE);
+#ifdef QP_ANIMATED_IMAGE_ENABLE
+               quickpanel_animated_image_add(icon);
+#endif
+       } else {
+               icon = _set_image(noti_box, noti, NULL, NOTIFICATION_IMAGE_TYPE_ICON,
+                               "object.icon", IMAGE_NO_RESIZE, IMAGE_BY_FILE);
+#ifdef QP_ANIMATED_IMAGE_ENABLE
+               quickpanel_animated_image_add(icon);
+#endif
+               _set_image(noti_box, noti, NULL, NOTIFICATION_IMAGE_TYPE_ICON_SUB,
+                               "object.icon.sub", IMAGE_NO_RESIZE, IMAGE_BY_FILE);
+       }
+       _set_image(noti_box, noti, NULL, NOTIFICATION_IMAGE_TYPE_BACKGROUND,
+                       "object.icon.background", IMAGE_NO_RESIZE, IMAGE_BY_BUFFER);
+
+       if (_check_image_null(noti, NOTIFICATION_IMAGE_TYPE_BACKGROUND) == 1
+                       && _check_image_null(noti, NOTIFICATION_IMAGE_TYPE_ICON) == 1
+                       && _check_image_null(noti, NOTIFICATION_IMAGE_TYPE_ICON_SUB) == 1
+                       && _check_image_null(noti, NOTIFICATION_IMAGE_TYPE_THUMBNAIL) == 1) {
+
+               icon_path = quickpanel_common_ui_get_pkginfo_icon(pkgname);
+               if (icon_path != NULL) {
+                       _set_image(noti_box, NULL,
+                                       icon_path, NOTIFICATION_IMAGE_TYPE_ICON,
+                                       "object.icon", IMAGE_NO_RESIZE, IMAGE_BY_FILE);
+                       free(icon_path);
+               }
+       } else {
+               if (_check_image_null(noti, NOTIFICATION_IMAGE_TYPE_BACKGROUND) == 0) {
+                       elm_object_signal_emit(noti_box, "box.show.dim", "box.prog");
+               }
+               if (_check_image_null(noti, NOTIFICATION_IMAGE_TYPE_ICON) == 1
+                               && _check_image_null(noti, NOTIFICATION_IMAGE_TYPE_THUMBNAIL) == 1) {
+                       elm_object_signal_emit(noti_box, "box.hide.icon.bg", "box.prog");
+                       elm_object_signal_emit(noti_box, "box.title.without.icon", "box.prog");
+               }
+               if (((_check_image_null(noti, NOTIFICATION_IMAGE_TYPE_ICON) == 0
+                               ||  _check_image_null(noti, NOTIFICATION_IMAGE_TYPE_THUMBNAIL) == 0)
+                               && _check_image_null(noti, NOTIFICATION_IMAGE_TYPE_ICON_SUB) == 0)) {
+                       elm_object_signal_emit(noti_box, "box.show.sub.bg", "box.prog");
+               }
+       }
+
+#ifdef QP_SCREENREADER_ENABLE
+       _noti_box_set_rs_layout_single(noti_box, noti);
+#endif
+}
+
+static void _noti_box_set_layout_multi(Evas_Object *noti_box,
+               notification_h noti)
+{
+       char *pkgname = NULL;
+       char *icon_path = NULL;
+       char *dir = NULL;
+       char *domain = NULL;
+       int is_need_effect = 0;
+       int is_contents_only = 0;
+       int is_sub_info_1_only = 0;
+       int is_contents_and_sub_info_2 = 0;
+       Evas_Object *icon = NULL;
+
+       if (_check_image_null(noti, NOTIFICATION_IMAGE_TYPE_BACKGROUND) == 0) {
+               is_need_effect = 1;
+       }
+
+       if (_check_text_null(noti, NOTIFICATION_TEXT_TYPE_EVENT_COUNT) == 1
+           && _check_text_null(noti, NOTIFICATION_TEXT_TYPE_INFO_1) == 1
+               && _check_text_null(noti, NOTIFICATION_TEXT_TYPE_INFO_SUB_1) == 1
+               && _check_text_null(noti, NOTIFICATION_TEXT_TYPE_INFO_2) == 1
+               && _check_text_null(noti, NOTIFICATION_TEXT_TYPE_INFO_SUB_2) == 1) {
+               is_contents_only = 1;
+       }
+
+       if (_check_text_null(noti, NOTIFICATION_TEXT_TYPE_INFO_1) != 1
+               && _check_text_null(noti, NOTIFICATION_TEXT_TYPE_INFO_SUB_1) == 1
+               && _check_text_null(noti, NOTIFICATION_TEXT_TYPE_INFO_2) == 1
+               && _check_text_null(noti, NOTIFICATION_TEXT_TYPE_INFO_SUB_2) == 1) {
+               is_sub_info_1_only = 1;
+       }
+
+       if (_check_text_null(noti, NOTIFICATION_TEXT_TYPE_EVENT_COUNT) == 1
+               && _check_text_null(noti, NOTIFICATION_TEXT_TYPE_INFO_1) == 1
+               && _check_text_null(noti, NOTIFICATION_TEXT_TYPE_INFO_SUB_1) == 1
+               && (_check_text_null(noti, NOTIFICATION_TEXT_TYPE_INFO_2) != 1
+               || _check_text_null(noti, NOTIFICATION_TEXT_TYPE_INFO_SUB_2) != 1)) {
+               is_contents_and_sub_info_2 = 1;
+       }
+
+       DBG("is_sub_info_1_only:%d", is_sub_info_1_only);
+
+       notification_get_pkgname(noti, &pkgname);
+       notification_get_text_domain(noti, &domain, &dir);
+       if (domain != NULL && dir != NULL) {
+               bindtextdomain(domain, dir);
+       }
+
+       _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_TITLE,
+                       "object.text.title", NULL, is_need_effect, TEXT_CR);
+       if (_check_text_null(noti, NOTIFICATION_TEXT_TYPE_EVENT_COUNT) == 0) {
+               _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_EVENT_COUNT, "object.text.count", NULL,
+                                               is_need_effect, TEXT_NO_CR);
+               _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_CONTENT, "object.text.contents", NULL,
+                                               is_need_effect, TEXT_NO_CR);
+       } else {
+               if (is_contents_only == 1) {
+                       _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_CONTENT,
+                                       "object.text.contents", NULL, is_need_effect, TEXT_CR);
+               } else if (is_contents_and_sub_info_2 == 1) {
+                               _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_CONTENT,
+                                               "object.text.contents", NULL, is_need_effect, TEXT_NO_CR);
+               } else {
+                       _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_CONTENT,
+                                       "object.text.contents", NULL, is_need_effect, TEXT_NO_CR);
+               }
+       }
+
+       time_t noti_time = 0.0;
+       char buf[512] = {0,};
+
+       notification_get_time(noti, &noti_time);
+       if (noti_time == 0.0) {
+               notification_get_insert_time(noti, &noti_time);
+       }
+       quickpanel_noti_util_get_time(noti_time, buf, 512);
+       _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_NONE,
+                       "object.text.time", buf, is_need_effect, TEXT_NO_CR);
+
+       if (is_sub_info_1_only == 1) {
+               _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_INFO_1,
+                                                                       "object.text.info.1.multiline", NULL, is_need_effect, TEXT_CR);
+       } else {
+               if (_check_text_null(noti, NOTIFICATION_TEXT_TYPE_INFO_1) == 0) {
+                       if (_check_text_null(noti, NOTIFICATION_TEXT_TYPE_INFO_SUB_1) == 1) {
+                               _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_INFO_1,
+                                               "object.text.info.1", NULL, is_need_effect, TEXT_NO_CR);
+                       } else {
+                               _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_INFO_1,
+                                               "object.text.info.1.short", NULL, is_need_effect, TEXT_NO_CR);
+                               _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_INFO_SUB_1,
+                                               "object.text.info.sub.1", NULL, is_need_effect, TEXT_NO_CR);
+                       }
+               }
+               if (_check_text_null(noti, NOTIFICATION_TEXT_TYPE_INFO_2) == 0) {
+                       if (_check_text_null(noti, NOTIFICATION_TEXT_TYPE_INFO_SUB_2) == 1) {
+                               _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_INFO_2,
+                                               "object.text.info.2", NULL, is_need_effect, TEXT_NO_CR);
+                       } else {
+                               _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_INFO_2,
+                                               "object.text.info.2.short", NULL, is_need_effect, TEXT_NO_CR);
+                               _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_INFO_SUB_2,
+                                               "object.text.info.sub.2", NULL, is_need_effect, TEXT_NO_CR);
+                       }
+               }
+       }
+
+       if (_check_image_null(noti, NOTIFICATION_IMAGE_TYPE_THUMBNAIL) == 0) {
+               _set_image(noti_box, noti, NULL, NOTIFICATION_IMAGE_TYPE_ICON,
+                               "object.icon.sub", IMAGE_NO_RESIZE, IMAGE_BY_FILE);
+               icon = _set_image(noti_box, noti, NULL, NOTIFICATION_IMAGE_TYPE_THUMBNAIL,
+                               "object.icon", IMAGE_NO_RESIZE, IMAGE_BY_FILE);
+#ifdef QP_ANIMATED_IMAGE_ENABLE
+               quickpanel_animated_image_add(icon);
+#endif
+       } else {
+               icon = _set_image(noti_box, noti, NULL, NOTIFICATION_IMAGE_TYPE_ICON,
+                               "object.icon", IMAGE_NO_RESIZE, IMAGE_BY_FILE);
+#ifdef QP_ANIMATED_IMAGE_ENABLE
+               quickpanel_animated_image_add(icon);
+#endif
+               _set_image(noti_box, noti, NULL, NOTIFICATION_IMAGE_TYPE_ICON_SUB,
+                               "object.icon.sub", IMAGE_NO_RESIZE, IMAGE_BY_FILE);
+       }
+       _set_image(noti_box, noti, NULL, NOTIFICATION_IMAGE_TYPE_BACKGROUND,
+                       "object.icon.background", IMAGE_NO_RESIZE, IMAGE_BY_BUFFER);
+
+       if (_check_image_null(noti, NOTIFICATION_IMAGE_TYPE_BACKGROUND) == 1
+                       && _check_image_null(noti, NOTIFICATION_IMAGE_TYPE_ICON) == 1
+                       && _check_image_null(noti, NOTIFICATION_IMAGE_TYPE_ICON_SUB) == 1
+                       && _check_image_null(noti, NOTIFICATION_IMAGE_TYPE_THUMBNAIL) == 1) {
+
+               icon_path = quickpanel_common_ui_get_pkginfo_icon(pkgname);
+               if (icon_path != NULL) {
+                       _set_image(noti_box, NULL,
+                                       icon_path, NOTIFICATION_IMAGE_TYPE_ICON,
+                                       "object.icon", IMAGE_NO_RESIZE, IMAGE_BY_FILE);
+                       free(icon_path);
+               }
+       } else {
+               if (_check_image_null(noti, NOTIFICATION_IMAGE_TYPE_BACKGROUND) == 0) {
+                       elm_object_signal_emit(noti_box, "box.show.dim", "box.prog");
+               }
+               if (_check_image_null(noti, NOTIFICATION_IMAGE_TYPE_ICON) == 1
+                               && _check_image_null(noti, NOTIFICATION_IMAGE_TYPE_THUMBNAIL) == 1) {
+                       elm_object_signal_emit(noti_box, "box.hide.icon.bg", "box.prog");
+                       elm_object_signal_emit(noti_box, "box.title.without.icon", "box.prog");
+               }
+               if (((_check_image_null(noti, NOTIFICATION_IMAGE_TYPE_ICON) == 0
+                               ||  _check_image_null(noti, NOTIFICATION_IMAGE_TYPE_THUMBNAIL) == 0)
+                               && _check_image_null(noti, NOTIFICATION_IMAGE_TYPE_ICON_SUB) == 0)) {
+                       elm_object_signal_emit(noti_box, "box.show.sub.bg", "box.prog");
+               }
+       }
+
+#ifdef QP_SCREENREADER_ENABLE
+       _noti_box_set_rs_layout_multi(noti_box, noti);
+#endif
+}
+
+static void _noti_box_set_layout_thumbnail(Evas_Object *noti_box,
+               notification_h noti)
+{
+       char *pkgname = NULL;
+       char *icon_path = NULL;
+       char *dir = NULL;
+       char *domain = NULL;
+       int is_need_effect = 0;
+       int is_sub_info_1_only = 0;
+       int is_show_info = 0;
+       Evas_Object *icon = NULL;
+
+       if (_check_image_null(noti, NOTIFICATION_IMAGE_TYPE_BACKGROUND) == 0) {
+               is_need_effect = 1;
+       } else {
+               is_need_effect = 0;
+       }
+
+       if (_check_text_null(noti, NOTIFICATION_TEXT_TYPE_INFO_1) != 1
+               && _check_text_null(noti, NOTIFICATION_TEXT_TYPE_INFO_2) == 1) {
+               is_sub_info_1_only = 1;
+       }
+
+       if (_check_image_null(noti, NOTIFICATION_IMAGE_TYPE_LIST_1)!= 1
+               && _check_image_null(noti, NOTIFICATION_IMAGE_TYPE_LIST_2) == 1
+               && _check_image_null(noti, NOTIFICATION_IMAGE_TYPE_LIST_3) == 1
+               && _check_image_null(noti, NOTIFICATION_IMAGE_TYPE_LIST_4) == 1
+               && _check_image_null(noti, NOTIFICATION_IMAGE_TYPE_LIST_5) == 1) {
+               is_show_info = 1;
+       }
+
+       notification_get_pkgname(noti, &pkgname);
+       notification_get_text_domain(noti, &domain, &dir);
+       if (domain != NULL && dir != NULL) {
+               bindtextdomain(domain, dir);
+       }
+
+       _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_TITLE,
+                       "object.text.title", NULL, is_need_effect, TEXT_CR);
+       if (_check_text_null(noti, NOTIFICATION_TEXT_TYPE_EVENT_COUNT) == 0) {
+               _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_EVENT_COUNT, "object.text.count", NULL,
+                                               is_need_effect, TEXT_NO_CR);
+               _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_CONTENT, "object.text.contents", NULL,
+                                               is_need_effect, TEXT_NO_CR);
+       } else {
+               _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_CONTENT,
+                               "object.text.contents", NULL, is_need_effect, TEXT_NO_CR);
+       }
+
+       time_t noti_time = 0.0;
+       char buf[512] = {0,};
+       notification_get_time(noti, &noti_time);
+       if (noti_time == 0.0) {
+               notification_get_insert_time(noti, &noti_time);
+       }
+       quickpanel_noti_util_get_time(noti_time, buf, 512);
+       _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_NONE,
+                       "object.text.time", buf, is_need_effect, TEXT_NO_CR);
+
+       if (is_show_info == 1) {
+               if (is_sub_info_1_only == 1) {
+                       _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_INFO_1,
+                                                                               "object.text.info.1.multiline", NULL, is_need_effect, TEXT_CR);
+               } else {
+                       if (_check_text_null(noti, NOTIFICATION_TEXT_TYPE_INFO_1) == 0) {
+                               _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_INFO_1,
+                                                                               "object.text.info.1", NULL, is_need_effect, TEXT_NO_CR);
+                       }
+                       if (_check_text_null(noti, NOTIFICATION_TEXT_TYPE_INFO_2) == 0) {
+                               _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_INFO_2,
+                                                                               "object.text.info.2", NULL, is_need_effect, TEXT_NO_CR);
+                       }
+               }
+       }
+
+       if (_check_image_null(noti, NOTIFICATION_IMAGE_TYPE_THUMBNAIL) == 0) {
+               icon = _set_image(noti_box, noti, NULL, NOTIFICATION_IMAGE_TYPE_THUMBNAIL,
+                               "object.icon", IMAGE_NO_RESIZE, IMAGE_BY_FILE);
+#ifdef QP_ANIMATED_IMAGE_ENABLE
+               quickpanel_animated_image_add(icon);
+#endif
+               if (_check_image_null(noti, NOTIFICATION_IMAGE_TYPE_THUMBNAIL) == 0) {
+                       _set_image(noti_box, noti, NULL, NOTIFICATION_IMAGE_TYPE_ICON,
+                                       "object.icon.sub", IMAGE_NO_RESIZE, IMAGE_BY_FILE);
+               }
+       } else {
+               icon = _set_image(noti_box, noti, NULL, NOTIFICATION_IMAGE_TYPE_ICON,
+                               "object.icon", IMAGE_NO_RESIZE, IMAGE_BY_FILE);
+#ifdef QP_ANIMATED_IMAGE_ENABLE
+               quickpanel_animated_image_add(icon);
+#endif
+               if (_check_image_null(noti, NOTIFICATION_IMAGE_TYPE_ICON) == 0) {
+                       _set_image(noti_box, noti, NULL, NOTIFICATION_IMAGE_TYPE_ICON_SUB,
+                                       "object.icon.sub", IMAGE_NO_RESIZE, IMAGE_BY_FILE);
+               }
+       }
+       _set_image(noti_box, noti, NULL, NOTIFICATION_IMAGE_TYPE_BACKGROUND,
+                       "object.icon.background", IMAGE_NO_RESIZE, IMAGE_BY_BUFFER);
+
+       _set_image(noti_box, noti, NULL, NOTIFICATION_IMAGE_TYPE_LIST_1,
+                       "object.thumbnail.list.1", IMAGE_RESIZE, IMAGE_BY_BUFFER);
+       _set_image(noti_box, noti, NULL, NOTIFICATION_IMAGE_TYPE_LIST_2,
+                       "object.thumbnail.list.2", IMAGE_RESIZE, IMAGE_BY_BUFFER);
+       _set_image(noti_box, noti, NULL, NOTIFICATION_IMAGE_TYPE_LIST_3,
+                       "object.thumbnail.list.3", IMAGE_RESIZE, IMAGE_BY_BUFFER);
+       _set_image(noti_box, noti, NULL, NOTIFICATION_IMAGE_TYPE_LIST_4,
+                       "object.thumbnail.list.4", IMAGE_RESIZE, IMAGE_BY_BUFFER);
+       _set_image(noti_box, noti, NULL, NOTIFICATION_IMAGE_TYPE_LIST_5,
+                       "object.thumbnail.list.5", IMAGE_RESIZE, IMAGE_BY_BUFFER);
+
+       if (_check_image_null(noti, NOTIFICATION_IMAGE_TYPE_BACKGROUND) == 1
+                       && _check_image_null(noti, NOTIFICATION_IMAGE_TYPE_ICON) == 1
+                       && _check_image_null(noti, NOTIFICATION_IMAGE_TYPE_ICON_SUB) == 1
+                       && _check_image_null(noti, NOTIFICATION_IMAGE_TYPE_THUMBNAIL) == 1) {
+
+               icon_path = quickpanel_common_ui_get_pkginfo_icon(pkgname);
+               if (icon_path != NULL) {
+                       _set_image(noti_box, NULL,
+                                       icon_path, NOTIFICATION_IMAGE_TYPE_ICON,
+                                       "object.icon", IMAGE_NO_RESIZE, IMAGE_BY_FILE);
+                       free(icon_path);
+               }
+       } else {
+               if (_check_image_null(noti, NOTIFICATION_IMAGE_TYPE_BACKGROUND) == 0) {
+                       elm_object_signal_emit(noti_box, "box.show.dim", "box.prog");
+               }
+               if (_check_image_null(noti, NOTIFICATION_IMAGE_TYPE_ICON) == 1
+                               && _check_image_null(noti, NOTIFICATION_IMAGE_TYPE_THUMBNAIL) == 1) {
+                       elm_object_signal_emit(noti_box, "box.hide.icon.bg", "box.prog");
+                       elm_object_signal_emit(noti_box, "box.title.without.icon", "box.prog");
+               }
+               if (((_check_image_null(noti, NOTIFICATION_IMAGE_TYPE_ICON) == 0
+                               ||  _check_image_null(noti, NOTIFICATION_IMAGE_TYPE_THUMBNAIL) == 0)
+                               && _check_image_null(noti, NOTIFICATION_IMAGE_TYPE_ICON_SUB) == 0)) {
+                       elm_object_signal_emit(noti_box, "box.show.sub.bg", "box.prog");
+               }
+       }
+
+#ifdef QP_SCREENREADER_ENABLE
+       _noti_box_set_rs_layout_thumbnail(noti_box, noti);
+#endif
+}
+
+static void _noti_box_set_layout(Evas_Object *noti_box, notification_h noti,
+               notification_ly_type_e layout)
+{
+       DBG("notification box layout:%d", layout);
+
+       switch (layout) {
+       case NOTIFICATION_LY_NOTI_EVENT_SINGLE:
+               _noti_box_set_layout_single(noti_box, noti);
+               break;
+       case NOTIFICATION_LY_NOTI_EVENT_MULTIPLE:
+               _noti_box_set_layout_multi(noti_box, noti);
+               break;
+       case NOTIFICATION_LY_NOTI_THUMBNAIL:
+               _noti_box_set_layout_thumbnail(noti_box, noti);
+               break;
+       case NOTIFICATION_LY_NONE:
+       case NOTIFICATION_LY_ONGOING_EVENT:
+       case NOTIFICATION_LY_ONGOING_PROGRESS:
+       case NOTIFICATION_LY_MAX:
+               ERR("not supported layout type:%d", layout);
+               break;
+       }
+
+       if (elm_object_part_text_get(noti_box, "object.text.count") != NULL) {
+               elm_object_signal_emit(noti_box, "title.short", "prog");
+       } else {
+               elm_object_signal_emit(noti_box, "title.long", "prog");
+       }
+}
+
+static Evas_Object *_create(notification_h noti, Evas_Object *parent)
+{
+       Evas_Object *box = NULL;
+       retif(parent == NULL, NULL, "Invalid parameter!");
+       retif(noti == NULL, NULL, "Invalid parameter!");
+
+       notification_ly_type_e layout = NOTIFICATION_LY_NOTI_EVENT_SINGLE;
+       notification_get_layout(noti, &layout);
+
+       box = elm_layout_add(parent);
+
+       if (layout == NOTIFICATION_LY_NOTI_EVENT_SINGLE
+                       || layout == NOTIFICATION_LY_NOTI_EVENT_MULTIPLE) {
+               elm_layout_file_set(box, DEFAULT_EDJ,
+                               "quickpanel/listitem_legacy/single_multi");
+       } else if (layout == NOTIFICATION_LY_NOTI_THUMBNAIL) {
+               elm_layout_file_set(box, DEFAULT_EDJ, "quickpanel/listitem_legacy/thumbnail");
+       } else {
+               elm_layout_file_set(box, DEFAULT_EDJ,
+                               "quickpanel/listitem_legacy/single_multi");
+       }
+
+       evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(box, EVAS_HINT_FILL, EVAS_HINT_FILL);
+       quickpanel_uic_initial_resize(box, QP_THEME_LIST_ITEM_NOTIFICATION_LEGACY_SINGLE_MULTI_HEIGHT
+                                                        + QP_THEME_LIST_ITEM_SEPERATOR_HEIGHT);
+       evas_object_show(box);
+
+       Evas_Object *focus = quickpanel_accessibility_ui_get_focus_object(box);
+       elm_object_part_content_set(box, "focus", focus);
+
+       return box;
+}
+
+static void _update(noti_node_item *noti_node, notification_ly_type_e layout, Evas_Object *item)
+{
+       noti_node_item *noti_node_find = NULL;
+       retif(item == NULL, , "Invalid parameter!");
+       retif(noti_node == NULL, , "Invalid parameter!");
+
+       noti_list_item_h *handler = quickpanel_noti_list_item_handler_get(item);
+       if (handler != NULL) {
+               noti_node_find = quickpanel_noti_node_get_by_priv_id(handler->priv_id);
+
+               if (noti_node_find != NULL) {
+                       notification_ly_type_e layout = NOTIFICATION_LY_NOTI_EVENT_SINGLE;
+                       notification_get_layout(noti_node_find->noti, &layout);
+
+                       _deattach_memfile_all(item);
+                       _text_clean_all(item);
+
+                       _noti_box_set_layout(item, noti_node_find->noti, layout);
+               }
+       }
+}
+
+static void _remove(noti_node_item *node_item, notification_ly_type_e layout, Evas_Object *item)
+{
+       retif(item == NULL, , "Invalid parameter!");
+       retif(node_item == NULL, , "Invalid parameter!");
+
+       _deattach_memfile_all(item);
+}
+
+Noti_View_H noti_view_boxtype_h = {
+       .name                   = "noti_view_boxtype",
+
+       .create                 = _create,
+       .update                 = _update,
+       .remove                 = _remove,
+};
diff --git a/daemon/notifications/noti_view_listype.c b/daemon/notifications/noti_view_listype.c
new file mode 100644 (file)
index 0000000..a9dac2f
--- /dev/null
@@ -0,0 +1,362 @@
+/*
+ * 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 <string.h>
+#include <efl_assist.h>
+
+#include "quickpanel-ui.h"
+#include "common.h"
+#include "list_util.h"
+#include "quickpanel_def.h"
+#include "noti_list_item.h"
+#include "noti_node.h"
+#include "noti.h"
+#include "noti_util.h"
+#ifdef QP_SCREENREADER_ENABLE
+#include "accessibility.h"
+#endif
+#ifdef QP_ANIMATED_IMAGE_ENABLE
+#include "animated_image.h"
+#endif
+#include "animated_icon.h"
+
+#define LEN_UNIT_TEXTBLOCK 560
+#define QP_DEFAULT_ICON        RESDIR"/quickpanel_icon_default.png"
+
+#ifdef QP_SCREENREADER_ENABLE
+static inline void _check_and_add_to_buffer(Eina_Strbuf *str_buf, const char *text)
+{
+       char buf_number[QP_UTIL_PHONE_NUMBER_MAX_LEN * 2] = { 0, };
+
+       retif(str_buf == NULL, , "Invalid parameter!");
+
+       if (text != NULL) {
+               if (strlen(text) > 0) {
+                       if (quickpanel_common_util_is_phone_number(text)) {
+                               quickpanel_common_util_phone_number_tts_make(buf_number, text,
+                                               (QP_UTIL_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');
+               }
+       }
+}
+#endif
+
+static Evas_Object *_check_duplicated_image_loading(Evas_Object *obj, const char *part, const char *file_path)
+{
+       Evas_Object *old_ic = NULL;
+       const char *old_ic_path = NULL;
+
+       retif(obj == NULL, NULL, "Invalid parameter!");
+       retif(part == NULL, NULL, "Invalid parameter!");
+       retif(file_path == NULL, NULL, "Invalid parameter!");
+
+       old_ic = elm_object_part_content_get(obj, part);
+
+       if (quickpanel_animated_icon_is_same_icon(old_ic, file_path) == 1) {
+               return old_ic;
+       }
+
+       if (old_ic != NULL) {
+               elm_image_file_get(old_ic, &old_ic_path, NULL);
+               if (old_ic_path != NULL) {
+                       if (strcmp(old_ic_path, file_path) == 0)
+                               return old_ic;
+               }
+
+               elm_object_part_content_unset(obj, part);
+               evas_object_del(old_ic);
+               old_ic = NULL;
+       }
+
+       return NULL;
+}
+
+static void _set_text_to_part(Evas_Object *obj, const char *part, const char *text)
+{
+       const char *old_text = NULL;
+
+       retif(obj == NULL, , "Invalid parameter!");
+       retif(part == NULL, , "Invalid parameter!");
+       retif(text == NULL, , "Invalid parameter!");
+
+       old_text = elm_object_part_text_get(obj, part);
+       if (old_text != NULL) {
+               if (strcmp(old_text, text) == 0) {
+                       return;
+               }
+       }
+
+       elm_object_part_text_set(obj, part, text);
+}
+
+static void _set_icon(Evas_Object *item, notification_h noti)
+{
+       Evas_Object *ic = NULL;
+       Evas_Object *old_ic = NULL;
+       char *icon_path = NULL;
+       char *icon_sub_path = NULL;
+       char *thumbnail_path = NULL;
+       char *main_icon_path = NULL;
+       char *sub_icon_path = NULL;
+       char *icon_default = NULL;
+       char *pkgname = NULL;
+
+       retif(item == NULL, , "Invalid parameter!");
+       retif(noti == NULL, , "noti is NULL");
+
+       notification_get_pkgname(noti, &pkgname);
+       notification_get_image(noti, NOTIFICATION_IMAGE_TYPE_THUMBNAIL,
+                              &thumbnail_path);
+       notification_get_image(noti, NOTIFICATION_IMAGE_TYPE_ICON, &icon_path);
+       notification_get_image(noti, NOTIFICATION_IMAGE_TYPE_ICON_SUB, &icon_sub_path);
+
+       if (thumbnail_path != NULL && icon_path != NULL) {
+               main_icon_path = thumbnail_path;
+               sub_icon_path = icon_path;
+       } else if (icon_path != NULL && thumbnail_path == NULL) {
+               main_icon_path = icon_path;
+               sub_icon_path = icon_sub_path;
+       } else if (icon_path == NULL && thumbnail_path != NULL) {
+               main_icon_path = thumbnail_path;
+               sub_icon_path = icon_sub_path;
+       } else {
+               icon_default = quickpanel_common_ui_get_pkginfo_icon(pkgname);
+               main_icon_path = icon_default;
+               sub_icon_path = NULL;
+       }
+
+       if (main_icon_path != NULL) {
+               old_ic = _check_duplicated_image_loading(item,
+                               "elm.swallow.thumbnail", main_icon_path);
+
+               if (old_ic == NULL) {
+                       ic = quickpanel_animated_icon_get(item, main_icon_path);
+                       if (ic == NULL) {
+                               ic = elm_image_add(item);
+                               elm_image_resizable_set(ic, EINA_FALSE, EINA_TRUE);
+                               elm_image_file_set(ic, main_icon_path, quickpanel_animated_image_get_groupname(main_icon_path));
+#ifdef QP_ANIMATED_IMAGE_ENABLE
+                               quickpanel_animated_image_add(ic);
+#endif
+
+                               if (!strncmp(main_icon_path, QP_PRELOAD_NOTI_ICON_PATH, strlen(QP_PRELOAD_NOTI_ICON_PATH)))     {
+                                       DBG("Apply color theme [%s]", main_icon_path);
+                                       evas_object_color_set(ic, 0,0,0,255);
+                               }
+                       }
+                       elm_object_part_content_set(item, "elm.swallow.thumbnail", ic);
+               }
+       }
+
+       if (sub_icon_path != NULL) {
+               old_ic = _check_duplicated_image_loading(item,
+                               "elm.swallow.icon", sub_icon_path);
+
+               if (old_ic == NULL) {
+                       ic = elm_image_add(item);
+                       elm_image_resizable_set(ic, EINA_FALSE, EINA_TRUE);
+                       elm_image_file_set(ic, sub_icon_path, quickpanel_animated_image_get_groupname(sub_icon_path));
+                       elm_object_part_content_set(item, "elm.swallow.icon", ic);
+                       elm_object_signal_emit(item, "elm.icon.bg.show", "elm");
+               }
+       }
+
+       if (main_icon_path == NULL && sub_icon_path == NULL) {
+               old_ic = _check_duplicated_image_loading(item,
+                               "elm.swallow.thumbnail", QP_DEFAULT_ICON);
+
+               if (old_ic == NULL) {
+                       ic = elm_image_add(item);
+                       elm_image_resizable_set(ic, EINA_FALSE, EINA_TRUE);
+                       elm_image_file_set(ic, QP_DEFAULT_ICON, quickpanel_animated_image_get_groupname(QP_DEFAULT_ICON));
+                       elm_object_part_content_set(item, "elm.swallow.thumbnail", ic);
+#ifdef QP_ANIMATED_IMAGE_ENABLE
+                       quickpanel_animated_image_add(ic);
+#endif
+               }
+       }
+
+       if (icon_default != NULL) {
+               free(icon_default);
+       }
+}
+
+static void _set_text(Evas_Object *item, notification_h noti)
+{
+       int noti_err = NOTIFICATION_ERROR_NONE;
+       char *text = NULL;
+       char *domain = NULL;
+       char *dir = NULL;
+       time_t noti_time;
+       char buf[512] = {0,};
+#ifdef QP_SCREENREADER_ENABLE
+       Evas_Object *ao = NULL;
+       Eina_Strbuf *str_buf = NULL;
+#endif
+       struct appdata *ad = quickpanel_get_app_data();
+
+       retif(ad == NULL, , "Invalid parameter!");
+       retif(item == NULL, , "Invalid parameter!");
+       retif(noti == NULL, , "noti is NULL");
+
+       /* Set text domain */
+       notification_get_text_domain(noti, &domain, &dir);
+       if (domain != NULL && dir != NULL) {
+               bindtextdomain(domain, dir);
+       }
+
+#ifdef QP_SCREENREADER_ENABLE
+       ao = quickpanel_accessibility_screen_reader_object_get(item,
+                       SCREEN_READER_OBJ_TYPE_ELM_OBJECT, "focus", item);
+       if (ao != NULL) {
+               str_buf = eina_strbuf_new();
+               elm_access_info_set(ao, ELM_ACCESS_TYPE, _("IDS_QP_BUTTON_NOTIFICATION"));
+       }
+#endif
+
+       /* Get pkgname & id */
+       noti_err = notification_get_text(noti,
+                                                       NOTIFICATION_TEXT_TYPE_TITLE,
+                                                       &text);
+
+       if (noti_err == NOTIFICATION_ERROR_NONE && text != NULL) {
+               quickpanel_common_util_char_replace(text, _NEWLINE, _SPACE);
+               _set_text_to_part(item, "elm.text.title", text);
+#ifdef QP_SCREENREADER_ENABLE
+               _check_and_add_to_buffer(str_buf, text);
+#endif
+       }
+
+       noti_err = notification_get_text(noti,
+                                                       NOTIFICATION_TEXT_TYPE_EVENT_COUNT,
+                                                       &text);
+       if (noti_err == NOTIFICATION_ERROR_NONE && text != NULL) {
+               quickpanel_common_util_char_replace(text, _NEWLINE, _SPACE);
+               int count = atoi(text);
+               if (count > 999) {
+                       _set_text_to_part(item, "elm.text.count", "999+");
+               } else {
+                       _set_text_to_part(item, "elm.text.count", text);
+               }
+#ifdef QP_SCREENREADER_ENABLE
+               _check_and_add_to_buffer(str_buf, text);
+#endif
+       }
+
+       noti_err = notification_get_text(noti,
+                       NOTIFICATION_TEXT_TYPE_CONTENT,
+                                                       &text);
+       if (noti_err == NOTIFICATION_ERROR_NONE && text != NULL) {
+               quickpanel_common_util_char_replace(text, _NEWLINE, _SPACE);
+               _set_text_to_part(item, "elm.text.content", text);
+#ifdef QP_SCREENREADER_ENABLE
+               _check_and_add_to_buffer(str_buf, text);
+#endif
+       }
+
+       noti_err = notification_get_time(noti, &noti_time);
+       if (noti_time == 0.0) {
+               noti_err = notification_get_insert_time(noti, &noti_time);
+       }
+       if (noti_err == NOTIFICATION_ERROR_NONE) {
+               quickpanel_noti_util_get_time(noti_time, buf, 512);
+               _set_text_to_part(item, "elm.text.time", buf);
+#ifdef QP_SCREENREADER_ENABLE
+               _check_and_add_to_buffer(str_buf, buf);
+#endif
+       }
+
+       if (elm_object_part_text_get(item, "elm.text.count") != NULL) {
+               elm_object_signal_emit(item, "title.short", "prog");
+               elm_object_signal_emit(item, "count.show", "prog");
+       }
+       if (elm_object_part_text_get(item, "elm.text.time") != NULL) {
+               elm_object_signal_emit(item, "content.short", "prog");
+       }
+
+       const char *get_content = elm_object_part_text_get(item, "elm.text.content");
+       if (get_content == NULL || strlen(get_content) == 0) {
+               // if there is no content, move title to vertical center.
+               elm_object_signal_emit(item, "title.move.center", "prog");
+               if (elm_object_part_text_get(item, "elm.text.time") != NULL) {
+                       elm_object_signal_emit(item, "title.short.center", "prog");
+               }
+       } else {
+               elm_object_signal_emit(item, "title.move.default", "prog");
+               if (elm_object_part_text_get(item, "elm.text.count") != NULL) {
+                       elm_object_signal_emit(item, "title.short", "prog");
+               } else {
+                       elm_object_signal_emit(item, "title.text.default", "prog");
+               }
+       }
+#ifdef QP_SCREENREADER_ENABLE
+       if (ao != NULL && str_buf != NULL) {
+               elm_access_info_set(ao, ELM_ACCESS_INFO, eina_strbuf_string_get(str_buf));
+               eina_strbuf_free(str_buf);
+       }
+#endif
+}
+
+static Evas_Object *_create(notification_h noti, Evas_Object *parent)
+{
+       int view_height = 0;
+       Evas_Object *view = NULL;
+       const char *view_layout_group = NULL;
+       retif(parent == NULL, NULL, "Invalid parameter!");
+       retif(noti == NULL, NULL, "Invalid parameter!");
+
+       notification_ly_type_e layout = NOTIFICATION_LY_NOTI_EVENT_SINGLE;
+       notification_get_layout(noti, &layout);
+
+       view_layout_group = "quickpanel/listitem/notification";
+       view_height = QP_THEME_LIST_ITEM_NOTIFICATION_LISTTYPE_HEIGHT + QP_THEME_LIST_ITEM_SEPERATOR_HEIGHT;
+
+       view = elm_layout_add(parent);
+       if (view != NULL) {
+               elm_layout_file_set(view, DEFAULT_EDJ, view_layout_group);
+               evas_object_size_hint_weight_set(view, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+               evas_object_size_hint_align_set(view, EVAS_HINT_FILL, EVAS_HINT_FILL);
+               quickpanel_uic_initial_resize(view, view_height);
+               evas_object_show(view);
+       } else {
+               ERR("failed to create ongoing notification view");
+       }
+
+       return view;
+}
+
+static void _update(noti_node_item *noti_node, notification_ly_type_e layout, Evas_Object *item)
+{
+       retif(item == NULL, , "Invalid parameter!");
+       retif(noti_node == NULL, , "Invalid parameter!");
+
+       _set_icon(item, noti_node->noti);
+       _set_text(item, noti_node->noti);
+}
+
+Noti_View_H noti_view_listtype_h = {
+       .name                   = "noti_view_listtype",
+
+       .create                 = _create,
+       .update                 = _update,
+       .remove                 = NULL,
+};
diff --git a/daemon/notifications/noti_view_ongoing.c b/daemon/notifications/noti_view_ongoing.c
new file mode 100644 (file)
index 0000000..9b044e0
--- /dev/null
@@ -0,0 +1,513 @@
+/*
+ * 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 <string.h>
+#include <efl_assist.h>
+
+#include "quickpanel-ui.h"
+#include "common.h"
+#include "list_util.h"
+#include "quickpanel_def.h"
+#include "noti_list_item.h"
+#include "noti_node.h"
+#include "noti.h"
+#include "noti_util.h"
+#ifdef QP_SCREENREADER_ENABLE
+#include "accessibility.h"
+#endif
+#ifdef QP_ANIMATED_IMAGE_ENABLE
+#include "animated_image.h"
+#endif
+#include "animated_icon.h"
+
+#define LEN_UNIT_TEXTBLOCK 555
+#define QP_DEFAULT_ICON        RESDIR"/quickpanel_icon_default.png"
+
+#ifdef QP_SCREENREADER_ENABLE
+static inline void _check_and_add_to_buffer(Eina_Strbuf *str_buf, const char *text)
+{
+       char buf_number[QP_UTIL_PHONE_NUMBER_MAX_LEN * 2] = { 0, };
+
+       retif(str_buf == NULL, , "Invalid parameter!");
+
+       if (text != NULL) {
+               if (strlen(text) > 0) {
+                       if (quickpanel_common_util_is_phone_number(text)) {
+                               quickpanel_common_util_phone_number_tts_make(buf_number, text,
+                                               (QP_UTIL_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');
+               }
+       }
+}
+#endif
+
+static Evas_Object *_check_duplicated_progress_loading(Evas_Object *obj, const char *part, const char *style_name)
+{
+       Evas_Object *old_content = NULL;
+       const char *old_style_name = NULL;
+
+       retif(obj == NULL, NULL, "Invalid parameter!");
+       retif(part == NULL, NULL, "Invalid parameter!");
+       retif(style_name == NULL, NULL, "Invalid parameter!");
+
+       old_content = elm_object_part_content_get(obj, part);
+       if (old_content != NULL) {
+               old_style_name = elm_object_style_get(old_content);
+               if (old_style_name != NULL) {
+                       if (strcmp(old_style_name, style_name) == 0)
+                               return old_content;
+
+                       elm_object_part_content_unset(obj, part);
+                       evas_object_del(old_content);
+                       old_content = NULL;
+               }
+       }
+
+       return NULL;
+}
+
+static Evas_Object *_check_duplicated_image_loading(Evas_Object *obj, const char *part, const char *file_path)
+{
+       Evas_Object *old_ic = NULL;
+       const char *old_ic_path = NULL;
+
+       retif(obj == NULL, NULL, "Invalid parameter!");
+       retif(part == NULL, NULL, "Invalid parameter!");
+       retif(file_path == NULL, NULL, "Invalid parameter!");
+
+       old_ic = elm_object_part_content_get(obj, part);
+
+       if (quickpanel_animated_icon_is_same_icon(old_ic, file_path) == 1) {
+               return old_ic;
+       }
+
+       if (old_ic != NULL) {
+               elm_image_file_get(old_ic, &old_ic_path, NULL);
+               if (old_ic_path != NULL) {
+                       if (strcmp(old_ic_path, file_path) == 0)
+                               return old_ic;
+               }
+
+               elm_object_part_content_unset(obj, part);
+               evas_object_del(old_ic);
+               old_ic = NULL;
+       }
+
+       return NULL;
+}
+
+static void _set_text_to_part(Evas_Object *obj, const char *part, const char *text)
+{
+       const char *old_text = NULL;
+
+       retif(obj == NULL, , "Invalid parameter!");
+       retif(part == NULL, , "Invalid parameter!");
+       retif(text == NULL, , "Invalid parameter!");
+
+       old_text = elm_object_part_text_get(obj, part);
+       if (old_text != NULL) {
+               if (strcmp(old_text, text) == 0) {
+                       return;
+               }
+       }
+
+       elm_object_part_text_set(obj, part, text);
+}
+
+static char *_noti_get_progress(notification_h noti, char *buf, int buf_len)
+{
+       double size = 0.0;
+       double percentage = 0.0;
+
+       retif(noti == NULL, NULL, "Invalid parameter!");
+       retif(buf == NULL, NULL, "Invalid parameter!");
+
+       notification_get_size(noti, &size);
+       notification_get_progress(noti, &percentage);
+
+       if (percentage > 0) {
+               if (percentage < 1.0 ) {
+                       if (snprintf(buf, buf_len, "%d%%", (int)(percentage * 100.0 + 0.5)) <= 0) {
+                               return NULL;
+                       }
+               }
+               if (percentage >= 1.0) {
+                       snprintf(buf, buf_len, "%d%%", 100);
+               }
+
+               return buf;
+       } else if (size > 0 && percentage == 0) {
+               if (size > (1 << 30)) {
+                       if (snprintf(buf, buf_len, "%.1lfGB",
+                               size / 1000000000.0) <= 0)
+                               return NULL;
+
+                       return buf;
+               } else if (size > (1 << 20)) {
+                       if (snprintf(buf, buf_len, "%.1lfMB",
+                               size / 1000000.0) <= 0)
+                               return NULL;
+
+                       return buf;
+               } else if (size > (1 << 10)) {
+                       if (snprintf(buf, buf_len, "%.1lfKB",
+                               size / 1000.0) <= 0)
+                               return NULL;
+
+                       return buf;
+               } else {
+                       if (snprintf(buf, buf_len, "%.0lfB", size) <= 0)
+                               return NULL;
+
+                       return buf;
+               }
+       }
+
+       return NULL;
+}
+
+static void _set_progressbar(Evas_Object *item, notification_h noti)
+{
+       Evas_Object *ic = NULL;
+       Evas_Object *old_ic = NULL;
+       double size = 0.0;
+       double percentage = 0.0;
+       notification_type_e type = NOTIFICATION_TYPE_NONE;
+       notification_ly_type_e layout = NOTIFICATION_LY_NONE ;
+
+       retif(item == NULL, , "Invalid parameter!");
+       retif(noti == NULL, , "noti is NULL");
+
+       notification_get_type(noti, &type);
+       if (type == NOTIFICATION_TYPE_ONGOING) {
+               notification_get_size(noti, &size);
+               notification_get_progress(noti, &percentage);
+               notification_get_layout(noti, &layout);
+
+               if (layout != NOTIFICATION_LY_ONGOING_EVENT) {
+                       if (percentage > 0.0 && percentage <= 1.0) {
+                               old_ic = _check_duplicated_progress_loading(item,
+                                               "elm.swallow.progress", "quickpanel/list_progress");
+                               if (old_ic == NULL) {
+                                       ic = elm_progressbar_add(item);
+                                       if (ic == NULL)
+                                               return;
+                                       elm_object_style_set(ic, "list_progress");
+                               } else {
+                                       ic = old_ic;
+                               }
+
+                               elm_progressbar_value_set(ic, percentage);
+                               elm_progressbar_horizontal_set(ic, EINA_TRUE);
+                               elm_progressbar_pulse(ic, EINA_FALSE);
+                       } else if ((size >= 0.0 && percentage == 0.0) || ((size < 0.0 && percentage == 0.0)|| (size == 0.0 && percentage < 0.0))) {
+                               old_ic = _check_duplicated_progress_loading(item,
+                                               "elm.swallow.progress", "quickpanel/pending_list");
+                               if (old_ic == NULL) {
+                                       ic = elm_progressbar_add(item);
+                                       if (ic == NULL)
+                                               return;
+                                       elm_object_style_set(ic, "pending");
+                               } else {
+                                       ic = old_ic;
+                               }
+
+                               elm_progressbar_horizontal_set(ic, EINA_TRUE);
+                               elm_progressbar_pulse(ic, EINA_TRUE);
+                       }
+               }
+       }
+
+       if (ic != NULL) {
+               elm_object_part_content_set(item, "elm.swallow.progress", ic);
+       }
+}
+
+static void _set_icon(Evas_Object *item, notification_h noti)
+{
+       Evas_Object *ic = NULL;
+       Evas_Object *old_ic = NULL;
+       char *icon_path = NULL;
+       char *icon_sub_path = NULL;
+       char *thumbnail_path = NULL;
+       char *main_icon_path = NULL;
+       char *sub_icon_path = NULL;
+       char *icon_default = NULL;
+       char *pkgname = NULL;
+
+       retif(item == NULL, , "Invalid parameter!");
+       retif(noti == NULL, , "noti is NULL");
+
+       notification_get_pkgname(noti, &pkgname);
+       notification_get_image(noti, NOTIFICATION_IMAGE_TYPE_THUMBNAIL,
+                              &thumbnail_path);
+       notification_get_image(noti, NOTIFICATION_IMAGE_TYPE_ICON, &icon_path);
+       notification_get_image(noti, NOTIFICATION_IMAGE_TYPE_ICON_SUB, &icon_sub_path);
+
+       if (thumbnail_path != NULL && icon_path != NULL) {
+               main_icon_path = thumbnail_path;
+               sub_icon_path = icon_path;
+       } else if (icon_path != NULL && thumbnail_path == NULL) {
+               main_icon_path = icon_path;
+               sub_icon_path = icon_sub_path;
+       } else if (icon_path == NULL && thumbnail_path != NULL) {
+               main_icon_path = thumbnail_path;
+               sub_icon_path = icon_sub_path;
+       } else {
+               icon_default = quickpanel_common_ui_get_pkginfo_icon(pkgname);
+               main_icon_path = icon_default;
+               sub_icon_path = NULL;
+       }
+
+       if (main_icon_path != NULL) {
+               old_ic = _check_duplicated_image_loading(item,
+                               "elm.swallow.thumbnail", main_icon_path);
+
+               if (old_ic == NULL) {
+                       ic = quickpanel_animated_icon_get(item, main_icon_path);
+                       if (ic == NULL) {
+                               ic = elm_image_add(item);
+                               elm_image_resizable_set(ic, EINA_FALSE, EINA_TRUE);
+                               elm_image_file_set(ic, main_icon_path, quickpanel_animated_image_get_groupname(main_icon_path));
+#ifdef QP_ANIMATED_IMAGE_ENABLE
+                               quickpanel_animated_image_add(ic);
+#endif
+                               if (!strncmp(main_icon_path, QP_PRELOAD_NOTI_ICON_PATH, strlen(QP_PRELOAD_NOTI_ICON_PATH)))     {
+                                       DBG("Apply color theme [%s]", main_icon_path);
+                                       evas_object_color_set(ic, 0,0,0,255);
+                               }
+                       }
+                       elm_object_part_content_set(item, "elm.swallow.thumbnail", ic);
+               }
+       }
+
+       if (sub_icon_path != NULL) {
+               old_ic = _check_duplicated_image_loading(item,
+                               "elm.swallow.icon", sub_icon_path);
+
+               if (old_ic == NULL) {
+                       ic = elm_image_add(item);
+                       elm_image_resizable_set(ic, EINA_FALSE, EINA_TRUE);
+                       elm_image_file_set(ic, sub_icon_path, quickpanel_animated_image_get_groupname(sub_icon_path));
+                       elm_object_part_content_set(item, "elm.swallow.icon", ic);
+                       elm_object_signal_emit(item, "elm.icon.bg.show", "elm");
+               }
+       }
+
+       if (main_icon_path == NULL && sub_icon_path == NULL) {
+               old_ic = _check_duplicated_image_loading(item,
+                               "elm.swallow.thumbnail", QP_DEFAULT_ICON);
+
+               if (old_ic == NULL) {
+                       ic = elm_image_add(item);
+                       elm_image_resizable_set(ic, EINA_FALSE, EINA_TRUE);
+                       elm_image_file_set(ic, QP_DEFAULT_ICON, quickpanel_animated_image_get_groupname(QP_DEFAULT_ICON));
+                       elm_object_part_content_set(item, "elm.swallow.thumbnail", ic);
+#ifdef QP_ANIMATED_IMAGE_ENABLE
+                       quickpanel_animated_image_add(ic);
+#endif
+               }
+       }
+
+       if (icon_default != NULL) {
+               free(icon_default);
+       }
+}
+
+static void _set_text(Evas_Object *item, notification_h noti)
+{
+       int noti_err = NOTIFICATION_ERROR_NONE;
+       char *text = NULL;
+       char *text_utf8 = NULL;
+       char *domain = NULL;
+       char *dir = NULL;
+       char *pkgname = NULL;
+//     char *caller_pkgname = NULL;
+       int group_id = 0, priv_id = 0;
+       char buf[128] = { 0, };
+       notification_type_e type = NOTIFICATION_TYPE_NONE;
+       double size = 0.0;
+       double percentage = 0.0;
+       notification_ly_type_e layout = NOTIFICATION_LY_NONE ;
+#ifdef QP_SCREENREADER_ENABLE
+       Evas_Object *ao = NULL;
+       Eina_Strbuf *str_buf = NULL;
+#endif
+       Evas_Object *textblock = NULL;
+       int len_w = 0, num_line = 1, view_height = 0;
+       struct appdata *ad = quickpanel_get_app_data();
+
+       retif(ad == NULL, , "Invalid parameter!");
+       retif(item == NULL, , "Invalid parameter!");
+       retif(noti == NULL, , "noti is NULL");
+
+       /* Set text domain */
+       notification_get_text_domain(noti, &domain, &dir);
+       if (domain != NULL && dir != NULL)
+               bindtextdomain(domain, dir);
+
+#ifdef QP_SCREENREADER_ENABLE
+       ao = quickpanel_accessibility_screen_reader_object_get(item,
+                       SCREEN_READER_OBJ_TYPE_ELM_OBJECT, "focus", item);
+       if (ao != NULL) {
+               str_buf = eina_strbuf_new();
+               elm_access_info_set(ao, ELM_ACCESS_TYPE, _("IDS_QP_BUTTON_NOTIFICATION"));
+       }
+#endif
+
+       /* Get pkgname & id */
+       notification_get_pkgname(noti, &pkgname);
+//     notification_get_application(noti, &caller_pkgname);
+       notification_get_id(noti, &group_id, &priv_id);
+       notification_get_type(noti, &type);
+       notification_get_size(noti, &size);
+       notification_get_progress(noti, &percentage);
+       notification_get_layout(noti, &layout);
+
+       SDBG("percentage:%f size:%f", percentage, size);
+
+       noti_err = notification_get_text(noti,
+                                                       NOTIFICATION_TEXT_TYPE_TITLE,
+                                                       &text);
+
+       if (noti_err == NOTIFICATION_ERROR_NONE && text != NULL) {
+               quickpanel_common_util_char_replace(text, _NEWLINE, _SPACE);
+               _set_text_to_part(item, "elm.text.title", text);
+#ifdef QP_SCREENREADER_ENABLE
+               _check_and_add_to_buffer(str_buf, text);
+#endif
+       }
+
+       noti_err = notification_get_text(noti, NOTIFICATION_TEXT_TYPE_CONTENT, &text);
+       if (noti_err == NOTIFICATION_ERROR_NONE && text != NULL) {
+               if (layout == NOTIFICATION_LY_ONGOING_EVENT) {
+                       text_utf8 = elm_entry_utf8_to_markup(text);
+                       if (text_utf8 != NULL) {
+                               _set_text_to_part(item, "elm.text.content", text_utf8);
+                               free(text_utf8);
+                       } else {
+                               _set_text_to_part(item, "elm.text.content", text);
+                       }
+                       textblock = (Evas_Object *)edje_object_part_object_get(_EDJ(item), "elm.text.content");
+                       evas_object_textblock_size_native_get(textblock, &len_w, NULL);
+                       num_line = len_w / (LEN_UNIT_TEXTBLOCK * ad->scale);
+                       num_line = (len_w - (num_line * (LEN_UNIT_TEXTBLOCK * ad->scale))) > 0 ? num_line + 1 : num_line;
+                       if (num_line <= 1) {
+                               elm_object_signal_emit(item, "line1.set", "prog");
+                               view_height = QP_THEME_LIST_ITEM_ONGOING_EVENT_HEIGHT + QP_THEME_LIST_ITEM_SEPERATOR_HEIGHT;
+                       } else /*if (num_line >= 2 && num_line < 3)*/ {
+                               elm_object_signal_emit(item, "line2.set", "prog");
+                               view_height = QP_THEME_LIST_ITEM_ONGOING_EVENT_HEIGHT + QP_THEME_LIST_ITEM_SEPERATOR_HEIGHT;
+                       } /*else {
+                               elm_object_signal_emit(item, "line3.set", "prog");
+                               view_height = QP_THEME_LIST_ITEM_ONGOING_EVENT_LINE3_HEIGHT + QP_THEME_LIST_ITEM_SEPERATOR_HEIGHT;
+                       }*/
+                       quickpanel_uic_initial_resize(item, view_height);
+#ifdef QP_SCREENREADER_ENABLE
+                       _check_and_add_to_buffer(str_buf, text);
+#endif
+               } else {
+                       quickpanel_common_util_char_replace(text, _NEWLINE, _SPACE);
+                       _set_text_to_part(item, "elm.text.content", text);
+#ifdef QP_SCREENREADER_ENABLE
+                       _check_and_add_to_buffer(str_buf, text);
+#endif
+               }
+       }
+
+       if (layout != NOTIFICATION_LY_ONGOING_EVENT) {
+               text = _noti_get_progress(noti, buf,  sizeof(buf));
+               if (text != NULL) {
+                       quickpanel_common_util_char_replace(text, _NEWLINE, _SPACE);
+                       _set_text_to_part(item, "elm.text.time", text);
+#ifdef QP_SCREENREADER_ENABLE
+                       _check_and_add_to_buffer(str_buf, text);
+#endif
+               } else {
+                       _set_text_to_part(item, "elm.text.time", "");
+               }
+       } else {
+               const char *get_content = elm_object_part_text_get(item, "elm.text.content");
+               if (get_content == NULL || strlen(get_content) == 0) {
+                       // if there is no content, move title to vertical center.
+                       elm_object_signal_emit(item, "title.move.center", "prog");
+               }
+       }
+
+#ifdef QP_SCREENREADER_ENABLE
+       if (ao != NULL && str_buf != NULL) {
+               elm_access_info_set(ao, ELM_ACCESS_INFO, eina_strbuf_string_get(str_buf));
+               eina_strbuf_free(str_buf);
+       }
+#endif
+}
+
+static Evas_Object *_create(notification_h noti, Evas_Object *parent)
+{
+       int view_height = 0;
+       Evas_Object *view = NULL;
+       const char *view_layout_group = NULL;
+       retif(parent == NULL, NULL, "Invalid parameter!");
+       retif(noti == NULL, NULL, "Invalid parameter!");
+
+       notification_ly_type_e layout = NOTIFICATION_LY_NOTI_EVENT_SINGLE;
+       notification_get_layout(noti, &layout);
+
+       if (layout == NOTIFICATION_LY_ONGOING_EVENT) {
+               view_layout_group = "quickpanel/listitem/event";
+               view_height = QP_THEME_LIST_ITEM_ONGOING_EVENT_HEIGHT + QP_THEME_LIST_ITEM_SEPERATOR_HEIGHT;
+       } else if (layout == NOTIFICATION_LY_ONGOING_PROGRESS) {
+               view_layout_group = "quickpanel/listitem/progress";
+               view_height = QP_THEME_LIST_ITEM_ONGOING_PROGRESS_HEIGHT + QP_THEME_LIST_ITEM_SEPERATOR_HEIGHT;
+       }
+
+       view = elm_layout_add(parent);
+       if (view != NULL) {
+               elm_layout_file_set(view, DEFAULT_EDJ, view_layout_group);
+               evas_object_size_hint_weight_set(view, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+               evas_object_size_hint_align_set(view, EVAS_HINT_FILL, EVAS_HINT_FILL);
+               quickpanel_uic_initial_resize(view, view_height);
+               evas_object_show(view);
+       } else {
+               ERR("failed to create ongoing notification view");
+       }
+
+       return view;
+}
+
+static void _update(noti_node_item *noti_node, notification_ly_type_e layout, Evas_Object *item)
+{
+       retif(item == NULL, , "Invalid parameter!");
+       retif(noti_node == NULL, , "Invalid parameter!");
+
+       _set_progressbar(item, noti_node->noti);
+       _set_icon(item, noti_node->noti);
+       _set_text(item, noti_node->noti);
+}
+
+Noti_View_H ongoing_noti_view_h = {
+       .name                   = "ongoing_noti_view",
+
+       .create                 = _create,
+       .update                 = _update,
+       .remove                 = NULL,
+};
index f50075a..66c0a81 100755 (executable)
@@ -1,23 +1,29 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ * Copyright (c) 2009-2015 Samsung Electronics Co., Ltd All Rights Reserved
  *
- * Licensed under the Flora License, Version 1.1 (the License);
+ * 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,
+ * 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>
+#ifdef HAVE_X
 #include <utilX.h>
+#endif
+#include <efl_util.h>
+
+#define NOTI_HEIGHT 200
+#define NOTI_BTN_HEIGHT 80
 
-#define NOTI_HEIGHT 50
 #ifndef __UNUSED__
 #define __UNUSED__ __attribute__((unused))
 #endif
@@ -30,6 +36,7 @@ rotation handling are implemented for X based platform
 #endif
 #include "common.h"
 #include "noti_win.h"
+#include "dbus_utility.h"
 
 struct Internal_Data {
        Evas_Object *content;
@@ -42,49 +49,28 @@ struct Internal_Data {
 
 static const char *data_key = "_data";
 
-static void _set_win_type_notification_level(Evas_Object *win)
-{
-       retif(win == NULL, , "invalid parameter");
-
-       Ecore_X_Window w = elm_win_xwindow_get(win);
-
-       if (w > 0) {
-               ecore_x_icccm_hints_set(w, 0, ECORE_X_WINDOW_STATE_HINT_NONE, 0, 0,
-                       0, 0, 0);
-               ecore_x_netwm_opacity_set(w, 0);
-
-               ecore_x_netwm_window_type_set(w,
-                               ECORE_X_WINDOW_TYPE_NOTIFICATION);
-               utilx_set_system_notification_level(ecore_x_display_get(), w,
-                               UTILX_NOTIFICATION_LEVEL_HIGH);
-       }
-}
-
 static void _show(void *data __UNUSED__, Evas *e __UNUSED__, Evas_Object *obj,
        void *event_info __UNUSED__)
 {
        struct Internal_Data *wd = evas_object_data_get(obj, data_key);
 
-       if (!wd)
+       if (!wd) {
                return;
-       if (wd->content)
+       }
+       if (wd->content) {
                evas_object_show(wd->content);
-}
-
-static void _content_hide(void *data, Evas *e __UNUSED__,
-       Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
-{
-       evas_object_hide(data);
+       }
 }
 
 static void _content_changed_size_hints(void *data, Evas *e __UNUSED__,
        Evas_Object *obj, void *event_info __UNUSED__)
 {
-       Evas_Coord h;
+       Evas_Coord h = 0;
        struct Internal_Data *wd = evas_object_data_get(data, data_key);
 
-       if (!wd)
+       if (!wd) {
                return;
+       }
 
        evas_object_size_hint_min_get(obj, NULL, &h);
        if ((h > 0)) {
@@ -100,11 +86,10 @@ static void _sub_del(void *data __UNUSED__, Evas_Object *obj, void *event_info)
        struct Internal_Data *wd = evas_object_data_get(obj, data_key);
        Evas_Object *sub = event_info;
 
-       if (!wd)
+       if (!wd) {
                return;
+       }
        if (sub == wd->content) {
-               evas_object_event_callback_del(wd->content, EVAS_CALLBACK_HIDE,
-                       _content_hide);
                evas_object_event_callback_del(wd->content,
                        EVAS_CALLBACK_CHANGED_SIZE_HINTS,
                        _content_changed_size_hints);
@@ -112,17 +97,27 @@ static void _sub_del(void *data __UNUSED__, Evas_Object *obj, void *event_info)
        }
 }
 
+static void _resized(void *data __UNUSED__, Evas *e __UNUSED__, Evas_Object *obj,
+       void *event_info __UNUSED__)
+{
+       evas_object_show(obj);
+}
+
 static void _del(void *data __UNUSED__, Evas *e __UNUSED__, Evas_Object *obj,
        void *event_info __UNUSED__)
 {
+
        struct Internal_Data *wd = evas_object_data_get(obj, data_key);
 
-       if (!wd)
-               return;
-       if (wd->rotation_event_handler)
-               ecore_event_handler_del(wd->rotation_event_handler);
+       if (wd) {
+               if (wd->rotation_event_handler) {
+                       ecore_event_handler_del(wd->rotation_event_handler);
+               }
+               free(wd);
+       }
+
        evas_object_data_set(data, data_key, NULL);
-       free(wd);
+
 }
 
 #ifdef HAVE_X
@@ -132,37 +127,41 @@ static void _update_geometry_on_rotation(Evas_Object *obj, int angle,
        Evas_Coord root_w, root_h;
        struct Internal_Data *wd = evas_object_data_get(obj, data_key);
 
-       if (!wd)
+       if (!wd) {
                return;
+       }
 
-       ecore_x_window_size_get(ecore_x_window_root_first_get(), &root_w,
-               &root_h);
+       ecore_x_window_size_get(ecore_x_window_root_first_get(), &root_w, &root_h);
 
-       /* rotate window */
        switch (angle) {
        case 90:
                *w = root_h;
-               if (wd->orient == NOTI_ORIENT_BOTTOM)
+               if (wd->orient == NOTI_ORIENT_BOTTOM) {
                        *x = root_w - wd->h;
+               }
                break;
        case 270:
                *w = root_h;
-               if (!(wd->orient == NOTI_ORIENT_BOTTOM))
+               if (!(wd->orient == NOTI_ORIENT_BOTTOM)) {
                        *x = root_w - wd->h;
+               }
                break;
        case 180:
                *w = root_w;
-               if (!wd->orient == NOTI_ORIENT_BOTTOM)
+               if (!wd->orient == NOTI_ORIENT_BOTTOM) {
                        *y = root_h - wd->h;
+               }
                break;
        case 0:
        default:
                *w = root_w;
-               if (wd->orient == NOTI_ORIENT_BOTTOM)
+               if (wd->orient == NOTI_ORIENT_BOTTOM) {
                        *y = root_h - wd->h;
+               }
                break;
        }
 }
+#endif
 
 static void _win_rotated(Evas_Object *obj)
 {
@@ -172,141 +171,152 @@ static void _win_rotated(Evas_Object *obj)
        int angle = 0;
        struct Internal_Data *wd =  evas_object_data_get(obj, data_key);
 
-       if (!wd)
+       if (!wd) {
                return;
+       }
        angle = elm_win_rotation_get(obj);
-       if (angle % 90)
+       if (angle % 90) {
                return;
+       }
        angle %= 360;
        if (angle < 0)
                angle += 360;
        wd->angle = angle;
 
+#ifdef HAVE_X
        _update_geometry_on_rotation(obj, wd->angle, &x, &y, &w);
+#endif
 
        evas_object_move(obj, x, y);
        wd->w = w;
        evas_object_resize(obj, wd->w, wd->h);
 }
 
-static Eina_Bool _prop_change(void *data, int type __UNUSED__, void *event)
+static void _ui_rotation_wm_cb(void *data, Evas_Object *obj, void *event)
 {
-       Ecore_X_Event_Window_Property *ev;
-       struct Internal_Data *wd = evas_object_data_get(data, data_key);
+       int angle = 0;
+       angle = elm_win_rotation_get((Evas_Object *)obj);
+
+       DBG("ACTIVENOTI ROTATE:%d", angle);
 
-       if (!wd)
-               return ECORE_CALLBACK_PASS_ON;
-       ev = event;
-       if (ev->atom == ECORE_X_ATOM_E_ILLUME_ROTATE_WINDOW_ANGLE)
-               if (ev->win == elm_win_xwindow_get(data))
-                       _win_rotated(data);
-       return ECORE_CALLBACK_PASS_ON;
+       _win_rotated(obj);
 }
-#endif
 
-HAPI Evas_Object *noti_win_add(Evas_Object *parent)
+HAPI Evas_Object *quickpanel_noti_win_add(Evas_Object *parent)
 {
        Evas_Object *win;
        Evas_Object *bg;
        struct Internal_Data *wd;
-       Evas_Coord w = 0;
+       Evas_Coord w = 0, h = 0;
 
        win = elm_win_add(parent, "noti_win", ELM_WIN_NOTIFICATION);
-       elm_win_alpha_set(win, EINA_TRUE);
-
-       if (!win)
+       if (!win) {
                return NULL;
+       }
+
+       elm_win_indicator_mode_set(win, ELM_WIN_INDICATOR_SHOW);
+       elm_win_alpha_set(win, EINA_FALSE);
+#ifdef HAVE_X
+       elm_win_indicator_type_set(win,ELM_WIN_INDICATOR_TYPE_1);
+#endif
        elm_win_title_set(win, "noti_win");
        elm_win_borderless_set(win, EINA_TRUE);
        elm_win_autodel_set(win, EINA_TRUE);
-       evas_object_size_hint_weight_set(win, EVAS_HINT_EXPAND,
-               EVAS_HINT_EXPAND);
+       evas_object_size_hint_weight_set(win, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
        evas_object_size_hint_align_set(win, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+#ifdef HAVE_X
+       efl_util_set_notification_window_level(win, EFL_UTIL_NOTIFICATION_LEVEL_DEFAULT); 
+       elm_win_aux_hint_add(win, "wm.policy.win.user.geometry", "1");
+#endif
+       elm_win_prop_focus_skip_set(win, EINA_TRUE);
+
        bg = elm_bg_add(win);
-       evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND,
-               EVAS_HINT_EXPAND);
+       evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
        elm_win_resize_object_add(win, bg);
 
-       _set_win_type_notification_level(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", _ui_rotation_wm_cb, NULL);
 
        wd = (struct Internal_Data *) calloc(1, sizeof(struct Internal_Data));
-       if (!wd)
+       if (!wd) {
+               if (win) {
+                       evas_object_del(win);
+               }
                return NULL;
+       }
        evas_object_data_set(win, data_key, wd);
        wd->angle = 0;
        wd->orient = NOTI_ORIENT_TOP;
        evas_object_move(win, 0, 0);
-#ifdef HAVE_X
-       ecore_x_window_size_get(ecore_x_window_root_first_get(), &w, NULL);
-       evas_object_resize(win, w, NOTI_HEIGHT);
-       wd->rotation_event_handler = ecore_event_handler_add(
-               ECORE_X_EVENT_WINDOW_PROPERTY, _prop_change, win);
-#endif
+       elm_win_screen_size_get(win, NULL, NULL, &w, &h);
+
        wd->w = w;
        wd->h = NOTI_HEIGHT;
-       evas_object_smart_callback_add(win, "sub-object-del", _sub_del, NULL);
+
+       evas_object_resize(win, w, wd->h);
        evas_object_event_callback_add(win, EVAS_CALLBACK_SHOW, _show, NULL);
        evas_object_event_callback_add(win, EVAS_CALLBACK_DEL, _del, NULL);
+       evas_object_event_callback_add(win, EVAS_CALLBACK_RESIZE, _resized, NULL);
+
        return win;
 }
 
-HAPI void noti_win_content_set(Evas_Object *obj, Evas_Object *content)
+HAPI void quickpanel_noti_win_content_set(Evas_Object *obj, Evas_Object *content, int btn_cnt)
 {
        Evas_Coord h;
        struct Internal_Data *wd;
 
-       if (!obj)
+       if (!obj) {
                return;
+       }
        wd = evas_object_data_get(obj, data_key);
-       if (!wd)
+       if (!wd) {
                return;
-       if (wd->content)
+       }
+       if (wd->content && content != NULL) {
                evas_object_del(content);
+               content = NULL;
+       }
        wd->content = content;
+
+       if (btn_cnt > 0) {
+               wd->h += NOTI_BTN_HEIGHT;
+       }
        if (content) {
-               evas_object_size_hint_weight_set(wd->content, EVAS_HINT_EXPAND,
-                       EVAS_HINT_EXPAND);
+               evas_object_size_hint_weight_set(wd->content, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
                elm_win_resize_object_add(obj, wd->content);
-               evas_object_size_hint_min_get(wd->content, NULL, &h);
-               if (h)
-                       wd->h = h;
                evas_object_size_hint_min_set(wd->content, wd->w, wd->h);
                evas_object_resize(obj, wd->w, wd->h);
-               evas_object_event_callback_add(wd->content, EVAS_CALLBACK_HIDE,
-                               _content_hide, obj);
-               evas_object_event_callback_add(wd->content,
-                               EVAS_CALLBACK_CHANGED_SIZE_HINTS,
-                               _content_changed_size_hints, obj);
+               evas_object_event_callback_add(wd->content,     EVAS_CALLBACK_CHANGED_SIZE_HINTS, _content_changed_size_hints, obj);
        }
 }
 
-HAPI void noti_win_orient_set(Evas_Object *obj, enum Noti_Orient orient)
+HAPI void quickpanel_noti_win_orient_set(Evas_Object *obj, enum Noti_Orient orient)
 {
-#ifdef HAVE_X
        Evas_Coord root_w, root_h;
-#endif
        struct Internal_Data *wd = evas_object_data_get(obj, data_key);
 
-       if (!wd)
+       if (!wd) {
                return;
-       if (orient >= NOTI_ORIENT_LAST)
+       }
+       if (orient >= NOTI_ORIENT_LAST) {
                return;
+       }
 #ifdef HAVE_X
-       ecore_x_window_size_get(ecore_x_window_root_first_get(), &root_w,
-               &root_h);
+       ecore_x_window_size_get(ecore_x_window_root_first_get(), &root_w, &root_h);
 #endif
        switch (orient) {
        case NOTI_ORIENT_BOTTOM:
-#ifdef HAVE_X
                evas_object_move(obj, 0, root_h - wd->h);
-#endif
                wd->orient = NOTI_ORIENT_BOTTOM;
                break;
        case NOTI_ORIENT_TOP:
        default:
-#ifdef HAVE_X
                evas_object_move(obj, 0, 0);
-#endif
                wd->orient = NOTI_ORIENT_TOP;
                break;
        }
index b8345d3..c7dd25b 100755 (executable)
@@ -1,19 +1,21 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ * Copyright (c) 2009-2015 Samsung Electronics Co., Ltd All Rights Reserved
  *
- * Licensed under the Flora License, Version 1.1 (the "License");
+ * 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 __NOTI_WIN_H__
 #define __NOTI_WIN_H__
 #include <Evas.h>
@@ -27,15 +29,15 @@ enum Noti_Orient {
 /* Creates and return a new window (of widget type elm_win) of width equal to
 root window
 */
-Evas_Object *noti_win_add(Evas_Object *parent);
+Evas_Object *quickpanel_noti_win_add(Evas_Object *parent);
 
 /* Sets an Evas Object as content of the notification window created using
 noti_win_add
 */
-void noti_win_content_set(Evas_Object *obj, Evas_Object *content);
+void quickpanel_noti_win_content_set(Evas_Object *obj, Evas_Object *content, int btn_cnt);
 
 /* Sets the orientation of the notification window, this can be of type
 Noti_Orient
 */
-void noti_win_orient_set(Evas_Object *obj, enum Noti_Orient orient);
+void quickpanel_noti_win_orient_set(Evas_Object *obj, enum Noti_Orient orient);
 #endif
diff --git a/daemon/notifications/noti_win_x11.c b/daemon/notifications/noti_win_x11.c
new file mode 100644 (file)
index 0000000..9d57415
--- /dev/null
@@ -0,0 +1,307 @@
+/*
+ * 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 <utilX.h>
+#include <efl_util.h>
+
+#define NOTI_HEIGHT 200
+#define NOTI_BTN_HEIGHT 80
+
+#ifndef __UNUSED__
+#define __UNUSED__ __attribute__((unused))
+#endif
+/* Using this macro to emphasize that some portion like stacking and
+rotation handling are implemented for X based platform
+*/
+
+#include <Ecore_X.h>
+#include "common.h"
+#include "noti_win.h"
+#include "dbus_utility.h"
+
+struct Internal_Data {
+       Evas_Object *content;
+       Ecore_Event_Handler *rotation_event_handler;
+       Evas_Coord w;
+       Evas_Coord h;
+       int angle;
+       enum Noti_Orient orient;
+};
+
+static const char *data_key = "_data";
+
+static void _show(void *data __UNUSED__, Evas *e __UNUSED__, Evas_Object *obj,
+       void *event_info __UNUSED__)
+{
+       struct Internal_Data *wd = evas_object_data_get(obj, data_key);
+
+       if (!wd) {
+               return;
+       }
+       if (wd->content) {
+               evas_object_show(wd->content);
+       }
+}
+
+static void _content_changed_size_hints(void *data, Evas *e __UNUSED__,
+       Evas_Object *obj, void *event_info __UNUSED__)
+{
+       Evas_Coord h = 0;
+       struct Internal_Data *wd = evas_object_data_get(data, data_key);
+
+       if (!wd) {
+               return;
+       }
+
+       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);
+               evas_object_resize(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, data_key);
+       Evas_Object *sub = event_info;
+
+       if (!wd) {
+               return;
+       }
+       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 _resized(void *data __UNUSED__, Evas *e __UNUSED__, Evas_Object *obj,
+       void *event_info __UNUSED__)
+{
+       evas_object_show(obj);
+}
+
+static void _del(void *data __UNUSED__, Evas *e __UNUSED__, Evas_Object *obj,
+       void *event_info __UNUSED__)
+{
+
+       struct Internal_Data *wd = evas_object_data_get(obj, data_key);
+
+       if (wd) {
+               if (wd->rotation_event_handler) {
+                       ecore_event_handler_del(wd->rotation_event_handler);
+               }
+               free(wd);
+       }
+
+       evas_object_data_set(data, data_key, NULL);
+}
+
+static void _update_geometry_on_rotation(Evas_Object *obj, int angle,
+               int *x, int *y, int *w)
+{
+       Evas_Coord root_w, root_h;
+       struct Internal_Data *wd = evas_object_data_get(obj, data_key);
+
+       if (!wd) {
+               return;
+       }
+
+       ecore_x_window_size_get(ecore_x_window_root_first_get(), &root_w, &root_h);
+
+       switch (angle) {
+       case 90:
+               *w = root_h;
+               if (wd->orient == NOTI_ORIENT_BOTTOM) {
+                       *x = root_w - wd->h;
+               }
+               break;
+       case 270:
+               *w = root_h;
+               if (!(wd->orient == NOTI_ORIENT_BOTTOM)) {
+                       *x = root_w - wd->h;
+               }
+               break;
+       case 180:
+               *w = root_w;
+               if (!wd->orient == NOTI_ORIENT_BOTTOM) {
+                       *y = root_h - wd->h;
+               }
+               break;
+       case 0:
+       default:
+               *w = root_w;
+               if (wd->orient == NOTI_ORIENT_BOTTOM) {
+                       *y = root_h - wd->h;
+               }
+               break;
+       }
+}
+static void _win_rotated(Evas_Object *obj)
+{
+       int x = 0;
+       int y = 0;
+       int w = 0;
+       int angle = 0;
+       struct Internal_Data *wd =  evas_object_data_get(obj, data_key);
+
+       if (!wd) {
+               return;
+       }
+       angle = elm_win_rotation_get(obj);
+       if (angle % 90) {
+               return;
+       }
+       angle %= 360;
+       if (angle < 0)
+               angle += 360;
+       wd->angle = angle;
+
+       _update_geometry_on_rotation(obj, wd->angle, &x, &y, &w);
+
+       evas_object_move(obj, x, y);
+       wd->w = w;
+       evas_object_resize(obj, wd->w, wd->h);
+}
+
+static void _ui_rotation_wm_cb(void *data, Evas_Object *obj, void *event)
+{
+       int angle = 0;
+       angle = elm_win_rotation_get((Evas_Object *)obj);
+
+       DBG("ACTIVENOTI ROTATE:%d", angle);
+
+       _win_rotated(obj);
+}
+
+HAPI Evas_Object *quickpanel_noti_win_add(Evas_Object *parent)
+{
+       Evas_Object *win;
+       Evas_Object *bg;
+       struct Internal_Data *wd;
+       Evas_Coord w = 0, h = 0;
+
+       win = elm_win_add(parent, "noti_win", ELM_WIN_NOTIFICATION);
+       if (!win) {
+               return NULL;
+       }
+
+       elm_win_indicator_mode_set(win, ELM_WIN_INDICATOR_SHOW);
+       elm_win_alpha_set(win, EINA_FALSE);
+       elm_win_indicator_type_set(win,ELM_WIN_INDICATOR_TYPE_1);
+       elm_win_title_set(win, "noti_win");
+       elm_win_borderless_set(win, EINA_TRUE);
+       elm_win_autodel_set(win, EINA_TRUE);
+       evas_object_size_hint_weight_set(win, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(win, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+       efl_util_set_notification_window_level(win, EFL_UTIL_NOTIFICATION_LEVEL_DEFAULT); 
+       elm_win_aux_hint_add(win, "wm.policy.win.user.geometry", "1");
+       elm_win_prop_focus_skip_set(win, EINA_TRUE);
+
+       bg = elm_bg_add(win);
+       evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       elm_win_resize_object_add(win, bg);
+
+       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", _ui_rotation_wm_cb, NULL);
+
+       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, data_key, wd);
+       wd->angle = 0;
+       wd->orient = NOTI_ORIENT_TOP;
+       evas_object_move(win, 0, 0);
+       elm_win_screen_size_get(win, NULL, NULL, &w, &h);
+
+       wd->w = w;
+       wd->h = NOTI_HEIGHT;
+
+       evas_object_resize(win, w, wd->h);
+       evas_object_event_callback_add(win, EVAS_CALLBACK_SHOW, _show, NULL);
+       evas_object_event_callback_add(win, EVAS_CALLBACK_DEL, _del, NULL);
+       evas_object_event_callback_add(win, EVAS_CALLBACK_RESIZE, _resized, NULL);
+
+       return win;
+}
+
+HAPI void quickpanel_noti_win_content_set(Evas_Object *obj, Evas_Object *content, int btn_cnt)
+{
+       Evas_Coord h;
+       struct Internal_Data *wd;
+
+       if (!obj) {
+               return;
+       }
+       wd = evas_object_data_get(obj, data_key);
+       if (!wd) {
+               return;
+       }
+       if (wd->content && content != NULL) {
+               evas_object_del(content);
+               content = NULL;
+       }
+       wd->content = content;
+
+       if (btn_cnt > 0) {
+               wd->h += NOTI_BTN_HEIGHT;
+       }
+       if (content) {
+               evas_object_size_hint_weight_set(wd->content, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+               elm_win_resize_object_add(obj, wd->content);
+               evas_object_size_hint_min_set(wd->content, wd->w, wd->h);
+               evas_object_resize(obj, wd->w, wd->h);
+               evas_object_event_callback_add(wd->content,     EVAS_CALLBACK_CHANGED_SIZE_HINTS, _content_changed_size_hints, obj);
+       }
+}
+
+HAPI void quickpanel_noti_win_orient_set(Evas_Object *obj, enum Noti_Orient orient)
+{
+       Evas_Coord root_w, root_h;
+       struct Internal_Data *wd = evas_object_data_get(obj, data_key);
+
+       if (!wd) {
+               return;
+       }
+       if (orient >= NOTI_ORIENT_LAST) {
+               return;
+       }
+       ecore_x_window_size_get(ecore_x_window_root_first_get(), &root_w, &root_h);
+       switch (orient) {
+       case NOTI_ORIENT_BOTTOM:
+               evas_object_move(obj, 0, root_h - wd->h);
+               wd->orient = NOTI_ORIENT_BOTTOM;
+               break;
+       case NOTI_ORIENT_TOP:
+       default:
+               evas_object_move(obj, 0, 0);
+               wd->orient = NOTI_ORIENT_TOP;
+               break;
+       }
+}
diff --git a/daemon/notifications/status_msg.c b/daemon/notifications/status_msg.c
deleted file mode 100755 (executable)
index ee6f8a6..0000000
+++ /dev/null
@@ -1,315 +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 <Elementary.h>
-#include <Ecore_X.h>
-#include <vconf.h>
-#include <notification.h>
-
-#include "quickpanel-ui.h"
-#include "common.h"
-#include "noti_win.h"
-
-#define QP_STATUS_DURATION     3
-#define QP_STATUS_DETAIL_DURATION 6
-
-#define STATUS_MSG_LEN                         1024
-#define DEFAULT_ICON ICONDIR           "/quickpanel_icon_default.png"
-
-#define E_DATA_STATUS_DETAIL "detail"
-
-static Evas_Object *g_status_win;
-static Ecore_Timer *g_status_timer;
-static int g_noti_height;
-
-static int quickpanel_status_init(void *data);
-static int quickpanel_status_fini(void *data);
-static void quickpanel_status_reflesh(void *data);
-
-QP_Module ticker_status = {
-       .name = "ticker_status",
-       .init = quickpanel_status_init,
-       .fini = quickpanel_status_fini,
-       .hib_enter = NULL,
-       .hib_leave = NULL,
-       .lang_changed = NULL,
-       .refresh = quickpanel_status_reflesh
-};
-
-/*****************************************************************************
- *
- * (Static) Util functions
- *
- *****************************************************************************/
-static void _quickpanel_status_hide(void *data)
-{
-       if (g_status_win) {
-               evas_object_hide(g_status_win);
-               evas_object_del(g_status_win);
-               g_status_win = NULL;
-       }
-}
-
-static void _quickpanel_status_set_text(Evas_Object *detail, const char *message) {
-       retif(detail == NULL, , "Invalid parameter!");
-       retif(message == NULL, , "Invalid parameter!");
-
-       elm_object_part_text_set(detail, "elm.text", message);
-}
-
-static Eina_Bool _quickpanel_status_timeout_cb(void *data)
-{
-       DBG("");
-
-       g_status_timer = NULL;
-
-       _quickpanel_status_hide(data);
-
-       return ECORE_CALLBACK_CANCEL;
-}
-
-static void _quickpanel_status_detail_hide_cb(void *data, Evas *e,
-                                       Evas_Object *obj,
-                                       void *event_info)
-{
-       if (g_status_timer) {
-               ecore_timer_del(g_status_timer);
-               g_status_timer = NULL;
-       }
-}
-
-static void _quickpanel_status_detail_show_cb(void *data, Evas *e,
-                                       Evas_Object *obj,
-                                       void *event_info)
-{
-       DBG("");
-}
-
-static void _quickpanel_status_clicked_cb(void *data, Evas_Object *obj,
-                                       void *event_info)
-{
-       _quickpanel_status_hide(data);
-}
-
-static void _noti_hide_cb(void *data, Evas_Object *obj,
-                       const char *emission, const char *source)
-{
-       DBG("");
-
-       if (g_status_timer) {
-               ecore_timer_del(g_status_timer);
-               g_status_timer = NULL;
-       }
-}
-
-static Evas_Object *_quickpanel_status_create_status_noti(const char *message, void *data)
-{
-       Evas_Object *status_noti = NULL;
-       Evas_Object *detail = NULL;
-       const char *data_win_height = NULL;
-       int noti_height = 0;
-
-       retif(message == NULL, NULL, "Invalid parameter!");
-
-       status_noti = noti_win_add(NULL);
-       retif(status_noti == NULL, NULL, "Failed to add elm status_noti.");
-
-       detail = elm_layout_add(status_noti);
-       if (!detail) {
-               ERR("Failed to get detailview.");
-               evas_object_del(status_noti);
-               return NULL;
-       }
-       elm_layout_theme_set(detail, "tickernoti", "base", "textonly");
-       elm_object_signal_callback_add(detail, "request,hide", "",
-                               _noti_hide_cb, NULL);
-
-       data_win_height = (char *)elm_layout_data_get(detail, "height");
-       if (data_win_height != NULL && elm_config_scale_get() > 0.0)
-               noti_height = (int)(elm_config_scale_get()
-                                       * atoi(data_win_height));
-       evas_object_size_hint_min_set(detail, 1, noti_height);
-       g_noti_height = noti_height;
-       DBG("height:%d", g_noti_height);
-
-       noti_win_content_set(status_noti, detail);
-
-       _quickpanel_status_set_text(detail, message);
-       /* Use style "default" for detailview mode and
-        * "info" for text only mode
-        */
-       elm_object_style_set(status_noti, "textonly");
-       evas_object_data_set(status_noti, E_DATA_STATUS_DETAIL, detail);
-
-       return status_noti;
-}
-
-static int _quickpanel_status_get_angle(void *data)
-{
-       struct appdata *ad = (struct appdata *)data;
-       Ecore_X_Window xwin, root;
-       int ret = 0, angle = 0, count = 0;
-       unsigned char *prop_data = NULL;
-
-       xwin = elm_win_xwindow_get(ad->win);
-       root = ecore_x_window_root_get(xwin);
-
-       ret = ecore_x_window_prop_property_get(root,
-                               ECORE_X_ATOM_E_ILLUME_ROTATE_ROOT_ANGLE,
-                               ECORE_X_ATOM_CARDINAL, 32,
-                               &prop_data, &count);
-
-       if (ret && prop_data) {
-               memcpy(&angle, prop_data, sizeof(int));
-
-               if (prop_data)
-                       free(prop_data);
-
-               return angle;
-       } else {
-               ERR("Fail to get angle");
-               if (prop_data)
-                       free(prop_data);
-
-               return -1;
-       }
-}
-
-static void _quickpanel_status_update_geometry_on_rotation(void *data, int *x, int *y, int *w, int *h) {
-       int angle = 0;
-
-       if (!data)
-               return;
-
-       angle = _quickpanel_status_get_angle(data);
-       Evas_Coord root_w, root_h;
-
-       /*
-        * manually calculate win_status_noti_indi window position & size
-        *  - win_indi is not full size window
-        */
-       ecore_x_window_size_get(ecore_x_window_root_first_get(), &root_w, &root_h);
-
-       // rotate win
-       switch(angle)
-       {
-               case 90:
-                       *w = g_noti_height;
-                       *h = root_h;
-                       break;
-               case 270:
-                       *w = g_noti_height;
-                       *h = root_h;
-                       *x = root_w - g_noti_height;
-                       break;
-               case 180:
-                       *w = root_w;
-                       *h = g_noti_height;
-                       *y = root_h - g_noti_height;
-                       break;
-               case 0:
-               default:
-                       *w = root_w;
-                       *h = g_noti_height;
-                       break;
-       }
-       elm_win_rotation_set(g_status_win, angle);
-}
-
-static void _quickpanel_status_win_rotated(void *data) {
-       retif(data == NULL, ,"data is NULL");
-
-       struct appdata *ad = data;
-       int x = 0, y = 0, w = 0, h = 0;
-
-       _quickpanel_status_update_geometry_on_rotation(ad, &x, &y, &w, &h);
-
-       if (g_status_win != NULL) {
-               evas_object_move(g_status_win, x, y);
-               evas_object_resize(g_status_win, w, h);
-       }
-}
-
-static void _quickpanel_status_cb(const char *message, void *data)
-{
-       DBG("");
-       retif(message == NULL, ,"message is NULL");
-       retif(data == NULL, ,"data is NULL");
-
-       if (g_status_timer)
-               ecore_timer_del(g_status_timer);
-
-       /* Skip if previous status is still shown */
-       if (g_status_win != NULL) {
-               Evas_Object *detail = evas_object_data_get(g_status_win, E_DATA_STATUS_DETAIL);
-               _quickpanel_status_set_text(detail, message);
-               elm_win_activate(g_status_win);
-       } else {
-               g_status_win = _quickpanel_status_create_status_noti(message, data);
-               if (g_status_win == NULL) {
-                       ERR("Fail to create status_noti");
-                       return;
-               }
-
-               _quickpanel_status_win_rotated(data);
-               evas_object_show(g_status_win);
-
-               evas_object_event_callback_add(g_status_win, EVAS_CALLBACK_SHOW,
-                                       _quickpanel_status_detail_show_cb,
-                                       g_status_win);
-               evas_object_event_callback_add(g_status_win, EVAS_CALLBACK_HIDE,
-                                       _quickpanel_status_detail_hide_cb,
-                                       g_status_win);
-               evas_object_smart_callback_add(g_status_win, "clicked",
-                                       _quickpanel_status_clicked_cb,
-                                       g_status_win);
-       }
-
-       g_status_timer = ecore_timer_add(QP_STATUS_DURATION,
-                       _quickpanel_status_timeout_cb, NULL);
-}
-
-/*****************************************************************************
- *
- * Util functions
- *
- *****************************************************************************/
-static int quickpanel_status_init(void *data)
-{
-       int ret = QP_OK;
-
-       ret = notification_status_monitor_message_cb_set(_quickpanel_status_cb, data);
-
-       return ret;
-}
-
-static int quickpanel_status_fini(void *data)
-{
-       int ret = 0;
-       _quickpanel_status_hide(NULL);
-
-       ret = notification_status_monitor_message_cb_unset();
-
-       return ret;
-}
-
-static void quickpanel_status_reflesh(void *data)
-{
-       retif(data == NULL, , "Invalid parameter!");
-
-       if (g_status_win != NULL) {
-               _quickpanel_status_win_rotated(data);
-       }
-}
diff --git a/daemon/notifications/ticker.c b/daemon/notifications/ticker.c
deleted file mode 100755 (executable)
index 8dde239..0000000
+++ /dev/null
@@ -1,841 +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 <Elementary.h>
-#include <Ecore_X.h>
-#include <appcore-common.h>
-#include <vconf.h>
-#include <appsvc.h>
-#include <app_service.h>
-#include <notification.h>
-#include <feedback.h>
-
-#include "quickpanel-ui.h"
-#include "common.h"
-#include "noti.h"
-#include "noti_win.h"
-#include "noti_util.h"
-
-#define QP_TICKER_DURATION     5
-#define QP_TICKER_DETAIL_DURATION 6
-
-#define TICKER_MSG_LEN                         1024
-#define DEFAULT_ICON ICONDIR           "/quickpanel_icon_default.png"
-
-#define E_DATA_IS_TICKERNOTI_CONTENT "E_DATA_TN_CONTENT"
-#define E_DATA_IS_TICKERNOTI_EXECUTED "E_DATA_TN_EXECUTED"
-
-#define FORMAT_1LINE "<font_size=29><color=#BABABA>%s</color></font>"
-#define FORMAT_2LINE "<font_size=26><color=#BABABA>%s</color></font><br><font_size=29><color=#F4F4F4>%s</color></font>"
-#define FORMAT_2LINE_SINGLE "<font_size=26><color=#BABABA>%s</color></font><br><font_size=29><color=#F4F4F4>%s %s</color></font>"
-#define FORMAT_2LINE_MULTI "<font_size=26><color=#BABABA>%s</color></font><br><font_size=29><color=#F4F4F4>%s %s</color></font>"
-
-static Evas_Object *g_window;
-static Evas_Object *g_ticker;
-static Ecore_Timer *g_timer;
-static int g_noti_height;
-
-static int quickpanel_ticker_init(void *data);
-static int quickpanel_ticker_fini(void *data);
-static int quickpanel_ticker_enter_hib(void *data);
-static int quickpanel_ticker_leave_hib(void *data);
-static void quickpanel_ticker_reflesh(void *data);
-static void _quickpanel_ticker_destroy_tickernoti(Evas_Object *tickernoti);
-
-QP_Module ticker = {
-       .name = "ticker",
-       .init = quickpanel_ticker_init,
-       .fini = quickpanel_ticker_fini,
-       .hib_enter = quickpanel_ticker_enter_hib,
-       .hib_leave = quickpanel_ticker_leave_hib,
-       .lang_changed = NULL,
-       .refresh = quickpanel_ticker_reflesh
-};
-
-static int _is_lockscreen_launched(void) {
-       int ret = 0;
-       int is_lock_launched = VCONFKEY_IDLE_UNLOCK;
-
-       if ((ret = vconf_get_int(VCONFKEY_IDLE_LOCK_STATE, &is_lock_launched)) == 0) {
-               if (ret == 0 && is_lock_launched == VCONFKEY_IDLE_LOCK) {
-                       return 1;
-               }
-       }
-
-       return 0;
-}
-
-/*****************************************************************************
- *
- * (Static) Util functions
- *
- *****************************************************************************/
-static void _quickpanel_ticker_clicked_cb(void *data, Evas_Object *obj,
-                       const char *emission, const char *source) {
-       int ret = -1;
-       char *pkgname = NULL;
-       char *caller_pkgname = NULL;
-       bundle *args = NULL;
-       bundle *group_args = NULL;
-       bundle *single_service_handle = NULL;
-       bundle *multi_service_handle = NULL;
-       int flags = 0, group_id = 0, priv_id = 0, count = 0, flag_launch = 0,
-                       flag_delete = 0;
-       notification_type_e type = NOTIFICATION_TYPE_NONE;
-       notification_h noti = NULL;
-       int *is_ticker_executed = NULL;
-
-       noti = data;
-       retif(noti == NULL, , "Invalid parameter!");
-
-       quickpanel_play_feedback();
-
-       if (_is_lockscreen_launched()) {
-               return ;
-       }
-
-       notification_get_pkgname(noti, &caller_pkgname);
-       notification_get_application(noti, &pkgname);
-       if (pkgname == NULL)
-               pkgname = caller_pkgname;
-
-       notification_get_id(noti, &group_id, &priv_id);
-       notification_get_property(noti, &flags);
-       notification_get_type(noti, &type);
-
-       if (flags & NOTIFICATION_PROP_DISABLE_APP_LAUNCH) {
-               flag_launch = 0;
-       } else {
-               is_ticker_executed = evas_object_data_get(obj, E_DATA_IS_TICKERNOTI_EXECUTED);
-               if (is_ticker_executed != NULL) {
-                       if (*is_ticker_executed == 0) {
-                               flag_launch = 1;
-                               *is_ticker_executed = 1;
-                       } else {
-                               flag_launch = 0;
-                       }
-               } else {
-                       flag_launch = 0;
-               }
-       }
-
-       if (flags & NOTIFICATION_PROP_DISABLE_AUTO_DELETE)
-               flag_delete = 0;
-       else
-               flag_delete = 1;
-
-       notification_get_execute_option(noti,
-                               NOTIFICATION_EXECUTE_TYPE_SINGLE_LAUNCH,
-                               NULL, &single_service_handle);
-       notification_get_execute_option(noti,
-                               NOTIFICATION_EXECUTE_TYPE_MULTI_LAUNCH,
-                               NULL, &multi_service_handle);
-
-       if (flag_launch == 1) {
-               /* Hide quickpanel */
-               quickpanel_close_quickpanel(true);
-
-               char *text_count = NULL;
-               notification_get_text(noti, NOTIFICATION_TEXT_TYPE_EVENT_COUNT, &text_count);
-
-               if (text_count != NULL) {
-                       count = atoi(text_count);
-               } else {
-                       count = 1;
-               }
-
-               if (single_service_handle != NULL && multi_service_handle == NULL) {
-                       ret = quickpanel_launch_app(NULL, single_service_handle);
-                       quickpanel_launch_app_inform_result(pkgname, ret);
-               }
-               if (single_service_handle == NULL && multi_service_handle != NULL) {
-                       ret = quickpanel_launch_app(NULL, multi_service_handle);
-                       quickpanel_launch_app_inform_result(pkgname, ret);
-               }
-               if (single_service_handle != NULL && multi_service_handle != NULL) {
-                       if (count <= 1) {
-                               ret = quickpanel_launch_app(NULL, single_service_handle);
-                               quickpanel_launch_app_inform_result(pkgname, ret);
-                       } else {
-                               ret = quickpanel_launch_app(NULL, multi_service_handle);
-                               quickpanel_launch_app_inform_result(pkgname, ret);
-                       }
-               }
-               if (single_service_handle == NULL && multi_service_handle == NULL) {
-                       notification_get_args(noti, &args, &group_args);
-
-                       if (count > 1 && group_args != NULL) {
-                               ret = quickpanel_launch_app(pkgname, group_args);
-                               quickpanel_launch_app_inform_result(pkgname, ret);
-                       } else {
-                               ret = quickpanel_launch_app(pkgname, args);
-                               quickpanel_launch_app_inform_result(pkgname, ret);
-                       }
-               }
-       }
-
-       if (flag_delete == 1 && type == NOTIFICATION_TYPE_NOTI) {
-               notification_delete_by_priv_id(caller_pkgname,
-                               NOTIFICATION_TYPE_NOTI,
-                               priv_id);
-       }
-}
-
-static inline void __ticker_only_noti_del(notification_h noti)
-{
-       int applist = NOTIFICATION_DISPLAY_APP_ALL;
-
-       retif(noti == NULL, ,"noti is null");
-
-       notification_get_display_applist(noti, &applist);
-       if (applist & NOTIFICATION_DISPLAY_APP_TICKER) {
-               if (!(applist & NOTIFICATION_DISPLAY_APP_NOTIFICATION_TRAY)) {
-                       char *pkgname = NULL;
-                       int priv_id = 0;
-
-                       notification_get_pkgname(noti, &pkgname);
-                       notification_get_id(noti, NULL, &priv_id);
-                       notification_delete_by_priv_id(pkgname,
-                                               NOTIFICATION_TYPE_NONE,
-                                               priv_id);
-               }
-       }
-}
-
-static void _quickpanel_ticker_hide(void *data)
-{
-       if (g_ticker) {
-               evas_object_hide(g_ticker);
-               _quickpanel_ticker_destroy_tickernoti(g_ticker);
-               g_ticker = NULL;
-       }
-}
-
-static Eina_Bool _quickpanel_ticker_timeout_cb(void *data)
-{
-       INFO("ticker dismissed by timeout callback");
-
-       g_timer = NULL;
-
-       _quickpanel_ticker_hide(data);
-
-       return ECORE_CALLBACK_CANCEL;
-}
-
-static void _quickpanel_ticker_detail_hide_cb(void *data, Evas *e,
-                                       Evas_Object *obj,
-                                       void *event_info)
-{
-       INFO("ticker dismissed by touching a hide button");
-
-       notification_h noti = (notification_h) data;
-
-       if (g_timer) {
-               ecore_timer_del(g_timer);
-               g_timer = NULL;
-       }
-
-       retif(noti == NULL, , "Invalid parameter!");
-
-       __ticker_only_noti_del(noti);
-       notification_free(noti);
-}
-
-static void _quickpanel_ticker_detail_show_cb(void *data, Evas *e,
-                                       Evas_Object *obj,
-                                       void *event_info)
-{
-       DBG("");
-}
-
-static void _quickpanel_ticker_button_clicked_cb(void *data, Evas_Object *obj,
-                                       void *event_info)
-{
-       if (g_timer) {
-               ecore_timer_del(g_timer);
-               g_timer = NULL;
-       }
-
-       _quickpanel_ticker_hide(data);
-}
-
-static Evas_Object *_quickpanel_ticker_create_button(Evas_Object *parent,
-                                               notification_h noti)
-{
-       Evas_Object *button = NULL;
-
-       retif(noti == NULL || parent == NULL, NULL, "Invalid parameter!");
-
-       if (_is_lockscreen_launched()) {
-               return NULL;
-       }
-
-       button = elm_button_add(parent);
-       elm_object_style_set(button, "tickernoti");
-       elm_object_text_set(button, _S("IDS_COM_BODY_CLOSE"));
-       evas_object_smart_callback_add(button, "clicked",
-                               _quickpanel_ticker_button_clicked_cb, noti);
-
-       return button;
-}
-
-static Evas_Object *_quickpanel_ticker_create_icon(Evas_Object *parent,
-                                               notification_h noti)
-{
-       char *icon_path = NULL;
-       Evas_Object *icon = NULL;
-
-       retif(noti == NULL || parent == NULL, NULL, "Invalid parameter!");
-
-       notification_get_image(noti, NOTIFICATION_IMAGE_TYPE_ICON, &icon_path);
-       icon = elm_image_add(parent);
-
-       if (icon_path == NULL
-           || (elm_image_file_set(icon, icon_path, NULL) == EINA_FALSE)) {
-               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) {
-       time_t time = 0;
-       char *text = NULL;
-       char buf[TICKER_MSG_LEN] = { 0, };
-
-       if (notification_get_time_from_text(noti, text_type, &time) == NOTIFICATION_ERROR_NONE) {
-               if ((int)time > 0) {
-                       quickpanel_noti_get_time(time, buf, sizeof(buf));
-                       text = buf;
-               }
-       } else {
-               notification_get_text(noti, text_type, &text);
-       }
-
-       if (text != NULL)
-               return elm_entry_utf8_to_markup(text);
-
-       return NULL;
-}
-
-static char *_quickpanel_ticker_get_label_layout_default(notification_h noti)
-{
-       char buf[TICKER_MSG_LEN] = { 0, };
-       int len = 0;
-       char *domain = NULL;
-       char *dir = NULL;
-       char *title_utf8 = NULL;
-       char *content_utf8 = NULL;
-       char *event_count_utf8 = NULL;
-
-       retif(noti == NULL, NULL, "Invalid parameter!");
-
-       notification_get_text_domain(noti, &domain, &dir);
-       if (domain != NULL && dir != NULL)
-               bindtextdomain(domain, dir);
-
-       title_utf8 = _get_text(noti, NOTIFICATION_TEXT_TYPE_TITLE);
-       content_utf8 = _get_text(noti, NOTIFICATION_TEXT_TYPE_CONTENT);
-
-       event_count_utf8 = _get_text(noti, NOTIFICATION_TEXT_TYPE_EVENT_COUNT);
-
-       if (event_count_utf8 == NULL) {
-               if (title_utf8 && content_utf8) {
-                       len = snprintf(buf, sizeof(buf),FORMAT_2LINE, title_utf8, content_utf8);
-               } else if (title_utf8) {
-                       len = snprintf(buf, sizeof(buf),FORMAT_1LINE, title_utf8);
-               }
-       } else {
-               if (title_utf8 && content_utf8) {
-                       len = snprintf(buf, sizeof(buf),FORMAT_2LINE_MULTI, title_utf8, event_count_utf8, content_utf8);
-               } else if (title_utf8) {
-                       len = snprintf(buf, sizeof(buf),FORMAT_1LINE, title_utf8);
-               }
-       }
-
-       if (title_utf8)
-               free(title_utf8);
-
-       if (content_utf8)
-               free(content_utf8);
-
-       if (event_count_utf8)
-               free(event_count_utf8);
-
-       if (len > 0)
-               return strdup(buf);
-
-       return NULL;
-}
-
-static char *_quickpanel_ticker_get_label_layout_single(notification_h noti)
-{
-       char buf[TICKER_MSG_LEN] = { 0, };
-       int len = 0;
-       char *domain = NULL;
-       char *dir = NULL;
-       char *title_utf8 = NULL;
-       char *content_utf8 = NULL;
-       char *info_1_utf8 = NULL;
-       char *info_sub_1_utf8 = NULL;
-
-       retif(noti == NULL, NULL, "Invalid parameter!");
-
-       notification_get_text_domain(noti, &domain, &dir);
-       if (domain != NULL && dir != NULL)
-               bindtextdomain(domain, dir);
-
-       title_utf8 = _get_text(noti, NOTIFICATION_TEXT_TYPE_TITLE);
-       content_utf8 = _get_text(noti, NOTIFICATION_TEXT_TYPE_CONTENT);
-
-       info_1_utf8 = _get_text(noti, NOTIFICATION_TEXT_TYPE_INFO_1);
-       info_sub_1_utf8 = _get_text(noti, NOTIFICATION_TEXT_TYPE_INFO_SUB_1);
-
-       if (info_1_utf8 == NULL) {
-               if (title_utf8 && content_utf8) {
-                       len = snprintf(buf, sizeof(buf),FORMAT_2LINE, title_utf8, content_utf8);
-               } else if (title_utf8) {
-                       len = snprintf(buf, sizeof(buf),FORMAT_1LINE, title_utf8);
-               }
-       } else {
-               if (info_sub_1_utf8) {
-                       if (content_utf8)
-                               len = snprintf(buf, sizeof(buf), FORMAT_2LINE_SINGLE, content_utf8, info_1_utf8, info_sub_1_utf8);
-                       else if (title_utf8)
-                               len = snprintf(buf, sizeof(buf), FORMAT_2LINE_SINGLE, title_utf8, info_1_utf8, info_sub_1_utf8);
-               } else {
-                       if (content_utf8)
-                               len = snprintf(buf, sizeof(buf), FORMAT_2LINE, content_utf8, info_1_utf8);
-                       else if (title_utf8)
-                               len = snprintf(buf, sizeof(buf), FORMAT_2LINE, title_utf8, info_1_utf8);
-               }
-       }
-
-       if (title_utf8)
-               free(title_utf8);
-
-       if (content_utf8)
-               free(content_utf8);
-
-       if (info_1_utf8)
-               free(info_1_utf8);
-
-       if (info_sub_1_utf8)
-               free(info_sub_1_utf8);
-
-       if (len > 0)
-               return strdup(buf);
-
-       return NULL;
-}
-
-static char *_quickpanel_ticker_get_label(notification_h noti)
-{
-       char *result = NULL;
-       notification_ly_type_e layout;
-
-       retif(noti == NULL, NULL, "Invalid parameter!");
-
-       notification_get_layout(noti, &layout);
-
-
-       if (layout == NOTIFICATION_LY_NOTI_EVENT_SINGLE) {
-               result = _quickpanel_ticker_get_label_layout_single(noti);
-       } else {
-               result = _quickpanel_ticker_get_label_layout_default(noti);
-       }
-
-       return result;
-}
-
-static void _noti_hide_cb(void *data, Evas_Object *obj,
-                       const char *emission, const char *source)
-{
-       DBG("");
-
-       if (g_timer) {
-               ecore_timer_del(g_timer);
-               g_timer = NULL;
-       }
-
-       _quickpanel_ticker_hide(data);
-}
-
-static Evas_Object *_quickpanel_ticker_create_tickernoti(void *data)
-{
-       notification_h noti = (notification_h) data;
-       Evas_Object *tickernoti = NULL;
-       Evas_Object *icon = NULL;
-       Evas_Object *detail = NULL;
-       Evas_Object *button = NULL;
-       char *buf = NULL;
-       const char *data_win_height = NULL;
-       int noti_height = 0;
-       int *is_ticker_executed = NULL;
-
-       retif(noti == NULL, NULL, "Invalid parameter!");
-
-       tickernoti = noti_win_add(NULL);
-       retif(tickernoti == NULL, NULL, "Failed to add elm tickernoti.");
-
-       detail = elm_layout_add(tickernoti);
-       if (!detail) {
-               ERR("Failed to get detailview.");
-               _quickpanel_ticker_destroy_tickernoti(tickernoti);
-               return NULL;
-       }
-       elm_layout_theme_set(detail, "tickernoti", "base", "default");
-       elm_object_signal_callback_add(detail, "request,hide", "",
-                               _noti_hide_cb, noti);
-       elm_object_signal_callback_add(detail, "clicked", "",
-                       _quickpanel_ticker_clicked_cb, noti);
-
-       data_win_height = (char *)elm_layout_data_get(detail, "height");
-       if (data_win_height != NULL && elm_config_scale_get() > 0.0)
-               noti_height = (int)(elm_config_scale_get()
-                                       * atoi(data_win_height));
-       evas_object_size_hint_min_set(detail, 1, noti_height);
-       g_noti_height = noti_height;
-
-       noti_win_content_set(tickernoti, detail);
-
-       icon = _quickpanel_ticker_create_icon(detail, noti);
-       if (icon != NULL)
-               elm_object_part_content_set(detail, "icon", icon);
-
-       button = _quickpanel_ticker_create_button(detail, noti);
-       if (button != NULL)
-               elm_object_part_content_set(detail, "button", button);
-
-       buf = _quickpanel_ticker_get_label(noti);
-       if (buf != NULL) {
-               elm_object_part_text_set(detail, "elm.text", buf);
-               free(buf);
-       }
-
-       /* Use style "default" for detailview mode and
-        * "info" for text only mode
-        */
-       elm_object_style_set(tickernoti, "default");
-       evas_object_data_set(tickernoti, E_DATA_IS_TICKERNOTI_CONTENT, detail);
-       is_ticker_executed = (int *)malloc(sizeof(int));
-       if (is_ticker_executed != NULL) {
-               *is_ticker_executed = 0;
-               evas_object_data_set(detail, E_DATA_IS_TICKERNOTI_EXECUTED, is_ticker_executed);
-       }
-
-       return tickernoti;
-}
-
-static void _quickpanel_ticker_destroy_tickernoti(Evas_Object *tickernoti)
-{
-       int *is_ticker_executed = NULL;
-       Evas_Object *detail = NULL;
-
-       retif(tickernoti == NULL, , "Invalid parameter!");
-
-       detail = evas_object_data_get(tickernoti, E_DATA_IS_TICKERNOTI_CONTENT);
-
-       if (detail != NULL) {
-               is_ticker_executed = evas_object_data_get(detail, E_DATA_IS_TICKERNOTI_EXECUTED);
-               if (is_ticker_executed != NULL) {
-                       evas_object_data_del(detail, E_DATA_IS_TICKERNOTI_EXECUTED);
-                       free(is_ticker_executed);
-               }
-               evas_object_data_del(detail, E_DATA_IS_TICKERNOTI_CONTENT);
-       }
-
-       evas_object_del(tickernoti);
-}
-
-static int _quickpanel_ticker_get_angle(void *data)
-{
-       struct appdata *ad = (struct appdata *)data;
-       Ecore_X_Window xwin, root;
-       int ret = 0, angle = 0, count = 0;
-       unsigned char *prop_data = NULL;
-
-       xwin = elm_win_xwindow_get(ad->win);
-       root = ecore_x_window_root_get(xwin);
-
-       ret = ecore_x_window_prop_property_get(root,
-                               ECORE_X_ATOM_E_ILLUME_ROTATE_ROOT_ANGLE,
-                               ECORE_X_ATOM_CARDINAL, 32,
-                               &prop_data, &count);
-
-       if (ret && prop_data) {
-               memcpy(&angle, prop_data, sizeof(int));
-
-               if (prop_data)
-                       free(prop_data);
-
-               return angle;
-       } else {
-               ERR("Fail to get angle");
-               if (prop_data)
-                       free(prop_data);
-
-               return -1;
-       }
-}
-
-static void _quickpanel_ticker_update_geometry_on_rotation(void *data, int *x, int *y, int *w, int *h) {
-       int angle = 0;
-
-       if (!data)
-               return;
-       angle = _quickpanel_ticker_get_angle(data);
-       Evas_Coord root_w, root_h;
-
-       /*
-        * manually calculate win_tickernoti_indi window position & size
-        *  - win_indi is not full size window
-        */
-       ecore_x_window_size_get(ecore_x_window_root_first_get(), &root_w, &root_h);
-
-       // rotate win
-       switch(angle)
-       {
-               case 90:
-                       *w = g_noti_height;
-                       *h = root_h;
-                       break;
-               case 270:
-                       *w = g_noti_height;
-                       *h = root_h;
-                       *x = root_w - g_noti_height;
-                       break;
-               case 180:
-                       *w = root_w;
-                       *h = g_noti_height;
-                       *y = root_h - g_noti_height;
-                       break;
-               case 0:
-               default:
-                       *w = root_w;
-                       *h = g_noti_height;
-                       break;
-       }
-       elm_win_rotation_set(g_ticker, angle);
-}
-
-static void _quickpanel_ticker_win_rotated(void *data) {
-       retif(data == NULL, ,"data is NULL");
-       struct appdata *ad = data;
-       int x = 0, y = 0, w = 0, h = 0;
-
-       _quickpanel_ticker_update_geometry_on_rotation(ad, &x, &y, &w, &h);
-
-       if (g_ticker != NULL) {
-               evas_object_move(g_ticker, x, y);
-               evas_object_resize(g_ticker, w, h);
-       }
-}
-
-static void _quickpanel_noti_media_feedback(notification_h noti) {
-
-       retif(noti == NULL, ,"op_list is NULL");
-
-       if (quickpanel_is_sound_enabled() == 1) {
-               notification_sound_type_e nsound_type = NOTIFICATION_SOUND_TYPE_NONE;
-               const char *nsound_path = NULL;
-#ifdef VCONFKEY_SETAPPL_NOTI_MSG_RINGTONE_PATH_STR
-               char *default_msg_tone = NULL;
-#endif
-
-               notification_get_sound(noti, &nsound_type, &nsound_path);
-               DBG("notification sound: %d, %s", nsound_type, nsound_path);
-
-               switch (nsound_type) {
-                       case NOTIFICATION_SOUND_TYPE_USER_DATA:
-                               quickpanel_player_play(SOUND_TYPE_NOTIFICATION, nsound_path);
-                               break;
-                       case NOTIFICATION_SOUND_TYPE_DEFAULT:
-#ifdef VCONFKEY_SETAPPL_NOTI_MSG_RINGTONE_PATH_STR
-                               default_msg_tone = vconf_get_str(VCONFKEY_SETAPPL_NOTI_MSG_RINGTONE_PATH_STR);
-
-                               if (default_msg_tone != NULL) {
-                                       quickpanel_player_play(SOUND_TYPE_NOTIFICATION, default_msg_tone);
-                                       free(default_msg_tone);
-                               } else {
-                                       feedback_play_type(FEEDBACK_TYPE_SOUND, FEEDBACK_PATTERN_UNLOCK);
-                               }
-#else
-                               feedback_play_type(FEEDBACK_TYPE_SOUND, FEEDBACK_PATTERN_UNLOCK);
-#endif
-                               break;
-                       case NOTIFICATION_SOUND_TYPE_MAX:
-                       case NOTIFICATION_SOUND_TYPE_NONE:
-                               break;
-               }
-       }
-
-       /* Play Vibration */
-       notification_vibration_type_e nvibration_type =
-               NOTIFICATION_VIBRATION_TYPE_NONE;
-       const char *nvibration_path = NULL;
-
-       notification_get_vibration(noti, &nvibration_type, &nvibration_path);
-       DBG("notification vibration: %d, %s", nvibration_type, nvibration_path);
-       switch (nvibration_type) {
-               case NOTIFICATION_VIBRATION_TYPE_USER_DATA:
-               case    NOTIFICATION_VIBRATION_TYPE_DEFAULT:
-                       feedback_play_type(FEEDBACK_TYPE_VIBRATION, FEEDBACK_PATTERN_GENERAL);
-                       break;
-               case NOTIFICATION_VIBRATION_TYPE_MAX:
-               case NOTIFICATION_VIBRATION_TYPE_NONE:
-                       break;
-       }
-}
-
-static void _quickpanel_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;
-       int flags = 0;
-       int applist = NOTIFICATION_DISPLAY_APP_ALL;
-       int op_type = 0;
-       int priv_id = 0;
-
-       INFO("_quickpanel_ticker_noti_changed_cb");
-
-       retif(op_list == NULL, ,"op_list is NULL");
-
-       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) {
-                       ERR("failed to get a notification from master");
-                       return ;
-               }
-               if (notification_clone(noti_from_master, &noti) != NOTIFICATION_ERROR_NONE) {
-                       ERR("failed to create a cloned notification");
-                       return ;
-               }
-       }
-
-       retif(noti == NULL, ,"noti is NULL");
-
-       if (op_type == NOTIFICATION_OP_INSERT || op_type == NOTIFICATION_OP_UPDATE) {
-               INFO("playing notification sound");
-               _quickpanel_noti_media_feedback(noti);
-       }
-
-       notification_get_display_applist(noti, &applist);
-       if (!(applist & NOTIFICATION_DISPLAY_APP_TICKER)) {
-               INFO("displaying ticker option is off");
-               notification_free(noti);
-               return ;
-       }
-
-       /* Skip if previous ticker is still shown */
-       if (g_ticker != NULL) {
-               _quickpanel_ticker_hide(NULL);
-       }
-
-       /* Check tickernoti flag */
-       notification_get_property(noti, &flags);
-
-       if (flags & NOTIFICATION_PROP_DISABLE_TICKERNOTI) {
-               INFO("NOTIFICATION_PROP_DISABLE_TICKERNOTI");
-               __ticker_only_noti_del(noti);
-               notification_free(noti);
-       } else if (applist & NOTIFICATION_DISPLAY_APP_TICKER) {
-               if (_is_lockscreen_launched()) {
-                       ERR("lockscreen launched, creating a ticker canceled");
-                       notification_free(noti);
-                       return;
-               }
-
-               /* Display ticker */
-               if (g_timer)
-                       ecore_timer_del(g_timer);
-
-               g_ticker = _quickpanel_ticker_create_tickernoti(noti);
-               if (g_ticker == NULL) {
-                       ERR("Fail to create tickernoti");
-                       __ticker_only_noti_del(noti);
-                       notification_free(noti);
-                       return;
-               }
-
-               g_timer = ecore_timer_add(QP_TICKER_DURATION,
-                               _quickpanel_ticker_timeout_cb, noti);
-
-               _quickpanel_ticker_win_rotated(data);
-               evas_object_show(g_ticker);
-
-               evas_object_event_callback_add(g_ticker, EVAS_CALLBACK_SHOW,
-                                       _quickpanel_ticker_detail_show_cb,
-                                       g_ticker);
-               evas_object_event_callback_add(g_ticker, EVAS_CALLBACK_HIDE,
-                                       _quickpanel_ticker_detail_hide_cb,
-                                       noti);
-       }
-}
-
-/*****************************************************************************
- *
- * Util functions
- *
- *****************************************************************************/
-static int quickpanel_ticker_init(void *data)
-{
-       struct appdata *ad = (struct appdata *)data;
-
-       g_window = ad->win;
-
-       notification_register_detailed_changed_cb(_quickpanel_ticker_noti_detailed_changed_cb,
-                                       data);
-
-       return QP_OK;
-}
-
-static int quickpanel_ticker_fini(void *data)
-{
-       _quickpanel_ticker_hide(NULL);
-
-       return QP_OK;
-}
-
-static int quickpanel_ticker_enter_hib(void *data)
-{
-       return QP_OK;
-}
-
-static int quickpanel_ticker_leave_hib(void *data)
-{
-       return QP_OK;
-}
-
-static void quickpanel_ticker_reflesh(void *data)
-{
-       retif(data == NULL, , "Invalid parameter!");
-
-       if (g_ticker != NULL) {
-               _quickpanel_ticker_win_rotated(data);
-       }
-}
diff --git a/daemon/page/page_base.c b/daemon/page/page_base.c
new file mode 100644 (file)
index 0000000..59d6ab1
--- /dev/null
@@ -0,0 +1,317 @@
+/*
+ * 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 "pager.h"
+#include "pager_common.h"
+#include "vi_manager.h"
+#include "setting_utils.h"
+#include "list_util.h"
+#include "settings.h"
+#include "settings_view_featured.h"
+#ifdef QP_EMERGENCY_MODE_ENABLE
+#include "emergency_mode.h"
+#endif
+#include "noti.h"
+
+#define FICKUP_TIME_LIMIT 150
+#define FICKUP_DISTANCE_LIMIT 160
+
+static void _mapbuf_enable_set(Eina_Bool is_enable);
+static void _content_resize(int width, int height, const char *signal);
+static int _up_cb(void *event_info, void *data);
+static int _down_cb(void *event_info, void *data);
+static int _scroll_start_cb(void *event_info, void *data);
+static int _scroll_done_cb(void *event_info, void *data);
+static int _page_changed_cb(void *event_info, void *data);
+
+static struct info {
+       Evas_Object *mapbuf;
+       Evas_Object *view;
+       Evas_Object *view_scroller;
+       Evas_Object *view_box;
+
+       int flick_press_x;
+       int flick_press_y;
+       int flick_available;
+       int flick_time;
+} s_info = {
+       .mapbuf = NULL,
+       .view = NULL,
+       .view_scroller = NULL,
+       .view_box = NULL,
+
+       .flick_press_x = 0,
+       .flick_press_y = 0,
+       .flick_available = 0,
+       .flick_time = 0,
+};
+
+static QP_Page_Handler page_handler  = {
+       .status = 0,
+       .name = NULL,
+       /* func */
+       .mapbuf_enable_set = _mapbuf_enable_set,
+       .content_resize = _content_resize,
+       .down_cb = _down_cb,
+       .up_cb = _up_cb,
+       .scroll_start_cb = _scroll_start_cb,
+       .scroll_done_cb = _scroll_done_cb,
+       .page_changed_cb = _page_changed_cb,
+};
+
+static void _mapbuf_enable_set(Eina_Bool is_enable)
+{
+       Evas_Coord y;
+
+       if (s_info.mapbuf != NULL) {
+               elm_mapbuf_enabled_set(s_info.mapbuf, is_enable);
+       }
+
+       if (is_enable) {
+               evas_object_geometry_get(s_info.view_scroller, NULL, &y, NULL, NULL);
+               evas_object_move(s_info.view, 0, y);
+       }
+}
+
+static void _content_resize(int width, int height, const char *signal)
+{
+       struct appdata *ad = quickpanel_get_app_data();
+       retif(ad == NULL, , "invalid parameter");
+
+       if (s_info.view != NULL) {
+               elm_object_signal_emit(s_info.view, signal, "prog");
+               evas_object_size_hint_min_set(s_info.view, width, height);
+       }
+}
+
+void static _flick_mouse_down_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+       int limit_h = 0;
+       int limit_partial_h = 0;
+       int limit_partial_w = 0;
+       Evas_Event_Mouse_Down *ev = (Evas_Event_Mouse_Down *)event_info;
+       retif(ev == NULL, , "event_info is NULL");
+
+       s_info.flick_press_x = ev->canvas.x;
+       s_info.flick_press_y = ev->canvas.y;
+       s_info.flick_time = ev->timestamp;
+
+       quickpanel_noti_get_geometry(&limit_h, &limit_partial_h, &limit_partial_w);
+
+       if (s_info.flick_press_y > limit_h) {
+               s_info.flick_available = 1;
+       } else {
+               if (s_info.flick_press_x > limit_partial_w && s_info.flick_press_y > limit_partial_h) {
+                       s_info.flick_available = 1;
+               } else {
+                       s_info.flick_available = 0;
+               }
+       }
+}
+
+static void  _flick_mouse_move_cb(void* data, Evas* e, Evas_Object* obj, void* event_info)
+{
+       int delta_y = 0;
+       Evas_Event_Mouse_Move* ev = event_info;
+       retif(ev == NULL, , "event_info is NULL");
+
+       if (s_info.flick_available == 0) {
+               return;
+       }
+       if (ev->cur.output.y > ev->prev.output.y) {
+               s_info.flick_available = 0;
+               return;
+       }
+       if (abs(ev->cur.output.x - ev->prev.output.x) > 40) {
+               s_info.flick_available = 0;
+               return;
+       }
+       if (ev->timestamp - s_info.flick_time > FICKUP_TIME_LIMIT) {
+               s_info.flick_available = 0;
+               return;
+       }
+
+       delta_y = s_info.flick_press_y - ev->cur.output.y;
+
+       if (delta_y > FICKUP_DISTANCE_LIMIT) {
+               ERR("closed by flick up base area");
+               quickpanel_uic_close_quickpanel(false, 0);
+       }
+}
+
+static int _up_cb(void *event_info, void *data)
+{
+       quickpanel_page_scroll_hold_set(EINA_TRUE);
+       quickpanel_page_scroll_freeze_set(EINA_FALSE);
+
+       return QP_OK;
+}
+
+static int _down_cb(void *event_info, void *data)
+{
+       int x = 0, y = 0;
+       static int settings_y = -1, settings_h = -1;
+
+#ifdef QP_EMERGENCY_MODE_ENABLE
+       if (quickpanel_emergency_mode_is_on()) {
+               return QP_OK;
+       }
+#endif
+
+       if (settings_y == -1 || settings_h == -1) {
+               Evas_Object *obj_settings = NULL;
+               struct appdata *ad = quickpanel_get_app_data();
+               if (ad != NULL && ad->ly != NULL) {
+                       obj_settings = quickpanel_setting_box_get(ad->ly);
+                       if (obj_settings != NULL) {
+                               evas_object_geometry_get(obj_settings, NULL, &settings_y, NULL, &settings_h);
+                       }
+               }
+       }
+
+       quickpanel_page_get_touched_pos(&x, &y);
+
+       if (y >= settings_y && y <= settings_y + settings_h) {
+               if (quickpanel_settings_is_in_left_edge() == EINA_TRUE) {
+                       quickpanel_page_scroll_hold_set(EINA_FALSE);
+               }
+       } else {
+               quickpanel_page_scroll_freeze_set(EINA_TRUE);
+       }
+
+       return QP_OK;
+}
+
+static int _scroll_start_cb(void *event_info, void *data)
+{
+       quickpanel_vim_set_state_suspend();
+
+       return QP_OK;
+}
+
+static int _scroll_done_cb(void *event_info, void *data)
+{
+       quickpanel_vim_set_state_ready();
+
+       return QP_OK;
+}
+
+static int _page_changed_cb(void *event_info, void *data)
+{
+       quickpanel_setting_view_featured_initial_focus_set();
+
+       return QP_OK;
+}
+
+HAPI Evas_Object *quickpanel_page_base_create(Evas_Object *parent, void *data)
+{
+       Evas_Object *mapbuf = NULL;
+       Evas_Object *view = NULL;
+
+       retif(parent == NULL, NULL, "invalid parameter");
+
+       if (s_info.view != NULL) {
+               return s_info.view;
+       }
+
+       mapbuf = elm_mapbuf_add(parent);
+       elm_mapbuf_enabled_set(mapbuf, EINA_FALSE);
+       elm_mapbuf_smooth_set(mapbuf, EINA_FALSE);
+
+       evas_object_size_hint_weight_set(mapbuf, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(mapbuf, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+       view = quickpanel_uic_load_edj(mapbuf, DEFAULT_EDJ, "quickpanel/base", 0);
+       retif(view == NULL, NULL, "failed to load base layout");
+
+       Evas_Object *scroller = elm_scroller_add(parent);
+       retif(!scroller, NULL, "fail to add scroller");
+       //elm_object_style_set(scroller, "default");
+       elm_object_style_set(scroller, "bg/default");
+       elm_scroller_bounce_set(scroller, EINA_TRUE, EINA_TRUE);
+       elm_scroller_policy_set(scroller, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_OFF);
+       evas_object_size_hint_weight_set(scroller, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_fill_set(scroller, EVAS_HINT_FILL, EVAS_HINT_FILL);
+       evas_object_show(scroller);
+
+       Evas_Object *box = elm_box_add(scroller);
+       if (!box) {
+               ERR("fail to add box");
+               if (scroller != NULL) {
+                       evas_object_del(scroller);
+                       scroller = NULL;
+               }
+               return NULL;
+       }
+       evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, 0);
+       elm_box_horizontal_set(box, EINA_FALSE);
+
+       elm_object_content_set(scroller, box);
+       elm_object_part_content_set(view, "qp.base.list.swallow", scroller);
+       evas_object_show(scroller);
+
+       Evas_Object *bg_touch = elm_bg_add(view);
+       if (bg_touch != NULL) {
+               //evas_object_color_set(bg_touch, 255, 255, 255, 250);
+               evas_object_color_set(bg_touch, 0, 0, 0, 0);
+               evas_object_event_callback_add(bg_touch,
+                               EVAS_CALLBACK_MOUSE_DOWN, _flick_mouse_down_cb, NULL);
+               evas_object_event_callback_add(bg_touch,
+                               EVAS_CALLBACK_MOUSE_MOVE, _flick_mouse_move_cb, NULL);
+               elm_object_part_content_set(view, "background.touch", bg_touch);
+       }
+
+
+       quickpanel_page_handler_set(mapbuf, &page_handler);
+
+       elm_object_content_set(mapbuf, view);
+       evas_object_show(mapbuf);
+
+
+       s_info.mapbuf = mapbuf;
+       s_info.view = view;
+       s_info.view_scroller = scroller;
+       s_info.view_box = box;
+
+#ifdef QP_EMERGENCY_MODE_ENABLE
+       if (quickpanel_emergency_mode_is_on()) {
+               quickpanel_page_scroll_freeze_set(EINA_TRUE);
+       }
+#endif
+
+       return s_info.mapbuf;
+}
+
+HAPI Evas_Object *quickpanel_page_base_view_get(const char *view_name)
+{
+       retif(view_name == NULL, NULL, "invalid parameter");
+
+       if (strcmp(view_name, "LAYOUT") == 0) {
+               return s_info.view;
+       } else if (strcmp(view_name, "SCROLLER") == 0) {
+               return s_info.view_scroller;
+       } else if (strcmp(view_name, "BOX") == 0) {
+               return s_info.view_box;
+       }
+
+       return NULL;
+}
+
+HAPI void quickpanel_page_base_focus_allow_set(Eina_Bool is_enable)
+{
+       elm_object_tree_focus_allow_set(s_info.mapbuf, is_enable);
+}
diff --git a/daemon/page/page_base.h b/daemon/page/page_base.h
new file mode 100644 (file)
index 0000000..d2b1278
--- /dev/null
@@ -0,0 +1,29 @@
+/*
+ * 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 __QUICKPANEL_PAGE_BASE_H__
+#define __QUICKPANEL_PAGE_BASE_H__
+
+#include "quickpanel-ui.h"
+#include "common.h"
+
+Evas_Object *quickpanel_page_base_create(Evas_Object *parent, void *data);
+Evas_Object *quickpanel_page_base_view_get(const char *view_name);
+void quickpanel_page_base_focus_allow_set(Eina_Bool is_enable);
+
+#endif
diff --git a/daemon/page/page_edit.c b/daemon/page/page_edit.c
new file mode 100644 (file)
index 0000000..d83a740
--- /dev/null
@@ -0,0 +1,302 @@
+/*
+ * 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 "pager.h"
+#include "pager_common.h"
+#include "vi_manager.h"
+#include "settings_gridbox.h"
+#include "quickpanel_def.h"
+
+static void _mapbuf_enable_set(Eina_Bool is_enable);
+static void _content_resize(int width, int height, const char *signal);
+static int _up_cb(void *event_info, void *data);
+static int _down_cb(void *event_info, void *data);
+static int _scroll_start_cb(void *event_info, void *data);
+static int _scroll_done_cb(void *event_info, void *data);
+
+static struct info {
+       int is_scroll_freezed;
+       Evas_Object *mapbuf;
+       Evas_Object *view;
+       Evas_Object *scroller;
+       Evas_Object *layout;
+       Evas_Object *view_section_1;
+       Evas_Object *view_section_2;
+       Evas_Object *view_active_buttons;
+       Evas_Object *view_reserved_buttons;
+} s_info = {
+       .is_scroll_freezed = 0,
+       .mapbuf = NULL,
+       .view = NULL,
+       .scroller = NULL,
+       .layout = NULL,
+       .view_section_1 = NULL,
+       .view_section_2 = NULL,
+       .view_active_buttons = NULL,
+       .view_reserved_buttons = NULL,
+};
+
+static QP_Page_Handler page_handler  = {
+       .status = 0,
+       .name = NULL,
+
+       .mapbuf_enable_set = _mapbuf_enable_set,
+       .content_resize = _content_resize,
+       .down_cb = _down_cb,
+       .up_cb = _up_cb,
+       .scroll_start_cb = _scroll_start_cb,
+       .scroll_done_cb = _scroll_done_cb,
+};
+
+static inline void _scroll_hold(Evas_Object *viewer)
+{
+       int hold_count = 0;
+       retif(viewer == NULL, , "Invalid parameter!");
+
+       hold_count = elm_object_scroll_hold_get(viewer);
+
+       if (hold_count <= 0) {
+               elm_object_scroll_hold_push(viewer);
+       }
+}
+
+static inline void _scroll_unhold(Evas_Object *viewer)
+{
+       int i = 0, hold_count = 0;
+       retif(viewer == NULL, , "Invalid parameter!");
+
+       hold_count = elm_object_scroll_hold_get(viewer);
+
+       for (i = 0 ; i < hold_count; i++) {
+               elm_object_scroll_hold_pop(viewer);
+       }
+}
+
+static void _mapbuf_enable_set(Eina_Bool is_enable)
+{
+       Evas_Coord y;
+
+       if (s_info.mapbuf != NULL) {
+               elm_mapbuf_enabled_set(s_info.mapbuf, is_enable);
+       }
+
+       if (is_enable) {
+               evas_object_geometry_get(s_info.mapbuf, NULL, &y, NULL, NULL);
+               evas_object_move(s_info.view, 0, y);
+       }
+}
+
+static void _content_resize(int width, int height, const char *signal)
+{
+       struct appdata *ad = quickpanel_get_app_data();
+       retif(ad == NULL, , "invalid parameter");
+
+       if (s_info.view != NULL) {
+               elm_object_signal_emit(s_info.view, signal, "prog");
+               evas_object_size_hint_min_set(s_info.view, ELM_SCALE_SIZE(width), ELM_SCALE_SIZE(height));
+       }
+       if (s_info.layout != NULL) {
+               elm_object_signal_emit(s_info.layout, signal, "prog");
+               if (strcmp(signal, "portrait") == 0) {
+                       evas_object_size_hint_min_set(s_info.layout, ELM_SCALE_SIZE(width), ELM_SCALE_SIZE(height));
+               } else {
+                       evas_object_size_hint_min_set(s_info.layout, ELM_SCALE_SIZE(width), ELM_SCALE_SIZE(height) + (ad->scale * 100));
+               }
+
+       }
+}
+
+static int _up_cb(void *event_info, void *data)
+{
+       if (s_info.is_scroll_freezed == 0) {
+               quickpanel_page_scroll_hold_set(EINA_TRUE);
+       }
+       quickpanel_vim_set_state_ready();
+
+       return QP_OK;
+}
+
+static int _down_cb(void *event_info, void *data)
+{
+       if (s_info.is_scroll_freezed == 0) {
+               quickpanel_page_scroll_hold_set(EINA_FALSE);
+       }
+
+       return QP_OK;
+}
+
+static int _scroll_start_cb(void *event_info, void *data)
+{
+       return QP_OK;
+}
+
+static int _scroll_done_cb(void *event_info, void *data)
+{
+       quickpanel_vim_set_state_suspend();
+
+       return QP_OK;
+}
+
+static void _deleted_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+       DBG("deleted view");
+       if (s_info.view_active_buttons != NULL) {
+               quickpanel_settings_gridbox_remove(s_info.view_active_buttons);
+       }
+       if (s_info.view_reserved_buttons != NULL) {
+               quickpanel_settings_gridbox_remove(s_info.view_reserved_buttons);
+       }
+       if (s_info.view_section_2 != NULL) {
+               evas_object_del(s_info.view_section_2);
+       }
+       if (s_info.view_section_1 != NULL) {
+               evas_object_del(s_info.view_section_1);
+       }
+       if (s_info.layout != NULL) {
+               evas_object_del(s_info.layout);
+       }
+       if (s_info.scroller != NULL) {
+               evas_object_del(s_info.scroller);
+       }
+       if (s_info.view != NULL) {
+               evas_object_del(s_info.view);
+       }
+
+       s_info.mapbuf = NULL;
+       s_info.view = NULL;
+       s_info.scroller = NULL;
+       s_info.layout = NULL;
+       s_info.view_section_1 = NULL;
+       s_info.view_section_2 = NULL;
+       s_info.view_active_buttons = NULL;
+       s_info.view_reserved_buttons = NULL;
+}
+
+HAPI Evas_Object *quickpanel_page_edit_create(Evas_Object *parent, void *data)
+{
+       Evas_Object *mapbuf = NULL;
+       Evas_Object *view = NULL;
+       Evas_Object *scroller = NULL;
+       Evas_Object *layout = NULL;
+
+       retif(parent == NULL, NULL, "invalid parameter");
+
+       if (s_info.view == NULL) {
+               mapbuf = elm_mapbuf_add(parent);
+               elm_mapbuf_enabled_set(mapbuf, EINA_FALSE);
+               elm_mapbuf_smooth_set(mapbuf, EINA_FALSE);
+
+               view = quickpanel_uic_load_edj(mapbuf, DEFAULT_EDJ, "quickpanel/page_edit_base", 0);
+               retif(view == NULL, NULL, "failed to load editing layout");
+
+               scroller = elm_scroller_add(view);
+               retif(!scroller, NULL, "fail to add scroller");
+               elm_object_style_set(scroller, "list_effect");
+               elm_scroller_bounce_set(scroller, EINA_FALSE, EINA_TRUE);
+               elm_scroller_policy_set(scroller, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_OFF);
+               evas_object_size_hint_weight_set(scroller, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+               evas_object_size_hint_fill_set(scroller, EVAS_HINT_FILL, EVAS_HINT_FILL);
+               evas_object_show(scroller);
+
+               layout = quickpanel_uic_load_edj(scroller, DEFAULT_EDJ, "quickpanel/page_edit", 0);
+               retif(layout == NULL, NULL, "failed to load editing layout");
+
+               quickpanel_page_handler_set(mapbuf, &page_handler);
+               evas_object_event_callback_add(mapbuf, EVAS_CALLBACK_DEL, _deleted_cb, NULL);
+
+               elm_object_content_set(scroller, layout);
+               elm_object_part_content_set(view, "object.layout", scroller);
+
+               elm_object_content_set(mapbuf, view);
+               evas_object_show(mapbuf);
+
+               s_info.mapbuf = mapbuf;
+               s_info.view = view;
+               s_info.scroller = scroller;
+               s_info.layout = layout;
+
+               elm_object_tree_focus_allow_set(s_info.mapbuf, EINA_FALSE);
+       }
+
+       return s_info.mapbuf;
+}
+
+HAPI Evas_Object *quickpanel_page_edit_view_get(const char *view_name)
+{
+       retif(view_name == NULL, NULL, "invalid parameter");
+
+       if (strcmp(view_name, "VIEW") == 0) {
+               return s_info.view;
+       } else if (strcmp(view_name, "LAYOUT") == 0) {
+               return s_info.layout;
+       } else if (strcmp(view_name, "SECTION.1") == 0) {
+               return s_info.view_section_1;
+       } else if (strcmp(view_name, "SECTION.2") == 0) {
+               return s_info.view_section_2;
+       } else if (strcmp(view_name, "ACTIVE.BUTTONS") == 0) {
+               return s_info.view_active_buttons;
+       } else if (strcmp(view_name, "RESERVED.BUTTONS") == 0) {
+               return s_info.view_reserved_buttons;
+       }
+
+       return NULL;
+}
+
+HAPI void quickpanel_page_edit_view_set(const char *view_name, Evas_Object *view)
+{
+       retif(s_info.view == NULL, , "invalid parameter");
+       retif(s_info.layout == NULL, , "invalid parameter");
+       retif(view_name == NULL, , "invalid parameter");
+       retif(view == NULL, , "invalid parameter");
+
+       if (strcmp(view_name, "SECTION.1") == 0) {
+               elm_object_part_content_set(s_info.layout, "object.section.1", view);
+               s_info.view_section_1 = view;
+       } else if (strcmp(view_name, "SECTION.2") == 0) {
+               elm_object_part_content_set(s_info.layout, "object.section.2", view);
+               s_info.view_section_2 = view;
+       } else if (strcmp(view_name, "ACTIVE.BUTTONS") == 0) {
+               elm_object_part_content_set(s_info.layout, "object.active.buttons", view);
+               s_info.view_active_buttons = view;
+       } else if (strcmp(view_name, "RESERVED.BUTTONS") == 0) {
+               elm_object_part_content_set(s_info.layout, "object.reserved.buttons", view);
+               s_info.view_reserved_buttons = view;
+       }
+}
+
+HAPI void quickpanel_page_edit_freeze_set(Eina_Bool is_freeze)
+{
+       if (is_freeze == EINA_TRUE) {
+               s_info.is_scroll_freezed = 1;
+               quickpanel_page_scroll_freeze_set(EINA_TRUE);
+               _scroll_hold(s_info.scroller);
+       } else {
+               s_info.is_scroll_freezed = 0;
+               quickpanel_page_scroll_freeze_set(EINA_FALSE);
+               _scroll_unhold(s_info.scroller);
+       }
+}
+
+HAPI Eina_Bool quickpanel_page_edit_is_page_showed(void)
+{
+       if (quickpanel_pager_current_page_get() == PAGE_IDX_EDITING) {
+               return EINA_TRUE;
+       }
+
+       return EINA_FALSE;
+}
diff --git a/daemon/page/page_edit.h b/daemon/page/page_edit.h
new file mode 100644 (file)
index 0000000..eb6d64f
--- /dev/null
@@ -0,0 +1,31 @@
+/*
+ * 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 __QUICKPANEL_PAGE_EDIT_H__
+#define __QUICKPANEL_PAGE_EDIT_H__
+
+#include "quickpanel-ui.h"
+#include "common.h"
+
+Evas_Object *quickpanel_page_edit_create(Evas_Object *parent, void *data);
+Evas_Object *quickpanel_page_edit_view_get(const char *view_name);
+void quickpanel_page_edit_view_set(const char *view_name, Evas_Object *view);
+void quickpanel_page_edit_freeze_set(Eina_Bool is_freeze);
+Eina_Bool quickpanel_page_edit_is_page_showed(void);
+
+#endif
diff --git a/daemon/page/page_setting_all.c b/daemon/page/page_setting_all.c
new file mode 100644 (file)
index 0000000..841ea1f
--- /dev/null
@@ -0,0 +1,289 @@
+/*
+ * 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 "pager.h"
+#include "pager_common.h"
+#include "vi_manager.h"
+#include "settings_gridbox.h"
+#include "settings_view_all.h"
+#include "quickpanel_def.h"
+
+static void _mapbuf_enable_set(Eina_Bool is_enable);
+static void _content_resize(int width, int height, const char *signal);
+static int _up_cb(void *event_info, void *data);
+static int _down_cb(void *event_info, void *data);
+static int _scroll_start_cb(void *event_info, void *data);
+static int _scroll_done_cb(void *event_info, void *data);
+static int _page_changed_cb(void *event_info, void *data);
+
+static struct info {
+       int is_scroll_freezed;
+       Evas_Object *mapbuf;
+       Evas_Object *view;
+       Evas_Object *scroller;
+       Evas_Object *layout;
+       Evas_Object *view_section_1;
+       Evas_Object *view_active_buttons;
+} s_info = {
+       .is_scroll_freezed = 0,
+       .mapbuf = NULL,
+       .view = NULL,
+       .scroller = NULL,
+       .layout = NULL,
+       .view_section_1 = NULL,
+       .view_active_buttons = NULL,
+};
+
+static QP_Page_Handler page_handler  = {
+       .status = 0,
+       .name = NULL,
+
+       .mapbuf_enable_set = _mapbuf_enable_set,
+       .content_resize = _content_resize,
+       .down_cb = _down_cb,
+       .up_cb = _up_cb,
+       .scroll_start_cb = _scroll_start_cb,
+       .scroll_done_cb = _scroll_done_cb,
+       .page_changed_cb = _page_changed_cb,
+};
+
+static inline void _scroll_hold(Evas_Object *viewer)
+{
+       int hold_count = 0;
+       retif(viewer == NULL, , "Invalid parameter!");
+
+       hold_count = elm_object_scroll_hold_get(viewer);
+
+       if (hold_count <= 0) {
+               elm_object_scroll_hold_push(viewer);
+       }
+}
+
+static inline void _scroll_unhold(Evas_Object *viewer)
+{
+       int i = 0, hold_count = 0;
+       retif(viewer == NULL, , "Invalid parameter!");
+
+       hold_count = elm_object_scroll_hold_get(viewer);
+
+       for (i = 0 ; i < hold_count; i++) {
+               elm_object_scroll_hold_pop(viewer);
+       }
+}
+
+static void _mapbuf_enable_set(Eina_Bool is_enable)
+{
+       Evas_Coord y;
+
+       if (s_info.mapbuf != NULL) {
+               elm_mapbuf_enabled_set(s_info.mapbuf, is_enable);
+       }
+
+       if (is_enable) {
+               evas_object_geometry_get(s_info.mapbuf, NULL, &y, NULL, NULL);
+               evas_object_move(s_info.view, 0, y);
+       }
+}
+
+static void _content_resize(int width, int height, const char *signal)
+{
+       struct appdata *ad = quickpanel_get_app_data();
+       retif(ad == NULL, , "invalid parameter");
+
+       if (s_info.view != NULL) {
+               elm_object_signal_emit(s_info.view, signal, "prog");
+               evas_object_size_hint_min_set(s_info.view, ELM_SCALE_SIZE(width), ELM_SCALE_SIZE(height));
+       }
+       if (s_info.layout != NULL) {
+               elm_object_signal_emit(s_info.layout, signal, "prog");
+               if (strcmp(signal, "portrait") == 0) {
+                       evas_object_size_hint_min_set(s_info.layout, ELM_SCALE_SIZE(width), ELM_SCALE_SIZE(height));
+               } else {
+                       evas_object_size_hint_min_set(s_info.layout, ELM_SCALE_SIZE(width), ELM_SCALE_SIZE(height));
+               }
+       }
+}
+
+static int _up_cb(void *event_info, void *data)
+{
+       if (s_info.is_scroll_freezed == 0) {
+               quickpanel_page_scroll_hold_set(EINA_TRUE);
+       }
+
+       return QP_OK;
+}
+
+static int _down_cb(void *event_info, void *data)
+{
+       if (s_info.is_scroll_freezed == 0) {
+               quickpanel_page_scroll_hold_set(EINA_FALSE);
+       }
+
+       return QP_OK;
+}
+
+static int _scroll_start_cb(void *event_info, void *data)
+{
+       return QP_OK;
+}
+
+static int _scroll_done_cb(void *event_info, void *data)
+{
+       quickpanel_vim_set_state_suspend();
+
+       return QP_OK;
+}
+
+static int _page_changed_cb(void *event_info, void *data)
+{
+       return QP_OK;
+}
+
+static void _deleted_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+       DBG("deleted view");
+       if (s_info.view_active_buttons != NULL) {
+               quickpanel_settings_gridbox_remove(s_info.view_active_buttons);
+       }
+       if (s_info.view_section_1 != NULL) {
+               evas_object_del(s_info.view_section_1);
+       }
+       if (s_info.layout != NULL) {
+               evas_object_del(s_info.layout);
+       }
+       if (s_info.scroller != NULL) {
+               evas_object_del(s_info.scroller);
+       }
+       if (s_info.view != NULL) {
+               evas_object_del(s_info.view);
+       }
+
+       s_info.mapbuf = NULL;
+       s_info.view = NULL;
+       s_info.scroller = NULL;
+       s_info.layout = NULL;
+       s_info.view_section_1 = NULL;
+       s_info.view_active_buttons = NULL;
+}
+
+HAPI Evas_Object *quickpanel_page_setting_all_create(Evas_Object *parent, void *data)
+{
+       Evas_Object *mapbuf = NULL;
+       Evas_Object *view = NULL;
+       Evas_Object *scroller = NULL;
+       Evas_Object *layout = NULL;
+
+       retif(parent == NULL, NULL, "invalid parameter");
+
+       if (s_info.view == NULL) {
+               mapbuf = elm_mapbuf_add(parent);
+               elm_mapbuf_enabled_set(mapbuf, EINA_FALSE);
+               elm_mapbuf_smooth_set(mapbuf, EINA_FALSE);
+
+               view = quickpanel_uic_load_edj(mapbuf, DEFAULT_EDJ, "quickpanel/page_setting_all_base", 0);
+               retif(view == NULL, NULL, "failed to load editing layout");
+
+               scroller = elm_scroller_add(view);
+               retif(!scroller, NULL, "fail to add scroller");
+               elm_object_style_set(scroller, "list_effect");
+               elm_scroller_bounce_set(scroller, EINA_FALSE, EINA_TRUE);
+               elm_scroller_policy_set(scroller, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_OFF);
+               evas_object_size_hint_weight_set(scroller, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+               evas_object_size_hint_fill_set(scroller, EVAS_HINT_FILL, EVAS_HINT_FILL);
+               evas_object_show(scroller);
+
+               layout = quickpanel_uic_load_edj(scroller, DEFAULT_EDJ, "quickpanel/page_setting_all", 0);
+               retif(layout == NULL, NULL, "failed to load editing layout");
+
+               quickpanel_page_handler_set(mapbuf, &page_handler);
+               evas_object_event_callback_add(mapbuf, EVAS_CALLBACK_DEL, _deleted_cb, NULL);
+
+               elm_object_content_set(scroller, layout);
+               elm_object_part_content_set(view, "object.layout", scroller);
+
+               elm_object_content_set(mapbuf, view);
+               evas_object_show(mapbuf);
+
+               s_info.mapbuf = mapbuf;
+               s_info.view = view;
+               s_info.scroller = scroller;
+               s_info.layout = layout;
+       }
+
+       return s_info.mapbuf;
+}
+
+HAPI Evas_Object *quickpanel_page_setting_all_view_get(const char *view_name)
+{
+       retif(view_name == NULL, NULL, "invalid parameter");
+
+       if (strcmp(view_name, "VIEW") == 0) {
+               return s_info.view;
+       } else if (strcmp(view_name, "LAYOUT") == 0) {
+               return s_info.layout;
+       } else if (strcmp(view_name, "SECTION.1") == 0) {
+               return s_info.view_section_1;
+       } else if (strcmp(view_name, "ACTIVE.BUTTONS") == 0) {
+               return s_info.view_active_buttons;
+       }
+
+       return NULL;
+}
+
+HAPI void quickpanel_page_setting_all_view_set(const char *view_name, Evas_Object *view)
+{
+       retif(s_info.view == NULL, , "invalid parameter");
+       retif(s_info.layout == NULL, , "invalid parameter");
+       retif(view_name == NULL, , "invalid parameter");
+       retif(view == NULL, , "invalid parameter");
+
+       if (strcmp(view_name, "SECTION.1") == 0) {
+               elm_object_part_content_set(s_info.layout, "object.section.1", view);
+               s_info.view_section_1 = view;
+       } else if (strcmp(view_name, "ACTIVE.BUTTONS") == 0) {
+               elm_object_part_content_set(s_info.layout, "object.active.buttons", view);
+               s_info.view_active_buttons = view;
+       }
+}
+
+HAPI void quickpanel_page_setting_all_freeze_set(Eina_Bool is_freeze)
+{
+       if (is_freeze == EINA_TRUE) {
+               s_info.is_scroll_freezed = 1;
+               quickpanel_page_scroll_freeze_set(EINA_TRUE);
+               _scroll_hold(s_info.scroller);
+       } else {
+               s_info.is_scroll_freezed = 0;
+               quickpanel_page_scroll_freeze_set(EINA_FALSE);
+               _scroll_unhold(s_info.scroller);
+       }
+}
+
+HAPI Eina_Bool quickpanel_page_setting_all_is_page_showed(void)
+{
+       if (quickpanel_pager_current_page_get() == PAGE_IDX_EDITING) {
+               return EINA_TRUE;
+       }
+
+       return EINA_FALSE;
+}
+
+HAPI void quickpanel_page_setting_all_focus_allow_set(Eina_Bool is_enable)
+{
+       elm_object_tree_focus_allow_set(s_info.mapbuf, is_enable);
+}
diff --git a/daemon/page/page_setting_all.h b/daemon/page/page_setting_all.h
new file mode 100644 (file)
index 0000000..9096ef0
--- /dev/null
@@ -0,0 +1,32 @@
+/*
+ * 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 __QUICKPANEL_PAGE_SETTING_ALL_H__
+#define __QUICKPANEL_PAGE_SETTING_ALL_H__
+
+#include "quickpanel-ui.h"
+#include "common.h"
+
+Evas_Object *quickpanel_page_setting_all_create(Evas_Object *parent, void *data);
+Evas_Object *quickpanel_page_setting_all_view_get(const char *view_name);
+void quickpanel_page_setting_all_view_set(const char *view_name, Evas_Object *view);
+void quickpanel_page_setting_all_freeze_set(Eina_Bool is_freeze);
+Eina_Bool quickpanel_page_setting_all_is_page_showed(void);
+void quickpanel_page_setting_all_focus_allow_set(Eina_Bool is_enable);
+
+#endif
diff --git a/daemon/page/pager.c b/daemon/page/pager.c
new file mode 100644 (file)
index 0000000..7ce9540
--- /dev/null
@@ -0,0 +1,559 @@
+/*
+ * 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 "pager.h"
+#include "pager_common.h"
+#include "quickpanel_def.h"
+
+static int _init(void *data);
+static void _init_job_cb(void *data);
+static int _fini(void *data);
+static int _resume(void *data);
+static void _opened(void *data);
+static void _closed(void *data);
+static void _refresh(void *data);
+static inline void _page_mapbuf_enable_set(Evas_Object *box, int is_enable);
+
+#define ENABLE_MAPBUF 0
+
+typedef enum _qp_pager_state_type {
+       PAGER_STATE_NOT_READY = 0,
+       PAGER_STATE_IDLE,
+       PAGER_STATE_WILL_SCROLL,
+       PAGER_STATE_SCROLLING,
+       PAGER_STATE_FINISHED_SCROLLING,
+} qp_pager_state_type;
+
+QP_Module pager = {
+       .name = "pager",
+       .init = _init,
+       .init_job_cb = _init_job_cb,
+       .fini = _fini,
+       .resume = _resume,
+       .qp_opened = _opened,
+       .qp_closed = _closed,
+       .refresh = _refresh,
+};
+
+static struct info {
+       qp_pager_state_type state;
+       int last_page;
+       int is_in_edge;
+
+       Evas_Object *view_scroller;
+       Evas_Object *view_box;
+
+       Ecore_Event_Handler *hdl_move;
+       Ecore_Event_Handler *hdl_up;
+       Ecore_Event_Handler *hdl_down;
+
+       Ecore_Timer *timer_scroll_adj;
+
+       int scroll_start_from;
+} s_info = {
+       .state = PAGER_STATE_NOT_READY,
+       .last_page = PAGE_IDX_MAIN,
+       .is_in_edge = 0,
+
+       .view_scroller = NULL,
+       .view_box = NULL,
+
+       .hdl_move = NULL,
+       .hdl_up = NULL,
+       .hdl_down = NULL,
+
+       .timer_scroll_adj = NULL,
+
+       .scroll_start_from = -1,
+};
+
+static inline void _set_state(qp_pager_state_type state)
+{
+       if (state == PAGER_STATE_IDLE) {
+               _page_mapbuf_enable_set(s_info.view_box, 0);
+       } else  if (state == PAGER_STATE_WILL_SCROLL || state == PAGER_STATE_SCROLLING) {
+               _page_mapbuf_enable_set(s_info.view_box, 1);
+       }
+       s_info.state = state;
+}
+
+static inline qp_pager_state_type _get_state(void)
+{
+       return s_info.state;
+}
+
+static inline int _last_page_get(void)
+{
+       return s_info.last_page;
+}
+
+static inline void _page_show(int page_index)
+{
+       elm_scroller_page_show(s_info.view_scroller, page_index, 0);
+       s_info.last_page = page_index;
+}
+
+static Eina_Bool _page_adjust_timer_cb(void *data)
+{
+       int index = 0;
+
+       if (s_info.timer_scroll_adj != NULL) {
+               ecore_timer_del(s_info.timer_scroll_adj);
+               s_info.timer_scroll_adj = NULL;
+       }
+
+       elm_scroller_current_page_get(s_info.view_scroller, &index, NULL);
+       elm_scroller_page_bring_in(s_info.view_scroller, index, 0);
+       s_info.last_page = index;
+
+       return ECORE_CALLBACK_CANCEL;
+}
+
+static inline void _page_adjust(int is_use_timer)
+{
+       if (s_info.timer_scroll_adj != NULL) {
+               ecore_timer_del(s_info.timer_scroll_adj);
+               s_info.timer_scroll_adj = NULL;
+       }
+
+       if (is_use_timer) {
+               s_info.timer_scroll_adj = ecore_timer_add(0.1, _page_adjust_timer_cb, NULL);
+       } else {
+               _page_adjust_timer_cb(NULL);
+       }
+}
+
+static inline int _current_page_index_get(void)
+{
+       int index = 0;
+
+       elm_scroller_current_page_get(s_info.view_scroller, &index, NULL);
+
+       return index;
+}
+
+static inline Evas_Object *_current_page_get(void)
+{
+       int index = 0;
+       int list_cnt = 0;
+       Eina_List *list = NULL;
+       static int last_page = -1;
+       Evas_Object *obj = NULL;
+
+       elm_scroller_current_page_get(s_info.view_scroller, &index, NULL);
+
+       if (last_page != index) {
+               DBG("current selected page:%d", index);
+               last_page = index;
+       }
+
+       list = elm_box_children_get(s_info.view_box);
+       if (list != NULL) {
+               list_cnt = eina_list_count(list);
+
+               if (index < list_cnt) {
+                       obj = (Evas_Object *)eina_list_nth(list, index);
+               }
+               eina_list_free(list);
+       }
+
+       return obj;
+}
+
+#if ENABLE_MAPBUF
+static void _mapbuf_job_cb(void *data)
+{
+       Eina_List *list = NULL;
+       Eina_List *l;
+       Eina_List *l_next;
+       Evas_Object *box = s_info.view_box;
+       Evas_Object *item = NULL;
+       int is_enable = (int)data;
+       QP_Page_Handler *page_handler = NULL;
+       retif(box == NULL, , "invalid parameter");
+
+       list = elm_box_children_get(box);
+       retif(list == NULL, , "empty box");
+
+       SDBG("mapbuf enable:%d", is_enable);
+
+       EINA_LIST_FOREACH_SAFE(list, l, l_next, item) {
+               page_handler = quickpanel_page_handler_get(item);
+               if (page_handler != NULL) {
+                       if (page_handler->mapbuf_enable_set != NULL) {
+                               if (elm_config_access_get() == EINA_FALSE) {
+                                       if (is_enable == 1) {
+                                               page_handler->mapbuf_enable_set(EINA_TRUE);
+                                       } else {
+                                               page_handler->mapbuf_enable_set(EINA_FALSE);
+                                       }
+                               } else {
+                                       page_handler->mapbuf_enable_set(EINA_FALSE);
+                               }
+                       }
+               }
+       }
+
+       eina_list_free(list);
+}
+#endif
+
+static inline void _page_mapbuf_enable_set(Evas_Object *box, int is_enable)
+{
+#if ENABLE_MAPBUF
+       ecore_job_add(_mapbuf_job_cb, (void *)is_enable);
+#endif
+}
+
+static inline void _page_resize(Evas_Object *box, int width, int height, const char *signal)
+{
+       Eina_List *list = NULL;
+       Eina_List *l;
+       Eina_List *l_next;
+       Evas_Object *item = NULL;
+       QP_Page_Handler *page_handler = NULL;
+       retif(box == NULL, , "invalid parameter");
+
+       list = elm_box_children_get(box);
+       retif(list == NULL, , "empty box");
+
+       EINA_LIST_FOREACH_SAFE(list, l, l_next, item) {
+               page_handler = quickpanel_page_handler_get(item);
+
+               if (page_handler != NULL) {
+                       if (page_handler->content_resize != NULL) {
+                               page_handler->content_resize(width, height, signal);
+                       }
+               }
+       }
+
+       eina_list_free(list);
+}
+
+static inline void _page_rotation(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       retif(ad == NULL, , "Invalid parameter!");
+
+       if (ad->angle == 90 || ad->angle == 270) {
+               _page_resize(s_info.view_box, ad->win_height, ad->win_width - ELM_SCALE_SIZE((QP_DATE_H + QP_HANDLE_H)), "landscape");
+       } else {
+               _page_resize(s_info.view_box, ad->win_width, ad->win_height - ELM_SCALE_SIZE((QP_DATE_H + QP_HANDLE_H)), "portrait");
+       }
+}
+
+static Eina_Bool _up_cb(void *data, int type, void *event)
+{
+       Evas_Object *page = _current_page_get();
+       QP_Page_Handler *page_handler = NULL;
+       retif(page == NULL, EINA_FALSE, "Invalid parameter!");
+
+       if (_get_state() == PAGER_STATE_WILL_SCROLL) {
+               _set_state(PAGER_STATE_SCROLLING);
+               _page_adjust(1);
+       }
+
+       page_handler = quickpanel_page_handler_get(page);
+       retif(page_handler == NULL, EINA_FALSE, "no page handler found");
+
+       if (page_handler->up_cb != NULL) {
+               page_handler->up_cb(event, NULL);
+       }
+
+       if (_get_state() == PAGER_STATE_SCROLLING) {
+               _page_adjust(1);
+       }
+
+       return EINA_TRUE;
+}
+
+static Eina_Bool _down_cb(void *data, int type, void *event)
+{
+       Evas_Object *page = _current_page_get();
+       QP_Page_Handler *page_handler = NULL;
+       retif(page == NULL, EINA_FALSE, "Invalid parameter!");
+
+       page_handler = quickpanel_page_handler_get(page);
+       retif(page_handler == NULL, EINA_FALSE, "no page handler found");
+
+       if (page_handler->down_cb != NULL) {
+               page_handler->down_cb(event, NULL);
+       }
+
+       return EINA_TRUE;
+}
+
+static void _scroller_anim_start_cb(void *data, Evas_Object *scroller, void *event_info)
+{
+       Evas_Object *page = _current_page_get();
+       QP_Page_Handler *page_handler = NULL;
+       retif(page == NULL, , "Invalid parameter!");
+
+       s_info.scroll_start_from = _current_page_index_get();
+
+       if (_get_state() == PAGER_STATE_IDLE) {
+               _set_state(PAGER_STATE_WILL_SCROLL);
+
+               page_handler = quickpanel_page_handler_get(page);
+               retif(page_handler == NULL, , "no page handler found");
+
+               if (page_handler->scroll_start_cb != NULL) {
+                       page_handler->scroll_start_cb(event_info, NULL);
+               }
+       }
+}
+
+static void _scroller_anim_stop_cb(void *data, Evas_Object *scroller, void *event_info)
+{
+       Evas_Object *page = _current_page_get();
+       QP_Page_Handler *page_handler = NULL;
+       retif(page == NULL, , "Invalid parameter!");
+
+       if (s_info.is_in_edge == 1 || _get_state() == PAGER_STATE_FINISHED_SCROLLING) {
+               _set_state(PAGER_STATE_IDLE);
+
+               page_handler = quickpanel_page_handler_get(page);
+               retif(page_handler == NULL, , "no page handler found");
+
+               if (page_handler->scroll_done_cb != NULL) {
+                       page_handler->scroll_done_cb(event_info, NULL);
+               }
+
+               _page_mapbuf_enable_set(s_info.view_box, 0);
+       }
+}
+
+static void _scroller_edge_cb(void *data, Evas_Object *scroller, void *event_info)
+{
+       if (_get_state() == PAGER_STATE_WILL_SCROLL
+                       || _get_state() == PAGER_STATE_SCROLLING) {
+               _set_state(PAGER_STATE_FINISHED_SCROLLING);
+               s_info.is_in_edge = 1;
+               _page_adjust(0);
+       }
+}
+
+static void _scroller_scroll_cb(void *data, Evas_Object *scroller, void *event_info)
+{
+       s_info.is_in_edge = 0;
+}
+
+/*****************************************************************************
+ *
+ * Util functions
+ *
+ *****************************************************************************/
+static int _init(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       retif(ad == NULL, QP_FAIL, "Invalid parameter!");
+       retif(s_info.view_scroller == NULL, QP_FAIL, "Invalid parameter!");
+
+       s_info.hdl_up = ecore_event_handler_add(ECORE_EVENT_MOUSE_BUTTON_UP, _up_cb
+                       , s_info.view_scroller);
+       s_info.hdl_down = ecore_event_handler_add(ECORE_EVENT_MOUSE_BUTTON_DOWN, _down_cb
+                       , s_info.view_scroller);
+
+       evas_object_smart_callback_add(s_info.view_scroller, "scroll,drag,start",
+                       _scroller_anim_start_cb, s_info.view_scroller);
+       evas_object_smart_callback_add(s_info.view_scroller, "scroll,anim,stop",
+                       _scroller_anim_stop_cb, s_info.view_scroller);
+       evas_object_smart_callback_add(s_info.view_scroller, "scroll,drag,stop",
+                       _scroller_anim_stop_cb, s_info.view_scroller);
+       evas_object_smart_callback_add(s_info.view_scroller, "scroll",
+                       _scroller_scroll_cb, s_info.view_scroller);
+
+       evas_object_smart_callback_add(s_info.view_scroller, "edge,left",
+                       _scroller_edge_cb, s_info.view_scroller);
+       evas_object_smart_callback_add(s_info.view_scroller, "edge,right",
+                       _scroller_edge_cb, s_info.view_scroller);
+
+       _set_state(PAGER_STATE_IDLE);
+
+       return QP_OK;
+}
+
+static void _init_job_cb(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       retif(ad == NULL, , "Invalid parameter!");
+       retif(s_info.view_scroller == NULL, , "Invalid parameter!");
+
+       _page_rotation(ad);
+
+       _page_show(PAGE_IDX_MAIN);
+       evas_object_show(s_info.view_scroller);
+}
+
+static int _fini(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       retif(ad == NULL, QP_FAIL, "Invalid parameter!");
+
+       if (s_info.hdl_up != NULL) {
+               ecore_event_handler_del(s_info.hdl_up);
+       }
+       if (s_info.hdl_down != NULL) {
+               ecore_event_handler_del(s_info.hdl_down);
+       }
+
+       return QP_OK;
+}
+
+static int _resume(void *data)
+{
+       struct appdata *ad = data;
+       retif(ad == NULL, QP_FAIL, "Invalid parameter!");
+
+       return QP_OK;
+}
+
+static void _opened(void *data)
+{
+       struct appdata *ad = data;
+       retif(ad == NULL, , "Invalid parameter!");
+
+       _page_mapbuf_enable_set(s_info.view_box, 0);
+
+       quickpanel_page_editing_icon_visible_status_update();
+}
+
+static void _closed(void *data)
+{
+       struct appdata *ad = data;
+       retif(ad == NULL, , "Invalid parameter!");
+       retif(s_info.view_scroller == NULL, , "Invalid parameter!");
+
+       _page_show(PAGE_IDX_MAIN);
+       _page_mapbuf_enable_set(s_info.view_box, 0);
+
+       quickpanel_page_editing_icon_visible_status_update();
+}
+
+static void _refresh(void *data) {
+       struct appdata *ad = data;
+       retif(ad == NULL, , "Invalid parameter!");
+       retif(s_info.view_box == NULL, , "Invalid parameter!");
+       retif(s_info.view_scroller == NULL, , "Invalid parameter!");
+
+       _page_rotation(ad);
+}
+
+static void _scroller_resized_cb(void *data, Evas * e,
+       Evas_Object * obj, void *event_info)
+{
+       _page_show(PAGE_IDX_MAIN);
+       evas_object_event_callback_del(s_info.view_scroller, EVAS_CALLBACK_RESIZE, _scroller_resized_cb);
+}
+
+HAPI Evas_Object *quickpanel_pager_new(Evas_Object *parent, void *data)
+{
+       Evas_Object *box = NULL;
+       Evas_Object *scroller = NULL;
+
+       retif(parent == NULL, NULL, "failed to memory allocation");
+
+       if (s_info.view_scroller != NULL && s_info.view_box != NULL) {
+               return s_info.view_scroller;
+       }
+
+       scroller = elm_scroller_add(parent);
+       retif(!scroller, NULL, "fail to add scroller");
+       elm_scroller_bounce_set(scroller, EINA_TRUE, EINA_TRUE);
+       elm_scroller_propagate_events_set(scroller, EINA_FALSE);
+       elm_scroller_policy_set(scroller, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_OFF);
+       evas_object_size_hint_weight_set(scroller, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_fill_set(scroller, EVAS_HINT_FILL, EVAS_HINT_FILL);
+       elm_scroller_page_relative_set (scroller, 1.0, 0.0);
+
+       box = elm_box_add(scroller);
+       if (!box) {
+               ERR("fail to add box");
+               if (scroller != NULL) {
+                       evas_object_del(scroller);
+                       scroller = NULL;
+               }
+               return EINA_FALSE;
+       }
+       evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_fill_set(box, EVAS_HINT_FILL, EVAS_HINT_FILL);
+       elm_box_horizontal_set(box, EINA_TRUE);
+       evas_object_show(box);
+
+       elm_object_content_set(scroller, box);
+
+       s_info.view_scroller = scroller;
+       s_info.view_box = box;
+
+       evas_object_event_callback_add(s_info.view_scroller, EVAS_CALLBACK_RESIZE, _scroller_resized_cb, NULL);
+
+       return scroller;
+}
+
+HAPI void quickpanel_pager_destroy(void)
+{
+       if (s_info.view_box != NULL) {
+               elm_box_unpack_all(s_info.view_box);
+               evas_object_del(s_info.view_box);
+               s_info.view_box = NULL;
+       }
+       if (s_info.view_scroller != NULL) {
+               evas_object_del(s_info.view_scroller);
+               s_info.view_scroller = NULL;
+       }
+}
+
+HAPI Evas_Object *quickpanel_pager_view_get(const char *view_name)
+{
+       retif(view_name == NULL, NULL, "invalid parameter");
+
+       if (strcmp(view_name, "SCROLLER") == 0) {
+               return s_info.view_scroller;
+       } else if (strcmp(view_name, "BOX") == 0) {
+               return s_info.view_box;
+       }
+
+       return NULL;
+}
+
+HAPI int quickpanel_pager_current_page_get(void)
+{
+       int index = 0;
+
+       elm_scroller_current_page_get(s_info.view_scroller, &index, NULL);
+
+       return index;
+}
+
+HAPI void quickpanel_pager_page_set(int page_index, int need_resize)
+{
+       struct appdata *ad = quickpanel_get_app_data();
+       retif(ad == NULL, , "invalid parameter");
+
+       if (need_resize) {
+               _page_rotation(ad);
+       }
+       _page_show(page_index);
+
+       evas_object_show(s_info.view_scroller);
+}
+
+HAPI void quickpanel_pager_mapbuf_set(int is_enable)
+{
+       _page_mapbuf_enable_set(s_info.view_box, is_enable);
+}
diff --git a/daemon/page/pager.h b/daemon/page/pager.h
new file mode 100644 (file)
index 0000000..67de49b
--- /dev/null
@@ -0,0 +1,51 @@
+/*
+ * 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 __QUICKPANEL_PAGER_H__
+#define __QUICKPANEL_PAGER_H__
+
+#include "quickpanel-ui.h"
+#include "common.h"
+
+typedef struct _QP_Page_Handler {
+       int status;
+       char *name;
+       /* func */
+       void (*content_resize) (int width, int height, const char *signal);
+       void (*mapbuf_enable_set) (Eina_Bool is_enable);
+       int (*down_cb) (void *, void *);
+       int (*move_cb) (void *, void *);
+       int (*up_cb) (void *, void *);
+       int (*scroll_start_cb) (void *, void *);
+       int (*scroll_done_cb) (void *, void *);
+       int (*page_changed_cb) (void *, void *);
+} QP_Page_Handler;
+
+typedef enum _qp_pager_page_type {
+       PAGE_IDX_MAIN = 0,
+       PAGE_IDX_EDITING,       // Not supported
+} qp_pager_page_type;
+
+Evas_Object *quickpanel_pager_new(Evas_Object *parent, void *data);
+void quickpanel_pager_destroy(void);
+Evas_Object *quickpanel_pager_view_get(const char *view_name);
+int quickpanel_pager_current_page_get(void);
+void quickpanel_pager_page_set(int page_index, int need_resize);
+void quickpanel_pager_mapbuf_set(int is_enable);
+
+#endif
diff --git a/daemon/page/pager_common.c b/daemon/page/pager_common.c
new file mode 100644 (file)
index 0000000..1c2bfff
--- /dev/null
@@ -0,0 +1,190 @@
+/*
+ * 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 "pager.h"
+#include "datetime.h"
+
+#define EVAS_DATA_PAGE_HANDLER "page_handler"
+
+static inline void _scroll_hold(Evas_Object *viewer)
+{
+       int hold_count = 0;
+       retif(viewer == NULL, , "Invalid parameter!");
+
+       hold_count = elm_object_scroll_hold_get(viewer);
+
+       if (hold_count <= 0) {
+               elm_object_scroll_hold_push(viewer);
+       }
+}
+
+static inline void _scroll_unhold(Evas_Object *viewer)
+{
+       int i = 0, hold_count = 0;
+       retif(viewer == NULL, , "Invalid parameter!");
+
+       hold_count = elm_object_scroll_hold_get(viewer);
+
+       for (i = 0 ; i < hold_count; i++) {
+               elm_object_scroll_hold_pop(viewer);
+       }
+}
+
+static inline void _scroll_freeze(Evas_Object *viewer)
+{
+       int freezed_count = 0;
+       retif(viewer == NULL, , "Invalid parameter!");
+
+       freezed_count = elm_object_scroll_freeze_get(viewer);
+
+       if (freezed_count <= 0) {
+               elm_object_scroll_freeze_push(viewer);
+       }
+}
+
+static inline void _scroll_unfreeze(Evas_Object *viewer)
+{
+       int i = 0, freezed_count = 0;
+       retif(viewer == NULL, , "Invalid parameter!");
+
+       freezed_count = elm_object_scroll_freeze_get(viewer);
+
+       for (i = 0 ; i < freezed_count; i++) {
+               elm_object_scroll_freeze_pop(viewer);
+       }
+}
+
+HAPI void quickpanel_page_handler_set(Evas_Object *page, QP_Page_Handler *handler)
+{
+       retif(page == NULL, , "invalid parameter");
+
+       evas_object_data_set(page, EVAS_DATA_PAGE_HANDLER, handler);
+}
+
+HAPI QP_Page_Handler *quickpanel_page_handler_get(Evas_Object *page)
+{
+       retif(page == NULL, NULL, "invalid parameter");
+
+       return evas_object_data_get(page, EVAS_DATA_PAGE_HANDLER);
+}
+
+HAPI void quickpanel_page_scroll_freeze_set(Eina_Bool is_freeze)
+{
+       Evas_Object *pager_scroller = quickpanel_pager_view_get("SCROLLER");
+       retif(pager_scroller == NULL, , "pager null");
+
+       if (is_freeze) {
+               _scroll_freeze(pager_scroller);
+       } else {
+               _scroll_unfreeze(pager_scroller);
+       }
+}
+
+HAPI void quickpanel_page_scroll_hold_set(Eina_Bool is_freeze)
+{
+       Evas_Object *pager_scroller = quickpanel_pager_view_get("SCROLLER");
+       retif(pager_scroller == NULL, , "pager null");
+
+       if (is_freeze) {
+               _scroll_hold(pager_scroller);
+       } else {
+               _scroll_unhold(pager_scroller);
+       }
+}
+
+HAPI void quickpanel_page_get_recoordinated_pos(int local_x, int local_y, int *x, int *y)
+{
+       int rot_x = 0;
+       int rot_y = 0;
+       int width = 0;
+       int height = 0;
+       retif(x == NULL && y == NULL, , "invalid parameter");
+
+       struct appdata *ad = quickpanel_get_app_data();
+       retif(ad == NULL, , "invalid parameter");
+
+       //ecore_x_window_size_get(ecore_x_window_root_first_get(), &width, &height);
+       elm_win_screen_size_get(ad->win, NULL, NULL, &width, &height);
+       
+       switch (ad->angle) {
+       case 0:
+               rot_x = local_x;
+               rot_y = local_y;
+               break;
+       case 90:
+               rot_x = height - local_y;
+               rot_y = local_x;
+               break;
+       case 180:
+               rot_x = width - local_x;
+               rot_y = height - local_y;
+               break;
+       case 270:
+               rot_x = local_y;
+               rot_y = width - local_x;
+               break;
+       default:
+               break;
+       }
+
+       if (x != NULL) {
+               *x = rot_x;
+       }
+
+       if (y != NULL) {
+               *y = rot_y;
+       }
+}
+
+HAPI void quickpanel_page_get_touched_pos(int *x, int *y)
+{
+       int rot_x = 0;
+       int rot_y = 0;
+       int local_x = 0;
+       int local_y = 0;
+       retif(x == NULL && y == NULL, , "invalid parameter");
+
+       struct appdata *ad = quickpanel_get_app_data();
+       retif(ad == NULL, , "invalid parameter");
+#ifdef HAVE_X
+       ecore_x_pointer_last_xy_get(&local_x, &local_y);
+#endif
+       quickpanel_page_get_recoordinated_pos(local_x, local_y, &rot_x, &rot_y);
+
+       if (x != NULL) {
+               *x = rot_x;
+       }
+
+       if (y != NULL) {
+               *y = rot_y;
+       }
+}
+
+HAPI void quickpanel_page_editing_icon_visible_status_update(void)
+{
+       int is_visible = 0;
+       struct appdata *ad = quickpanel_get_app_data();
+       retif(ad == NULL, , "invalid parameter");
+
+       if (quickpanel_pager_current_page_get() == PAGE_IDX_EDITING) {
+               is_visible = 1;
+       } else {
+               is_visible = 0;
+       }
+
+       quickpanel_datetime_editing_icon_visibility_set(is_visible);
+}
\ No newline at end of file
diff --git a/daemon/page/pager_common.h b/daemon/page/pager_common.h
new file mode 100644 (file)
index 0000000..51cb7b0
--- /dev/null
@@ -0,0 +1,34 @@
+/*
+ * 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 __QUICKPANEL_PAGER_COMMON_H__
+#define __QUICKPANEL_PAGER_COMMON_H__
+
+#include "quickpanel-ui.h"
+#include "common.h"
+#include "pager.h"
+
+void quickpanel_page_handler_set(Evas_Object *page, QP_Page_Handler *handler);
+QP_Page_Handler *quickpanel_page_handler_get(Evas_Object *page);
+void quickpanel_page_scroll_hold_set(Eina_Bool is_freeze);
+void quickpanel_page_scroll_freeze_set(Eina_Bool is_freeze);
+void quickpanel_page_get_touched_pos(int *x, int *y);
+void quickpanel_page_get_recoordinated_pos(int local_x, int local_y, int *x, int *y);
+void quickpanel_page_editing_icon_visible_status_update(void);
+
+#endif
diff --git a/daemon/page/pager_common_x11.c b/daemon/page/pager_common_x11.c
new file mode 100644 (file)
index 0000000..f238f5e
--- /dev/null
@@ -0,0 +1,189 @@
+/*
+ * 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 "pager.h"
+#include "datetime.h"
+
+#define EVAS_DATA_PAGE_HANDLER "page_handler"
+
+static inline void _scroll_hold(Evas_Object *viewer)
+{
+       int hold_count = 0;
+       retif(viewer == NULL, , "Invalid parameter!");
+
+       hold_count = elm_object_scroll_hold_get(viewer);
+
+       if (hold_count <= 0) {
+               elm_object_scroll_hold_push(viewer);
+       }
+}
+
+static inline void _scroll_unhold(Evas_Object *viewer)
+{
+       int i = 0, hold_count = 0;
+       retif(viewer == NULL, , "Invalid parameter!");
+
+       hold_count = elm_object_scroll_hold_get(viewer);
+
+       for (i = 0 ; i < hold_count; i++) {
+               elm_object_scroll_hold_pop(viewer);
+       }
+}
+
+static inline void _scroll_freeze(Evas_Object *viewer)
+{
+       int freezed_count = 0;
+       retif(viewer == NULL, , "Invalid parameter!");
+
+       freezed_count = elm_object_scroll_freeze_get(viewer);
+
+       if (freezed_count <= 0) {
+               elm_object_scroll_freeze_push(viewer);
+       }
+}
+
+static inline void _scroll_unfreeze(Evas_Object *viewer)
+{
+       int i = 0, freezed_count = 0;
+       retif(viewer == NULL, , "Invalid parameter!");
+
+       freezed_count = elm_object_scroll_freeze_get(viewer);
+
+       for (i = 0 ; i < freezed_count; i++) {
+               elm_object_scroll_freeze_pop(viewer);
+       }
+}
+
+HAPI void quickpanel_page_handler_set(Evas_Object *page, QP_Page_Handler *handler)
+{
+       retif(page == NULL, , "invalid parameter");
+
+       evas_object_data_set(page, EVAS_DATA_PAGE_HANDLER, handler);
+}
+
+HAPI QP_Page_Handler *quickpanel_page_handler_get(Evas_Object *page)
+{
+       retif(page == NULL, NULL, "invalid parameter");
+
+       return evas_object_data_get(page, EVAS_DATA_PAGE_HANDLER);
+}
+
+HAPI void quickpanel_page_scroll_freeze_set(Eina_Bool is_freeze)
+{
+       Evas_Object *pager_scroller = quickpanel_pager_view_get("SCROLLER");
+       retif(pager_scroller == NULL, , "pager null");
+
+       if (is_freeze) {
+               _scroll_freeze(pager_scroller);
+       } else {
+               _scroll_unfreeze(pager_scroller);
+       }
+}
+
+HAPI void quickpanel_page_scroll_hold_set(Eina_Bool is_freeze)
+{
+       Evas_Object *pager_scroller = quickpanel_pager_view_get("SCROLLER");
+       retif(pager_scroller == NULL, , "pager null");
+
+       if (is_freeze) {
+               _scroll_hold(pager_scroller);
+       } else {
+               _scroll_unhold(pager_scroller);
+       }
+}
+
+HAPI void quickpanel_page_get_recoordinated_pos(int local_x, int local_y, int *x, int *y)
+{
+       int rot_x = 0;
+       int rot_y = 0;
+       int width = 0;
+       int height = 0;
+       retif(x == NULL && y == NULL, , "invalid parameter");
+
+       struct appdata *ad = quickpanel_get_app_data();
+       retif(ad == NULL, , "invalid parameter");
+
+       //ecore_x_window_size_get(ecore_x_window_root_first_get(), &width, &height);
+       elm_win_screen_size_get(ad->win, NULL, NULL, &width, &height);
+       
+       switch (ad->angle) {
+       case 0:
+               rot_x = local_x;
+               rot_y = local_y;
+               break;
+       case 90:
+               rot_x = height - local_y;
+               rot_y = local_x;
+               break;
+       case 180:
+               rot_x = width - local_x;
+               rot_y = height - local_y;
+               break;
+       case 270:
+               rot_x = local_y;
+               rot_y = width - local_x;
+               break;
+       default:
+               break;
+       }
+
+       if (x != NULL) {
+               *x = rot_x;
+       }
+
+       if (y != NULL) {
+               *y = rot_y;
+       }
+}
+
+HAPI void quickpanel_page_get_touched_pos(int *x, int *y)
+{
+       int rot_x = 0;
+       int rot_y = 0;
+       int local_x = 0;
+       int local_y = 0;
+       retif(x == NULL && y == NULL, , "invalid parameter");
+
+       struct appdata *ad = quickpanel_get_app_data();
+       retif(ad == NULL, , "invalid parameter");
+
+       ecore_x_pointer_last_xy_get(&local_x, &local_y);
+       quickpanel_page_get_recoordinated_pos(local_x, local_y, &rot_x, &rot_y);
+
+       if (x != NULL) {
+               *x = rot_x;
+       }
+
+       if (y != NULL) {
+               *y = rot_y;
+       }
+}
+
+HAPI void quickpanel_page_editing_icon_visible_status_update(void)
+{
+       int is_visible = 0;
+       struct appdata *ad = quickpanel_get_app_data();
+       retif(ad == NULL, , "invalid parameter");
+
+       if (quickpanel_pager_current_page_get() == PAGE_IDX_EDITING) {
+               is_visible = 1;
+       } else {
+               is_visible = 0;
+       }
+
+       quickpanel_datetime_editing_icon_visibility_set(is_visible);
+}
\ No newline at end of file
diff --git a/daemon/preference.c b/daemon/preference.c
new file mode 100644 (file)
index 0000000..b6461b9
--- /dev/null
@@ -0,0 +1,183 @@
+/*
+ * 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 <stdio.h>
+#include <fcntl.h>
+#include <unistd.h>
+#include <iniparser.h>
+#include "preference.h"
+#include "common.h"
+#include "quickpanel-ui.h"
+
+#define FILE_PREFERENCE DATADIR_RW"/preference.ini"
+
+static const char *_default_preference_get(const char *key)
+{
+       retif(key == NULL, NULL, "invalid parameter");
+
+       if (strcmp(key, PREF_BRIGHTNESS) == 0) {
+               return "OFF";
+       } else if (strcmp(key, PREF_QUICKSETTING_ORDER) == 0){
+               return "wifi,gps,sound,rotate,bluetooth,mobile_data,assisitvelight,u_power_saving,wifi_hotspot,flightmode";
+       } else if (strcmp(key, PREF_QUICKSETTING_FEATURED_NUM) == 0){
+               return "11";
+       } else if (strcmp(key, PREF_SHORTCUT_ENABLE) == 0){
+               return "ON";
+       } else if (strcmp(key, PREF_SHORTCUT_EARPHONE_ORDER) == 0){
+               return "org.tizen.music-player,org.tizen.videos,org.tizen.phone,srfxzv8GKR.YouTube,org.tizen.voicerecorder";
+       }
+
+       return NULL;
+}
+
+static inline int _key_validation_check(const char *key)
+{
+       if (strcmp(key, PREF_BRIGHTNESS) == 0) {
+               return 1;
+       } else if (strcmp(key, PREF_QUICKSETTING_ORDER) == 0){
+               return 1;
+       } else if (strcmp(key, PREF_QUICKSETTING_FEATURED_NUM) == 0){
+               return 1;
+       } else if (strcmp(key, PREF_SHORTCUT_ENABLE) == 0){
+               return 1;
+       } else if (strcmp(key, PREF_SHORTCUT_EARPHONE_ORDER) == 0){
+               return 1;
+       }
+
+       return 0;
+}
+
+static inline int _is_file_exist(void)
+{
+
+       if (access(FILE_PREFERENCE, O_RDWR) == 0) {
+               return 1;
+       }
+
+       return 0;
+}
+
+static void _default_file_create(void)
+{
+       FILE    *fp = NULL ;
+
+       fp = fopen(FILE_PREFERENCE, "w");
+       retif(fp == NULL, , "fatal:failed to create preference file");
+
+       fprintf(fp, "\n\
+                       [%s]\n\
+                       %s = %s ;\n\
+                       %s = %s ;\n\
+                       %s = %s ;\n\
+                       %s = %s ;\n\
+                       %s = %s ;\n\
+                       \n"
+                       , PREF_SECTION
+                       , PREF_BRIGHTNESS_KEY, _default_preference_get(PREF_BRIGHTNESS)
+                       , PREF_QUICKSETTING_ORDER_KEY, _default_preference_get(PREF_QUICKSETTING_ORDER)
+                       , PREF_QUICKSETTING_FEATURED_NUM_KEY, _default_preference_get(PREF_QUICKSETTING_FEATURED_NUM)
+                       , PREF_SHORTCUT_ENABLE_KEY, _default_preference_get(PREF_SHORTCUT_ENABLE)
+                       , PREF_SHORTCUT_EARPHONE_ORDER_KEY, _default_preference_get(PREF_SHORTCUT_EARPHONE_ORDER)
+       );
+
+       fclose(fp);
+}
+
+HAPI int quickpanel_preference_get(const char *key, char *value)
+{
+       int ret = QP_OK;
+       dictionary      *ini = NULL;
+       const char *value_r = NULL;
+       retif(key == NULL, QP_FAIL, "Invalid parameter!");
+       retif(value == NULL, QP_FAIL, "Invalid parameter!");
+
+       ini = iniparser_load(FILE_PREFERENCE);
+       if (ini == NULL) {
+               DBG("failed to load ini file");
+               _default_file_create();
+               value_r = _default_preference_get(key);
+               goto END;
+       }
+
+#ifdef HAVE_X
+       value_r = iniparser_getstr(ini, key);
+#endif
+       if (value_r == NULL) {
+               value_r = _default_preference_get(key);
+               if (_key_validation_check(key) == 1) {
+                       _default_file_create();
+               }
+               goto END;
+       } else {
+               DBG("get:[%s]", value_r);
+       }
+
+END:
+       if (value_r != NULL) {
+               strcpy(value, value_r);
+               ret = QP_OK;
+       }
+
+       if (ini != NULL) {
+#ifdef HAVE_X
+               iniparser_freedict(ini);
+#endif
+       }
+
+       return ret;
+}
+
+HAPI const char *quickpanel_preference_default_get(const char *key)
+{
+       retif(key == NULL, NULL, "Invalid parameter!");
+
+       return _default_preference_get(key);
+}
+
+HAPI int quickpanel_preference_set(const char *key, char *value)
+{
+       int ret = QP_FAIL;
+       FILE *fp = NULL;
+       dictionary      *ini = NULL;
+       retif(key == NULL, QP_FAIL, "Invalid parameter!");
+       retif(value == NULL, QP_FAIL, "Invalid parameter!");
+
+       if (_is_file_exist() == 0) {
+               _default_file_create();
+       }
+
+       ini = iniparser_load(FILE_PREFERENCE);
+       retif(ini == NULL, QP_FAIL, "failed to load ini file");
+#ifdef HAVE_X
+       if (iniparser_setstr(ini, (char *)key, value) == 0) {
+               ret = QP_OK;
+       } else {
+               ERR("failed to write %s=%s", key, value);
+       }
+#endif
+
+       fp = fopen(FILE_PREFERENCE, "w");
+       if (fp != NULL) {
+               iniparser_dump_ini(ini, fp);
+               fclose(fp);
+       }
+
+       iniparser_freedict(ini);
+
+       return ret;
+}
diff --git a/daemon/preference.h b/daemon/preference.h
new file mode 100644 (file)
index 0000000..717fdc2
--- /dev/null
@@ -0,0 +1,41 @@
+/*
+ * 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 __QP_PREFERENCE_H_
+#define __QP_PREFERENCE_H_
+
+#define PREF_LEN_VALUE_MAX 256
+
+#define PREF_SECTION "quickpanel"
+#define PREF_BRIGHTNESS_KEY "brightness"
+#define PREF_QUICKSETTING_ORDER_KEY "quicksetting_order"
+#define PREF_QUICKSETTING_FEATURED_NUM_KEY "quicksetting_featured_num"
+#define PREF_SHORTCUT_ENABLE_KEY "shortcut_enable"
+#define PREF_SHORTCUT_EARPHONE_ORDER_KEY "shortcut_earphone"
+
+#define PREF_BRIGHTNESS PREF_SECTION":"PREF_BRIGHTNESS_KEY
+#define PREF_QUICKSETTING_ORDER PREF_SECTION":"PREF_QUICKSETTING_ORDER_KEY
+#define PREF_QUICKSETTING_FEATURED_NUM PREF_SECTION":"PREF_QUICKSETTING_FEATURED_NUM_KEY
+#define PREF_SHORTCUT_ENABLE PREF_SECTION":"PREF_SHORTCUT_ENABLE_KEY
+#define PREF_SHORTCUT_EARPHONE_ORDER PREF_SECTION":"PREF_SHORTCUT_EARPHONE_ORDER_KEY
+
+int quickpanel_preference_get(const char *key, char *value);
+const char *quickpanel_preference_default_get(const char *key);
+int quickpanel_preference_set(const char *key, char *value);
+
+#endif
index afe997e..0891952 100755 (executable)
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ * Copyright (c) 2009-2015 Samsung Electronics Co., Ltd All Rights Reserved
  *
- * Licensed under the Flora License, Version 1.1 (the "License");
+ * 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 <signal.h>
 #include <app.h>
-#include <system_info.h>
 #include <sys/utsname.h>
+#ifdef HAVE_X
 #include <X11/Xlib.h>
 #include <utilX.h>
+#endif
 #include <Ecore_Input.h>
 #include <vconf.h>
 #include <unistd.h>
+#include <malloc.h>
 #include <privilege-control.h>
-#include <bundle.h>
-#include <notification.h>
 
+/* quickpanel basics */
 #include "common.h"
 #include "quickpanel-ui.h"
 #include "modules.h"
 #include "quickpanel_def.h"
 #include "list_util.h"
+#include "vi_manager.h"
+#include "pager.h"
+#include "page_base.h"
+#ifdef QP_ENABLE_PAGE_EDIT
+#include "page_edit.h"
+#else
+#include "page_setting_all.h"
+#endif
+
+#include "sim_controller.h"
+#include "noti.h"
+/* services */
+#include "keyboard.h"
+#include "keyboard_x.h"
+#include "uninstall.h"
+#ifdef QP_REMINDER_ENABLE
+#include "reminder.h"
+#endif
+#ifdef QP_EMERGENCY_MODE_ENABLE
+#include "emergency_mode.h"
+#endif
+#include "configuration.h"
+#include "minictrl.h"
+#include "util-time.h"
+
+#include <tapi_common.h>
+#include <ITapiSim.h>
+
 
 #define QP_WINDOW_PRIO 300
-#define QP_ENABLE_HIDING_INDICATOR 1
 
 static struct appdata *g_app_data = NULL;
 
-/* binary information */
-#define QP_EMUL_STR            "Emulator"
+#ifdef HAVE_X
 static Ecore_X_Atom E_ILLUME_ATOM_MV_QUICKPANEL_STATE;
+#endif
 
-static void _quickpanel_cache_flush(void *evas);
-static void _quickpanel_init_size_genlist(void *data);
-static void _quickpanel_ui_update_height(void *data);
-static void _quickpanel_ui_set_indicator_cover(void *data);
-static void _quickpanel_move_data_to_service(const char *key, const char *val, void *data);
+static void _ui_rotate(void *data, int new_angle);
+static void _ui_geometry_info_set(void *data);
+static void _ui_handler_info_set(void *data);
+static void _ui_efl_cache_flush(void *evas);
 
 HAPI void *quickpanel_get_app_data(void)
 {
        return g_app_data;
 }
 
-HAPI int quickpanel_is_suspended(void)
-{
-       struct appdata *ad = quickpanel_get_app_data();
-       retif(ad == NULL, 0, "invalid data.");
-
-       return ad->is_suspended;
-}
-
-HAPI int quickpanel_is_emul(void)
-{
-       int is_emul = 0;
-       char *info = NULL;
-
-       if (system_info_get_value_string(SYSTEM_INFO_KEY_MODEL, &info) == 0) {
-               if (info == NULL) return 0;
-               if (!strncmp(QP_EMUL_STR, info, strlen(info))) {
-                       is_emul = 1;
-               }
-       }
-
-       if (info != NULL) free(info);
-
-       return is_emul;
-}
-
-HAPI int quickpanel_launch_app(char *app_id, void *data)
-{
-       int ret = SERVICE_ERROR_NONE;
-       service_h service = NULL;
-
-       retif(app_id == NULL && data == NULL, SERVICE_ERROR_INVALID_PARAMETER, "Invialid parameter!");
-
-       ret = service_create(&service);
-       if (ret != SERVICE_ERROR_NONE) {
-               ERR("service_create() return error : %d", ret);
-               return ret;
-       }
-       retif(service == NULL, SERVICE_ERROR_INVALID_PARAMETER, "fail to create service handle!");
-
-       if (app_id != NULL) {
-               service_set_operation(service, SERVICE_OPERATION_DEFAULT);
-               service_set_app_id(service, app_id);
-
-               if (data != NULL) {
-                       bundle_iterate((bundle *)data, _quickpanel_move_data_to_service, service);
-               }
-       } else {
-               service_import_from_bundle(service, data);
-       }
-
-       ret = service_send_launch_request(service, NULL, NULL);
-       if (ret != SERVICE_ERROR_NONE) {
-               ERR("service_send_launch_request() is failed : %d", ret);
-               service_destroy(service);
-               return ret;
-       }
-       service_destroy(service);
-       return ret;
-}
-
-HAPI void quickpanel_launch_app_inform_result(const char *pkgname, int retcode)
-{
-       retif(retcode == SERVICE_ERROR_NONE, , "Invialid parameter!");
-       retif(pkgname == NULL && retcode != SERVICE_ERROR_APP_NOT_FOUND, , "Invialid parameter!");
-
-       const char *msg = NULL;
-
-       if (retcode == SERVICE_ERROR_APP_NOT_FOUND) {
-               notification_status_message_post(_S("IDS_COM_BODY_NO_APPLICATIONS_CAN_PERFORM_THIS_ACTION"));
-       } else {
-               Eina_Strbuf *strbuf = eina_strbuf_new();
-
-               if (strbuf != NULL) {
-                       eina_strbuf_append_printf(strbuf, _S("IDS_IDLE_POP_UNABLE_TO_LAUNCH_PS"), pkgname);
-                       eina_strbuf_append_printf(strbuf, "(%d)", retcode);
-                       msg = eina_strbuf_string_get(strbuf);
-
-                       if (msg != NULL) {
-                               notification_status_message_post(msg);
-                       }
-                       eina_strbuf_free(strbuf);
-               }
-       }
-}
-
-static void _quickpanel_move_data_to_service(const char *key, const char *val, void *data)
-{
-       retif(data == NULL || key == NULL || val == NULL, , "Invialid parameter!");
-
-       service_h service = data;
-       service_add_extra_data(service, key, val);
-}
-
-static void atoms_init_quickpanel(void)
-{
-       E_ILLUME_ATOM_MV_QUICKPANEL_STATE = ecore_x_atom_get("_E_MOVE_QUICKPANEL_STATE");
-}
-
 /******************************************************************************
   *
   * UI
   *
   ****************************************************************************/
-static Eina_Bool _quickpanel_ui_refresh_cb(void *data)
-{
-       struct appdata *ad = NULL;
-
-       retif(data == NULL, QP_FAIL, "Invalid parameter!");
-       ad = data;
-
-       INFO(" >>>>>>>>>>>>>>> Refresh QP modules!! <<<<<<<<<<<<<<<< ");
-       refresh_modules(data);
-
-       _quickpanel_init_size_genlist(ad);
-       _quickpanel_ui_update_height(ad);
-
-       return EINA_FALSE;
-}
-
-static void _quickpanel_cache_flush(void *evas)
+static void _ui_efl_cache_flush(void *evas)
 {
        int file_cache;
        int collection_cache;
@@ -203,128 +119,243 @@ static void _quickpanel_cache_flush(void *evas)
        edje_collection_cache_set(collection_cache);
        evas_image_cache_set(evas, image_cache);
        evas_font_cache_set(evas, font_cache);
+
+       elm_cache_all_flush();
+       malloc_trim(0);
 }
 
-static Eina_Bool _quickpanel_hardkey_cb(void *data, int type, void *event)
+static void _ui_handler_input_region_set(void *data, int contents_height)
 {
        struct appdata *ad = NULL;
-       Ecore_Event_Key *key_event = NULL;
+#ifdef HAVE_X
+       Ecore_X_Window xwin;
+       Ecore_X_Atom atom_window_input_region = 0;
+#endif
+       unsigned int window_input_region[4] = {0,};
 
-       retif(data == NULL || event == NULL,
-               EINA_FALSE, "Invalid parameter!");
+       retif(data == NULL,  , "Invialid parameter!");
        ad = data;
-       key_event = event;
 
-       if (!strcmp(key_event->keyname, KEY_SELECT)) {
-               quickpanel_close_quickpanel(false);
+#ifdef HAVE_X
+       xwin = elm_win_xwindow_get(ad->win);
+#endif
+
+       switch (ad->angle) {
+       case 0:
+               window_input_region[0] = 0; //X
+               window_input_region[1] = contents_height; // Y
+               window_input_region[2] = ad->win_width; // Width
+               window_input_region[3] = ELM_SCALE_SIZE(QP_HANDLE_H); // height
+               break;
+       case 90:
+               window_input_region[0] = contents_height; //X
+               window_input_region[1] = 0; // Y
+               window_input_region[2] = ELM_SCALE_SIZE(QP_HANDLE_H); // Width
+               window_input_region[3] = ad->win_height; // height
+               break;
+       case 180:
+               window_input_region[0] = 0; //X
+               window_input_region[1] = ad->win_height - contents_height - ELM_SCALE_SIZE(QP_HANDLE_H); // Y
+               window_input_region[2] = ad->win_width; // Width
+               window_input_region[3] = ELM_SCALE_SIZE(QP_HANDLE_H); // height
+               break;
+       case 270:
+               window_input_region[0] = ad->win_width - contents_height - ELM_SCALE_SIZE(QP_HANDLE_H); //X
+               window_input_region[1] = 0; // Y
+               window_input_region[2] = ELM_SCALE_SIZE(QP_HANDLE_H); // Width
+               window_input_region[3] = ad->win_height; // height
+               break;
        }
-       return EINA_FALSE;
+
+       INFO("win_input_0:%d\nwin_input_1:%d\nwin_input_2:%d\nwin_input_3:%d\n"
+                       ,window_input_region[0]
+                       ,window_input_region[1]
+                       ,window_input_region[2]
+                   ,window_input_region[3]
+                       );
+#ifdef HAVE_X
+       atom_window_input_region = ecore_x_atom_get(STR_ATOM_WINDOW_INPUT_REGION);
+       ecore_x_window_prop_card32_set(xwin, atom_window_input_region, window_input_region, 4);
+#endif
 }
 
-static int _quickpanel_ui_rotation_get_angle(void *data)
+static void _ui_handler_content_region_set(void *data, int contents_height)
 {
-       struct appdata *ad = (struct appdata *)data;
-       Ecore_X_Window xwin, root;
-       int ret = 0, angle = 0, count = 0;
-       unsigned char *prop_data = NULL;
+       struct appdata *ad = NULL;
+#ifdef HAVE_X
+       Ecore_X_Window xwin;
+       Ecore_X_Atom atom_window_contents_region = 0;
+#endif
+       unsigned int window_contents_region[4] = {0,};
 
-       retif(data == NULL, -1, "Invalid parameter!");
+       retif(data == NULL,  , "Invialid parameter!");
+       ad = data;
 
+#ifdef HAVE_X
        xwin = elm_win_xwindow_get(ad->win);
-       root = ecore_x_window_root_get(xwin);
+#endif
+
+       switch (ad->angle) {
+       case 0:
+               window_contents_region[0] = 0; //X
+               window_contents_region[1] = 0; // Y
+               window_contents_region[2] = ad->win_width; // Width
+               window_contents_region[3] = contents_height; // height
+               break;
+       case 90:
+               window_contents_region[0] = 0; //X
+               window_contents_region[1] = 0; // Y
+               window_contents_region[2] = contents_height; // Width
+               window_contents_region[3] = ad->win_height; // height
+               break;
+       case 180:
+               window_contents_region[0] = 0; //X
+               window_contents_region[1] = ad->win_height - contents_height; // Y
+               window_contents_region[2] = ad->win_width; // Width
+               window_contents_region[3] = contents_height; // height
+               break;
+       case 270:
+               window_contents_region[0] = ad->win_width - contents_height ; //X
+               window_contents_region[1] = 0; // Y
+               window_contents_region[2] = contents_height; // Width
+               window_contents_region[3] = ad->win_height; // height
+               break;
+       }
 
-       ret = ecore_x_window_prop_property_get(root,
-                               ECORE_X_ATOM_E_ILLUME_ROTATE_ROOT_ANGLE,
-                               ECORE_X_ATOM_CARDINAL, 32,
-                               &prop_data, &count);
+       DBG("win_contents_0:%d\nwin_contents_1:%d\nwin_contents_2:%d\nwin_contents_3:%d\n"
+                       ,window_contents_region[0]
+                       ,window_contents_region[1]
+                       ,window_contents_region[2]
+                   ,window_contents_region[3]
+                       );
+#ifdef HAVE_X
+    atom_window_contents_region = ecore_x_atom_get(STR_ATOM_WINDOW_CONTENTS_REGION);
+    ecore_x_window_prop_card32_set(xwin, atom_window_contents_region, window_contents_region, 4);
+#endif
+}
 
-       if (ret && prop_data) {
-               memcpy(&angle, prop_data, sizeof(int));
+static void _ui_handler_info_set(void *data)
+{
+       int contents_height = 0;
+       struct appdata *ad = NULL;
 
-               if (prop_data)
-                       free(prop_data);
+       retif(data == NULL, , "data is NULL");
+       ad = data;
 
-               return angle;
-       } else {
-               ERR("Fail to get angle");
-               if (prop_data)
-                       free(prop_data);
+       contents_height = ad->gl_distance_from_top + ad->gl_limit_height;
+
+       _ui_handler_input_region_set(ad, contents_height);
+       _ui_handler_content_region_set(ad, contents_height);
+}
+
+static void _ui_geometry_info_set(void *data)
+{
+       struct appdata *ad = NULL;
+       int max_height_window = 0;
+       Evas_Coord genlist_y = 0;
 
-               return -1;
+       retif(data == NULL, , "data is NULL");
+       ad = data;
+
+       if (ad->angle == 90 || ad->angle == 270 ) {
+               max_height_window = ad->win_width;
+       } else {
+               max_height_window = ad->win_height;
        }
+
+       edje_object_part_geometry_get(_EDJ(ad->ly), "qp.base.list.swallow", NULL, &genlist_y, NULL, NULL);
+
+       ad->gl_distance_from_top = genlist_y;
+       ad->gl_distance_to_bottom = ELM_SCALE_SIZE(QP_HANDLE_H);
+       ad->gl_limit_height = max_height_window - ad->gl_distance_from_top - ad->gl_distance_to_bottom;
 }
 
-static void _quickpanel_ui_rotation(void *data, int new_angle)
+/*****************************************************************************
+  *
+  * ui rotation functions
+  *
+  ****************************************************************************/
+static void _ui_rotation_wm_cb(void *data, Evas_Object *obj, void *event)
 {
+       int angle = 0;
        struct appdata *ad = data;
-       retif(data == NULL, , "Invalid parameter!");
+       retif(ad == NULL, , "Invalid parameter!");
 
-       INFO("ROTATION: new:%d old:%d", new_angle, ad->angle);
+       angle = elm_win_rotation_get((Evas_Object *)obj);
 
-       if (new_angle == 0 || new_angle == 90 || new_angle == 180 || new_angle == 270) {
-               if (new_angle != ad->angle) {
-                       elm_win_rotation_with_resize_set(ad->win,
-                                                        new_angle);
-                       ad->angle = new_angle;
+       DBG("ROTATE:%d", angle);
 
-                       _quickpanel_ui_set_indicator_cover(ad);
-                       ecore_idler_add(_quickpanel_ui_refresh_cb, ad);
-               }
+       quickpanel_minictrl_rotation_report(angle);
+
+       _ui_rotate(ad, angle);
+}
+
+static int _ui_rotation_angle_get(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       retif(ad == NULL, 0, "Invalid parameter!");
+       retif(ad->win == NULL, 0, "Invalid parameter!");
+
+       return elm_win_rotation_get(ad->win);
+}
+
+static void _ui_handler_enable_set(Eina_Bool is_enable)
+{
+       const char *signal = NULL;
+       struct appdata *ad = quickpanel_get_app_data();
+       retif(ad == NULL, , "invalid data.");
+       retif(ad->view_root == NULL, , "data is NULL");
+
+       if (is_enable == EINA_TRUE) {
+               signal = "mouse,down,1";
+       } else {
+               signal = "mouse,up,1";
        }
+
+       elm_object_signal_emit(ad->view_root, signal, "qp.handler.bg");
 }
 
-static Eina_Bool quickpanel_ui_client_message_cb(void *data, int type,
-                                                void *event)
+static void _ui_rotation_handler(struct appdata *ad, int angle)
 {
-       struct appdata *ad = data;
-       Ecore_X_Event_Client_Message *ev = event;
-       int new_angle;
+       const char *signal = NULL;
 
-       retif(data == NULL || event == NULL,
-               ECORE_CALLBACK_RENEW, "Invalid parameter!");
+       retif(ad == NULL, , "data is NULL");
+       retif(ad->view_root == NULL, , "data is NULL");
 
-       if (ev->message_type == ECORE_X_ATOM_E_ILLUME_ROTATE_WINDOW_ANGLE) {
-               new_angle = ev->data.l[0];
-               _quickpanel_ui_rotation(ad, new_angle);
-       } else if (ev->message_type == ECORE_X_ATOM_E_ILLUME_QUICKPANEL_STATE) {
-               if (ev->data.l[0] == ECORE_X_ATOM_E_ILLUME_QUICKPANEL_OFF) {
-                       ad->is_opened = 0;
-                       qp_closed_modules(data);
-                       quickpanel_player_stop();
-#if QP_ENABLE_HIDING_INDICATOR
-                       elm_win_indicator_mode_set(ad->win, ELM_WIN_INDICATOR_HIDE);
-#endif
-               }
-       } else if (ad->E_ILLUME_ATOM_MV_QUICKPANEL_STATE != NULL) {
-               if (ev->message_type == *(ad->E_ILLUME_ATOM_MV_QUICKPANEL_STATE)) {
-                       if (ev->data.l[0] == 1) {
-                               if (ad->is_opened == 0) {
-#if QP_ENABLE_HIDING_INDICATOR
-                                       elm_win_indicator_mode_set(ad->win, ELM_WIN_INDICATOR_SHOW);
-#endif
-                                       INFO("quickpanel going to be opened");
-                               }
-                       }
-                       if (ev->data.l[0] == 0) {
-                               if (ad->is_opened == 0) {
-                                       INFO("quickpanel is closed");
-                                       ad->is_opened = 1;
-                                       qp_opened_modules(data);
-                                       quickpanel_player_stop();
-                               }
-                       }
-               }
+
+       if (angle == 90 || angle == 270) {
+               signal = "quickpanel.landscape";
+       } else {
+               signal = "quickpanel.portrait";
        }
-       return ECORE_CALLBACK_RENEW;
+
+       elm_object_signal_emit(ad->view_root, signal, "quickpanel.prog");
 }
 
-static void _quickpanel_signal_handler(int signum, siginfo_t *info, void *unused)
+static void _ui_rotate(void *data, int new_angle)
 {
-       ERR("quickpanel going to be terminated");
-       app_efl_exit();
+       struct appdata *ad = data;
+       retif(data == NULL, , "Invalid parameter!");
+
+       DBG("ROTATION: new:%d old:%d", new_angle, ad->angle);
+
+       if (new_angle == 0 || new_angle == 90 || new_angle == 180 || new_angle == 270) {
+               if (new_angle != ad->angle) {
+                       ad->angle = new_angle;
+                       quickpanel_modules_refresh(ad);
+                       _ui_geometry_info_set(ad);
+                       _ui_handler_info_set(ad);
+                       _ui_rotation_handler(ad, ad->angle);
+               }
+       }
 }
 
-static Evas_Object *_quickpanel_ui_window_add(const char *name, int prio)
+/*****************************************************************************
+  *
+  * ui creation/deletion functions
+  *
+  ****************************************************************************/
+static Evas_Object *_ui_window_add(const char *name, int prio)
 {
        Evas_Object *eo = NULL;
        Ecore_X_Window xwin;
@@ -333,11 +364,7 @@ static Evas_Object *_quickpanel_ui_window_add(const char *name, int prio)
 
        if (eo != NULL) {
                elm_win_alpha_set(eo, EINA_TRUE);
-#if QP_ENABLE_HIDING_INDICATOR
                elm_win_indicator_mode_set(eo, ELM_WIN_INDICATOR_HIDE);
-#else
-               elm_win_indicator_mode_set(eo, ELM_WIN_INDICATOR_SHOW);
-#endif
 
                elm_win_title_set(eo, name);
                elm_win_borderless_set(eo, EINA_TRUE);
@@ -347,304 +374,109 @@ static Evas_Object *_quickpanel_ui_window_add(const char *name, int prio)
                elm_win_quickpanel_set(eo, 1);
                elm_win_quickpanel_priority_major_set(eo, prio);
 
+               if (elm_win_wm_rotation_supported_get(eo)) {
+                       int rots[4] = { 0, 90, 180, 270 };
+                       elm_win_wm_rotation_available_rotations_set(eo, rots, 4);
+               }
+
                /* icccm name class set */
+#ifdef HAVE_X
                xwin = elm_win_xwindow_get(eo);
                ecore_x_icccm_name_class_set(xwin, "QUICKPANEL", "QUICKPANEL");
-               evas_object_show(eo);
-       }
 
-       return eo;
-}
-
-#ifdef TBD
-static void _quickpanel_add_debugging_bar(Evas_Object *list)
-{
-       Eina_Bool ret = EINA_FALSE;
-       Evas_Object *bar = elm_layout_add(list);
-
-       ret = elm_layout_file_set(bar, DEFAULT_EDJ,
-                       "quickpanel/seperator/default");
-
-       if (ret != EINA_FALSE) {
-               evas_object_size_hint_weight_set(bar, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
-               evas_object_size_hint_align_set(bar, EVAS_HINT_FILL, EVAS_HINT_FILL);
-
-               qp_item_data *qid
-                       = quickpanel_list_util_item_new(QP_ITEM_TYPE_BAR, NULL);
-               quickpanel_list_util_item_set_tag(bar, qid);
-               quickpanel_list_util_sort_insert(list, bar);
-               evas_object_show(bar);
-       }
-}
+               unsigned int val = 1;
+               ecore_x_window_prop_card32_set
+                       (xwin, ECORE_X_ATOM_E_ILLUME_ACCESS_CONTROL, &val, 1);
 #endif
-
-HAPI Evas_Object *quickpanel_ui_load_edj(Evas_Object * parent, const char *file,
-                                           const char *group, int is_just_load)
-{
-       Eina_Bool r;
-       Evas_Object *eo = NULL;
-
-       retif(parent == NULL, NULL, "Invalid parameter!");
-
-       eo = elm_layout_add(parent);
-       retif(eo == NULL, NULL, "Failed to add layout object!");
-
-       r = elm_layout_file_set(eo, file, group);
-       retif(r != EINA_TRUE, NULL,
-               "Failed to set edje object file[%s-%s]!", file, group);
-
-       evas_object_size_hint_weight_set(eo,
-                                        EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
-
-       if (is_just_load == 1) {
-               elm_win_resize_object_add(parent, eo);
+               evas_object_show(eo);
        }
-       evas_object_show(eo);
 
        return eo;
 }
 
-static int _quickpanel_ui_create_win(void *data)
+static int _ui_gui_create(void *data)
 {
        struct appdata *ad = data;
-       int w = 0;
-       int h = 0;
+       int w = 0, h = 0;
        int initial_angle = 0;
+       Evas_Object *page_base = NULL;
 
        retif(data == NULL, QP_FAIL, "Invialid parameter!");
 
-       ad->win = _quickpanel_ui_window_add("Quickpanel Window",
+       ad->win = _ui_window_add("Quickpanel Window",
                                        QP_WINDOW_PRIO);
-       if (ad->win == NULL) {
-               ERR("ui create : failed to create window.");
-               return -1;
+       retif(ad->win == NULL, QP_FAIL, "Failed to create main window");
+       //build error
+       //elm_win_focus_allow_set(ad->win, EINA_TRUE);
+
+       evas_object_smart_callback_add(ad->win, "wm,rotation,changed",
+                                       _ui_rotation_wm_cb, ad);
+
+       ad->background = elm_bg_add(ad->win);
+       if (ad->background  != NULL) {
+               evas_object_size_hint_weight_set(ad->background,
+                                                EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+               elm_win_resize_object_add(ad->win, ad->background);
+               evas_object_show(ad->background);
+       } else {
+               ERR("failed to create background");
        }
-#ifdef QP_INDICATOR_WIDGET_ENABLE
-       ad->comformant = elm_conformant_add(ad->win);
-#if QP_ENABLE_HIDING_INDICATOR
-       elm_object_style_set(ad->comformant, "without_resize");
-#else
-       elm_object_style_set(ad->comformant, "nokeypad");
-#endif
 
-       ad->ly = quickpanel_ui_load_edj(ad->comformant,
-                               DEFAULT_EDJ, "quickpanel/gl_base", 0);
-       if (ad->ly == NULL)
-               return -1;
+       ad->view_root = quickpanel_uic_load_edj(ad->background,
+                               DEFAULT_EDJ, "quickpanel/root", 0);
+       retif(ad->view_root == NULL, QP_FAIL, "Failed to create main page");
 
-       evas_object_size_hint_weight_set(ad->comformant,
-                                        EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
-       elm_win_resize_object_add(ad->win, ad->comformant);
-       evas_object_show(ad->comformant);
-       elm_object_content_set(ad->comformant, ad->ly);
+       Evas_Object *pager_scroller = quickpanel_pager_new(ad->view_root, NULL);
+       Evas_Object *pager_box = quickpanel_pager_view_get("BOX");
 
-#else
-       ad->ly = quickpanel_ui_load_edj(ad->win,
-                               DEFAULT_EDJ, "quickpanel/gl_base", 0);
-       if (ad->ly == NULL)
-               return -1;
-#endif
+       page_base = quickpanel_page_base_create(pager_box, NULL);
+       retif(page_base == NULL, QP_FAIL, "Failed to create main page");
+       ad->ly = quickpanel_page_base_view_get("LAYOUT");
+       retif(ad->ly == NULL, QP_FAIL, "Failed to create main page");
+
+       elm_box_pack_end(pager_box, page_base);
+       elm_win_resize_object_add(ad->win, ad->view_root);
+       elm_object_part_content_set(ad->view_root, "qp.root.swallow", pager_scroller);
 
        /* get noti evas */
        ad->evas = evas_object_evas_get(ad->win);
+       ad->list = quickpanel_page_base_view_get("BOX");
+       ad->scroller = quickpanel_page_base_view_get("SCROLLER");
 
-       Evas_Object *sc = elm_scroller_add(ad->ly);
-       retif(!sc, EINA_FALSE, "fail to add scroller");
-       elm_scroller_bounce_set(sc, EINA_TRUE, EINA_TRUE);
-       elm_scroller_policy_set(sc,
-                       ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_OFF);
-       evas_object_size_hint_weight_set(sc,
-                       EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
-       evas_object_size_hint_fill_set(sc, EVAS_HINT_FILL, EVAS_HINT_FILL);
-       evas_object_show(sc);
-
-       Evas_Object *box = elm_box_add(sc);
-       if (!box) {
-               ERR("fail to add box");
-               evas_object_del(sc);
-               return EINA_FALSE;
-       }
-       evas_object_size_hint_weight_set(box,
-                       EVAS_HINT_EXPAND, 0);
-       elm_box_horizontal_set(box, EINA_FALSE);
-       ad->list = box;
-       ad->scroller = sc;
-
-#ifdef TBD
-       _quickpanel_add_debugging_bar(ad->list);
-#endif
-
-       elm_object_content_set(sc, box);
-       elm_object_part_content_set(ad->ly, "qp.gl_base.gl.swallow", ad->scroller);
-       evas_object_show(ad->list);
-
-       ecore_x_window_size_get(ecore_x_window_root_first_get(), &w, &h);
+       //ecore_x_window_size_get(ecore_x_window_root_first_get(), &w, &h);
+       elm_win_screen_size_get(ad->win, NULL, NULL, &w, &h);
        evas_object_resize(ad->win, w, h);
 
-       ad->win_width = w;
-       ad->win_height = h;
-
-       _quickpanel_init_size_genlist(ad);
-       _quickpanel_ui_set_indicator_cover(ad);
-
-       /* key grab */
-       utilx_grab_key(ecore_x_display_get(), elm_win_xwindow_get(ad->win), KEY_SELECT, SHARED_GRAB);
-
-       initial_angle = _quickpanel_ui_rotation_get_angle(ad);
-       _quickpanel_ui_rotation(ad, initial_angle);
-       return 0;
-}
-
-static void _quickpanel_ui_set_indicator_cover(void *data)
-{
-       retif(data == NULL, , "data is NULL");
-       struct appdata *ad = data;
-
-       int x_2 = 0, y_2 = 0;
-       int angle = ad->angle;
-
-       int width = INDICATOR_COVER_W * ad->scale;
-       int height = INDICATOR_COVER_H * ad->scale;
-
-       switch (angle) {
-               case 0:
-                       x_2 = ad->win_width - width;
-                       y_2 = 0;
-                       break;
-               case 90:
-                       x_2 = ad->win_height - width;
-                       y_2 = 0;
-                       break;
-               case 180:
-                       x_2 = ad->win_width - width;
-                       y_2 = 0;
-                       break;
-               case 270:
-                       x_2 = ad->win_height - width;
-                       y_2 = 0;
-                       break;
-       }
-
-       if (ad->cover_indicator_right == NULL) {
-               Evas_Object *bg = evas_object_rectangle_add(ad->evas);
-               evas_object_color_set(bg, 52, 52, 50, 255); // opaque white background
-               evas_object_repeat_events_set(bg, EINA_FALSE);
-               evas_object_resize(bg, width, height); // covers full canvas
-               evas_object_move(bg, x_2, y_2);
-               evas_object_show(bg);
-               ad->cover_indicator_right = bg;
-       } else {
-               evas_object_move(ad->cover_indicator_right, x_2, y_2);
-       }
-}
-
-static void _quickpanel_ui_window_set_input_region(void *data, int contents_height)
-{
-       struct appdata *ad = NULL;
-       Ecore_X_Window xwin;
-       Ecore_X_Atom atom_window_input_region = 0;
-       unsigned int window_input_region[4] = {0,};
-
-       retif(data == NULL,  , "Invialid parameter!");
-       ad = data;
-
-       xwin = elm_win_xwindow_get(ad->win);
-
-       INFO("angle:%d", ad->angle);
-       switch (ad->angle) {
-               case 0:
-                       window_input_region[0] = 0; //X
-                       window_input_region[1] = contents_height; // Y
-                       window_input_region[2] = ad->win_width; // Width
-                       window_input_region[3] = ad->scale * QP_HANDLE_H; // height
-                       break;
-               case 90:
-                       window_input_region[0] = contents_height; //X
-                       window_input_region[1] = 0; // Y
-                       window_input_region[2] = ad->scale * QP_HANDLE_H; // Width
-                       window_input_region[3] = ad->win_height; // height
-                       break;
-               case 180:
-                       window_input_region[0] = 0; //X
-                       window_input_region[1] = ad->win_height - contents_height - ad->scale * QP_HANDLE_H; // Y
-                       window_input_region[2] = ad->win_width; // Width
-                       window_input_region[3] = ad->scale * QP_HANDLE_H; // height
-                       break;
-               case 270:
-                       window_input_region[0] = ad->win_width - contents_height - ad->scale * QP_HANDLE_H ; //X
-                       window_input_region[1] = 0; // Y
-                       window_input_region[2] = ad->scale * QP_HANDLE_H; // Width
-                       window_input_region[3] = ad->win_height; // height
-                       break;
-       }
-
-       INFO("win_input_0:%d\nwin_input_1:%d\nwin_input_2:%d\nwin_input_3:%d\n"
-                       ,window_input_region[0]
-                       ,window_input_region[1]
-                       ,window_input_region[2]
-                   ,window_input_region[3]
-                       );
-
-       atom_window_input_region = ecore_x_atom_get(STR_ATOM_WINDOW_INPUT_REGION);
-       ecore_x_window_prop_card32_set(xwin, atom_window_input_region, window_input_region, 4);
-}
+       ad->win_width = w;
+       ad->win_height = h;
 
-static void _quickpanel_ui_window_set_content_region(void *data, int contents_height)
-{
-       struct appdata *ad = NULL;
-       Ecore_X_Window xwin;
-       Ecore_X_Atom atom_window_contents_region = 0;
-       unsigned int window_contents_region[4] = {0,};
+       _ui_geometry_info_set(ad);
 
-       retif(data == NULL,  , "Invialid parameter!");
-       ad = data;
+       initial_angle = _ui_rotation_angle_get(ad);
+       _ui_rotate(ad, initial_angle);
 
-       xwin = elm_win_xwindow_get(ad->win);
+       quickpanel_pager_page_set(PAGE_IDX_MAIN, 1);
 
-       INFO("angle:%d", ad->angle);
-       switch (ad->angle) {
-               case 0:
-                       window_contents_region[0] = 0; //X
-                       window_contents_region[1] = 0; // Y
-                       window_contents_region[2] = ad->win_width; // Width
-                       window_contents_region[3] = contents_height; // height
-                       break;
-               case 90:
-                       window_contents_region[0] = 0; //X
-                       window_contents_region[1] = 0; // Y
-                       window_contents_region[2] = contents_height; // Width
-                       window_contents_region[3] = ad->win_height; // height
-                       break;
-               case 180:
-                       window_contents_region[0] = 0; //X
-                       window_contents_region[1] = ad->win_height - contents_height; // Y
-                       window_contents_region[2] = ad->win_width; // Width
-                       window_contents_region[3] = contents_height; // height
-                       break;
-               case 270:
-                       window_contents_region[0] = ad->win_width - contents_height ; //X
-                       window_contents_region[1] = 0; // Y
-                       window_contents_region[2] = contents_height; // Width
-                       window_contents_region[3] = ad->win_height; // height
-                       break;
-       }
+       sim_controller_init(ad->ly);
 
-       DBG("win_contents_0:%d\nwin_contents_1:%d\nwin_contents_2:%d\nwin_contents_3:%d\n"
-                       ,window_contents_region[0]
-                       ,window_contents_region[1]
-                       ,window_contents_region[2]
-                   ,window_contents_region[3]
-                       );
+       quickpanel_noti_init_noti_section();
 
-    atom_window_contents_region = ecore_x_atom_get(STR_ATOM_WINDOW_CONTENTS_REGION);
-    ecore_x_window_prop_card32_set(xwin, atom_window_contents_region, window_contents_region, 4);
+       return 0;
 }
 
-static int _quickpanel_ui_delete_win(void *data)
+static int _ui_gui_destroy(void *data)
 {
        struct appdata *ad = data;
        retif(data == NULL, QP_FAIL, "Invialid parameter!");
 
+       if (ad->list != NULL) {
+               evas_object_del(ad->list);
+               ad->list = NULL;
+       }
+       if (ad->scroller != NULL) {
+               evas_object_del(ad->scroller);
+               ad->scroller = NULL;
+       }
        if (ad->ly != NULL) {
                evas_object_del(ad->ly);
                ad->ly = NULL;
@@ -657,18 +489,30 @@ static int _quickpanel_ui_delete_win(void *data)
        return QP_OK;
 }
 
-static void _quickpanel_ui_vconf_event_powerff_cb(keynode_t *node,
-                                               void *data)
+static void _ui_setting_visibility_set(struct appdata *ad, int show)
+{
+       retif(ad == NULL, , "data is NULL");
+       retif(ad->ly == NULL, , "data is NULL");
+
+       elm_object_signal_emit(ad->ly, "quickpanel.setting.show",
+                                       "quickpanel.prog");
+}
+
+/*****************************************************************************
+  *
+  * event handler initialization functions
+  *
+  ****************************************************************************/
+static void _vconf_event_powerff_cb(keynode_t *node, void *data)
 {
        int val;
        if (vconf_get_int(VCONFKEY_SYSMAN_POWER_OFF_STATUS, &val) == 0 &&
                        (val == VCONFKEY_SYSMAN_POWER_OFF_DIRECT || val == VCONFKEY_SYSMAN_POWER_OFF_RESTART)) {
-               app_efl_exit();
+               ui_app_exit();
        }
 }
 
-static void _quickpanel_ui_vconf_event_lcdoff_cb(keynode_t *node,
-                                               void *data)
+static void _vconf_event_lcdoff_cb(keynode_t *node, void *data)
 {
        int ret = 0;
        int pm_state = VCONFKEY_PM_STATE_NORMAL;
@@ -676,140 +520,303 @@ static void _quickpanel_ui_vconf_event_lcdoff_cb(keynode_t *node,
        ret = vconf_get_int(VCONFKEY_PM_STATE, &pm_state);
 
        if (ret == 0 && pm_state == VCONFKEY_PM_STATE_LCDOFF) {
-               quickpanel_close_quickpanel(false);
+               quickpanel_uic_close_quickpanel(false, 0);
+       }
+}
+
+static Eina_Bool _ecore_event_client_message_cb(void *data, int type, void *event)
+{
+       struct appdata *ad = data;
+#ifdef HAVE_X
+       Ecore_X_Event_Client_Message *ev = 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_OFF) {
+                       SERR("quickpanel is closed");
+                       ad->is_opened = 0;
+                       quickpanel_util_time_timer_enable_set(0);
+                       quickpanel_keyboard_closing_fini(ad);
+                       quickpanel_keyboard_x_closing_fini(ad);
+                       quickpanel_modules_closed(data);
+                       quickpanel_media_player_stop();
+               }
+       } else if (ev->message_type == E_ILLUME_ATOM_MV_QUICKPANEL_STATE) {
+               if (ev->data.l[0] == 1) {
+                       // pressed
+                       if (ad->is_opened == 0) {
+                               quickpanel_util_time_timer_enable_set(1);
+                               quickpanel_keyboard_openning_init(ad);
+                               quickpanel_keyboard_x_openning_init(ad);
+                               if (quickpanel_uic_opened_reason_get() != OPENED_BY_CMD_SHOW_SETTINGS) {
+                                       quickpanel_pager_page_set(PAGE_IDX_MAIN, 0);
+                               }
+                       }
+                       _ui_handler_enable_set(EINA_TRUE);
+               }
+               if (ev->data.l[0] == 0) {
+                       // released
+                       if (ad->is_opened == 0) {
+                               SERR("quickpanel is opened");
+                               ad->is_opened = 1;
+                               quickpanel_modules_opened(data);
+                               quickpanel_media_player_stop();
+                               quickpanel_uic_opened_reason_set(OPENED_NO_REASON);
+                       }
+                       _ui_handler_enable_set(EINA_FALSE);
+               }
        }
+#endif
+       return ECORE_CALLBACK_RENEW;
 }
 
-static void _quickpanel_ui_vconf_event_init(struct appdata *ad)
+static void _vconf_init(struct appdata *ad)
 {
        int ret = 0;
 
        ret = vconf_notify_key_changed(VCONFKEY_PM_STATE,
-                       _quickpanel_ui_vconf_event_lcdoff_cb, ad);
+                       _vconf_event_lcdoff_cb, ad);
        if (ret != 0) {
                ERR("VCONFKEY_PM_STATE: %d", ret);
        }
 
        ret = vconf_notify_key_changed(VCONFKEY_SYSMAN_POWER_OFF_STATUS,
-                       _quickpanel_ui_vconf_event_powerff_cb, ad);
+                       _vconf_event_powerff_cb, ad);
        if (ret != 0) {
                ERR("VCONFKEY_PM_STATE: %d", ret);
        }
 }
 
-static void _quickpanel_ui_vconf_event_fini(struct appdata *ad)
+static void _vconf_fini(struct appdata *ad)
 {
        int ret = 0;
 
        ret = vconf_ignore_key_changed(VCONFKEY_PM_STATE,
-                       _quickpanel_ui_vconf_event_lcdoff_cb);
+                       _vconf_event_lcdoff_cb);
        if (ret != 0) {
                ERR("VCONFKEY_PM_STATE: %d", ret);
        }
 
        ret = vconf_ignore_key_changed(VCONFKEY_SYSMAN_POWER_OFF_STATUS,
-                       _quickpanel_ui_vconf_event_powerff_cb);
+                       _vconf_event_powerff_cb);
        if (ret != 0) {
                ERR("VCONFKEY_PM_STATE: %d", ret);
        }
 }
 
-static void _quickpanel_ui_init_ecore_event(struct appdata *ad)
+static void _edbus_init(struct appdata *ad)
+{
+       e_dbus_init();
+       ad->dbus_connection = e_dbus_bus_get(DBUS_BUS_SYSTEM);
+       if (ad->dbus_connection == NULL) {
+               ERR("noti register : failed to get dbus bus");
+       }
+}
+
+static void _edbus_fini(struct appdata *ad)
+{
+       if (ad->dbus_connection != NULL) {
+               e_dbus_connection_close(ad->dbus_connection);
+               ad->dbus_connection = NULL;
+               e_dbus_shutdown();
+       }
+}
+
+static void _ecore_event_init(struct appdata *ad)
 {
        Ecore_Event_Handler *hdl = NULL;
-       Ecore_Event_Handler *hdl_key = NULL;
 
        /* Register window rotate event */
+#ifdef HAVE_X
        hdl = ecore_event_handler_add(ECORE_X_EVENT_CLIENT_MESSAGE,
-                               quickpanel_ui_client_message_cb, ad);
-       if (hdl == NULL)
+                       _ecore_event_client_message_cb, ad);
+#endif
+       if (hdl == NULL) {
                ERR("failed to add handler(ECORE_X_EVENT_CLIENT_MESSAGE)");
+       }
 
        ad->hdl_client_message = hdl;
-
-       hdl_key = ecore_event_handler_add(ECORE_EVENT_KEY_DOWN, _quickpanel_hardkey_cb, ad);
-       if (hdl_key == NULL)
-               ERR("failed to add handler(ECORE_EVENT_KEY_UP)");
-
-       ad->hdl_hardkey = hdl_key;
 }
 
-static void _quickpanel_ui_fini_ecore_event(struct appdata *ad)
+static void _ecore_event_fini(struct appdata *ad)
 {
        if (ad->hdl_client_message != NULL) {
                ecore_event_handler_del(ad->hdl_client_message);
                ad->hdl_client_message = NULL;
        }
-       if (ad->hdl_hardkey != NULL) {
-               ecore_event_handler_del(ad->hdl_hardkey);
-               ad->hdl_hardkey = NULL;
-       }
 }
 
-static void _quickpanel_ui_setting_show(struct appdata *ad, int show)
+static void _x_atom_init(void)
+{
+#ifdef HAVE_X
+       E_ILLUME_ATOM_MV_QUICKPANEL_STATE = ecore_x_atom_get("_E_MOVE_QUICKPANEL_STATE");
+#endif
+}
+/*****************************************************************************
+  *
+  * App efl main interface
+  *
+  ****************************************************************************/
+static void _sigaction_terminate_handler(int signum, siginfo_t *info, void *unused)
+{
+       ERR("quickpanel going to be terminated");
+       ui_app_exit();
+}
+
+static void _service_request_process(app_control_h service, void *data)
 {
-       if (!ad)
-               return;
+       char *value = NULL;
+       retif(service == NULL, , "Invialid parameter!");
 
-       if (!ad->ly)
-               return;
+       if (!app_control_get_extra_data(service, "HIDE_LAUNCH", &value))
+       {
+               if (value != NULL) {
+                       ERR("HIDE_LAUNCH: %s", value);
+                       if (!strcmp(value, "1")) {
+                               quickpanel_uic_close_quickpanel(false, 0);
+                       } else {
+                               quickpanel_uic_open_quickpanel(OPENED_BY_CMD_HIDE_LAUNCH);
+                       }
+
+                       free(value);
+               }
+       } else if (!app_control_get_extra_data(service, "SHOW_SETTINGS", &value)) {
+               if (value != NULL) {
+                       ERR("SHOW_SETTINGS: %s", value);
+                       if (!strcmp(value, "1")) {
+                               quickpanel_pager_page_set(PAGE_IDX_EDITING, 0);
+                               quickpanel_uic_open_quickpanel(OPENED_BY_CMD_SHOW_SETTINGS);
+                       }
+
+                       free(value);
+               }
+       }
+#ifdef QP_EMERGENCY_MODE_ENABLE
+       else if (!app_control_get_extra_data(service, "EMERGENCY_MODE_LAUNCH", &value)) {
+               if (value != NULL) {
+                       ERR("EMERGENCY_MODE_LAUNCH: %s", value);
+                       if (!strcmp(value, "1")) {
+                               if (quickpanel_emergency_mode_syspopup_launch() == QP_FAIL) {
+                                       ERR("failed to launch emergency mode syspopup");
+                               } else {
+                                       quickpanel_uic_close_quickpanel(true, 0);
+                               }
+                       }
+
+                       free(value);
+               }
+       }
+#endif
 }
 
-static void _quickpanel_ui_update_height(void *data)
+static Eina_Bool _appcore_cache_flush_timer_cb(void *data)
 {
-       int contents_height = 0;
-       int height_genlist = 0;
+       if (!quickpanel_uic_is_suspended()) {
+               return ECORE_CALLBACK_CANCEL;
+       }
 
-       struct appdata *ad = NULL;
+       return ECORE_CALLBACK_CANCEL;
+}
 
-       retif(data == NULL, , "data is NULL");
-       ad = data;
+static Eina_Bool _ui_refresh_idler_cb(void *data)
+{
+       DBG("");
+       struct appdata *ad = data;
+       retif(ad == NULL, QP_FAIL, "Invalid parameter!");
+
+       quickpanel_modules_refresh(ad);
+       _ui_geometry_info_set(ad);
+       _ui_handler_info_set(ad);
 
-       height_genlist = ad->gl_limit_height;
-       contents_height = ad->gl_distance_from_top + height_genlist + ad->gl_distance_to_bottom - ad->scale * QP_HANDLE_H;
+       /*      Cache memory is cleared when the application paused (every time, after 5 seconds (in appcore)),
+        *      but after running in a minimized mode application have status AS_RUNNING.
+        *      Application have status AS_PAUSED only after change of visibility to hidden condition by user (on hiding window)
+        *      Cleaning must be performed only once after application loading in hidden condition
+        *      (and stay in a hidden condition at time of cleaning).
+        */
+       ecore_timer_add(10, _appcore_cache_flush_timer_cb, NULL);
 
-       _quickpanel_ui_window_set_input_region(ad, contents_height);
-       _quickpanel_ui_window_set_content_region(ad, contents_height);
+       return EINA_FALSE;
 }
 
-static void _quickpanel_init_size_genlist(void *data)
+static void _quickpanel_initialize(void *data)
 {
-       struct appdata *ad = NULL;
-       int max_height_window = 0;
-       Evas_Coord genlist_y = 0;
-       Evas_Coord spn_height = 0;
+       int ret = 0;
+       struct appdata *ad = data;
+       retif(ad == NULL, , "Invialid parameter!");
 
-       retif(data == NULL, , "data is NULL");
-       ad = data;
+       INFO(">> Creating Quickpanel");
+       /* Check emulator */
+       ad->is_emul = quickpanel_uic_is_emul();
+       INFO("quickpanel run in %s", ad->is_emul ? "Emul" : "Device");
 
-       if (ad->angle == 90 || ad->angle == 270 )
-               max_height_window = ad->win_width;
-       else
-               max_height_window = ad->win_height;
+       int w, h;
+#ifdef HAVE_X
+       Ecore_X_Screen *screen = ecore_x_default_screen_get();
+       //ecore_x_screen_size_get(screen, &w, &h);
+       elm_win_screen_size_get(screen, NULL, NULL, &w, &h);
+#endif
+
+       ad->scale = elm_config_scale_get();
+       if (ad->scale < 0) {
+               ad->scale = 1.0;
+       }
 
-       edje_object_part_geometry_get(_EDJ(ad->ly), "qp.gl_base.gl.swallow", NULL, &genlist_y, NULL, NULL);
-       edje_object_part_geometry_get(_EDJ(ad->ly), "qp.base.spn.swallow", NULL, NULL, NULL, &spn_height);
+       INFO("quickpanel scale %f", ad->scale);
 
-       ad->gl_distance_from_top = genlist_y;
-       ad->gl_distance_to_bottom = spn_height + (1 * ad->scale) + (ad->scale*QP_HANDLE_H) ;
-       ad->gl_limit_height = max_height_window - ad->gl_distance_from_top - ad->gl_distance_to_bottom;
+       ad->is_suspended = 1;
+
+       /* Get theme */
+       elm_theme_extension_add(NULL, DEFAULT_THEME_EDJ);
+       /* create quickpanel window */
+       ret = _ui_gui_create(ad);
+       retif(ret != QP_OK, , "Failed to create window!");
+
+       quickpanel_media_init();
+
+       _x_atom_init();
+       _ecore_event_init(ad);
+       _vconf_init(ad);
+       _edbus_init(ad);
+
+       quickpanel_uninstall_init(ad);
+#ifdef QP_EMERGENCY_MODE_ENABLE
+       quickpanel_emergency_mode_init(ad);
+#endif
+       quickpanel_conf_init(ad);
+       quickpanel_keyboard_init(ad);
+       quickpanel_keyboard_x_init(ad);
+#ifdef QP_REMINDER_ENABLE
+       quickpanel_reminder_init(ad);
+#endif
+
+#ifdef QP_SETTING_ENABLE
+       _ui_setting_visibility_set(ad, 1);
+#else /* QP_SETTING_ENABLE */
+       _ui_setting_visibility_set(ad, 0);
+#endif /* QP_SETTING_ENABLE */
+
+       /* init quickpanel modules */
+       quickpanel_modules_init(ad);
+       ecore_idler_add(_ui_refresh_idler_cb, ad);
 }
 
-/*****************************************************************************
-  *
-  * App efl main interface
-  *
-  ****************************************************************************/
-static bool quickpanel_app_create(void *data)
+static bool _app_create_cb(void *data)
 {
-       DBG("");
+       ERR("");
+
+       elm_config_engine_set("opengl_x11");
+
+       elm_app_base_scale_set(1.8);
 
        pid_t pid;
        int r;
 
        // signal handler
        struct sigaction act;
-       act.sa_sigaction = _quickpanel_signal_handler;
+       act.sa_sigaction = _sigaction_terminate_handler;
        act.sa_flags = SA_SIGINFO;
 
        int ret = sigemptyset(&act.sa_mask);
@@ -826,238 +833,145 @@ static bool quickpanel_app_create(void *data)
        }
 
        pid = setsid();
-       if (pid < 0)
+       if (pid < 0) {
                WARN("Failed to set session id!");
+       }
 
        r = nice(2);
-       if (r == -1)
+       if (r == -1) {
                WARN("Failed to set nice value!");
+       }
 
        return TRUE;
 }
 
-static void quickpanel_app_terminate(void *data)
+static void _app_service_cb(app_control_h service, void *data)
 {
-       DBG("");
-
        struct appdata *ad = data;
-       retif(ad == NULL, , "invalid data.");
-
-       /* fini quickpanel modules */
-       fini_modules(ad);
-
-       _quickpanel_cache_flush(ad->evas);
-
-       feedback_deinitialize();
-
-       /* unregister system event callback */
-       _quickpanel_ui_vconf_event_fini(ad);
-
-       _quickpanel_ui_fini_ecore_event(ad);
+       retif(ad == NULL, , "Invialid parameter!");
 
-       if (ad->cover_indicator_right != NULL) {
-               evas_object_del(ad->cover_indicator_right);
-               ad->cover_indicator_right = NULL;
+       if (ad->win == NULL && ad->ly == NULL) {
+               _quickpanel_initialize(data);
+       } else {
+               _service_request_process(service, data);
        }
-       /* delete quickpanel window */
-       _quickpanel_ui_delete_win(ad);
-
-       INFO(" >>>>>>>>>>>>>>> QUICKPANEL IS TERMINATED!! <<<<<<<<<<<<<<<< ");
 }
 
-static void quickpanel_app_pause(void *data)
+static void _app_terminate_cb(void *data)
 {
-       DBG("");
+       ERR("");
 
        struct appdata *ad = data;
-       retif(ad == NULL,, "invalid data.");
+       retif(ad == NULL, , "invalid data.");
 
-       suspend_modules(ad);
-       quickpanel_ui_del_current_popup();
+       quickpanel_media_fini();
 
-       ad->is_suspended = 1;
+       /* fini quickpanel modules */
+       quickpanel_modules_fini(ad);
+       _edbus_fini(ad);
+       _vconf_fini(ad);
+       _ecore_event_fini(ad);
+
+       quickpanel_keyboard_fini(ad);
+       quickpanel_keyboard_x_fini(ad);
+       quickpanel_uninstall_fini(ad);
+#ifdef QP_REMINDER_ENABLE
+       quickpanel_reminder_fini(ad);
+#endif
+#ifdef QP_EMERGENCY_MODE_ENABLE
+       quickpanel_emergency_mode_fini(ad);
+#endif
+       quickpanel_conf_fini(ad);
 
-       _quickpanel_cache_flush(ad->evas);
+       /* delete quickpanel window */
+       _ui_gui_destroy(ad);
+
+       INFO("Quickpanel is terminated");
 }
 
-static void quickpanel_app_resume(void *data)
+static void _app_resume_cb(void *data)
 {
        DBG("");
-
        struct appdata *ad = data;
        retif(ad == NULL,, "invalid data.");
 
        ad->is_suspended = 0;
+       _ui_handler_enable_set(EINA_FALSE);
+
+       quickpanel_modules_resume(data);
 
-       resume_modules(data);
+       sim_controller_resume();
 }
 
-static void quickpanel_app_service(service_h service, void *data)
+static void _app_pause_cb(void *data)
 {
+       DBG("");
        struct appdata *ad = data;
-       int ret = 0;
-
-       retif(ad == NULL, , "Invialid parameter!");
-
-       INFO(" >>>>>>>>>>>>>>> QUICKPANEL IS STARTED!! <<<<<<<<<<<<<<<< ");
-
-       /* Check emulator */
-       ad->is_emul = quickpanel_is_emul();
-       INFO("quickpanel run in %s", ad->is_emul ? "Emul" : "Device");
-
-       ad->scale = elm_config_scale_get();
-       if (ad->scale < 0)
-               ad->scale = 1.0;
-
-       INFO("quickpanel scale %f", ad->scale);
-
-       /* Get theme */
-       elm_theme_extension_add(NULL, DEFAULT_THEME_EDJ);
-
-       /* create quickpanel window */
-       ret = _quickpanel_ui_create_win(ad);
-       retif(ret != QP_OK, , "Failed to create window!");
-
-       atoms_init_quickpanel();
-
-       ad->E_ILLUME_ATOM_MV_QUICKPANEL_STATE = &E_ILLUME_ATOM_MV_QUICKPANEL_STATE;
-
-       _quickpanel_ui_init_ecore_event(ad);
-
-       _quickpanel_ui_vconf_event_init(ad);
+       retif(ad == NULL,, "invalid data.");
 
-       feedback_initialize();
 
-#ifdef QP_SETTING_ENABLE
-       _quickpanel_ui_setting_show(ad, 1);
-#else /* QP_SETTING_ENABLE */
-       _quickpanel_ui_setting_show(ad, 0);
-#endif /* QP_SETTING_ENABLE */
+       quickpanel_modules_suspend(ad);
 
-       /* init quickpanel modules */
-       init_modules(ad);
+       ad->is_suspended = 1;
 
-       ecore_idler_add(_quickpanel_ui_refresh_cb, ad);
+       if (ad->evas != NULL) {
+               _ui_efl_cache_flush(ad->evas);
+               evas_event_feed_mouse_cancel(ad->evas, ecore_time_get(), NULL);
+       }
 }
 
-static void quickpanel_app_language_changed_cb(void *data)
+static void _app_language_changed_cb(app_event_info_h event_info, void *data)
 {
-       retif(data == NULL, , "Invalid parameter!");
+       DBG("");
+       quickpanel_modules_lang_change(data);
 
-       INFO(" >>>>>>>>>>>>>>> LANGUAGE CHANGED!! <<<<<<<<<<<<<<<< ");
-       lang_change_modules(data);
+       sim_controller_on_language_change();
 }
 
-static void quickpanel_app_region_format_changed_cb(void *data)
+static void _app_region_format_changed_cb(app_event_info_h event_info, void *data)
 {
-       INFO(" >>>>>>>>>>>>>>> region_format CHANGED!! <<<<<<<<<<<<<<<< ");
-}
-
-HAPI void quickpanel_open_quickpanel(void) {
-       Ecore_X_Window xwin;
-       Ecore_X_Window zone;
-       struct appdata *ad = g_app_data;
-
        DBG("");
-
-       retif(ad == NULL, , "Invalid parameter!");
-       retif(ad->win == NULL, , "Invalid parameter!");
-
-       xwin = elm_win_xwindow_get(ad->win);
-       if (xwin != 0) {
-               if ((zone = ecore_x_e_illume_zone_get(xwin)) != 0) {
-                       ecore_x_e_illume_quickpanel_state_send(zone, ECORE_X_ILLUME_QUICKPANEL_STATE_ON);
-               } else {
-                       ERR("failed to get zone");
-               }
-       } else {
-               ERR("failed to get xwin");
-       }
+       quickpanel_modules_lang_change(data);
 }
 
-HAPI void quickpanel_close_quickpanel(bool is_check_lock) {
-       Ecore_X_Window xwin;
-       Ecore_X_Window zone;
-       int is_lock_launched = VCONFKEY_IDLE_UNLOCK;
-       struct appdata *ad = g_app_data;
-
-       DBG("");
+int main(int argc, char *argv[])
+{
+       INFO("BUILD START: %s %s", __DATE__, __TIME__);
+       ERR("BUILD START: %s %s", __DATE__, __TIME__);
 
-       retif(ad == NULL, , "Invalid parameter!");
-       retif(ad->win == NULL, , "Invalid parameter!");
+       int ret = 0;
+       struct appdata ad;
+       ui_app_lifecycle_callback_s event_callback = {0,};
+       app_event_handler_h handlers[5] = {NULL, };
 
-       if (is_check_lock == true) {
-               if (vconf_get_int(VCONFKEY_IDLE_LOCK_STATE, &is_lock_launched) == 0) {
-                       if (is_lock_launched == VCONFKEY_IDLE_LOCK) {
-                               vconf_set_int(VCONFKEY_IDLE_LOCK_STATE, VCONFKEY_IDLE_UNLOCK);
-                               ERR("do unlock");
-                       }
-               }
-       }
+       ERR("quickpanel is forked");
 
-       xwin = elm_win_xwindow_get(ad->win);
-       if (xwin != 0) {
-               if ((zone = ecore_x_e_illume_zone_get(xwin)) != 0) {
-                       ecore_x_e_illume_quickpanel_state_send(zone, ECORE_X_ILLUME_QUICKPANEL_STATE_OFF);
-               } else {
-                       ERR("failed to get zone");
-               }
-       } else {
-               ERR("failed to get xwin");
+       ret = control_privilege();
+       if (ret != 0) {
+               WARN("Failed to control privilege!");
        }
-}
-
-HAPI void quickpanel_toggle_openning_quickpanel(void) {
-       Ecore_X_Window xwin;
-       Ecore_X_Window zone;
-       struct appdata *ad = g_app_data;
 
-       DBG("");
+       event_callback.create = _app_create_cb;
+       event_callback.terminate = _app_terminate_cb;
+       event_callback.pause = _app_pause_cb;
+       event_callback.resume = _app_resume_cb;
+       event_callback.app_control = _app_service_cb;
 
-       retif(ad == NULL, , "Invalid parameter!");
-       retif(ad->win == NULL, , "Invalid parameter!");
+       ui_app_add_event_handler(&handlers[APP_EVENT_LOW_BATTERY], APP_EVENT_LOW_BATTERY, NULL, NULL);
+       ui_app_add_event_handler(&handlers[APP_EVENT_LOW_MEMORY], APP_EVENT_LOW_MEMORY, NULL, 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, _app_language_changed_cb, &ad);
+       ui_app_add_event_handler(&handlers[APP_EVENT_REGION_FORMAT_CHANGED], APP_EVENT_REGION_FORMAT_CHANGED, _app_region_format_changed_cb, &ad);
 
-       xwin = elm_win_xwindow_get(ad->win);
-       if (xwin != 0) {
-               if ((zone = ecore_x_e_illume_zone_get(xwin)) != 0) {
-                       if (ecore_x_e_illume_quickpanel_state_get(zone) == ECORE_X_ILLUME_QUICKPANEL_STATE_ON) {
-                               ecore_x_e_illume_quickpanel_state_send(zone, ECORE_X_ILLUME_QUICKPANEL_STATE_OFF);
-                       } else {
-                               ecore_x_e_illume_quickpanel_state_send(zone, ECORE_X_ILLUME_QUICKPANEL_STATE_ON);
-                       }
-               } else {
-                       ERR("failed to get zone");
-               }
-       } else {
-               ERR("failed to get xwin");
-       }
-}
+       memset(&ad, 0x0, sizeof(struct appdata));
 
-int main(int argc, char *argv[])
-{
-       int r = 0;
-       struct appdata ad;
-       app_event_callback_s app_callback = {0,};
+       g_app_data = &ad;
 
-       r = perm_app_set_privilege("org.tizen.quickpanel", NULL, NULL);
-       if (r != PC_OPERATION_SUCCESS) {
-               WARN("Failed to set privilege!");
+       ret = ui_app_main(argc, argv, &event_callback, (void *)&ad);
+       if (ret != APP_ERROR_NONE) {
+               ERR("ui_app_main() is failed. err = %d", ret);
        }
 
-       app_callback.create = quickpanel_app_create;
-       app_callback.terminate = quickpanel_app_terminate;
-       app_callback.pause = quickpanel_app_pause;
-       app_callback.resume = quickpanel_app_resume;
-       app_callback.service = quickpanel_app_service;
-       app_callback.low_memory = NULL;
-       app_callback.low_battery = NULL;
-       app_callback.device_orientation = NULL;
-       app_callback.language_changed = quickpanel_app_language_changed_cb;
-       app_callback.region_format_changed = quickpanel_app_region_format_changed_cb;
-
-       memset(&ad, 0x0, sizeof(struct appdata));
-
-       g_app_data = &ad;
+       return ret;
 
-       return app_efl_main(&argc, &argv, &app_callback, (void *)&ad);
 }
index fb32a10..5fad73b 100755 (executable)
@@ -1,74 +1,97 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ * Copyright (c) 2009-2015 Samsung Electronics Co., Ltd All Rights Reserved
  *
- * Licensed under the Flora License, Version 1.1 (the "License");
+ * 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 __QUICKPANEL_UI_H__
 #define __QUICKPANEL_UI_H__
 
 #include <Elementary.h>
+#include <E_DBus.h>
+#ifdef HAVE_X
 #include <Ecore_X.h>
 #include <X11/Xatom.h>
+#endif
 #include "media.h"
+#include "common_uic.h"
 
-#if !defined(VENDOR)
-#  define VENDOR "org.tizen"
-#endif
 #if !defined(PACKAGE)
-#  define PACKAGE                      "quickpanel"
+#  define PACKAGE      "quickpanel"
 #endif
 
 #if !defined(LOCALEDIR)
-#  define LOCALEDIR                    "/usr/apps/"VENDOR"."PACKAGE"/res/locale"
+#  define LOCALEDIR    "/usr/apps/org.tizen.quickpanel/res/locale"
 #endif
 
 #if !defined(EDJDIR)
-#  define EDJDIR                       "/usr/apps/"VENDOR"."PACKAGE"/res/edje"
+#  define EDJDIR       "/usr/apps/org.tizen.quickpanel/res/edje"
+#endif
+
+#if !defined(SHARED_DIR)
+#  define SHARED_DIR   "/usr/apps/org.tizen.quickpanel/shared/res"
 #endif
 
 /* EDJ theme */
 #define DEFAULT_EDJ            EDJDIR"/"PACKAGE".edj"
 #define DEFAULT_THEME_EDJ      EDJDIR"/"PACKAGE"_theme.edj"
+#define SLIDER_THEME_EDJ EDJDIR"/"PACKAGE"_slider_theme.edj"
+#define ACTIVENOTI_EDJ         EDJDIR"/"PACKAGE"_activenoti.edj"
 
 #define _EDJ(o) elm_layout_edje_get(o)
-#define _S(str)        dgettext("sys_string", str)
+
 #undef _
 #define _(str) gettext(str)
 #define _NOT_LOCALIZED(str) (str)
 
-#define QP_SETTING_SOUND_SIP_PATH \
-       "/usr/apps/com.samsung.quickpanel/data/sip.wav"
-
 #define STR_ATOM_WINDOW_INPUT_REGION    "_E_COMP_WINDOW_INPUT_REGION"
 #define STR_ATOM_WINDOW_CONTENTS_REGION "_E_COMP_WINDOW_CONTENTS_REGION"
 
 #define MAX_NAM_LEN 4096
 
-#define INDICATOR_COVER_W 82
+#define INDICATOR_COVER_W 64
 #define INDICATOR_COVER_H 60
 
 #define _NEWLINE '\n'
 #define _SPACE ' '
+
+#define QP_DBUS_NAME "org.tizen.quickpanel"
+#define QP_DBUS_PATH "/Org/Tizen/Quickpanel"
+
+#define QP_DBUS_CLIENT_NAME "org.tizen.quickpanelsetting"
+#define QP_DBUS_CLIENT_PATH "/Org/Tizen/Quickpanelsetting"
+
+#if !defined(VENDOR)
+#define QP_PKG_QUICKPANEL      "org.tizen.quickpanel"
+#define QP_SETTING_PKG_SETTING "org.tizen.setting"
+#define QP_MINIAPPTRAY_PKG "org.tizen.mini-apps"
+#else
+#define QP_PKG_QUICKPANEL      VENDOR".quickpanel"
 #define QP_SETTING_PKG_SETTING VENDOR".setting"
-#define QP_SETTING_PKG_SETTING_EMUL    "kto5jikgul.Settings"
+#define QP_MINIAPPTRAY_PKG VENDOR".mini-apps"
+#endif
+#define QP_SEARCH_PKG "org.tizen.sfinder"
 
 struct appdata {
        Evas_Object *win;
-#ifdef QP_INDICATOR_WIDGET_ENABLE
-       Evas_Object *comformant;
-#endif
-       Evas_Object *ly;
+
+       Evas_Object *background;
+       Evas_Object *view_root;
+       Evas_Object *view_page_zero;
+       Evas_Object *ly; //view_base
+
        Evas *evas;
 
        Evas_Object *scroller;
@@ -87,24 +110,21 @@ struct appdata {
        int is_emul; /* 0 : target, 1 : emul */
        int is_suspended;
        int is_opened;
+       int opening_reason;
 
        Ecore_Event_Handler *hdl_client_message;
-       Ecore_Event_Handler *hdl_hardkey;
+       Ecore_Event_Handler *hdl_hardkey_down;
+       Ecore_Event_Handler *hdl_hardkey_up;
+       Eina_Bool is_hardkey_cancel;
 
        E_DBus_Connection *dbus_connection;
-       E_DBus_Signal_Handler *dbus_handler_size;
-       E_DBus_Signal_Handler *dbus_handler_progress;
-       E_DBus_Signal_Handler *dbus_handler_content;
-
-       Evas_Object *cover_indicator_right;
-
-       Ecore_X_Atom *E_ILLUME_ATOM_MV_QUICKPANEL_STATE;
 };
 
 typedef struct _QP_Module {
        char *name;
        /* func */
        int (*init) (void *);
+       void (*init_job_cb) (void *);
        int (*fini) (void *);
        int (*suspend) (void *);
        int (*resume) (void *);
@@ -115,24 +135,14 @@ typedef struct _QP_Module {
        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;
 
-int quickpanel_launch_app(char *app_id, void *data);
-void quickpanel_launch_app_inform_result(const char *pkgname, int retcode);
-int quickpanel_is_emul(void);
-void quickpanel_init_size_genlist(void *data);
-void quickpanel_ui_update_height(void *data);
 void *quickpanel_get_app_data(void);
-int quickpanel_is_suspended(void);
-Evas_Object *quickpanel_ui_load_edj(Evas_Object * parent, const char *file,
-                                           const char *group, int is_just_load);
-void quickpanel_ui_set_indicator_cover(void *data);
-void quickpanel_close_quickpanel(bool is_check_lock);
-void quickpanel_open_quickpanel(void);
-void quickpanel_toggle_openning_quickpanel(void);
 
 #endif                         /* __QUICKPANEL_UI_H__ */
diff --git a/daemon/quickpanel-ui_x11.c b/daemon/quickpanel-ui_x11.c
new file mode 100644 (file)
index 0000000..16af363
--- /dev/null
@@ -0,0 +1,957 @@
+/*
+ * 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 <stdio.h>
+#include <signal.h>
+#include <app.h>
+#include <sys/utsname.h>
+#include <X11/Xlib.h>
+#include <utilX.h>
+#include <Ecore_Input.h>
+#include <vconf.h>
+#include <unistd.h>
+#include <malloc.h>
+#include <privilege-control.h>
+
+/* quickpanel basics */
+#include "common.h"
+#include "quickpanel-ui.h"
+#include "modules.h"
+#include "quickpanel_def.h"
+#include "list_util.h"
+#include "vi_manager.h"
+#include "pager.h"
+#include "page_base.h"
+#ifdef QP_ENABLE_PAGE_EDIT
+#include "page_edit.h"
+#else
+#include "page_setting_all.h"
+#endif
+
+#include "sim_controller.h"
+#include "noti.h"
+/* services */
+#include "keyboard.h"
+#include "keyboard_x.h"
+#include "uninstall.h"
+#ifdef QP_REMINDER_ENABLE
+#include "reminder.h"
+#endif
+#ifdef QP_EMERGENCY_MODE_ENABLE
+#include "emergency_mode.h"
+#endif
+#include "configuration.h"
+#include "minictrl.h"
+#include "util-time.h"
+
+#include <tapi_common.h>
+#include <ITapiSim.h>
+
+
+#define QP_WINDOW_PRIO 300
+
+static struct appdata *g_app_data = NULL;
+
+static Ecore_X_Atom E_ILLUME_ATOM_MV_QUICKPANEL_STATE;
+
+static void _ui_rotate(void *data, int new_angle);
+static void _ui_geometry_info_set(void *data);
+static void _ui_handler_info_set(void *data);
+static void _ui_efl_cache_flush(void *evas);
+
+HAPI void *quickpanel_get_app_data(void)
+{
+       return g_app_data;
+}
+
+/******************************************************************************
+  *
+  * UI
+  *
+  ****************************************************************************/
+static void _ui_efl_cache_flush(void *evas)
+{
+       int file_cache;
+       int collection_cache;
+       int image_cache;
+       int font_cache;
+
+       retif(evas == NULL, , "Evas is NULL\n");
+
+       file_cache = edje_file_cache_get();
+       collection_cache = edje_collection_cache_get();
+       image_cache = evas_image_cache_get(evas);
+       font_cache = evas_font_cache_get(evas);
+
+       edje_file_cache_set(file_cache);
+       edje_collection_cache_set(collection_cache);
+       evas_image_cache_set(evas, 0);
+       evas_font_cache_set(evas, 0);
+
+       evas_image_cache_flush(evas);
+       evas_render_idle_flush(evas);
+       evas_font_cache_flush(evas);
+
+       edje_file_cache_flush();
+       edje_collection_cache_flush();
+
+       edje_file_cache_set(file_cache);
+       edje_collection_cache_set(collection_cache);
+       evas_image_cache_set(evas, image_cache);
+       evas_font_cache_set(evas, font_cache);
+
+       elm_cache_all_flush();
+       malloc_trim(0);
+}
+
+static void _ui_handler_input_region_set(void *data, int contents_height)
+{
+       struct appdata *ad = NULL;
+       Ecore_X_Window xwin;
+       Ecore_X_Atom atom_window_input_region = 0;
+       unsigned int window_input_region[4] = {0,};
+
+       retif(data == NULL,  , "Invialid parameter!");
+       ad = data;
+
+       xwin = elm_win_xwindow_get(ad->win);
+
+       switch (ad->angle) {
+       case 0:
+               window_input_region[0] = 0; //X
+               window_input_region[1] = contents_height; // Y
+               window_input_region[2] = ad->win_width; // Width
+               window_input_region[3] = ELM_SCALE_SIZE(QP_HANDLE_H); // height
+               break;
+       case 90:
+               window_input_region[0] = contents_height; //X
+               window_input_region[1] = 0; // Y
+               window_input_region[2] = ELM_SCALE_SIZE(QP_HANDLE_H); // Width
+               window_input_region[3] = ad->win_height; // height
+               break;
+       case 180:
+               window_input_region[0] = 0; //X
+               window_input_region[1] = ad->win_height - contents_height - ELM_SCALE_SIZE(QP_HANDLE_H); // Y
+               window_input_region[2] = ad->win_width; // Width
+               window_input_region[3] = ELM_SCALE_SIZE(QP_HANDLE_H); // height
+               break;
+       case 270:
+               window_input_region[0] = ad->win_width - contents_height - ELM_SCALE_SIZE(QP_HANDLE_H); //X
+               window_input_region[1] = 0; // Y
+               window_input_region[2] = ELM_SCALE_SIZE(QP_HANDLE_H); // Width
+               window_input_region[3] = ad->win_height; // height
+               break;
+       }
+
+       INFO("win_input_0:%d\nwin_input_1:%d\nwin_input_2:%d\nwin_input_3:%d\n"
+                       ,window_input_region[0]
+                       ,window_input_region[1]
+                       ,window_input_region[2]
+                   ,window_input_region[3]
+                       );
+
+       atom_window_input_region = ecore_x_atom_get(STR_ATOM_WINDOW_INPUT_REGION);
+       ecore_x_window_prop_card32_set(xwin, atom_window_input_region, window_input_region, 4);
+}
+
+static void _ui_handler_content_region_set(void *data, int contents_height)
+{
+       struct appdata *ad = NULL;
+       Ecore_X_Window xwin;
+       Ecore_X_Atom atom_window_contents_region = 0;
+       unsigned int window_contents_region[4] = {0,};
+
+       retif(data == NULL,  , "Invialid parameter!");
+       ad = data;
+
+       xwin = elm_win_xwindow_get(ad->win);
+
+       switch (ad->angle) {
+       case 0:
+               window_contents_region[0] = 0; //X
+               window_contents_region[1] = 0; // Y
+               window_contents_region[2] = ad->win_width; // Width
+               window_contents_region[3] = contents_height; // height
+               break;
+       case 90:
+               window_contents_region[0] = 0; //X
+               window_contents_region[1] = 0; // Y
+               window_contents_region[2] = contents_height; // Width
+               window_contents_region[3] = ad->win_height; // height
+               break;
+       case 180:
+               window_contents_region[0] = 0; //X
+               window_contents_region[1] = ad->win_height - contents_height; // Y
+               window_contents_region[2] = ad->win_width; // Width
+               window_contents_region[3] = contents_height; // height
+               break;
+       case 270:
+               window_contents_region[0] = ad->win_width - contents_height ; //X
+               window_contents_region[1] = 0; // Y
+               window_contents_region[2] = contents_height; // Width
+               window_contents_region[3] = ad->win_height; // height
+               break;
+       }
+
+       DBG("win_contents_0:%d\nwin_contents_1:%d\nwin_contents_2:%d\nwin_contents_3:%d\n"
+                       ,window_contents_region[0]
+                       ,window_contents_region[1]
+                       ,window_contents_region[2]
+                   ,window_contents_region[3]
+                       );
+
+    atom_window_contents_region = ecore_x_atom_get(STR_ATOM_WINDOW_CONTENTS_REGION);
+    ecore_x_window_prop_card32_set(xwin, atom_window_contents_region, window_contents_region, 4);
+}
+
+static void _ui_handler_info_set(void *data)
+{
+       int contents_height = 0;
+       struct appdata *ad = NULL;
+
+       retif(data == NULL, , "data is NULL");
+       ad = data;
+
+       contents_height = ad->gl_distance_from_top + ad->gl_limit_height;
+
+       _ui_handler_input_region_set(ad, contents_height);
+       _ui_handler_content_region_set(ad, contents_height);
+}
+
+static void _ui_geometry_info_set(void *data)
+{
+       struct appdata *ad = NULL;
+       int max_height_window = 0;
+       Evas_Coord genlist_y = 0;
+
+       retif(data == NULL, , "data is NULL");
+       ad = data;
+
+       if (ad->angle == 90 || ad->angle == 270 ) {
+               max_height_window = ad->win_width;
+       } else {
+               max_height_window = ad->win_height;
+       }
+
+       edje_object_part_geometry_get(_EDJ(ad->ly), "qp.base.list.swallow", NULL, &genlist_y, NULL, NULL);
+
+       ad->gl_distance_from_top = genlist_y;
+       ad->gl_distance_to_bottom = ELM_SCALE_SIZE(QP_HANDLE_H);
+       ad->gl_limit_height = max_height_window - ad->gl_distance_from_top - ad->gl_distance_to_bottom;
+}
+
+/*****************************************************************************
+  *
+  * ui rotation functions
+  *
+  ****************************************************************************/
+static void _ui_rotation_wm_cb(void *data, Evas_Object *obj, void *event)
+{
+       int angle = 0;
+       struct appdata *ad = data;
+       retif(ad == NULL, , "Invalid parameter!");
+
+       angle = elm_win_rotation_get((Evas_Object *)obj);
+
+       DBG("ROTATE:%d", angle);
+
+       quickpanel_minictrl_rotation_report(angle);
+
+       _ui_rotate(ad, angle);
+}
+
+static int _ui_rotation_angle_get(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       retif(ad == NULL, 0, "Invalid parameter!");
+       retif(ad->win == NULL, 0, "Invalid parameter!");
+
+       return elm_win_rotation_get(ad->win);
+}
+
+static void _ui_handler_enable_set(Eina_Bool is_enable)
+{
+       const char *signal = NULL;
+       struct appdata *ad = quickpanel_get_app_data();
+       retif(ad == NULL, , "invalid data.");
+       retif(ad->view_root == NULL, , "data is NULL");
+
+       if (is_enable == EINA_TRUE) {
+               signal = "mouse,down,1";
+       } else {
+               signal = "mouse,up,1";
+       }
+
+       elm_object_signal_emit(ad->view_root, signal, "qp.handler.bg");
+}
+
+static void _ui_rotation_handler(struct appdata *ad, int angle)
+{
+       const char *signal = NULL;
+
+       retif(ad == NULL, , "data is NULL");
+       retif(ad->view_root == NULL, , "data is NULL");
+
+
+       if (angle == 90 || angle == 270) {
+               signal = "quickpanel.landscape";
+       } else {
+               signal = "quickpanel.portrait";
+       }
+
+       elm_object_signal_emit(ad->view_root, signal, "quickpanel.prog");
+}
+
+static void _ui_rotate(void *data, int new_angle)
+{
+       struct appdata *ad = data;
+       retif(data == NULL, , "Invalid parameter!");
+
+       DBG("ROTATION: new:%d old:%d", new_angle, ad->angle);
+
+       if (new_angle == 0 || new_angle == 90 || new_angle == 180 || new_angle == 270) {
+               if (new_angle != ad->angle) {
+                       ad->angle = new_angle;
+                       quickpanel_modules_refresh(ad);
+                       _ui_geometry_info_set(ad);
+                       _ui_handler_info_set(ad);
+                       _ui_rotation_handler(ad, ad->angle);
+               }
+       }
+}
+
+/*****************************************************************************
+  *
+  * ui creation/deletion functions
+  *
+  ****************************************************************************/
+static Evas_Object *_ui_window_add(const char *name, int prio)
+{
+       Evas_Object *eo = NULL;
+       Ecore_X_Window xwin;
+
+       eo = elm_win_add(NULL, name, ELM_WIN_BASIC);
+
+       if (eo != NULL) {
+               elm_win_alpha_set(eo, EINA_TRUE);
+               elm_win_indicator_mode_set(eo, ELM_WIN_INDICATOR_HIDE);
+
+               elm_win_title_set(eo, name);
+               elm_win_borderless_set(eo, EINA_TRUE);
+               elm_win_autodel_set(eo, EINA_TRUE);
+
+               /* set this window as a quickpanel */
+               elm_win_quickpanel_set(eo, 1);
+               elm_win_quickpanel_priority_major_set(eo, prio);
+
+               if (elm_win_wm_rotation_supported_get(eo)) {
+                       int rots[4] = { 0, 90, 180, 270 };
+                       elm_win_wm_rotation_available_rotations_set(eo, rots, 4);
+               }
+
+               /* icccm name class set */
+               xwin = elm_win_xwindow_get(eo);
+               ecore_x_icccm_name_class_set(xwin, "QUICKPANEL", "QUICKPANEL");
+
+               unsigned int val = 1;
+               ecore_x_window_prop_card32_set
+                       (xwin, ECORE_X_ATOM_E_ILLUME_ACCESS_CONTROL, &val, 1);
+
+               evas_object_show(eo);
+       }
+
+       return eo;
+}
+
+static int _ui_gui_create(void *data)
+{
+       struct appdata *ad = data;
+       int w = 0, h = 0;
+       int initial_angle = 0;
+       Evas_Object *page_base = NULL;
+
+       retif(data == NULL, QP_FAIL, "Invialid parameter!");
+
+       ad->win = _ui_window_add("Quickpanel Window",
+                                       QP_WINDOW_PRIO);
+       retif(ad->win == NULL, QP_FAIL, "Failed to create main window");
+       //build error
+       //elm_win_focus_allow_set(ad->win, EINA_TRUE);
+
+       evas_object_smart_callback_add(ad->win, "wm,rotation,changed",
+                                       _ui_rotation_wm_cb, ad);
+
+       ad->background = elm_bg_add(ad->win);
+       if (ad->background  != NULL) {
+               evas_object_size_hint_weight_set(ad->background,
+                                                EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+               elm_win_resize_object_add(ad->win, ad->background);
+               evas_object_show(ad->background);
+       } else {
+               ERR("failed to create background");
+       }
+
+       ad->view_root = quickpanel_uic_load_edj(ad->background,
+                               DEFAULT_EDJ, "quickpanel/root", 0);
+       retif(ad->view_root == NULL, QP_FAIL, "Failed to create main page");
+
+       Evas_Object *pager_scroller = quickpanel_pager_new(ad->view_root, NULL);
+       Evas_Object *pager_box = quickpanel_pager_view_get("BOX");
+
+       page_base = quickpanel_page_base_create(pager_box, NULL);
+       retif(page_base == NULL, QP_FAIL, "Failed to create main page");
+       ad->ly = quickpanel_page_base_view_get("LAYOUT");
+       retif(ad->ly == NULL, QP_FAIL, "Failed to create main page");
+
+       elm_box_pack_end(pager_box, page_base);
+       elm_win_resize_object_add(ad->win, ad->view_root);
+       elm_object_part_content_set(ad->view_root, "qp.root.swallow", pager_scroller);
+
+       /* get noti evas */
+       ad->evas = evas_object_evas_get(ad->win);
+       ad->list = quickpanel_page_base_view_get("BOX");
+       ad->scroller = quickpanel_page_base_view_get("SCROLLER");
+
+       //ecore_x_window_size_get(ecore_x_window_root_first_get(), &w, &h);
+       elm_win_screen_size_get(ad->win, NULL, NULL, &w, &h);
+       evas_object_resize(ad->win, w, h);
+
+       ad->win_width = w;
+       ad->win_height = h;
+
+       _ui_geometry_info_set(ad);
+
+       initial_angle = _ui_rotation_angle_get(ad);
+       _ui_rotate(ad, initial_angle);
+
+       quickpanel_pager_page_set(PAGE_IDX_MAIN, 1);
+
+       sim_controller_init(ad->ly);
+
+       quickpanel_noti_init_noti_section();
+
+       return 0;
+}
+
+static int _ui_gui_destroy(void *data)
+{
+       struct appdata *ad = data;
+       retif(data == NULL, QP_FAIL, "Invialid parameter!");
+
+       if (ad->list != NULL) {
+               evas_object_del(ad->list);
+               ad->list = NULL;
+       }
+       if (ad->scroller != NULL) {
+               evas_object_del(ad->scroller);
+               ad->scroller = NULL;
+       }
+       if (ad->ly != NULL) {
+               evas_object_del(ad->ly);
+               ad->ly = NULL;
+       }
+       if (ad->win != NULL) {
+               evas_object_del(ad->win);
+               ad->win = NULL;
+       }
+
+       return QP_OK;
+}
+
+static void _ui_setting_visibility_set(struct appdata *ad, int show)
+{
+       retif(ad == NULL, , "data is NULL");
+       retif(ad->ly == NULL, , "data is NULL");
+
+       elm_object_signal_emit(ad->ly, "quickpanel.setting.show",
+                                       "quickpanel.prog");
+}
+
+/*****************************************************************************
+  *
+  * event handler initialization functions
+  *
+  ****************************************************************************/
+static void _vconf_event_powerff_cb(keynode_t *node,
+                                               void *data)
+{
+       int val;
+       if (vconf_get_int(VCONFKEY_SYSMAN_POWER_OFF_STATUS, &val) == 0 &&
+                       (val == VCONFKEY_SYSMAN_POWER_OFF_DIRECT || val == VCONFKEY_SYSMAN_POWER_OFF_RESTART)) {
+               ui_app_exit();
+       }
+}
+
+static void _vconf_event_lcdoff_cb(keynode_t *node,
+                                               void *data)
+{
+       int ret = 0;
+       int pm_state = VCONFKEY_PM_STATE_NORMAL;
+
+       ret = vconf_get_int(VCONFKEY_PM_STATE, &pm_state);
+
+       if (ret == 0 && pm_state == VCONFKEY_PM_STATE_LCDOFF) {
+               quickpanel_uic_close_quickpanel(false, 0);
+       }
+}
+
+static Eina_Bool _ecore_event_client_message_cb(void *data, int type,
+                                                void *event)
+{
+       struct appdata *ad = data;
+       Ecore_X_Event_Client_Message *ev = 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_OFF) {
+                       SERR("quickpanel is closed");
+                       ad->is_opened = 0;
+                       quickpanel_util_time_timer_enable_set(0);
+                       quickpanel_keyboard_closing_fini(ad);
+                       quickpanel_keyboard_x_closing_fini(ad);
+                       quickpanel_modules_closed(data);
+                       quickpanel_media_player_stop();
+               }
+       } else if (ev->message_type == E_ILLUME_ATOM_MV_QUICKPANEL_STATE) {
+               if (ev->data.l[0] == 1) {
+                       // pressed
+                       if (ad->is_opened == 0) {
+                               quickpanel_util_time_timer_enable_set(1);
+                               quickpanel_keyboard_openning_init(ad);
+                               quickpanel_keyboard_x_openning_init(ad);
+                               if (quickpanel_uic_opened_reason_get() != OPENED_BY_CMD_SHOW_SETTINGS) {
+                                       quickpanel_pager_page_set(PAGE_IDX_MAIN, 0);
+                               }
+                       }
+                       _ui_handler_enable_set(EINA_TRUE);
+               }
+               if (ev->data.l[0] == 0) {
+                       // released
+                       if (ad->is_opened == 0) {
+                               SERR("quickpanel is opened");
+                               ad->is_opened = 1;
+                               quickpanel_modules_opened(data);
+                               quickpanel_media_player_stop();
+                               quickpanel_uic_opened_reason_set(OPENED_NO_REASON);
+                       }
+                       _ui_handler_enable_set(EINA_FALSE);
+               }
+       }
+       return ECORE_CALLBACK_RENEW;
+}
+
+static void _vconf_init(struct appdata *ad)
+{
+       int ret = 0;
+
+       ret = vconf_notify_key_changed(VCONFKEY_PM_STATE,
+                       _vconf_event_lcdoff_cb, ad);
+       if (ret != 0) {
+               ERR("VCONFKEY_PM_STATE: %d", ret);
+       }
+
+       ret = vconf_notify_key_changed(VCONFKEY_SYSMAN_POWER_OFF_STATUS,
+                       _vconf_event_powerff_cb, ad);
+       if (ret != 0) {
+               ERR("VCONFKEY_PM_STATE: %d", ret);
+       }
+}
+
+static void _vconf_fini(struct appdata *ad)
+{
+       int ret = 0;
+
+       ret = vconf_ignore_key_changed(VCONFKEY_PM_STATE,
+                       _vconf_event_lcdoff_cb);
+       if (ret != 0) {
+               ERR("VCONFKEY_PM_STATE: %d", ret);
+       }
+
+       ret = vconf_ignore_key_changed(VCONFKEY_SYSMAN_POWER_OFF_STATUS,
+                       _vconf_event_powerff_cb);
+       if (ret != 0) {
+               ERR("VCONFKEY_PM_STATE: %d", ret);
+       }
+}
+
+static void _edbus_init(struct appdata *ad)
+{
+       e_dbus_init();
+       ad->dbus_connection = e_dbus_bus_get(DBUS_BUS_SYSTEM);
+       if (ad->dbus_connection == NULL) {
+               ERR("noti register : failed to get dbus bus");
+       }
+}
+
+static void _edbus_fini(struct appdata *ad)
+{
+       if (ad->dbus_connection != NULL) {
+               e_dbus_connection_close(ad->dbus_connection);
+               ad->dbus_connection = NULL;
+               e_dbus_shutdown();
+       }
+}
+
+static void _ecore_event_init(struct appdata *ad)
+{
+       Ecore_Event_Handler *hdl = NULL;
+
+       /* Register window rotate event */
+       hdl = ecore_event_handler_add(ECORE_X_EVENT_CLIENT_MESSAGE,
+                       _ecore_event_client_message_cb, ad);
+       if (hdl == NULL) {
+               ERR("failed to add handler(ECORE_X_EVENT_CLIENT_MESSAGE)");
+       }
+
+       ad->hdl_client_message = hdl;
+}
+
+static void _ecore_event_fini(struct appdata *ad)
+{
+       if (ad->hdl_client_message != NULL) {
+               ecore_event_handler_del(ad->hdl_client_message);
+               ad->hdl_client_message = NULL;
+       }
+}
+
+static void _x_atom_init(void)
+{
+       E_ILLUME_ATOM_MV_QUICKPANEL_STATE = ecore_x_atom_get("_E_MOVE_QUICKPANEL_STATE");
+}
+/*****************************************************************************
+  *
+  * App efl main interface
+  *
+  ****************************************************************************/
+static void _sigaction_terminate_handler(int signum, siginfo_t *info, void *unused)
+{
+       ERR("quickpanel going to be terminated");
+       ui_app_exit();
+}
+
+static void _service_request_process(app_control_h service, void *data)
+{
+       char *value = NULL;
+       retif(service == NULL, , "Invialid parameter!");
+
+       if (!app_control_get_extra_data(service, "HIDE_LAUNCH", &value))
+       {
+               if (value != NULL) {
+                       ERR("HIDE_LAUNCH: %s", value);
+                       if (!strcmp(value, "1")) {
+                               quickpanel_uic_close_quickpanel(false, 0);
+                       } else {
+                               quickpanel_uic_open_quickpanel(OPENED_BY_CMD_HIDE_LAUNCH);
+                       }
+
+                       free(value);
+               }
+       } else if (!app_control_get_extra_data(service, "SHOW_SETTINGS", &value)) {
+               if (value != NULL) {
+                       ERR("SHOW_SETTINGS: %s", value);
+                       if (!strcmp(value, "1")) {
+                               quickpanel_pager_page_set(PAGE_IDX_EDITING, 0);
+                               quickpanel_uic_open_quickpanel(OPENED_BY_CMD_SHOW_SETTINGS);
+                       }
+
+                       free(value);
+               }
+       }
+#ifdef QP_EMERGENCY_MODE_ENABLE
+       else if (!app_control_get_extra_data(service, "EMERGENCY_MODE_LAUNCH", &value)) {
+               if (value != NULL) {
+                       ERR("EMERGENCY_MODE_LAUNCH: %s", value);
+                       if (!strcmp(value, "1")) {
+                               if (quickpanel_emergency_mode_syspopup_launch() == QP_FAIL) {
+                                       ERR("failed to launch emergency mode syspopup");
+                               } else {
+                                       quickpanel_uic_close_quickpanel(true, 0);
+                               }
+                       }
+
+                       free(value);
+               }
+       }
+#endif
+}
+
+static Eina_Bool _appcore_cache_flush_timer_cb(void *data)
+{
+       if (!quickpanel_uic_is_suspended()) {
+               return ECORE_CALLBACK_CANCEL;
+       }
+
+       return ECORE_CALLBACK_CANCEL;
+}
+
+static Eina_Bool _ui_refresh_idler_cb(void *data)
+{
+       DBG("");
+       struct appdata *ad = data;
+       retif(ad == NULL, QP_FAIL, "Invalid parameter!");
+
+       quickpanel_modules_refresh(ad);
+       _ui_geometry_info_set(ad);
+       _ui_handler_info_set(ad);
+
+       /*      Cache memory is cleared when the application paused (every time, after 5 seconds (in appcore)),
+        *      but after running in a minimized mode application have status AS_RUNNING.
+        *      Application have status AS_PAUSED only after change of visibility to hidden condition by user (on hiding window)
+        *      Cleaning must be performed only once after application loading in hidden condition
+        *      (and stay in a hidden condition at time of cleaning).
+        */
+       ecore_timer_add(10, _appcore_cache_flush_timer_cb, NULL);
+
+       return EINA_FALSE;
+}
+
+static void _quickpanel_initialize(void *data)
+{
+       int ret = 0;
+       struct appdata *ad = data;
+       retif(ad == NULL, , "Invialid parameter!");
+
+       INFO(">> Creating Quickpanel");
+       /* Check emulator */
+       ad->is_emul = quickpanel_uic_is_emul();
+       INFO("quickpanel run in %s", ad->is_emul ? "Emul" : "Device");
+
+       int w, h;
+       Ecore_X_Screen *screen = ecore_x_default_screen_get();
+       //ecore_x_screen_size_get(screen, &w, &h);
+       elm_win_screen_size_get(screen, NULL, NULL, &w, &h);
+
+       ad->scale = elm_config_scale_get();
+       if (ad->scale < 0) {
+               ad->scale = 1.0;
+       }
+
+       INFO("quickpanel scale %f", ad->scale);
+
+       ad->is_suspended = 1;
+
+       /* Get theme */
+       elm_theme_extension_add(NULL, DEFAULT_THEME_EDJ);
+       /* create quickpanel window */
+       ret = _ui_gui_create(ad);
+       retif(ret != QP_OK, , "Failed to create window!");
+
+       quickpanel_media_init();
+
+       _x_atom_init();
+       _ecore_event_init(ad);
+       _vconf_init(ad);
+       _edbus_init(ad);
+
+       quickpanel_uninstall_init(ad);
+#ifdef QP_EMERGENCY_MODE_ENABLE
+       quickpanel_emergency_mode_init(ad);
+#endif
+       quickpanel_conf_init(ad);
+       quickpanel_keyboard_init(ad);
+       quickpanel_keyboard_x_init(ad);
+#ifdef QP_REMINDER_ENABLE
+       quickpanel_reminder_init(ad);
+#endif
+
+#ifdef QP_SETTING_ENABLE
+       _ui_setting_visibility_set(ad, 1);
+#else /* QP_SETTING_ENABLE */
+       _ui_setting_visibility_set(ad, 0);
+#endif /* QP_SETTING_ENABLE */
+
+       /* init quickpanel modules */
+       quickpanel_modules_init(ad);
+       ecore_idler_add(_ui_refresh_idler_cb, ad);
+}
+
+static bool _app_create_cb(void *data)
+{
+       ERR("");
+
+       elm_config_engine_set("opengl_x11");
+
+       elm_app_base_scale_set(1.8);
+
+       pid_t pid;
+       int r;
+
+       // signal handler
+       struct sigaction act;
+       act.sa_sigaction = _sigaction_terminate_handler;
+       act.sa_flags = SA_SIGINFO;
+
+       int ret = sigemptyset(&act.sa_mask);
+       if (ret < 0) {
+               ERR("Failed to sigemptyset[%s]", strerror(errno));
+       }
+       ret = sigaddset(&act.sa_mask, SIGTERM);
+       if (ret < 0) {
+               ERR("Failed to sigaddset[%s]", strerror(errno));
+       }
+       ret = sigaction(SIGTERM, &act, NULL);
+       if (ret < 0) {
+               ERR("Failed to sigaction[%s]", strerror(errno));
+       }
+
+       pid = setsid();
+       if (pid < 0) {
+               WARN("Failed to set session id!");
+       }
+
+       r = nice(2);
+       if (r == -1) {
+               WARN("Failed to set nice value!");
+       }
+
+       return TRUE;
+}
+
+static void _app_service_cb(app_control_h service, void *data)
+{
+       struct appdata *ad = data;
+       retif(ad == NULL, , "Invialid parameter!");
+
+       if (ad->win == NULL && ad->ly == NULL) {
+               _quickpanel_initialize(data);
+       } else {
+               _service_request_process(service, data);
+       }
+}
+
+static void _app_terminate_cb(void *data)
+{
+       ERR("");
+
+       struct appdata *ad = data;
+       retif(ad == NULL, , "invalid data.");
+
+       quickpanel_media_fini();
+
+       /* fini quickpanel modules */
+       quickpanel_modules_fini(ad);
+       _edbus_fini(ad);
+       _vconf_fini(ad);
+       _ecore_event_fini(ad);
+
+       quickpanel_keyboard_fini(ad);
+       quickpanel_keyboard_x_fini(ad);
+       quickpanel_uninstall_fini(ad);
+#ifdef QP_REMINDER_ENABLE
+       quickpanel_reminder_fini(ad);
+#endif
+#ifdef QP_EMERGENCY_MODE_ENABLE
+       quickpanel_emergency_mode_fini(ad);
+#endif
+       quickpanel_conf_fini(ad);
+
+       /* delete quickpanel window */
+       _ui_gui_destroy(ad);
+
+       INFO("Quickpanel is terminated");
+}
+
+static void _app_resume_cb(void *data)
+{
+       DBG("");
+       struct appdata *ad = data;
+       retif(ad == NULL,, "invalid data.");
+
+       ad->is_suspended = 0;
+       _ui_handler_enable_set(EINA_FALSE);
+
+       quickpanel_modules_resume(data);
+
+       sim_controller_resume();
+}
+
+static void _app_pause_cb(void *data)
+{
+       DBG("");
+       struct appdata *ad = data;
+       retif(ad == NULL,, "invalid data.");
+
+
+       quickpanel_modules_suspend(ad);
+
+       ad->is_suspended = 1;
+
+       if (ad->evas != NULL) {
+               _ui_efl_cache_flush(ad->evas);
+               evas_event_feed_mouse_cancel(ad->evas, ecore_time_get(), NULL);
+       }
+}
+
+static void _app_language_changed_cb(app_event_info_h event_info, void *data)
+{
+       DBG("");
+       quickpanel_modules_lang_change(data);
+
+       sim_controller_on_language_change();
+}
+
+static void _app_region_format_changed_cb(app_event_info_h event_info, void *data)
+{
+       DBG("");
+       quickpanel_modules_lang_change(data);
+}
+
+int main(int argc, char *argv[])
+{
+       INFO("BUILD START: %s %s", __DATE__, __TIME__);
+       ERR("BUILD START: %s %s", __DATE__, __TIME__);
+
+       int ret = 0;
+       struct appdata ad;
+       ui_app_lifecycle_callback_s event_callback = {0,};
+       app_event_handler_h handlers[5] = {NULL, };
+
+       ERR("quickpanel is forked");
+
+       ret = control_privilege();
+       if (ret != 0) {
+               WARN("Failed to control privilege!");
+       }
+
+       event_callback.create = _app_create_cb;
+       event_callback.terminate = _app_terminate_cb;
+       event_callback.pause = _app_pause_cb;
+       event_callback.resume = _app_resume_cb;
+       event_callback.app_control = _app_service_cb;
+
+       ui_app_add_event_handler(&handlers[APP_EVENT_LOW_BATTERY], APP_EVENT_LOW_BATTERY, NULL, NULL);
+       ui_app_add_event_handler(&handlers[APP_EVENT_LOW_MEMORY], APP_EVENT_LOW_MEMORY, NULL, 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, _app_language_changed_cb, &ad);
+       ui_app_add_event_handler(&handlers[APP_EVENT_REGION_FORMAT_CHANGED], APP_EVENT_REGION_FORMAT_CHANGED, _app_region_format_changed_cb, &ad);
+
+       memset(&ad, 0x0, sizeof(struct appdata));
+
+       g_app_data = &ad;
+
+       ret = ui_app_main(argc, argv, &event_callback, (void *)&ad);
+       if (ret != APP_ERROR_NONE) {
+               ERR("ui_app_main() is failed. err = %d", ret);
+       }
+
+       return ret;
+
+}
diff --git a/daemon/service/animated_icon.c b/daemon/service/animated_icon.c
new file mode 100644 (file)
index 0000000..352ca76
--- /dev/null
@@ -0,0 +1,93 @@
+/*
+ * 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 "quickpanel-ui.h"
+#include "common.h"
+#include "quickpanel_def.h"
+#include "animated_icon.h"
+
+#define E_DATA_ANI_ICON_TYPE "ANI_ICON_TYPE"
+#define PATH_DOWNLOAD "reserved://quickpanel/ani/downloading"
+#define PATH_UPLOAD "reserved://quickpanel/ani/uploading"
+#define PATH_INSTALL "reserved://quickpanel/ani/install"
+
+static qp_animated_icon_type _animated_type_get(const char *path)
+{
+       retif_nomsg(path == NULL, QP_ANIMATED_ICON_NONE);
+
+       if (strncasecmp(path, PATH_DOWNLOAD, MIN(strlen(PATH_DOWNLOAD), strlen(path))) == 0) {
+               return QP_ANIMATED_ICON_DOWNLOAD;
+       } else if (strncasecmp(path, PATH_UPLOAD, MIN(strlen(PATH_UPLOAD), strlen(path))) == 0) {
+               return QP_ANIMATED_ICON_UPLOAD;
+       } else if (strncasecmp(path, PATH_INSTALL, MIN(strlen(PATH_INSTALL), strlen(path))) == 0) {
+               return QP_ANIMATED_ICON_INSTALL;
+       }
+
+       return QP_ANIMATED_ICON_NONE;
+}
+
+HAPI Evas_Object *quickpanel_animated_icon_get(Evas_Object *parent, const char *path)
+{
+       qp_animated_icon_type type = QP_ANIMATED_ICON_NONE;
+       const char *layout_icon = NULL;
+       Evas_Object *layout = NULL;
+       retif_nomsg(parent == NULL, NULL);
+       retif_nomsg(path == NULL, NULL);
+
+       type = _animated_type_get(path);
+
+       if (type == QP_ANIMATED_ICON_DOWNLOAD) {
+               layout_icon = "quickpanel/animated_icon_download";
+       } else if (type == QP_ANIMATED_ICON_UPLOAD) {
+               layout_icon = "quickpanel/animated_icon_upload";
+       } else if (type == QP_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, E_DATA_ANI_ICON_TYPE, (void *)type);
+               evas_object_show(layout);
+       }
+
+       return layout;
+}
+
+HAPI int quickpanel_animated_icon_is_same_icon(Evas_Object *view, const char *path)
+{
+       qp_animated_icon_type type = QP_ANIMATED_ICON_NONE;
+       qp_animated_icon_type type_old = QP_ANIMATED_ICON_NONE;
+       retif_nomsg(view == NULL, 0);
+       retif_nomsg(path == NULL, 0);
+
+       type = _animated_type_get(path);
+       type_old = (qp_animated_icon_type)evas_object_data_get(view,
+                       E_DATA_ANI_ICON_TYPE);
+
+       if (type == type_old) {
+               return 1;
+       }
+
+       return 0;
+}
diff --git a/daemon/service/animated_icon.h b/daemon/service/animated_icon.h
new file mode 100644 (file)
index 0000000..20f3890
--- /dev/null
@@ -0,0 +1,35 @@
+/*
+ * 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 _QP_SERVICE_ANIMATED_ICON_DEF_
+#define _QP_SERVICE_ANIMATED_ICON_DEF_
+
+#include "quickpanel-ui.h"
+
+typedef enum _qp_animated_icon_type {
+       QP_ANIMATED_ICON_NONE = -1,
+       QP_ANIMATED_ICON_DOWNLOAD = 1,
+       QP_ANIMATED_ICON_UPLOAD,
+       QP_ANIMATED_ICON_INSTALL,
+} qp_animated_icon_type;
+
+Evas_Object *quickpanel_animated_icon_get(Evas_Object *parent, const char *path);
+int quickpanel_animated_icon_is_same_icon(Evas_Object *view, const char *path);
+
+#endif
diff --git a/daemon/service/configuration.c b/daemon/service/configuration.c
new file mode 100644 (file)
index 0000000..7ddc6cf
--- /dev/null
@@ -0,0 +1,86 @@
+/*
+ * 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 <system_settings.h>
+#include "common.h"
+#include "configuration.h"
+
+static struct _s_configuration_info {
+       int longpress_threshold;
+} s_configuration_info = {
+#ifdef HAVE_X
+       .longpress_threshold = SYSTEM_SETTINGS_TAP_AND_HOLD_DELAY_SHORT,
+#else
+       .longpress_threshold = 0,
+#endif
+};
+
+static void _conf_longpress_threshold_cb(system_settings_key_e key, void *user_data)
+{
+#ifdef HAVE_X
+       int delay = SYSTEM_SETTINGS_TAP_AND_HOLD_DELAY_SHORT; /* default 0.5 sec */
+#else
+       int delay = 0.5;
+#endif
+
+#ifdef HAVE_X
+       if (SYSTEM_SETTINGS_KEY_TAP_AND_HOLD_DELAY == key)
+#endif
+       {
+#ifdef HAVE_X
+               if (system_settings_get_value_int(SYSTEM_SETTINGS_KEY_TAP_AND_HOLD_DELAY, &delay) != 0) {
+                       ERR("Failed to get tap and hold delay");
+                       return;
+               }
+#endif
+               if (s_configuration_info.longpress_threshold != delay) {
+                       s_configuration_info.longpress_threshold = delay;
+               }
+
+               DBG("Current tap and hold delay : [%d] msec", delay);
+       }
+}
+
+HAPI void quickpanel_conf_init(void *data)
+{
+#ifdef HAVE_X
+       if (system_settings_get_value_int(SYSTEM_SETTINGS_KEY_TAP_AND_HOLD_DELAY,
+                       &s_configuration_info.longpress_threshold) != 0) {
+               ERR("Failed to get tap and hold delay");
+       }
+
+       if (system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_TAP_AND_HOLD_DELAY,
+                       _conf_longpress_threshold_cb, NULL) != 0) {
+               ERR("Failed to set tap and hold delay changed callback");
+       }
+#endif
+}
+
+HAPI void quickpanel_conf_fini(void *data)
+{
+#ifdef HAVE_X
+   if (system_settings_unset_changed_cb(SYSTEM_SETTINGS_KEY_TAP_AND_HOLD_DELAY) != 0) {
+               ERR("Failed to unset tab and hold delay changed callback");
+       }
+#endif
+}
+
+HAPI double quickpanel_conf_longpress_time_get(void)
+{
+   return (double)(s_configuration_info.longpress_threshold)/(double)1000.0;
+}
diff --git a/daemon/service/configuration.h b/daemon/service/configuration.h
new file mode 100644 (file)
index 0000000..df37014
--- /dev/null
@@ -0,0 +1,28 @@
+/*
+ * 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 _QP_SERVICE_CONFIGURATION_DEF_
+#define _QP_SERVICE_CONFIGURATION_DEF_
+
+#include "quickpanel-ui.h"
+
+void quickpanel_conf_init(void *data);
+void quickpanel_conf_fini(void *data);
+double quickpanel_conf_longpress_time_get(void);
+
+#endif
diff --git a/daemon/service/emergency_mode.c b/daemon/service/emergency_mode.c
new file mode 100644 (file)
index 0000000..520b0d2
--- /dev/null
@@ -0,0 +1,317 @@
+/*
+ * 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 <vconf.h>
+#include <syspopup_caller.h>
+#include <pkgmgr-info.h>
+#include <Eina.h>
+#include <bundle_internal.h>
+#include "common.h"
+#include "modules.h"
+#include "datetime.h"
+#include "emergency_mode.h"
+
+
+#ifdef QP_SETTING_ENABLE
+extern QP_Module settings_view_featured;
+#endif
+#ifdef QP_BRIGHTNESS_ENABLE
+extern QP_Module brightness_ctrl;
+#endif
+
+#define SETTING_SYSPOPUP "mode-syspopup"
+#define BT_SHARE_DAEMON "/usr/bin/bluetooth-share"
+#define BT_SHARE_SERVER "bluetooth-share-opp-server"
+#define BT_SHARE_CLIENT "bluetooth-share-opp-client"
+#define SCREEN_SHOT "shot-tizen"
+
+static struct _info {
+       int is_enabled;
+       Eina_List *permitted_apps;
+} s_info = {
+       .is_enabled = 0,
+       .permitted_apps = NULL,
+};
+
+static void _delete_unpermitted_app(void)
+{
+       notification_list_h noti_list = NULL;
+       notification_list_h list_traverse = NULL;
+       notification_h noti = NULL;
+
+       notification_get_list(NOTIFICATION_TYPE_NONE, -1, &noti_list);
+
+       list_traverse = noti_list;
+
+       while (list_traverse != NULL) {
+               noti = notification_list_get_data(list_traverse);
+
+               quickpanel_emergency_mode_notification_filter(noti, 1);
+
+               list_traverse = notification_list_get_next(list_traverse);
+       }
+       
+       if (noti_list != NULL) {
+               notification_free_list(noti_list);
+               noti_list = NULL;
+       }
+}
+
+static void _emergency_mode_start(void *data)
+{
+       struct appdata *ad = data;
+       retif(ad == NULL, , "Invalid parameter!");
+
+       if (s_info.is_enabled) {
+               return;
+       }
+
+       quickpanel_datetime_datentime_event_set(0);
+#ifdef QP_SETTING_ENABLE
+       if (settings_view_featured.fini != NULL) {
+               settings_view_featured.fini(ad);
+       }
+#endif
+#ifdef QP_BRIGHTNESS_ENABLE
+       if (brightness_ctrl.fini != NULL) {
+               brightness_ctrl.fini(ad);
+       }
+#endif
+
+       _delete_unpermitted_app();
+       s_info.is_enabled = 1;
+       ERR("emergency mode is enabled");
+}
+
+static void _emergency_mode_stop(void *data)
+{
+       struct appdata *ad = data;
+       retif(ad == NULL, , "Invalid parameter!");
+
+       if (!s_info.is_enabled) {
+               return;
+       }
+
+       quickpanel_datetime_datentime_event_set(1);
+
+#ifdef QP_SETTING_ENABLE
+       if (settings_view_featured.init != NULL) {
+               settings_view_featured.init(ad);
+       }
+       if (settings_view_featured.init_job_cb != NULL) {
+               settings_view_featured.init_job_cb(ad);
+       }
+#endif
+#ifdef QP_BRIGHTNESS_ENABLE
+       if (brightness_ctrl.init != NULL) {
+               brightness_ctrl.init(ad);
+       }
+#endif
+
+       _delete_unpermitted_app();
+       s_info.is_enabled = 0;
+       ERR("emergency mode is disabled");
+}
+
+static void _vconf_cb(keynode_t *node, void *data)
+{
+       int mode = 0;
+
+       if (vconf_get_int(VCONFKEY_SETAPPL_PSMODE, &mode) == 0) {
+               if (mode == SETTING_PSMODE_EMERGENCY) {
+                       _emergency_mode_start(data);
+               } else {
+                       _emergency_mode_stop(data);
+               }
+       } else {
+               ERR("failed to get the value of VCONFKEY_SETAPPL_PSMODE");
+       }
+}
+
+static int _app_list_cb(pkgmgrinfo_appinfo_h handle, void *user_data)
+{
+       char *appid = NULL;
+       char *permitted_appid = NULL;
+       pkgmgrinfo_appinfo_get_appid(handle, &appid);
+
+       permitted_appid = strdup(appid);
+
+       s_info.permitted_apps = eina_list_append(s_info.permitted_apps, permitted_appid);
+       DBG("%s is permitted.", permitted_appid);
+
+       return 0;
+}
+
+
+static int _register_permitted_apps(void)
+{
+       int ret = 0;
+       pkgmgrinfo_appinfo_filter_h handle;
+
+       s_info.permitted_apps = eina_list_append(s_info.permitted_apps, BT_SHARE_DAEMON);
+       s_info.permitted_apps = eina_list_append(s_info.permitted_apps, SCREEN_SHOT);
+       s_info.permitted_apps = eina_list_append(s_info.permitted_apps, BT_SHARE_SERVER);
+       s_info.permitted_apps = eina_list_append(s_info.permitted_apps, BT_SHARE_CLIENT);
+
+       ret = pkgmgrinfo_appinfo_filter_create(&handle);
+       if (ret != PMINFO_R_OK) {
+               return -1;
+       }
+
+#ifdef HAVE_X
+       ret = pkgmgrinfo_appinfo_filter_add_int(handle, PMINFO_APPINFO_PROP_APP_SUPPORT_MODE, 1);
+#endif
+       if (ret != PMINFO_R_OK) {
+               pkgmgrinfo_appinfo_filter_destroy(handle);
+               return -1;
+       }
+
+       ret = pkgmgrinfo_appinfo_filter_foreach_appinfo(handle, _app_list_cb, NULL);
+       if (ret != PMINFO_R_OK) {
+               pkgmgrinfo_appinfo_filter_destroy(handle);
+               return -1;
+       }
+
+       pkgmgrinfo_appinfo_filter_destroy(handle);
+       return 0;
+
+}
+
+static int _delete_permitted_apps(void)
+{
+       Eina_List *list = NULL;
+       char *appid = NULL;
+
+       if (!s_info.permitted_apps) {
+               EINA_LIST_FOREACH(s_info.permitted_apps, list, appid)
+                       free(appid);
+               eina_list_free(s_info.permitted_apps);
+               s_info.permitted_apps = NULL;
+       }
+
+       return 0;
+}
+
+HAPI void quickpanel_emergency_mode_init(void *data)
+{
+       int ret = 0;
+       struct appdata *ad = data;
+       retif(ad == NULL, , "Invalid parameter!");
+
+       ret = _register_permitted_apps();
+       msgif(ret !=0, "failed to register permitted apps");
+
+       ret = vconf_notify_key_changed(VCONFKEY_SETAPPL_PSMODE,
+                       _vconf_cb, ad);
+       msgif(ret != 0, "failed to notify key(VCONFKEY_SETAPPL_PSMODE) : %d", ret);
+
+       if (quickpanel_emergency_mode_is_on()) {
+               s_info.is_enabled = 1;
+       }
+}
+
+HAPI void quickpanel_emergency_mode_fini(void *data)
+{
+       int ret = 0;
+       struct appdata *ad = data;
+       retif(ad == NULL, , "Invalid parameter!");
+
+       ret = _delete_permitted_apps();
+       msgif(ret !=0, "failed to delete permitted apps");
+
+       ret = vconf_ignore_key_changed(VCONFKEY_SETAPPL_PSMODE, _vconf_cb);
+       msgif(ret != 0, "failed to ignore key(VCONFKEY_SETAPPL_PSMODE) : %d", ret);
+}
+
+HAPI int quickpanel_emergency_mode_is_permitted_app(const char *appid)
+{
+       int i = 0;
+       int count = 0;
+       char *permitted_app = NULL;
+       retif(appid == NULL, 0, "Invalid parameter!");
+
+       count = eina_list_count(s_info.permitted_apps);
+       for(i = 0; i < count; i++) {
+               permitted_app = (char *)eina_list_nth(s_info.permitted_apps, i);
+               if (permitted_app != NULL && strcmp(permitted_app, appid) == 0) {
+                       return 1;
+               }
+       }
+
+       return 0;
+}
+
+HAPI int quickpanel_emergency_mode_is_on(void)
+{
+       int mode = 0;
+
+       if (vconf_get_int(VCONFKEY_SETAPPL_PSMODE, &mode) == 0) {
+               if (mode == SETTING_PSMODE_EMERGENCY) {
+                       return 1;
+               }
+       }
+
+       return 0;
+}
+
+HAPI int quickpanel_emergency_mode_notification_filter(notification_h noti, int is_delete)
+{
+       int priv_id = 0;
+       char *pkgname = NULL;
+
+       notification_get_pkgname(noti, &pkgname);
+       notification_get_id(noti, NULL, &priv_id);
+
+       DBG("Emergency mode filter is called: %s", pkgname);
+       if (!quickpanel_emergency_mode_is_permitted_app(pkgname)) {
+               if (is_delete) {
+                       notification_delete_by_priv_id(pkgname,
+                                               NOTIFICATION_TYPE_NONE,
+                                               priv_id);
+               }
+               return 1;
+       }
+
+       return 0;
+}
+
+HAPI int quickpanel_emergency_mode_syspopup_launch(void)
+{
+       int ret;
+       bundle *b = NULL;
+
+       DBG("");
+
+       b = bundle_create();
+       if (b == NULL) {
+               return QP_FAIL;
+       }
+
+       bundle_add(b, "_MODE_SYSTEM_POPUP_TYPE_", "POPUP_EMERGENCY_PSMODE");
+       ret = syspopup_launch(SETTING_SYSPOPUP, b);
+       if (ret < 0) {
+               ERR("failed to launch syspopup (%s):%d\n", SETTING_SYSPOPUP, ret);
+               bundle_free(b);
+               return QP_FAIL;
+       }
+
+       DBG("");
+
+       bundle_free(b);
+       return QP_OK;
+}
diff --git a/daemon/service/emergency_mode.h b/daemon/service/emergency_mode.h
new file mode 100644 (file)
index 0000000..e0655fe
--- /dev/null
@@ -0,0 +1,32 @@
+/*
+ * 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 <notification.h>
+
+#ifndef _QP_EMERGENCY_MODE_DEF_
+#define _QP_EMERGENCY_MODE_DEF_
+
+#define PACKAGE_EMERGENCY_MODE_SETTING "setting-emergency-efl"
+
+void quickpanel_emergency_mode_init(void *data);
+void quickpanel_emergency_mode_fini(void *data);
+int quickpanel_emergency_mode_is_permitted_app(const char *appid);
+int quickpanel_emergency_mode_is_on(void);
+int quickpanel_emergency_mode_notification_filter(notification_h noti, int is_delete);
+int quickpanel_emergency_mode_syspopup_launch(void);
+
+#endif
diff --git a/daemon/service/keyboard.c b/daemon/service/keyboard.c
new file mode 100644 (file)
index 0000000..94882ea
--- /dev/null
@@ -0,0 +1,160 @@
+/*
+ * 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 <vconf.h>
+#ifdef HAVE_X
+#include <utilX.h>
+#include <X11/Xlib.h>
+#endif
+#include <Ecore_Input.h>
+#include <feedback.h>
+#include "common.h"
+#include "noti_util.h"
+#include "keyboard.h"
+
+#define KEY_BACK       "XF86Back"
+#define KEY_CANCEL     "Cancel"
+#define KEY_MENU       "XF86Menu"
+#define KEY_QUICKPANEL "XF86QuickPanel"
+#define KEY_HOME       "XF86Home"
+
+static Eina_Bool _service_hardkey_up_cb(void *data, int type, void *event)
+{
+       struct appdata *ad = NULL;
+       Ecore_Event_Key *key_event = NULL;
+
+       retif(data == NULL || event == NULL, EINA_FALSE, "Invalid parameter!");
+       ad = data;
+       key_event = event;
+
+       if (!strcmp(key_event->keyname, KEY_HOME)) {
+               if (ad->is_hardkey_cancel == EINA_FALSE) {
+                       quickpanel_uic_close_quickpanel(false, 0);
+               } else {
+                       DBG("Cancel status, do nothing");
+               }
+       } else if (!strcmp(key_event->keyname, KEY_CANCEL)) {
+               ad->is_hardkey_cancel = EINA_FALSE;
+       } else if (!strcmp(key_event->keyname, KEY_BACK)) {
+               if (ad->popup != NULL) {
+                       Evas_Smart_Cb back_cb = evas_object_data_get(ad->popup, EDATA_BACKKEY_CB);
+                       if (back_cb != NULL) {
+                               back_cb(ad->popup, ad->popup, NULL);
+                       }
+               } else {
+                       quickpanel_uic_close_quickpanel(false, 0);
+               }
+       }
+       return EINA_FALSE;
+}
+
+static Eina_Bool _service_hardkey_down_cb(void *data, int type, void *event)
+{
+       Ecore_Event_Key *key_event = event;
+       struct appdata *ad = data;
+       retif(key_event == NULL, EINA_FALSE, "Invalid parameter!");
+       retif(ad == NULL, EINA_FALSE, "Invalid parameter!");
+
+       if (!strcmp(key_event->keyname, KEY_CANCEL)) {
+               ad->is_hardkey_cancel = EINA_TRUE;
+       } else if (!strcmp(key_event->keyname, KEY_QUICKPANEL)) {
+               quickpanel_uic_toggle_openning_quickpanel();
+       }
+       return EINA_FALSE;
+}
+
+HAPI void quickpanel_keyboard_init(void *data)
+{
+       struct appdata *ad = data;
+       Ecore_Event_Handler *hdl_key_down = NULL;
+       Ecore_Event_Handler *hdl_key_up = NULL;
+       retif(ad == NULL, , "Invalid parameter!");
+
+       if (elm_win_keygrab_set(elm_win_xwindow_get(ad->win), KEY_QUICKPANEL, 0, 0, 0, ELM_WIN_KEYGRAB_SHARED) != 0) {
+               ERR("failed to grab KEY_QUICKPANEL");
+       }
+
+       hdl_key_down = ecore_event_handler_add(ECORE_EVENT_KEY_DOWN, _service_hardkey_down_cb, ad);
+       if (hdl_key_down == NULL) {
+               ERR("failed to add handler(ECORE_EVENT_KEY_DOWN)");
+       }
+       ad->hdl_hardkey_down = hdl_key_down;
+
+       hdl_key_up = ecore_event_handler_add(ECORE_EVENT_KEY_UP, _service_hardkey_up_cb, ad);
+       if (hdl_key_up == NULL) {
+               ERR("failed to add handler(ECORE_EVENT_KEY_UP)");
+       }
+       ad->hdl_hardkey_up = hdl_key_up;
+       ad->is_hardkey_cancel = EINA_FALSE;
+}
+
+HAPI void quickpanel_keyboard_fini(void *data)
+{
+       struct appdata *ad = data;
+       retif(ad == NULL, , "Invalid parameter!");
+
+       if (ad->hdl_hardkey_up != NULL) {
+               ecore_event_handler_del(ad->hdl_hardkey_up);
+               ad->hdl_hardkey_up = NULL;
+       }
+
+       if (ad->hdl_hardkey_down != NULL) {
+               ecore_event_handler_del(ad->hdl_hardkey_down);
+               ad->hdl_hardkey_down = NULL;
+       }
+
+       if (elm_win_keygrab_unset(elm_win_xwindow_get(ad->win), KEY_QUICKPANEL, 0, 0) != 0) {
+               ERR("failed to ungrab KEY_QUICKPANEL");
+       }
+
+}
+
+HAPI void quickpanel_keyboard_openning_init(void *data)
+{
+       struct appdata *ad = data;
+       retif(ad == NULL, , "Invalid parameter!");
+
+       if (elm_win_keygrab_set(elm_win_xwindow_get(ad->win), KEY_BACK, 0, 0, 0, ELM_WIN_KEYGRAB_EXCLUSIVE ) != 0) {
+               ERR("failed to grab KEY_BACK");
+       }
+
+       if (elm_win_keygrab_set(elm_win_xwindow_get(ad->win), KEY_MENU, 0, 0, 0, ELM_WIN_KEYGRAB_EXCLUSIVE ) != 0) {
+               ERR("failed to grab KEY_MENU");
+       }
+
+       if (elm_win_keygrab_set(elm_win_xwindow_get(ad->win), KEY_HOME, 0, 0, 0, ELM_WIN_KEYGRAB_SHARED) != 0) {
+               ERR("failed to grab KEY_HOME");
+       }
+}
+
+HAPI void quickpanel_keyboard_closing_fini(void *data)
+{
+       struct appdata *ad = data;
+       retif(ad == NULL, , "Invalid parameter!");
+
+       if (elm_win_keygrab_unset(elm_win_xwindow_get(ad->win), KEY_BACK ,0 ,0) != 0) {
+               ERR("failed to ungrab KEY_BACK");
+       }
+
+       if (elm_win_keygrab_unset(elm_win_xwindow_get(ad->win), KEY_MENU ,0 ,0) != 0) {
+               ERR("failed to ungrab KEY_MENU");
+       }
+
+       if (elm_win_keygrab_unset(elm_win_xwindow_get(ad->win), KEY_HOME ,0 ,0) != 0) {
+               ERR("failed to ungrab KEY_HOME");
+       }
+}
diff --git a/daemon/service/keyboard.h b/daemon/service/keyboard.h
new file mode 100644 (file)
index 0000000..6d6de63
--- /dev/null
@@ -0,0 +1,29 @@
+/*
+ * 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 _QP_SERVICE_KEYBOARD_DEF_
+#define _QP_SERVICE_KEYBOARD_DEF_
+
+#include "quickpanel-ui.h"
+
+void quickpanel_keyboard_init(void *data);
+void quickpanel_keyboard_fini(void *data);
+void quickpanel_keyboard_openning_init(void *data);
+void quickpanel_keyboard_closing_fini(void *data);
+
+#endif
diff --git a/daemon/service/keyboard_x.c b/daemon/service/keyboard_x.c
new file mode 100644 (file)
index 0000000..4dc749b
--- /dev/null
@@ -0,0 +1,333 @@
+/*
+ * 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 <vconf.h>
+#ifdef HAVE_X
+#include <utilX.h>
+#include <X11/Xlib.h>
+#include <X11/extensions/XInput.h>
+#include <X11/extensions/XInput2.h>
+#endif
+#include <Ecore_Input.h>
+#include <feedback.h>
+#include "common.h"
+#include "noti_util.h"
+#include "keyboard_x.h"
+
+#define TAB             23
+#define SHIFT           50
+#define RETURN          36
+#define ARROW_KP_UP     80
+#define ARROW_KP_DOWN   88
+#define ARROW_KP_LEFT   83
+#define ARROW_KP_RIGHT  85
+#define ARROW_UP        111
+#define ARROW_DOWN      116
+#define ARROW_LEFT      113
+#define ARROW_RIGHT     114
+
+typedef struct _key_info {
+       int keycode;
+       const char *keyname;
+       const char *key;
+       const char *string;
+       const char *compose;
+} key_info;
+
+key_info key_infos[] = {
+       {TAB, "Tab", "Tab", "\t", "\t"},
+       {RETURN, "Return", "Return", "\n", "\n"},
+       {ARROW_UP, "Up", "Up", NULL, NULL},
+       {ARROW_KP_UP, "Up", "Up", NULL, NULL},
+       {ARROW_DOWN, "Down", "Down", NULL, NULL},
+       {ARROW_KP_DOWN, "Down", "Down", NULL, NULL},
+       {ARROW_LEFT, "Left", "Left", NULL, NULL},
+       {ARROW_KP_LEFT, "Left", "Left", NULL, NULL},
+       {ARROW_RIGHT, "Right", "Right", NULL, NULL},
+       {ARROW_KP_RIGHT, "Right", "Right", NULL, NULL},
+       {SHIFT, "Shift", "Shift", NULL, NULL},
+};
+
+static int _cb_event_generic(void *data, int ev_type, void *event);
+static Eina_Bool _xinput_init(void);
+static void _key_event_select(void);
+#ifdef HAVE_X
+static void _focus_ui_process_press(XIRawEvent *raw_event);
+static void _focus_ui_process_release(XIRawEvent *raw_event);
+#endif
+
+static struct _s_info {
+       int xi2_opcode;
+       int is_shift_pressed;
+       Ecore_Event_Handler *hdl_key_event;
+} s_info = {
+       .xi2_opcode = -1,
+       .is_shift_pressed = 0,
+       .hdl_key_event = NULL,
+};
+
+static int _key_event_validation_check(int keycode)
+{
+       int i = 0, len = 0;
+
+       len = sizeof(key_infos) / sizeof(key_infos[0]);
+
+       for (i = 0; i < len; i++ ) {
+               if (key_infos[i].keycode == keycode) {
+                       return 1;
+               }
+       }
+
+       return 0;
+}
+
+static void _key_event_select(void)
+{
+       int rc;
+#ifdef HAVE_X
+       XIEventMask mask;
+       Ecore_X_Display *d = NULL;
+
+    d = ecore_x_display_get();
+    if (d == NULL) {
+       ERR("failed to get ecore-display");
+       return;
+    }
+
+       mask.mask_len = XIMaskLen(XI_LASTEVENT);
+       mask.deviceid = XIAllDevices;
+    mask.mask = calloc(mask.mask_len, sizeof(char));
+    if (mask.mask == NULL) {
+       ERR("failed to get ecore-display");
+       return;
+    }
+    memset(mask.mask, 0, mask.mask_len);
+
+    XISetMask(mask.mask, XI_RawKeyPress);
+    XISetMask(mask.mask, XI_RawKeyRelease);
+
+    rc = XISelectEvents(d, ecore_x_window_root_first_get(), &mask, 1);
+    if (Success != rc) {
+       ERR("Failed to select XInput extension events");
+    }
+    if (mask.mask) {
+               free( mask.mask);
+       }
+    ecore_x_sync();
+#endif
+}
+
+static Eina_Bool _xinput_init(void)
+{
+#ifdef HAVE_X
+   int event, error;
+
+   if (!XQueryExtension(ecore_x_display_get(), "XInputExtension",
+                               &s_info.xi2_opcode, &event, &error)) {
+      s_info.xi2_opcode = -1;
+
+      SERR("failed to initialize key event receiver");
+      return EINA_FALSE;
+   }
+#endif
+   _key_event_select();
+
+   return EINA_TRUE;
+}
+
+static int _cb_event_generic(void *data, int ev_type, void *event)
+{
+#ifdef HAVE_X
+       Ecore_X_Event_Generic *e = (Ecore_X_Event_Generic *)event;
+       XIDeviceEvent *evData = (XIDeviceEvent *)(e->data);
+
+       if ( e->extension != s_info.xi2_opcode ) {
+               return ECORE_CALLBACK_PASS_ON;
+       }
+       if ( !evData || evData->send_event ) {
+               return ECORE_CALLBACK_PASS_ON;
+       }
+
+       switch( e->evtype ) {
+       case XI_RawKeyPress:
+               if (evData->deviceid == 3) {
+                       break;
+               }
+               _focus_ui_process_press((XIRawEvent *)evData);
+               break;
+       case XI_RawKeyRelease:
+               if (evData->deviceid == 3) {
+                       break;
+               }
+               _focus_ui_process_release((XIRawEvent *)evData);
+               break;
+       default:
+               break;
+       }
+#endif
+
+       return ECORE_CALLBACK_PASS_ON;
+}
+
+#ifdef HAVE_X
+static void _focus_ui_process_press(XIRawEvent *raw_event)
+{
+       XEvent xev;
+
+       struct appdata *ad = quickpanel_get_app_data();
+       retif(ad == NULL, , "invalid data.");
+       retif(raw_event == NULL, , "invalid data.");
+
+       if (raw_event->detail == SHIFT) {
+               s_info.is_shift_pressed = 1;
+               return;
+       }
+       if (_key_event_validation_check(raw_event->detail) == 0) {
+               return;
+       }
+
+       Ecore_X_Display *d = ecore_x_display_get();
+    if (d == NULL) {
+       ERR("failed to get ecore-display");
+       return;
+    }
+
+       memset(&xev, 0, sizeof(XEvent));
+       xev.xany.display = ecore_x_display_get();
+       xev.xkey.keycode = raw_event->detail;
+       xev.xkey.time = raw_event->time;
+       if (s_info.is_shift_pressed == 1) {
+               xev.xkey.state = 0x1;
+       } else {
+               xev.xkey.state = 0;
+       }
+       xev.xkey.root = ecore_x_window_root_first_get();
+       xev.xkey.send_event = 1;
+       xev.xkey.subwindow = None;
+       xev.xkey.type = KeyPress;
+       xev.xkey.window = elm_win_xwindow_get(ad->win);
+       XSendEvent(d, elm_win_xwindow_get(ad->win)
+                       , False, NoEventMask, &xev);
+       DBG("keypressed:%d", raw_event->detail);
+}
+
+static void _focus_ui_process_release(XIRawEvent *raw_event)
+{
+       XEvent xev;
+
+       struct appdata *ad = quickpanel_get_app_data();
+       retif(ad == NULL, , "invalid data.");
+       retif(raw_event == NULL, , "invalid data.");
+
+       if (raw_event->detail == SHIFT) {
+               s_info.is_shift_pressed = 0;
+               return;
+       }
+       if (_key_event_validation_check(raw_event->detail) == 0) {
+               return;
+       }
+
+       Ecore_X_Display *d = ecore_x_display_get();
+    if (d == NULL) {
+       ERR("failed to get ecore-display");
+       return;
+    }
+
+       memset(&xev, 0, sizeof(XEvent));
+       xev.xany.display = d;
+       xev.xkey.keycode = raw_event->detail;
+       xev.xkey.time = raw_event->time;
+       if (s_info.is_shift_pressed == 1) {
+               xev.xkey.state = 0x1;
+       } else {
+               xev.xkey.state = 0;
+       }
+       xev.xkey.root = ecore_x_window_root_first_get();
+       xev.xkey.send_event = 1;
+       xev.xkey.subwindow = None;
+       xev.xkey.type = KeyRelease;
+       xev.xkey.window = elm_win_xwindow_get(ad->win);
+       XSendEvent(d, elm_win_xwindow_get(ad->win)
+                       , False, NoEventMask, &xev);
+       DBG("keyrelease:%d", raw_event->detail);
+}
+#endif
+
+static void _focus_cleanup(void *data)
+{
+       struct appdata *ad = data;
+       Evas_Object *focused_obj = NULL;
+       retif(ad == NULL, , "invalid data.");
+       retif(ad->win == NULL, , "invalid data.");
+
+       focused_obj = elm_object_focused_object_get(ad->win);
+       if (focused_obj != NULL) {
+               elm_object_focus_set(focused_obj, EINA_FALSE);
+       }
+       elm_win_focus_highlight_enabled_set(ad->win, EINA_FALSE);
+}
+
+HAPI void quickpanel_keyboard_x_init(void *data)
+{
+       struct appdata *ad = data;
+       retif(ad == NULL, , "Invalid parameter!");
+
+       _xinput_init();
+}
+
+HAPI void quickpanel_keyboard_x_fini(void *data)
+{
+       struct appdata *ad = data;
+       retif(ad == NULL, , "Invalid parameter!");
+
+       if (s_info.hdl_key_event != NULL) {
+               ecore_event_handler_del(s_info.hdl_key_event);
+               s_info.hdl_key_event = NULL;
+       }
+
+       _focus_cleanup(ad);
+}
+
+HAPI void quickpanel_keyboard_x_openning_init(void *data)
+{
+       struct appdata *ad = data;
+       retif(ad == NULL, , "Invalid parameter!");
+
+       if (s_info.hdl_key_event != NULL) {
+               ecore_event_handler_del(s_info.hdl_key_event);
+               s_info.hdl_key_event = NULL;
+       }
+#ifdef HAVE_X
+       s_info.hdl_key_event =  ecore_event_handler_add(ECORE_X_EVENT_GENERIC, (Ecore_Event_Handler_Cb)_cb_event_generic, NULL);
+#endif
+}
+
+HAPI void quickpanel_keyboard_x_closing_fini(void *data)
+{
+       struct appdata *ad = data;
+       retif(ad == NULL, , "Invalid parameter!");
+
+       if (s_info.hdl_key_event != NULL) {
+               ecore_event_handler_del(s_info.hdl_key_event);
+               s_info.hdl_key_event = NULL;
+       }
+
+       if (ad->win != NULL) {
+               elm_win_focus_highlight_enabled_set(ad->win, EINA_FALSE);
+       }
+}
diff --git a/daemon/service/keyboard_x.h b/daemon/service/keyboard_x.h
new file mode 100644 (file)
index 0000000..8af2dbf
--- /dev/null
@@ -0,0 +1,29 @@
+/*
+ * 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 _QP_SERVICE_KEYBOARD_X_DEF_
+#define _QP_SERVICE_KEYBOARD_X_DEF_
+
+#include "quickpanel-ui.h"
+
+void quickpanel_keyboard_x_init(void *data);
+void quickpanel_keyboard_x_fini(void *data);
+void quickpanel_keyboard_x_openning_init(void *data);
+void quickpanel_keyboard_x_closing_fini(void *data);
+
+#endif
diff --git a/daemon/service/keyboard_x_x11.c b/daemon/service/keyboard_x_x11.c
new file mode 100644 (file)
index 0000000..24d7db3
--- /dev/null
@@ -0,0 +1,322 @@
+/*
+ * 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 <vconf.h>
+#include <utilX.h>
+#include <X11/Xlib.h>
+#include <X11/extensions/XInput.h>
+#include <X11/extensions/XInput2.h>
+
+#include <Ecore_Input.h>
+#include <feedback.h>
+#include "common.h"
+#include "noti_util.h"
+#include "keyboard_x.h"
+
+#define TAB             23
+#define SHIFT           50
+#define RETURN          36
+#define ARROW_KP_UP     80
+#define ARROW_KP_DOWN   88
+#define ARROW_KP_LEFT   83
+#define ARROW_KP_RIGHT  85
+#define ARROW_UP        111
+#define ARROW_DOWN      116
+#define ARROW_LEFT      113
+#define ARROW_RIGHT     114
+
+typedef struct _key_info {
+       int keycode;
+       const char *keyname;
+       const char *key;
+       const char *string;
+       const char *compose;
+} key_info;
+
+key_info key_infos[] = {
+       {TAB, "Tab", "Tab", "\t", "\t"},
+       {RETURN, "Return", "Return", "\n", "\n"},
+       {ARROW_UP, "Up", "Up", NULL, NULL},
+       {ARROW_KP_UP, "Up", "Up", NULL, NULL},
+       {ARROW_DOWN, "Down", "Down", NULL, NULL},
+       {ARROW_KP_DOWN, "Down", "Down", NULL, NULL},
+       {ARROW_LEFT, "Left", "Left", NULL, NULL},
+       {ARROW_KP_LEFT, "Left", "Left", NULL, NULL},
+       {ARROW_RIGHT, "Right", "Right", NULL, NULL},
+       {ARROW_KP_RIGHT, "Right", "Right", NULL, NULL},
+       {SHIFT, "Shift", "Shift", NULL, NULL},
+};
+
+static int _cb_event_generic(void *data, int ev_type, void *event);
+static Eina_Bool _xinput_init(void);
+static void _key_event_select(void);
+static void _focus_ui_process_press(XIRawEvent *raw_event);
+static void _focus_ui_process_release(XIRawEvent *raw_event);
+
+static struct _s_info {
+       int xi2_opcode;
+       int is_shift_pressed;
+       Ecore_Event_Handler *hdl_key_event;
+} s_info = {
+       .xi2_opcode = -1,
+       .is_shift_pressed = 0,
+       .hdl_key_event = NULL,
+};
+
+static int _key_event_validation_check(int keycode)
+{
+       int i = 0, len = 0;
+
+       len = sizeof(key_infos) / sizeof(key_infos[0]);
+
+       for (i = 0; i < len; i++ ) {
+               if (key_infos[i].keycode == keycode) {
+                       return 1;
+               }
+       }
+
+       return 0;
+}
+
+static void _key_event_select(void)
+{
+       int rc;
+       XIEventMask mask;
+       Ecore_X_Display *d = NULL;
+
+    d = ecore_x_display_get();
+    if (d == NULL) {
+       ERR("failed to get ecore-display");
+       return;
+    }
+
+       mask.mask_len = XIMaskLen(XI_LASTEVENT);
+       mask.deviceid = XIAllDevices;
+    mask.mask = calloc(mask.mask_len, sizeof(char));
+    if (mask.mask == NULL) {
+       ERR("failed to get ecore-display");
+       return;
+    }
+    memset(mask.mask, 0, mask.mask_len);
+
+    XISetMask(mask.mask, XI_RawKeyPress);
+    XISetMask(mask.mask, XI_RawKeyRelease);
+
+    rc = XISelectEvents(d, ecore_x_window_root_first_get(), &mask, 1);
+    if (Success != rc) {
+       ERR("Failed to select XInput extension events");
+    }
+    if (mask.mask) {
+               free( mask.mask);
+       }
+    ecore_x_sync();
+}
+
+static Eina_Bool _xinput_init(void)
+{
+   int event, error;
+
+   if (!XQueryExtension(ecore_x_display_get(), "XInputExtension",
+                               &s_info.xi2_opcode, &event, &error)) {
+      s_info.xi2_opcode = -1;
+
+      SERR("failed to initialize key event receiver");
+      return EINA_FALSE;
+   }
+
+   _key_event_select();
+
+   return EINA_TRUE;
+}
+
+static int _cb_event_generic(void *data, int ev_type, void *event)
+{
+       Ecore_X_Event_Generic *e = (Ecore_X_Event_Generic *)event;
+       XIDeviceEvent *evData = (XIDeviceEvent *)(e->data);
+
+       if ( e->extension != s_info.xi2_opcode ) {
+               return ECORE_CALLBACK_PASS_ON;
+       }
+       if ( !evData || evData->send_event ) {
+               return ECORE_CALLBACK_PASS_ON;
+       }
+
+       switch( e->evtype ) {
+       case XI_RawKeyPress:
+               if (evData->deviceid == 3) {
+                       break;
+               }
+               _focus_ui_process_press((XIRawEvent *)evData);
+               break;
+       case XI_RawKeyRelease:
+               if (evData->deviceid == 3) {
+                       break;
+               }
+               _focus_ui_process_release((XIRawEvent *)evData);
+               break;
+       default:
+               break;
+       }
+
+       return ECORE_CALLBACK_PASS_ON;
+}
+
+static void _focus_ui_process_press(XIRawEvent *raw_event)
+{
+       XEvent xev;
+
+       struct appdata *ad = quickpanel_get_app_data();
+       retif(ad == NULL, , "invalid data.");
+       retif(raw_event == NULL, , "invalid data.");
+
+       if (raw_event->detail == SHIFT) {
+               s_info.is_shift_pressed = 1;
+               return;
+       }
+       if (_key_event_validation_check(raw_event->detail) == 0) {
+               return;
+       }
+
+       Ecore_X_Display *d = ecore_x_display_get();
+    if (d == NULL) {
+       ERR("failed to get ecore-display");
+       return;
+    }
+
+       memset(&xev, 0, sizeof(XEvent));
+       xev.xany.display = ecore_x_display_get();
+       xev.xkey.keycode = raw_event->detail;
+       xev.xkey.time = raw_event->time;
+       if (s_info.is_shift_pressed == 1) {
+               xev.xkey.state = 0x1;
+       } else {
+               xev.xkey.state = 0;
+       }
+       xev.xkey.root = ecore_x_window_root_first_get();
+       xev.xkey.send_event = 1;
+       xev.xkey.subwindow = None;
+       xev.xkey.type = KeyPress;
+       xev.xkey.window = elm_win_xwindow_get(ad->win);
+       XSendEvent(d, elm_win_xwindow_get(ad->win)
+                       , False, NoEventMask, &xev);
+       DBG("keypressed:%d", raw_event->detail);
+}
+
+static void _focus_ui_process_release(XIRawEvent *raw_event)
+{
+       XEvent xev;
+
+       struct appdata *ad = quickpanel_get_app_data();
+       retif(ad == NULL, , "invalid data.");
+       retif(raw_event == NULL, , "invalid data.");
+
+       if (raw_event->detail == SHIFT) {
+               s_info.is_shift_pressed = 0;
+               return;
+       }
+       if (_key_event_validation_check(raw_event->detail) == 0) {
+               return;
+       }
+
+       Ecore_X_Display *d = ecore_x_display_get();
+    if (d == NULL) {
+       ERR("failed to get ecore-display");
+       return;
+    }
+
+       memset(&xev, 0, sizeof(XEvent));
+       xev.xany.display = d;
+       xev.xkey.keycode = raw_event->detail;
+       xev.xkey.time = raw_event->time;
+       if (s_info.is_shift_pressed == 1) {
+               xev.xkey.state = 0x1;
+       } else {
+               xev.xkey.state = 0;
+       }
+       xev.xkey.root = ecore_x_window_root_first_get();
+       xev.xkey.send_event = 1;
+       xev.xkey.subwindow = None;
+       xev.xkey.type = KeyRelease;
+       xev.xkey.window = elm_win_xwindow_get(ad->win);
+       XSendEvent(d, elm_win_xwindow_get(ad->win)
+                       , False, NoEventMask, &xev);
+       DBG("keyrelease:%d", raw_event->detail);
+}
+
+static void _focus_cleanup(void *data)
+{
+       struct appdata *ad = data;
+       Evas_Object *focused_obj = NULL;
+       retif(ad == NULL, , "invalid data.");
+       retif(ad->win == NULL, , "invalid data.");
+
+       focused_obj = elm_object_focused_object_get(ad->win);
+       if (focused_obj != NULL) {
+               elm_object_focus_set(focused_obj, EINA_FALSE);
+       }
+       elm_win_focus_highlight_enabled_set(ad->win, EINA_FALSE);
+}
+
+HAPI void quickpanel_keyboard_x_init(void *data)
+{
+       struct appdata *ad = data;
+       retif(ad == NULL, , "Invalid parameter!");
+
+       _xinput_init();
+}
+
+HAPI void quickpanel_keyboard_x_fini(void *data)
+{
+       struct appdata *ad = data;
+       retif(ad == NULL, , "Invalid parameter!");
+
+       if (s_info.hdl_key_event != NULL) {
+               ecore_event_handler_del(s_info.hdl_key_event);
+               s_info.hdl_key_event = NULL;
+       }
+
+       _focus_cleanup(ad);
+}
+
+HAPI void quickpanel_keyboard_x_openning_init(void *data)
+{
+       struct appdata *ad = data;
+       retif(ad == NULL, , "Invalid parameter!");
+
+       if (s_info.hdl_key_event != NULL) {
+               ecore_event_handler_del(s_info.hdl_key_event);
+               s_info.hdl_key_event = NULL;
+       }
+       s_info.hdl_key_event =
+                       ecore_event_handler_add(ECORE_X_EVENT_GENERIC, (Ecore_Event_Handler_Cb)_cb_event_generic, NULL);
+}
+
+HAPI void quickpanel_keyboard_x_closing_fini(void *data)
+{
+       struct appdata *ad = data;
+       retif(ad == NULL, , "Invalid parameter!");
+
+       if (s_info.hdl_key_event != NULL) {
+               ecore_event_handler_del(s_info.hdl_key_event);
+               s_info.hdl_key_event = NULL;
+       }
+
+       if (ad->win != NULL) {
+               elm_win_focus_highlight_enabled_set(ad->win, EINA_FALSE);
+       }
+}
index cf93fe5..9105043 100755 (executable)
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ * Copyright (c) 2009-2015 Samsung Electronics Co., Ltd All Rights Reserved
  *
- * Licensed under the Flora License, Version 1.1 (the License);
+ * 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.tizenopensource.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,
+ * 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 QP_SERVICE_NOTI_LED_ENABLE
+
+
 #include <vconf.h>
 #include "common.h"
 #include "noti_util.h"
 #include "noti_led.h"
+#include "noti_node.h"
 
 #define LED_ON 1
 #define LED_OFF 0
+#define LED_MISSED_NOTI        5
+
+typedef struct _QP_LED {
+       int priv_id;
+       notification_led_op_e op;
+       int argb;
+       int timestamp;
+       int time_on;
+       int time_off;
+} QP_LED_T;
+
+static struct _s_led_info {
+       Eina_List *list;
+       int is_turned_on;
+} s_led_info = {
+       .list = NULL,
+       .is_turned_on = 0,
+};
+
+static QP_LED_T * _led_entry_new(int priv_id, notification_led_op_e op, int argb, int time_on, int time_off)
+{
+       QP_LED_T *led_entry = (QP_LED_T *)calloc(1, sizeof(QP_LED_T));
+
+       retif(led_entry == NULL, NULL, "failed to memory allocation");
+
+       led_entry->priv_id = priv_id;
+       led_entry->op = op;
+       led_entry->argb = argb;
+       led_entry->time_on = (time_on <= 0) ? -1 : time_on ;
+       led_entry->time_off = (time_off <= 0) ? -1 : time_off;
+       led_entry->timestamp = (int)time(NULL);
+
+       return led_entry;
+}
+
+static void _led_entry_del(QP_LED_T *led_entry)
+{
+       retif(led_entry == NULL, ,"invalid parameter");
+
+       free(led_entry);
+}
+
+static int
+_led_list_sort_cb(const void *data1, const void *data2)
+{
+       QP_LED_T *entry_1 = (QP_LED_T *)data1;
+       QP_LED_T *entry_2 = (QP_LED_T *)data2;
 
-static int g_is_led_turned_on = 0;
+       if (entry_1 == NULL || entry_2 == NULL) {
+               return 0;
+       }
+
+       return entry_2->timestamp - entry_1->timestamp;
+}
+
+static void _led_list_add(QP_LED_T *led_entry)
+{
+       retif(led_entry == NULL, ,"invalid parameter");
+
+       s_led_info.list = eina_list_sorted_insert(s_led_info.list, _led_list_sort_cb, led_entry);
+}
+
+static void _led_list_del(QP_LED_T *led_entry)
+{
+       retif(led_entry == NULL, ,"invalid parameter");
+
+       s_led_info.list = eina_list_remove(s_led_info.list, led_entry);
+}
+
+static void _led_list_sort(void)
+{
+       retif(s_led_info.list == NULL, ,"invalid parameter");
 
-static inline int _is_led_notification_enabled(void) {
+       s_led_info.list = eina_list_sort(s_led_info.list, 0, _led_list_sort_cb);
+}
+
+static QP_LED_T *_led_list_find_by_priv_id(int priv_id)
+{
+       Eina_List *l;
+       Eina_List *n;
+       QP_LED_T *led_entry = NULL;
+
+       retif(s_led_info.list == NULL, NULL,"invalid parameter");
+
+       EINA_LIST_FOREACH_SAFE(s_led_info.list, l, n, led_entry) {
+               if (led_entry != NULL) {
+                       if (led_entry->priv_id == priv_id) return led_entry;
+               }
+       }
+
+       return NULL;
+}
+
+static void _led_list_clean_up(void)
+{
+       Eina_List *l;
+       Eina_List *n;
+       QP_LED_T *led_entry = NULL;
+       Eina_List *list_temp = NULL;
+
+       retif(s_led_info.list == NULL, ,"invalid parameter");
+
+       list_temp = s_led_info.list;
+       s_led_info.list = NULL;
+       EINA_LIST_FOREACH_SAFE(list_temp, l, n, led_entry) {
+               if (led_entry != NULL) {
+                       _led_entry_del(led_entry);
+               }
+       }
+
+       eina_list_free(list_temp);
+
+}
+
+static QP_LED_T *_led_list_get_first(void)
+{
+       return eina_list_nth(s_led_info.list, 0);
+}
+
+static inline int _is_led_enabled(void)
+{
        int ret = -1;
        int status = 1;
 
+#ifdef HAVE_x
        ret = vconf_get_bool(VCONFKEY_SETAPPL_LED_INDICATOR_NOTIFICATIONS, &status);
-
+#endif
        if (ret == 0) {
                if (status == 0) {
                        ERR("LED notification turned off");
@@ -42,182 +163,212 @@ static inline int _is_led_notification_enabled(void) {
        return 1;
 }
 
-static inline int __quickpanel_service_get_event_count(const char *pkgname) {
-       int count = 0;
-       notification_h noti = NULL;
-       notification_list_h noti_list = NULL;
-
-       retif(pkgname == NULL, 0, "Invalid parameter!");
-
-       notification_get_detail_list(pkgname, NOTIFICATION_GROUP_ID_NONE, NOTIFICATION_PRIV_ID_NONE, -1, &noti_list);
-       if (noti_list != NULL) {
-               noti = notification_list_get_data(noti_list);
-               if (noti != NULL) {
-                       count = quickpanel_noti_get_event_count_from_noti(noti);
-               }
-               notification_free_list(noti_list);
-               return count;
-       } else {
-               return 0;
-       }
-
-       return 0;
+static int _led_set_mode(int mode, bool val, int on, int off, unsigned int color)
+{
+       // TODO: Kiran device does not support front led.
+       // Because H/W is not fixed, if led should work, use dbus method call.
+       //
+       // bus name : org.tizen.system.deviced
+       // object path : /Org/Tizen/System/DeviceD/Led
+       // interface name : org.tizen.system.deviced.Led
+       // method name : SetMode
+       // input argument : "iiiiu" (int32:mode,
+       //                                                      int32:on(1)/off(0),
+       //                                                      int32:[custom]on duty (default:-1),
+       //                                                      int32:[custom]off duty (default:-1),
+       //                                                      uint32:[custom]color (default:0))
+       // mode LED_MISSED_NOTI = 5, LED_VOICE_RECORDING = 6, LED_REMOTE_CONTROLLER = 7, LED_AIR_WAKEUP = 8
+       // custom : only support for MISSED_NOTI and VOICE_RECORDING case
+       // output argument : "i" (int32:result)
+
+       return -1;
 }
 
-static void _noti_led_on_with_custom_color(int led_argb) {
+static void _noti_led_on(QP_LED_T *led_entry)
+{
        int ret = 0;
+       retif(led_entry == NULL, , "invalid data");
 
-       if ((ret = led_set_mode_with_color(LED_MISSED_NOTI, LED_ON, led_argb)) == -1) {
-               ERR("failed led_set_mode:%d", ret);
-       }
-       g_is_led_turned_on = 1;
-}
-
-static void _noti_led_on(notification_h noti) {
-       int ret = 0;
-       notification_led_op_e operation = -1;
-       int led_argb = 0x0;
+       DBG("turn on LED with OP:%d ARGB:%x ON:%d OFF:%d",
+                       led_entry->op, led_entry->argb, led_entry->time_on, led_entry->time_off);
 
-       if (noti == NULL) {
-               if ((ret = led_set_mode(LED_MISSED_NOTI, LED_ON)) == -1) {
+       if (led_entry->op == NOTIFICATION_LED_OP_ON) {
+               if ((ret = _led_set_mode(LED_MISSED_NOTI, LED_ON, led_entry->time_on, led_entry->time_off, 0)) == -1) {
                        ERR("failed led_set_mode:%d", ret);
+               } else {
+                       s_led_info.is_turned_on = 1;
                }
-               g_is_led_turned_on = 1;
-       } else {
-               notification_get_led(noti, &operation, &led_argb);
-
-               if (operation == NOTIFICATION_LED_OP_ON) {
-                       if ((ret = led_set_mode(LED_MISSED_NOTI, LED_ON)) == -1) {
-                               ERR("failed led_set_mode:%d", ret);
-                       }
-                       g_is_led_turned_on = 1;
-               } else if (operation == NOTIFICATION_LED_OP_ON_CUSTOM_COLOR) {
-                       if ((ret = led_set_mode_with_color(LED_MISSED_NOTI, LED_ON, led_argb)) == -1) {
-                               ERR("failed led_set_mode:%d", ret);
-                       }
-                       g_is_led_turned_on = 1;
+       } else if (led_entry->op == NOTIFICATION_LED_OP_ON_CUSTOM_COLOR) {
+               if ((ret = _led_set_mode(LED_MISSED_NOTI, LED_ON, led_entry->time_on, led_entry->time_off, led_entry->argb)) == -1) {
+                       ERR("failed led_set_mode:%d", ret);
                } else {
-                       ERR("NOTIFICATION_LED_OP_OFF");
+                       s_led_info.is_turned_on = 1;
                }
+       } else {
+               ERR("NOTIFICATION_LED_OP_OFF");
        }
 }
 
-static void _noti_led_off(void) {
+static void _noti_led_off(int is_force)
+{
        int ret = 0;
 
-       if ((ret = led_set_mode(LED_MISSED_NOTI, LED_OFF)) == -1) {
+       ERR("try to turn off LED");
+       retif(s_led_info.is_turned_on == 0 && is_force == 1, , "LED already turned off");
+
+       if ((ret = _led_set_mode(LED_MISSED_NOTI, LED_OFF, 0, 0, 0)) == -1) {
                ERR("failed led_set_mode:%d", ret);
+       } else {
+               s_led_info.is_turned_on = 0;
        }
-       g_is_led_turned_on = 0;
 }
 
-static int _is_keep_turn_on_led(int *op, int *argb) {
-       notification_h noti = NULL;
-       notification_list_h noti_list = NULL;
-       notification_list_h noti_list_head = NULL;
-       notification_led_op_e operation = -1;
+HAPI void quickpanel_noti_led_proc(notification_h noti, int op_type)
+{
+       int priv_id = 0;
        int led_argb = 0;
-
-       notification_get_list(NOTIFICATION_TYPE_NOTI , -1, &noti_list_head);
-       noti_list = noti_list_head;
-
-       while (noti_list != NULL) {
-               noti = notification_list_get_data(noti_list);
-               if (noti != NULL) {
-                       notification_get_led(noti, &operation, &led_argb);
-                       if (operation >= NOTIFICATION_LED_OP_ON) {
-                               notification_free_list(noti_list_head);
-                               noti_list_head = NULL;
-
-                               if (op != NULL) *op = operation;
-                               if (argb != NULL) *argb = led_argb;
-                               return 1;
+       int time_on = 0;
+       int time_off = 0;
+       QP_LED_T *led_entry = NULL;
+       notification_led_op_e led_op = -1;
+       retif(noti == NULL, , "Invalid parameter!");
+
+       notification_get_id(noti, NULL, &priv_id);
+       notification_get_led(noti, &led_op, &led_argb);
+       notification_get_led_time_period(noti, &time_on, &time_off);
+
+       DBG("on:%d off:%d", time_on, time_off);
+
+       if (op_type == NOTIFICATION_OP_INSERT || op_type == NOTIFICATION_OP_UPDATE) {
+               led_entry = _led_list_find_by_priv_id(priv_id);
+               if (led_entry != NULL) {
+                       if (led_op == NOTIFICATION_LED_OP_OFF) {
+                               _led_list_del(led_entry);
+                               _led_entry_del(led_entry);
+                       } else {
+                               led_entry->op = led_op;
+                               led_entry->argb = led_argb;
+                               led_entry->time_on = (time_on <= 0) ? -1 : time_on ;
+                               led_entry->time_off = (time_off <= 0) ? -1 : time_off;
+                               led_entry->timestamp = (int)time(NULL);
+                               _led_list_sort();
+                       }
+               } else {
+                       if (led_op >= NOTIFICATION_LED_OP_ON) {
+                               led_entry = _led_entry_new(priv_id, led_op, led_argb, time_on, time_off);
+                               _led_list_add(led_entry);
                        }
                }
-
-               noti_list = notification_list_get_next(noti_list);
+       } else if (op_type == NOTIFICATION_OP_DELETE) {
+               led_entry = _led_list_find_by_priv_id(priv_id);
+               if (led_entry != NULL) {
+                       _led_list_del(led_entry);
+                       _led_entry_del(led_entry);
+               }
        }
 
-       if (noti_list_head != NULL) {
-               notification_free_list(noti_list_head);
-               noti_list_head = NULL;
+       //turn on or off LED
+       if (_is_led_enabled() == 1) {
+               led_entry = _led_list_get_first();
+               if (led_entry != NULL) {
+                       _noti_led_on(led_entry);
+               } else {
+                       _noti_led_off(0);
+               }
+       } else {
+               _noti_led_off(0);
        }
-
-       return 0;
 }
 
-HAPI void quickpanel_service_noti_led_on(notification_h noti) {
-       notification_led_op_e operation = -1;
-       int led_argb = 0;
-
-       retif(_is_led_notification_enabled() == 0, , "led noti disabled");
-
-       if (noti == NULL) {
-               if (_is_keep_turn_on_led(&operation, &led_argb) >= 1) {
-                       if (operation == NOTIFICATION_LED_OP_ON) {
-                               _noti_led_on(NULL);
-                       } else if (operation == NOTIFICATION_LED_OP_ON_CUSTOM_COLOR) {
-                               _noti_led_on_with_custom_color(led_argb);
-                       }
+static void _led_option_vconf_cb(keynode_t *node, void *data)
+{
+       QP_LED_T *led_entry = NULL;
+
+       if (_is_led_enabled() == 1) {
+               DBG("led notification is enabled");
+               led_entry = _led_list_get_first();
+               if (led_entry != NULL) {
+                       DBG("try to turn on LED, op:%d argb:%x", led_entry->op, led_entry->argb);
+                       _noti_led_on(led_entry);
+               } else {
+                       _noti_led_off(1);
                }
        } else {
-               _noti_led_on(noti);
+               DBG("led notification is disabled");
+               _noti_led_off(1);
        }
 }
 
-HAPI void quickpanel_service_noti_led_off(notification_h noti) {
-       retif(g_is_led_turned_on == 0, , "led already turned off");
-
-       if (_is_keep_turn_on_led(NULL, NULL) == 0) {
-               _noti_led_off();
+static void _led_init_data_cb(gpointer key, gpointer value, gpointer user_data)
+{
+       int priv_id = 0;
+       int led_argb = 0;
+       int time_on = 0;
+       int time_off = 0;
+       notification_led_op_e led_op = -1;
+       noti_node_item *node = (noti_node_item *)value;
+       retif(node == NULL, , "Invalid parameter!");
+       retif(node->noti == NULL, , "Invalid parameter!");
+
+       notification_get_id(node->noti, NULL, &priv_id);
+       notification_get_led(node->noti, &led_op, &led_argb);
+       notification_get_led_time_period(node->noti, &time_on, &time_off);
+       if (led_op >= NOTIFICATION_LED_OP_ON) {
+               QP_LED_T *new_entry = _led_entry_new(priv_id, led_op, led_argb, time_on, time_off);
+               _led_list_add(new_entry);
        }
 }
 
-
-static void quickpanel_service_noti_vconf_cb(keynode_t *node,
-                                               void *data)
+static void _led_init_data(noti_node *nodes)
 {
-       int ret = 0;
-       int is_on = 0;
+       QP_LED_T *led_entry = NULL;
+       retif(nodes == NULL, , "Invalid parameter!");
+       retif(nodes->table == NULL, , "Invalid parameter!");
 
-       is_on = _is_led_notification_enabled();
+       g_hash_table_foreach(nodes->table, _led_init_data_cb, NULL);
 
-       ERR("led notification status:%d", is_on);
-
-       if (is_on == 0) {
-               if ((ret = led_set_mode(LED_MISSED_NOTI, LED_OFF)) == -1) {
-                       ERR("failed led_set_mode:%d", ret);
+       if (_is_led_enabled() == 1) {
+               led_entry = _led_list_get_first();
+               if (led_entry != NULL) {
+                       _noti_led_on(led_entry);
+               } else {
+                       _noti_led_off(1);
                }
-               g_is_led_turned_on = 0;
        } else {
-               quickpanel_service_noti_led_on(NULL);
+               _noti_led_off(1);
        }
 }
 
-HAPI void quickpanel_service_noti_init(void *data) {
+HAPI void quickpanel_noti_led_init(void *data, void *nodes)
+{
        int ret = 0;
        struct appdata *ad = data;
        retif(ad == NULL, , "Invalid parameter!");
 
-       ret = vconf_notify_key_changed(VCONFKEY_SETAPPL_LED_INDICATOR_NOTIFICATIONS,
-                       quickpanel_service_noti_vconf_cb,
-                               ad);
+#ifdef HAVE_X
+       ret = vconf_notify_key_changed(VCONFKEY_SETAPPL_LED_INDICATOR_NOTIFICATIONS,_led_option_vconf_cb, ad);
+#endif                         
        if (ret != 0) {
                ERR("failed to notify key[%s] : %d",
                        VCONFKEY_SETAPPL_AUTO_ROTATE_SCREEN_BOOL, ret);
        }
+
+       if (nodes != NULL) {
+               _led_init_data((noti_node *)nodes);
+       }
 }
 
-HAPI void quickpanel_service_noti_fini(void *data) {
+HAPI void quickpanel_noti_led_fini(void *data)
+{
        int ret = 0;
        struct appdata *ad = data;
        retif(ad == NULL, , "Invalid parameter!");
-
-       ret = vconf_ignore_key_changed(VCONFKEY_SETAPPL_LED_INDICATOR_NOTIFICATIONS,
-                       quickpanel_service_noti_vconf_cb);
+#ifdef HAVE_X
+       ret = vconf_ignore_key_changed(VCONFKEY_SETAPPL_LED_INDICATOR_NOTIFICATIONS,_led_option_vconf_cb);
        if (ret != 0) {
-               ERR("failed to ignore key[%s] : %d",
-                               VCONFKEY_SETAPPL_LED_INDICATOR_NOTIFICATIONS, ret);
+               ERR("failed to ignore key[%s] : %d", VCONFKEY_SETAPPL_LED_INDICATOR_NOTIFICATIONS, ret);
        }
-}
 #endif
+
+       _led_list_clean_up();
+}
index 486e124..63c3c69 100755 (executable)
@@ -1,40 +1,29 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ * Copyright (c) 2009-2015 Samsung Electronics Co., Ltd All Rights Reserved
  *
- * Licensed under the Flora License, Version 1.1 (the License);
+ * 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.tizenopensource.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,
+ * 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 QP_SERVICE_NOTI_LED_ENABLE
+
 #ifndef _QP_NOTI_LED_DEF_
 #define _QP_NOTI_LED_DEF_
 
 #include <notification.h>
-#include <dd-led.h>
 #include "quickpanel-ui.h"
 
-#if !defined(VENDOR)
-#define NOTI_LED_CALL_PKGNAME "com.samsung.call"
-#define NOTI_LED_VTCALL_PKGNAME "com.samsung.vtmain"
-#else
-#define NOTI_LED_CALL_PKGNAME VENDOR".call"
-#define NOTI_LED_VTCALL_PKGNAME VENDOR".vtmain"
-#endif
-#define NOTI_LED_MSG_PKGNAME "/usr/bin/msg-server"
+void quickpanel_noti_led_init(void *data, void *noti_node);
+void quickpanel_noti_led_fini(void *data);
+void quickpanel_noti_led_proc(notification_h noti, int op_type);
 
-void quickpanel_service_noti_led_on(notification_h noti);
-void quickpanel_service_noti_led_off(notification_h noti);
-void quickpanel_service_noti_init(void *data);
-void quickpanel_service_noti_fini(void *data);
-
-#endif
 #endif
diff --git a/daemon/service/reminder.c b/daemon/service/reminder.c
new file mode 100644 (file)
index 0000000..cd702d8
--- /dev/null
@@ -0,0 +1,302 @@
+/*
+ * 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 <alarm.h>
+#include <time.h>
+#include <unistd.h>
+#include <vconf.h>
+#include <system_settings.h>
+
+#include "quickpanel-ui.h"
+#include "common.h"
+#include "media.h"
+#include "noti.h"
+
+#define REMINDER_MIN_INTERVAL 2
+
+static struct info {
+       int alarm_id;
+} s_info = {
+       .alarm_id = -1,
+};
+
+static void _feedback_sound_play(void)
+{
+       int ret = 0;
+       noti_node_item *node = NULL;
+       notification_h noti;
+       int priv_id = 0;
+       const char *nsound_path = NULL;
+       notification_sound_type_e nsound_type = NOTIFICATION_SOUND_TYPE_NONE;
+       int is_play_default = 0;
+
+       // check first noti sound
+       node = quickpanel_noti_node_get_first_noti();
+       if (node) {
+               noti = node->noti;
+               if (noti) {
+                       notification_get_id(noti, NULL, &priv_id);
+                       notification_get_sound(noti, &nsound_type, &nsound_path);
+                       SDBG("reminded notification sound type[%d] path[%s]", nsound_type, nsound_path);
+
+                       switch (nsound_type) {
+                       case NOTIFICATION_SOUND_TYPE_USER_DATA:
+                               /*
+                                *  if user data file isn't playable, play the default ringtone
+                                */
+                               if (nsound_path != NULL) {
+                                       if (quickpanel_media_playable_check(nsound_path) == EINA_TRUE) {
+                                               ret = quickpanel_media_player_play(SOUND_TYPE_NOTIFICATION, nsound_path);
+                                               if (ret == PLAYER_ERROR_NONE) {
+                                                       quickpanel_media_player_id_set(priv_id);
+                                               } else {
+                                                       ERR("failed to play notification sound[%d]", ret);
+                                                       is_play_default = 1;
+                                               }
+                                       }
+                               }
+                               break;
+                       case NOTIFICATION_SOUND_TYPE_DEFAULT:
+                               is_play_default = 1;
+                               break;
+                       case NOTIFICATION_SOUND_TYPE_MAX:
+                       case NOTIFICATION_SOUND_TYPE_NONE:
+                               break;
+                       }
+               }
+       }
+
+       if (is_play_default) {
+               char *default_msg_tone = NULL;
+
+#ifdef HAVE_X
+               ret = system_settings_get_value_string(SYSTEM_SETTINGS_KEY_SOUND_NOTIFICATION, &default_msg_tone);
+               msgif(ret != SYSTEM_SETTINGS_ERROR_NONE, "ailed to set key(%s) : %d", SYSTEM_SETTINGS_KEY_SOUND_NOTIFICATION, ret);
+               SDBG("Reminded setting sound[%s]", default_msg_tone);
+#endif
+               if (default_msg_tone != NULL) {
+                       ret = quickpanel_media_player_play(SOUND_TYPE_NOTIFICATION, default_msg_tone);
+                       free(default_msg_tone);
+                       quickpanel_media_player_id_set(0);
+                       if (ret != PLAYER_ERROR_NONE) {
+                               ERR("failed to play feedback sound");
+                       }
+               }
+
+               if (quickpanel_media_is_vib_enabled() == 1) {
+                       feedback_play_type(FEEDBACK_TYPE_VIBRATION, FEEDBACK_PATTERN_MESSAGE);
+               }
+       }
+}
+
+static int _reminder_interval_get(void)
+{
+       int key = 0;
+       int min = 0;
+       int ret = -1;
+
+       ret = vconf_get_int(VCONFKEY_SETAPPL_NOTI_MSG_ALERT_REP_TYPE_INT, &key);
+       retif(ret != 0, 0, "failed to get vconf VCONFKEY_SETAPPL_NOTI_MSG_ALERT_REP_TYPE_INT");
+
+       switch (key) {
+       case 1:
+               min = 2;
+               break;
+       case 2:
+               min = 5;
+               break;
+       case 3:
+               min = 10;
+               break;
+       }
+
+       DBG("interval:%d", min);
+
+       return min;
+}
+
+static int _alarm_delete_cb(alarm_id_t id, void * user_param)
+{
+       int ret = ALARMMGR_RESULT_SUCCESS;
+
+       ret = alarmmgr_remove_alarm(id);
+       if (ret != ALARMMGR_RESULT_SUCCESS) {
+               ERR("alarmmgr_enum_alarm_ids() failed");
+       }
+
+       return 0;
+}
+
+static void _alarm_unset(void)
+{
+       int ret = ALARMMGR_RESULT_SUCCESS;
+
+       if (s_info.alarm_id != -1){
+               ERR("try to delete alarm_id(%d)", s_info.alarm_id);
+               ret = alarmmgr_remove_alarm(s_info.alarm_id);
+               if (ret != ALARMMGR_RESULT_SUCCESS) {
+                       ERR("alarmmgr_remove_alarm(%d) failed", s_info.alarm_id);
+                       ret = alarmmgr_enum_alarm_ids(_alarm_delete_cb, NULL);
+                       if (ret != ALARMMGR_RESULT_SUCCESS) {
+                               ERR("alarmmgr_enum_alarm_ids() failed");
+                       }
+               }
+               s_info.alarm_id = -1;
+       }
+}
+
+static Eina_Bool _alarm_set_from_now(int min, void *data)
+{
+       int ret = ALARMMGR_RESULT_SUCCESS;
+       time_t current_time;
+       struct tm current_tm;
+       alarm_entry_t *alarm_info = NULL;
+       alarm_id_t alarm_id;
+       alarm_date_t alarm_time;
+
+       /* delete before registering alarm ids */
+       _alarm_unset();
+
+       /* set alarm after sec */
+       time(&current_time);
+
+       DBG(" %s, after %d MIN alarm set", ctime(&current_time), min);
+       localtime_r(&current_time, &current_tm);
+
+       alarm_info = alarmmgr_create_alarm();
+       if (alarm_info == NULL) {
+               ERR("alarmmgr_create_alarm() is failed\n");
+               return EINA_FALSE;
+       }
+
+       alarm_time.year = 0;
+       alarm_time.month = 0;
+       alarm_time.day = 0;
+       alarm_time.hour = current_tm.tm_hour;
+       alarm_time.min = current_tm.tm_min + min;
+       alarm_time.sec = current_tm.tm_sec;
+
+       alarmmgr_set_repeat_mode(alarm_info, ALARM_REPEAT_MODE_ONCE, 0);
+       alarmmgr_set_time(alarm_info, alarm_time);
+       alarmmgr_set_type(alarm_info, ALARM_TYPE_VOLATILE);
+
+       ret = alarmmgr_add_alarm_with_localtime(alarm_info, NULL, &alarm_id);
+       if (ret != ALARMMGR_RESULT_SUCCESS) {
+               ERR("alarmmgr_add_alarm_with_localtime() failed:%d", ret);
+               alarmmgr_free_alarm(alarm_info) ;
+               return EINA_FALSE;
+       }
+
+       DBG("alarm id(%d) is set", alarm_id);
+       s_info.alarm_id = alarm_id;
+       alarmmgr_free_alarm(alarm_info) ;
+
+       return EINA_TRUE;
+}
+
+static int _alarm_cb(alarm_id_t alarm_id, void *data)
+{
+       DBG("");
+
+       int min = _reminder_interval_get();
+
+       if (min >= REMINDER_MIN_INTERVAL) {
+               _alarm_set_from_now(min, data);
+       } else {
+               _alarm_unset();
+       }
+
+       if (!quickpanel_uic_is_opened()) {
+               _feedback_sound_play();
+       } else {
+               ERR("quickpanel is opened, skip remind sound");
+       }
+
+       return 1;
+}
+
+static void _alarm_setting_changed_cb(keynode_t *key, void* data)
+{
+       int min = _reminder_interval_get();
+
+       if (quickpanel_noti_get_count() <= 0) {
+               _alarm_unset();
+       } else {
+               if (min >= REMINDER_MIN_INTERVAL) {
+                       _alarm_set_from_now(min, data);
+               } else {
+                       _alarm_unset();
+               }
+       }
+}
+
+HAPI void quickpanel_reminder_init(void *data)
+{
+       DBG("");
+
+       int ret = 0;
+
+       ret = alarmmgr_init("org.tizen.quickpanel");
+       retif(ret < 0, , "alarmmgr_init() failed (%d)", ret);
+
+       ret = alarmmgr_set_cb(_alarm_cb, NULL);
+       retif(ret < 0, , "alarmmgr_init() failed (%d)", ret);
+
+       ret = vconf_notify_key_changed(VCONFKEY_SETAPPL_NOTI_MSG_ALERT_REP_TYPE_INT,
+                       _alarm_setting_changed_cb, data);
+       if (ret != 0) {
+               ERR("failed to register a cb key:%s err:%d",
+                               "VCONFKEY_SETAPPL_NOTI_MSG_ALERT_REP_TYPE_INT", ret);
+       }
+
+       s_info.alarm_id = -1;
+}
+
+HAPI void quickpanel_reminder_fini(void *data)
+{
+       DBG("");
+
+       int ret = 0;
+
+       _alarm_unset();
+
+       alarmmgr_fini();
+
+       ret = vconf_ignore_key_changed(VCONFKEY_SETAPPL_NOTI_MSG_ALERT_REP_TYPE_INT, _alarm_setting_changed_cb);
+       if (ret != 0) {
+               ERR("failed to unregister a cb key:%s err:%d", "VCONFKEY_SETAPPL_NOTI_MSG_ALERT_REP_TYPE_INT", ret);
+       }
+}
+
+HAPI void quickpanel_reminder_start(void *data)
+{
+       DBG("");
+
+       int min = _reminder_interval_get();
+
+       if (min >= REMINDER_MIN_INTERVAL) {
+               _alarm_set_from_now(min, data);
+       }
+}
+
+HAPI void quickpanel_reminder_stop(void *data)
+{
+       DBG("");
+
+       _alarm_unset();
+}
diff --git a/daemon/service/reminder.h b/daemon/service/reminder.h
new file mode 100644 (file)
index 0000000..2bdf7d0
--- /dev/null
@@ -0,0 +1,27 @@
+/*
+ * 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 _QP_REMINDER_DEF_
+#define _QP_REMINDER_DEF_
+
+void quickpanel_reminder_init(void *data);
+void quickpanel_reminder_fini(void *data);
+void quickpanel_reminder_start(void *data);
+void quickpanel_reminder_stop(void *data);
+
+#endif
diff --git a/daemon/service/smart_alert.c b/daemon/service/smart_alert.c
new file mode 100644 (file)
index 0000000..4d16f57
--- /dev/null
@@ -0,0 +1,85 @@
+/*
+ * 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 <vconf.h>
+#include "common.h"
+#include "noti_util.h"
+#include "smart_alert.h"
+
+static inline int __quickpanel_service_update_event_count(const char *pkgname, const char *vconfkey)
+{
+       int ret = 0, count = 0;
+       notification_h noti = NULL;
+       notification_list_h noti_list = NULL;
+
+       retif(pkgname == NULL, 0, "Invalid parameter!");
+       retif(vconfkey == NULL, 0, "Invalid parameter!");
+
+       notification_get_detail_list(pkgname, NOTIFICATION_GROUP_ID_NONE, NOTIFICATION_PRIV_ID_NONE, -1, &noti_list);
+       if (noti_list != NULL) {
+               noti = notification_list_get_data(noti_list);
+               if (noti != NULL) {
+                       count = quickpanel_noti_util_get_event_count_from_noti(noti);
+                       ret = vconf_set_int(vconfkey, count);
+
+                       ERR("event set:%s, count:%d", pkgname, count);
+
+                       if (ret != 0) {
+                               ERR("failed to set vconf key[%s] : %d", vconfkey, ret);
+                       }
+               } else {
+                       ERR("no data found:%s", pkgname);
+               }
+               notification_free_list(noti_list);
+               return count;
+       } else {
+               ret = vconf_set_int(vconfkey, 0);
+
+               ERR("event unset:%s", pkgname);
+
+               if (ret != 0) {
+                       ERR("failed to set vconf key[%s] : %d", vconfkey, ret);
+               }
+       }
+
+       return 0;
+}
+
+HAPI void quickpanel_smart_alert_update_info(notification_h noti)
+{
+       char *pkgname = NULL;
+       int event_count_call = 0;
+       int event_count_vtcall = 0;
+
+       if (noti == NULL) {
+               event_count_call = quickpanel_noti_util_get_event_count_by_pkgname(SMART_ALARM_CALL_PKGNAME);
+               event_count_vtcall = quickpanel_noti_util_get_event_count_by_pkgname(SMART_ALARM_VTCALL_PKGNAME);
+               ERR("call event set, count:%d", MAX(event_count_call, event_count_vtcall));
+       } else {
+               notification_get_pkgname(noti, &pkgname);
+               retif(pkgname == NULL, , "Invalid parameter!");
+
+               if (strncmp(pkgname, SMART_ALARM_CALL_PKGNAME, strlen(pkgname)) == 0
+                       || strncmp(pkgname, SMART_ALARM_VTCALL_PKGNAME, strlen(pkgname)) == 0) {
+                       event_count_call = quickpanel_noti_util_get_event_count_by_pkgname(SMART_ALARM_CALL_PKGNAME);
+                       event_count_vtcall = quickpanel_noti_util_get_event_count_by_pkgname(SMART_ALARM_VTCALL_PKGNAME);
+
+                       ERR("call event set, count:%d", MAX(event_count_call, event_count_vtcall));
+               }
+       }
+}
diff --git a/daemon/service/smart_alert.h b/daemon/service/smart_alert.h
new file mode 100644 (file)
index 0000000..0994627
--- /dev/null
@@ -0,0 +1,37 @@
+/*
+ * 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 _QP_SMART_ALERT_DEF_
+#define _QP_SMART_ALERT_DEF_
+
+#include <notification.h>
+#include "quickpanel-ui.h"
+
+#if !defined(VENDOR)
+#define SMART_ALARM_CALL_PKGNAME "org.tizen.call-notification"
+#define SMART_ALARM_VTCALL_PKGNAME "org.tizen.vtmain"
+#define SMART_ALARM_MSG_PKGNAME "org.tizen.message"
+#else
+#define SMART_ALARM_CALL_PKGNAME VENDOR".call-notification"
+#define SMART_ALARM_VTCALL_PKGNAME VENDOR".vtmain"
+#define SMART_ALARM_MSG_PKGNAME VENDOR".message"
+#endif
+
+void quickpanel_smart_alert_update_info(notification_h noti);
+
+#endif
diff --git a/daemon/service/uninstall.c b/daemon/service/uninstall.c
new file mode 100644 (file)
index 0000000..f520f7e
--- /dev/null
@@ -0,0 +1,147 @@
+/*
+ * 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 <vconf.h>
+#include <pkgmgr-info.h>
+#include <package-manager.h>
+#include <notification.h>
+#include <badge.h>
+#include "common.h"
+#include "uninstall.h"
+
+#define QP_PKGMGR_STR_START "start"
+#define QP_PKGMGR_STR_END "end"
+#define QP_PKGMGR_STR_OK "ok"
+#define QP_PKGMGR_STR_UNINSTALL                "uninstall"
+
+typedef struct _pkg_event {
+       char *pkgname;
+       int is_done;
+} Pkg_Event;
+
+static struct _s_info {
+       pkgmgr_client *client;
+       Eina_List *event_list;
+} s_info = {
+       .client = NULL,
+       .event_list = NULL,
+};
+
+static void _item_del(Pkg_Event *item_event)
+{
+       if (item_event != NULL) {
+               free(item_event->pkgname);
+       }
+
+       free(item_event);
+}
+
+static int _is_item_exist(const char *pkgid, int remove_if_exist)
+{
+       int ret = 0;
+       Eina_List *l = NULL;
+       Pkg_Event *event_item = NULL;
+       retif(pkgid == NULL, 0, "invalid parameter");
+
+       EINA_LIST_FOREACH(s_info.event_list, l, event_item) {
+               if (event_item != NULL) {
+                       if (strcmp(event_item->pkgname, pkgid) == 0) {
+                               ret = 1;
+                               break;
+                       }
+               }
+       }
+
+       if (ret == 1 && remove_if_exist == 1) {
+               s_info.event_list = eina_list_remove(s_info.event_list, event_item);
+               _item_del(event_item);
+       }
+
+       return ret;
+}
+
+static int _pkgmgr_event_cb(int req_id, const char *pkg_type, const char *pkgid,
+ const char *key, const char *val, const void *pmsg, void *priv_data)
+{
+       if (pkgid == NULL) {
+               return 0;
+       }
+
+       SDBG("pkg:%s key:%s val:%s", pkgid, key, val);
+
+       if (key != NULL && val != NULL) {
+               if (strcasecmp(key, QP_PKGMGR_STR_START) == 0 &&
+                       strcasecmp(val, QP_PKGMGR_STR_UNINSTALL) == 0) {
+
+                       ERR("Pkg:%s is being uninstalled", pkgid);
+
+                       Pkg_Event *event = calloc(1, sizeof(Pkg_Event));
+                       if (event != NULL) {
+                               event->pkgname = strdup(pkgid);
+                               s_info.event_list = eina_list_append(s_info.event_list, event);
+                       } else {
+                               ERR("failed to create event item");
+                       }
+
+                       return 0;
+               } else if (strcasecmp(key, QP_PKGMGR_STR_END) == 0 &&
+                       strcasecmp(val, QP_PKGMGR_STR_OK) == 0) {
+                       if (_is_item_exist(pkgid, 1) == 1) {
+                               ERR("Pkg:%s is uninstalled, delete related resource", pkgid);
+                               notification_delete_all_by_type(pkgid, NOTIFICATION_TYPE_NOTI);
+                               notification_delete_all_by_type(pkgid, NOTIFICATION_TYPE_ONGOING);
+                               badge_remove(pkgid);
+                       }
+               }
+       }
+
+       return 0;
+}
+
+HAPI void quickpanel_uninstall_init(void *data)
+{
+       int ret = -1;
+
+       pkgmgr_client *client = pkgmgr_client_new(PC_LISTENING);
+       if (client != NULL) {
+               if ((ret = pkgmgr_client_listen_status(client, _pkgmgr_event_cb, data)) != PKGMGR_R_OK) {
+                       ERR("Failed to listen pkgmgr event:%d", ret);
+               }
+               s_info.client = client;
+       } else {
+               ERR("Failed to create package manager client");
+       }
+}
+
+HAPI void quickpanel_uninstall_fini(void *data)
+{
+       int ret = -1;
+       Pkg_Event *event_item = NULL;
+
+       if (s_info.client != NULL) {
+               if ((ret = pkgmgr_client_free(s_info.client)) != PKGMGR_R_OK) {
+                       ERR("Failed to free pkgmgr client:%d", ret);
+               }
+               s_info.client = NULL;
+       }
+
+       EINA_LIST_FREE(s_info.event_list, event_item) {
+               _item_del(event_item);
+       }
+       s_info.event_list = NULL;
+}
diff --git a/daemon/service/uninstall.h b/daemon/service/uninstall.h
new file mode 100644 (file)
index 0000000..7e28d09
--- /dev/null
@@ -0,0 +1,27 @@
+/*
+ * 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 _QP_SERVICE_UNINSTALL_DEF_
+#define _QP_SERVICE_UNINSTALL_DEF_
+
+#include "quickpanel-ui.h"
+
+void quickpanel_uninstall_init(void *data);
+void quickpanel_uninstall_fini(void *data);
+
+#endif
diff --git a/daemon/settings/modules/assistive_light.c b/daemon/settings/modules/assistive_light.c
new file mode 100644 (file)
index 0000000..168b338
--- /dev/null
@@ -0,0 +1,183 @@
+/*
+ * 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 <app.h>
+#include <device/led.h>
+#include <vconf.h>
+
+#include "common.h"
+#include "quickpanel-ui.h"
+#include "settings.h"
+#include "setting_utils.h"
+#include "setting_module_api.h"
+
+
+#define E_DATA_POPUP_MODULE_ITEM "mobule_item"
+#define BUTTON_LABEL _("IDS_ST_BUTTON2_TORCH_ABB")
+#define BUTTON_ICON_NORMAL "quick_icon_torch.png"
+
+static void _status_update(QP_Module_Setting *module, int light_status, int flag_extra_2);
+
+static const char *_label_get(void)
+{
+       return BUTTON_LABEL;
+}
+
+static void _on_vconf_assetive_light_changed(keynode_t *node, void *user_data)
+{
+       Eina_Bool mode = EINA_FALSE;
+
+       if (!node) {
+               ERR("node == NULL");
+               return;
+       }
+
+#ifdef HAVE_X
+       mode = node->value.b;
+#endif
+
+       quickpanel_setting_module_icon_state_set(user_data, mode);
+       _status_update(user_data, mode, FLAG_VALUE_VOID);
+}
+
+static int _init(void *data)
+{
+       vconf_notify_key_changed(VCONFKEY_SETAPPL_ACCESSIBILITY_TORCH_LIGHT, _on_vconf_assetive_light_changed, data);
+
+       return QP_OK;
+}
+
+static void _set_assetive_light_mode(Eina_Bool mode)
+{
+       int max_brightness;
+       int ret = device_flash_get_max_brightness(&max_brightness);
+
+       if (ret != 0) {
+               ERR("TORCH LIGHT CHANGE: ret != 0 -> %d", ret);
+               return;
+       } else {
+               ERR("TORCH LIGHT OK[%d]", max_brightness);
+       }
+
+       int ret_set = -1;
+
+       if(mode == EINA_TRUE) {
+               ret_set = device_flash_set_brightness(max_brightness);
+               if (ret_set != 0) {
+                       ERR("Failed to set brightness(%d)[%d]", max_brightness, ret_set);
+               } else {
+                       if (vconf_set_bool(VCONFKEY_SETAPPL_ACCESSIBILITY_TORCH_LIGHT, 1) < 0) {
+                               ERR("Failed to set tourch light vconf key");
+                       }
+               }
+       } else {
+               ret_set = device_flash_set_brightness(0);
+               if (ret_set != 0) {
+                       ERR("Failed to set brightness(0)[%d]", ret_set);
+               } else {
+                       if (vconf_set_bool(VCONFKEY_SETAPPL_ACCESSIBILITY_TORCH_LIGHT, 0) < 0) {
+                               ERR("Failed to set tourch light vconf key");
+                       }
+               }
+       }
+}
+
+static void _view_update(Evas_Object *view, int state, int flag_extra_1, int flag_extra_2)
+{
+       Evas_Object *image = NULL;
+       const char *icon_path = NULL;
+
+       quickpanel_setting_icon_state_set(view, state);
+       icon_path = BUTTON_ICON_NORMAL;
+       image = quickpanel_setting_icon_image_new(view, icon_path);
+       quickpanel_setting_icon_content_set(view, image);
+       quickpanel_setting_icon_text_set(view, BUTTON_LABEL, state);
+}
+
+static void _status_update(QP_Module_Setting *module, int light_status, int flag_extra_2)
+{
+       int ret = -1;
+       retif(module == NULL, , "Invalid parameter!");
+
+       int brightness = 0;
+       ret = device_flash_get_brightness(&brightness);
+       if (ret != 0) {
+               ERR("Failed to get brightness[%d]", ret);
+       }
+
+       if (brightness > 0) {
+               quickpanel_setting_module_icon_state_set(module, ICON_VIEW_STATE_ON);
+       } else {
+               quickpanel_setting_module_icon_state_set(module, ICON_VIEW_STATE_OFF);
+       }
+
+       quickpanel_setting_module_icon_view_update(module,
+                       quickpanel_setting_module_icon_state_get(module), FLAG_VALUE_VOID);
+}
+
+static void _mouse_clicked_cb(void *data, Evas_Object *obj, const char *emission, const char *source)
+{
+       QP_Module_Setting *module = (QP_Module_Setting *)data;
+       retif(module == NULL, , "Invalid parameter!");
+
+       if (quickpanel_setting_module_icon_state_get(module) == ICON_VIEW_STATE_ON) {
+               _set_assetive_light_mode(FLAG_TURN_OFF);
+       } else {
+               _set_assetive_light_mode(FLAG_TURN_ON);
+       }
+
+       _status_update(module, FLAG_VALUE_VOID, FLAG_VALUE_VOID);
+}
+
+static void _lang_changed(void *data)
+{
+       QP_Module_Setting *module = (QP_Module_Setting *) data;
+       retif(module == NULL, , "Invalid parameter!");
+
+       quickpanel_setting_module_icon_view_update_text(module);
+}
+
+static void _refresh(void *data)
+{
+       QP_Module_Setting *module = (QP_Module_Setting *)data;
+       retif(module == NULL, , "Invalid parameter!");
+
+       quickpanel_setting_module_icon_view_update_text(module);
+}
+
+static int _fini(void *data)
+{
+       return QP_OK;
+}
+
+QP_Module_Setting assistive_light =
+{
+       .name                           = "assisitvelight",
+       .init                           = _init,
+       .fini                           = _fini,
+       .lang_changed           = _lang_changed,
+       .refresh                        = _refresh,
+       .icon_get                       = NULL,
+       .label_get                      = _label_get,
+       .supported_get          = NULL,
+       .view_update            = _view_update,
+       .status_update          = _status_update,
+       .handler_longpress  = NULL,
+       .handler_press          = _mouse_clicked_cb,
+};
+
diff --git a/daemon/settings/modules/bluetooth.c b/daemon/settings/modules/bluetooth.c
new file mode 100644 (file)
index 0000000..6b82217
--- /dev/null
@@ -0,0 +1,241 @@
+/*
+ * 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 <bluetooth.h>
+#include <vconf.h>
+#include <bluetooth_internal.h>
+
+#include "common.h"
+#include "quickpanel-ui.h"
+#include "settings.h"
+#include "setting_utils.h"
+#include "setting_module_api.h"
+
+#define BUTTON_LABEL _("IDS_ST_BUTTON2_BLUETOOTH_ABB")
+#define BUTTON_ICON_NORMAL "quick_icon_bluetooth.png"
+#define BUTTON_ICON_HIGHLIGHT NULL
+#define BUTTON_ICON_DIM NULL
+#define PACKAGE_SETTING_MENU "ug-bluetooth-efl-single"
+
+static void _mouse_clicked_cb(void *data, Evas_Object *obj, const char *emission, const char *source);
+
+static const char *_label_get(void)
+{
+       return BUTTON_LABEL;
+}
+
+static const char *_icon_get(qp_setting_icon_image_type type)
+{
+       if (type == QP_SETTING_ICON_NORMAL) {
+               return BUTTON_ICON_NORMAL;
+       } else if (type == QP_SETTING_ICON_HIGHLIGHT) {
+               return BUTTON_ICON_HIGHLIGHT;
+       } else if (type == QP_SETTING_ICON_DIM) {
+#ifdef BUTTON_ICON_DIM
+               return BUTTON_ICON_DIM;
+#endif
+       }
+
+       return NULL;
+}
+
+static void _long_press_cb(void *data)
+{
+#ifdef PACKAGE_SETTING_MENU
+       quickpanel_setting_icon_handler_longpress(PACKAGE_SETTING_MENU, NULL);
+#endif
+}
+
+static void _view_update(Evas_Object *view, int state, int flag_extra_1, int flag_extra_2)
+{
+       Evas_Object *image = NULL;
+       const char *icon_path = NULL;
+
+       quickpanel_setting_icon_state_set(view, state);
+
+       if (state == ICON_VIEW_STATE_ON) {
+#ifdef BUTTON_ICON_HIGHLIGHT
+               icon_path = BUTTON_ICON_HIGHLIGHT;
+#endif
+       } else if (state == ICON_VIEW_STATE_DIM) {
+#ifdef BUTTON_ICON_DIM
+               icon_path = BUTTON_ICON_DIM;
+#endif
+       } else {
+               icon_path = BUTTON_ICON_NORMAL;
+       }
+
+       if (icon_path == NULL) {
+               icon_path = BUTTON_ICON_NORMAL;
+       }
+       image = quickpanel_setting_icon_image_new(view, icon_path);
+       quickpanel_setting_icon_content_set(view, image);
+       quickpanel_setting_icon_text_set(view, BUTTON_LABEL, state);
+}
+
+static void _status_update(QP_Module_Setting *module, int flag_extra_1, int flag_extra_2)
+{
+       int ret = 0;
+       bt_adapter_state_e adapter_state = BT_ADAPTER_DISABLED;
+       retif(module == NULL, , "Invalid parameter!");
+
+       ret = bt_adapter_get_state(&adapter_state);
+       retif(ret != BT_ERROR_NONE, , "bt_adapter_get_state failed");
+
+       if (adapter_state == BT_ADAPTER_ENABLED) {
+               quickpanel_setting_module_icon_state_set(module, ICON_VIEW_STATE_ON);
+       } else {
+               quickpanel_setting_module_icon_state_set(module, ICON_VIEW_STATE_OFF);
+       }
+
+       quickpanel_setting_module_progress_mode_set(module, FLAG_DISABLE, FLAG_TURN_OFF);
+       quickpanel_setting_module_icon_timer_del(module);
+
+       quickpanel_setting_module_icon_view_update(module,
+                       quickpanel_setting_module_icon_state_get(module),
+                       FLAG_VALUE_VOID);
+}
+
+static void _mouse_clicked_cb(void *data,
+               Evas_Object *obj, const char *emission, const char *source)
+{
+       int ret;
+       int is_on = 0;
+       QP_Module_Setting *module = (QP_Module_Setting *)data;
+       retif(module == NULL, , "Invalid parameter!");
+
+       if (quickpanel_setting_module_is_icon_clickable(module) == 0) {
+               return;
+       }
+
+       if (quickpanel_setting_module_icon_state_get(module) == ICON_VIEW_STATE_ON) {
+               ret = bt_adapter_disable();
+               retif(ret != BT_ERROR_NONE, , "failed to disable BT adapter");
+
+               is_on = 0;
+       } else {
+               ret = bt_adapter_enable();
+               retif(ret != BT_ERROR_NONE, , "failed to enable BT adapter");
+
+               is_on = 1;
+       }
+
+       if (is_on == 1) {
+               quickpanel_setting_module_progress_mode_set(module, FLAG_ENABLE, FLAG_TURN_ON);
+       } else {
+               quickpanel_setting_module_progress_mode_set(module, FLAG_ENABLE, FLAG_TURN_OFF);
+       }
+       quickpanel_setting_module_icon_timer_add(module);
+}
+
+static void _bluetooth_status_changed_cb(int result,
+                       bt_adapter_state_e adapter_state,
+                       void *user_data)
+{
+       QP_Module_Setting *module = (QP_Module_Setting *)user_data;
+       retif(module == NULL, , "Invalid parameter!");
+
+       INFO("bluetooth state : %d", adapter_state);
+       quickpanel_setting_module_icon_timer_del(module);
+
+       if (result != BT_ERROR_NONE) {
+               ERR("BT adapter operation is failed");
+               _status_update(module, FLAG_VALUE_VOID, FLAG_VALUE_VOID);
+               return;
+       }
+
+       _status_update(module, FLAG_VALUE_VOID, FLAG_VALUE_VOID);
+}
+
+static int _register_module_event_handler(void *data)
+{
+       int ret = 0;
+
+       ret = bt_initialize();
+       msgif(ret != BT_ERROR_NONE, "bt_initialize failed");
+
+       ret = bt_adapter_set_state_changed_cb(_bluetooth_status_changed_cb, data);
+       msgif(ret != BT_ERROR_NONE, "bt_adapter_set_state_changed_cb failed");
+
+       return QP_OK;
+}
+
+static int _unregister_module_event_handler(void *data)
+{
+       int ret = 0;
+
+       ret = bt_adapter_unset_state_changed_cb();
+       msgif(ret != BT_ERROR_NONE, "bt_adapter_unset_state_changed_cb failed");
+
+       ret = bt_deinitialize();
+       msgif(ret != BT_ERROR_NONE, "bt_deinitialize failed");
+
+       return QP_OK;
+}
+
+/****************************************************************************
+ *
+ * Quickpanel Item functions
+ *
+ ****************************************************************************/
+static int _init(void *data)
+{
+       int ret = QP_OK;
+
+       ret = _register_module_event_handler(data);
+
+       return ret;
+}
+
+static int _fini(void *data)
+{
+       int ret = QP_OK;
+
+       ret = _unregister_module_event_handler(data);
+
+       return ret;
+}
+
+static void _lang_changed(void *data)
+{
+       QP_Module_Setting *module = (QP_Module_Setting *)data;
+       retif(module == NULL, , "Invalid parameter!");
+
+       quickpanel_setting_module_icon_view_update_text(module);
+}
+
+static void _refresh(void *data)
+{
+       QP_Module_Setting *module = (QP_Module_Setting *)data;
+       retif(module == NULL, , "Invalid parameter!");
+
+       quickpanel_setting_module_icon_view_update_text(module);
+}
+
+QP_Module_Setting bluetooth = {
+       .name                           = "bluetooth",
+       .init                           = _init,
+       .fini                           = _fini,
+       .lang_changed           = _lang_changed,
+       .refresh                        = _refresh,
+       .icon_get                       = _icon_get,
+       .label_get                      = _label_get,
+       .view_update            = _view_update,
+       .status_update          = _status_update,
+       .handler_longpress      = _long_press_cb,
+       .handler_press          = _mouse_clicked_cb,
+};
diff --git a/daemon/settings/modules/flightmode.c b/daemon/settings/modules/flightmode.c
new file mode 100644 (file)
index 0000000..e878fd2
--- /dev/null
@@ -0,0 +1,424 @@
+/*
+ * 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 <vconf.h>
+#include <syspopup_caller.h>
+#include <tapi_common.h>
+#include <ITapiSim.h>
+#include <ITapiModem.h>
+#include <TapiUtility.h>
+#include <system_settings.h>
+#include <bundle_internal.h>
+#include "common.h"
+#include "quickpanel-ui.h"
+#include "settings.h"
+#include "setting_utils.h"
+#include "setting_module_api.h"
+
+
+#define BUTTON_LABEL _("IDS_ST_BUTTON2_FLIGHT_NMODE")
+#define BUTTON_ICON_NORMAL "quick_icon_flightmode.png"
+#define BUTTON_ICON_HIGHLIGHT NULL
+#define BUTTON_ICON_DIM NULL
+#define PACKAGE_SETTING_MENU "setting-flightmode-efl"
+#define SYSPOPUP_NAME "mode-syspopup"
+
+static Eina_Bool fly_icon_is_locked = EINA_FALSE;
+static Ecore_Timer *timer = NULL;
+
+static void _mouse_clicked_cb(void *data, Evas_Object *obj, const char *emission, const char *source);
+
+static const char *_label_get(void)
+{
+       return BUTTON_LABEL;
+}
+
+static const char *_icon_get(qp_setting_icon_image_type type)
+{
+       if (type == QP_SETTING_ICON_NORMAL) {
+               return BUTTON_ICON_NORMAL;
+       } else if (type == QP_SETTING_ICON_HIGHLIGHT) {
+               return BUTTON_ICON_HIGHLIGHT;
+       } else if (type == QP_SETTING_ICON_DIM) {
+#ifdef BUTTON_ICON_DIM
+               return BUTTON_ICON_DIM;
+#endif
+       }
+
+       return NULL;
+}
+
+static Eina_Bool _unlock_fly_icon(void *data)
+{
+       fly_icon_is_locked = EINA_FALSE;
+       ecore_timer_del(timer);
+       timer = NULL;
+
+       return ECORE_CALLBACK_CANCEL;
+}
+
+static void _long_press_cb(void *data)
+{
+#ifdef PACKAGE_SETTING_MENU
+       if (fly_icon_is_locked == EINA_TRUE) {
+               LOGD("Fly icon is locked");
+               return;
+       }
+       quickpanel_setting_icon_handler_longpress(PACKAGE_SETTING_MENU, NULL);
+#endif
+}
+
+static void _view_update(Evas_Object *view, int state, int flag_extra_1, int flag_extra_2)
+{
+       Evas_Object *image = NULL;
+       const char *icon_path = NULL;
+
+       quickpanel_setting_icon_state_set(view, state);
+
+       if (state == ICON_VIEW_STATE_ON) {
+#ifdef BUTTON_ICON_HIGHLIGHT
+               icon_path = BUTTON_ICON_HIGHLIGHT;
+#endif
+       } else if (state == ICON_VIEW_STATE_DIM) {
+#ifdef BUTTON_ICON_DIM
+               icon_path = BUTTON_ICON_DIM;
+#endif
+       } else {
+               icon_path = BUTTON_ICON_NORMAL;
+       }
+
+       if (icon_path == NULL) {
+               icon_path = BUTTON_ICON_NORMAL;
+       }
+       image = quickpanel_setting_icon_image_new(view, icon_path);
+       quickpanel_setting_icon_content_set(view, image);
+       quickpanel_setting_icon_text_set(view, BUTTON_LABEL, state);
+}
+
+static void _status_update(QP_Module_Setting *module, int flag_extra_1, int flag_extra_2)
+{
+       LOGD("");
+       int ret = 0;
+       int status = 0;
+       retif(module == NULL, , "Invalid parameter!");
+
+#ifdef HAVE_X
+       ret = system_settings_get_value_bool(SYSTEM_SETTINGS_KEY_NETWORK_FLIGHT_MODE, &status);
+       msgif(ret != SYSTEM_SETTINGS_ERROR_NONE, "fail to get VCONFKEY_TELEPHONY_FLIGHT_MODE:%d", ret);
+#endif
+
+       if (status == 1) {
+               quickpanel_setting_module_icon_state_set(module, ICON_VIEW_STATE_ON);
+       } else {
+               quickpanel_setting_module_icon_state_set(module, ICON_VIEW_STATE_OFF);
+       }
+
+       quickpanel_setting_module_progress_mode_set(module, FLAG_DISABLE, FLAG_TURN_OFF);
+       quickpanel_setting_module_icon_timer_del(module);
+
+       quickpanel_setting_module_icon_view_update(module,
+                       quickpanel_setting_module_icon_state_get(module),
+                       FLAG_VALUE_VOID);
+}
+
+static void _tapi_flight_mode_cb(TapiHandle *handle, int result, void *data, void *user_data)
+{
+       ERR("flight mode result:%d", result);
+       _status_update(user_data, FLAG_VALUE_VOID, FLAG_VALUE_VOID);
+}
+
+static int _tapi_flight_mode_set(int on, void *data)
+{
+       LOGD("");
+       int ret = QP_OK;
+       int ret_t = TAPI_API_SUCCESS;
+       TapiHandle *tapi_handle = NULL;
+       QP_Module_Setting *module = (QP_Module_Setting *)data;
+       retif(module == NULL, QP_FAIL, "Invalid parameter!");
+
+       tapi_handle = tel_init(NULL);
+       retif(tapi_handle == NULL, QP_FAIL, "failed to initialized tapi handler");
+
+       if (on == 1) {
+               ret_t = tel_set_flight_mode(tapi_handle,
+                                               TAPI_POWER_FLIGHT_MODE_ENTER, _tapi_flight_mode_cb, data);
+               if (ret_t != TAPI_API_SUCCESS) {
+                       ret = QP_FAIL;
+                       ERR("tel_set_flight_mode enter error:%d", ret_t);
+               }
+       } else {
+               ret_t = tel_set_flight_mode(tapi_handle,
+                                               TAPI_POWER_FLIGHT_MODE_LEAVE, _tapi_flight_mode_cb, data);
+               if (ret_t != TAPI_API_SUCCESS) {
+                       ret = QP_FAIL;
+                       ERR("tel_set_flight_mode leave error:%d", ret_t);
+               }
+       }
+
+       if ((ret_t = tel_deinit(tapi_handle)) != TAPI_API_SUCCESS) {
+               ERR("failed to deinitialized tapi handler:%d", ret_t);
+       }
+
+       return ret;
+}
+
+static void _turn_on(int is_on)
+{
+       LOGD("");
+       bundle *b = NULL;
+       b = bundle_create();
+       if (b != NULL) {
+               if (is_on) {
+                       bundle_add(b, "_MODE_SYSTEM_POPUP_TYPE_", "MODE_SYSTEM_FLIGHTMODE_ON");
+               } else {
+                       bundle_add(b, "_MODE_SYSTEM_POPUP_TYPE_", "MODE_SYSTEM_FLIGHTMODE_OFF");
+               }
+               syspopup_launch(SYSPOPUP_NAME, b);
+               bundle_free(b);
+       } else {
+               ERR("failed to create a bundle");
+       }
+
+       timer = ecore_timer_add(1.0, _unlock_fly_icon, NULL);
+}
+
+static void _mouse_clicked_cb(void *data,
+               Evas_Object *obj, const char *emission, const char *source)
+{
+       QP_Module_Setting *module = (QP_Module_Setting *)data;
+       LOGD("");
+       retif(module == NULL, , "Invalid parameter!");
+
+       if (fly_icon_is_locked == EINA_TRUE) {
+               LOGD("Fly icon is locked");
+               return;
+       }
+
+       if (quickpanel_setting_module_is_icon_clickable(module) == 0) {
+               LOGD("Fly icon is not clickable");
+               return;
+       }
+
+       fly_icon_is_locked = EINA_TRUE;
+
+       if (quickpanel_setting_module_icon_state_get(module) == ICON_VIEW_STATE_OFF) {
+               _turn_on(1);
+       } else {
+               _turn_on(0);
+       }
+}
+
+static void _tapi_flight_mode_vconf_cb(keynode_t *node, void *data)
+{
+       _status_update(data, FLAG_VALUE_VOID, FLAG_VALUE_VOID);
+}
+
+static int _register_module_event_handler(void *data)
+{
+       int ret = 0;
+
+#ifdef HAVE_X
+       ret = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_NETWORK_FLIGHT_MODE, _tapi_flight_mode_vconf_cb, data);
+       msgif(ret != SYSTEM_SETTINGS_ERROR_NONE, "failed to notify key(SYSTEM_SETTINGS_KEY_NETWORK_FLIGHT_MODE) : %d", ret);
+#endif
+
+       return QP_OK;
+}
+
+static int _unregister_module_event_handler(void *data)
+{
+       int ret = 0;
+
+#ifdef HAVE_X
+       ret = system_settings_unset_changed_cb(SYSTEM_SETTINGS_KEY_NETWORK_FLIGHT_MODE);
+       msgif(ret != SYSTEM_SETTINGS_ERROR_NONE, "failed to ignore key(SYSTEM_SETTINGS_KEY_NETWORK_FLIGHT_MODE) : %d", ret);
+#endif
+
+       return QP_OK;
+}
+
+/****************************************************************************
+ *
+ * Quickpanel Item functions
+ *
+ ****************************************************************************/
+
+static int _init(void *data)
+{
+       int ret = QP_OK;
+
+       ret = _register_module_event_handler(data);
+
+       return ret;
+}
+
+static int _fini(void *data)
+{
+       int ret = QP_OK;
+
+       ret = _unregister_module_event_handler(data);
+
+       return ret;
+}
+
+static void _lang_changed(void *data)
+{
+       QP_Module_Setting *module = (QP_Module_Setting *)data;
+       retif(module == NULL, , "Invalid parameter!");
+
+       quickpanel_setting_module_icon_view_update_text(module);
+}
+
+static void _refresh(void *data)
+{
+       QP_Module_Setting *module = (QP_Module_Setting *)data;
+       retif(module == NULL, , "Invalid parameter!");
+
+       quickpanel_setting_module_icon_view_update_text(module);
+}
+
+static void _reset_icon(QP_Module_Setting *module)
+{
+       retif(module == NULL, , "Invalid parameter!");
+
+       quickpanel_setting_module_progress_mode_set(module, FLAG_DISABLE, FLAG_VALUE_VOID);
+       _status_update(module, FLAG_VALUE_VOID, FLAG_VALUE_VOID);
+}
+
+static void _handler_on(void *data)
+{
+       int ret = 0;
+       QP_Module_Setting *module = (QP_Module_Setting *)data;
+       retif(module == NULL, , "Invalid parameter!");
+
+       quickpanel_setting_module_progress_mode_set(module, FLAG_DISABLE, FLAG_TURN_OFF);
+       quickpanel_setting_module_icon_timer_del(module);
+
+       if (quickpanel_setting_module_icon_state_get(module) == ICON_VIEW_STATE_OFF) {
+               ret = _tapi_flight_mode_set(1, module);
+
+               if (ret == QP_OK) {
+                       quickpanel_setting_module_progress_mode_set(module, FLAG_ENABLE, FLAG_TURN_ON);
+                       quickpanel_setting_module_icon_timer_add(module);
+               } else {
+                       ERR("op failed:%d", ret);
+               }
+       } else {
+               ERR("the button is already turned on");
+               _reset_icon(module);
+       }
+}
+
+static void _handler_off(void *data)
+{
+       int ret = 0;
+       QP_Module_Setting *module = (QP_Module_Setting *)data;
+       retif(module == NULL, , "Invalid parameter!");
+
+       quickpanel_setting_module_progress_mode_set(module, FLAG_DISABLE, FLAG_TURN_OFF);
+       quickpanel_setting_module_icon_timer_del(module);
+
+       if (quickpanel_setting_module_icon_state_get(module) == ICON_VIEW_STATE_ON) {
+               ret = _tapi_flight_mode_set(0, module);
+
+               if (ret == QP_OK) {
+                       quickpanel_setting_module_progress_mode_set(module, FLAG_ENABLE, FLAG_TURN_OFF);
+                       quickpanel_setting_module_icon_timer_add(module);
+               } else {
+                       ERR("op failed:%d", ret);
+               }
+       } else {
+               ERR("the button is already turned off");
+               _reset_icon(module);
+       }
+}
+
+static void _handler_progress_on(void *data)
+{
+       QP_Module_Setting *module = (QP_Module_Setting *)data;
+       retif(module == NULL, , "Invalid parameter!");
+
+       quickpanel_setting_module_progress_mode_set(module, FLAG_ENABLE, FLAG_VALUE_VOID);
+}
+
+static void _handler_progress_off(void *data)
+{
+       QP_Module_Setting *module = (QP_Module_Setting *)data;
+       retif(module == NULL, , "Invalid parameter!");
+
+       _reset_icon(module);
+}
+
+static int _handler_ipc(const char *command, void *data)
+{
+       int i = 0;
+       retif(data == NULL, EINA_FALSE, "item data is NULL");
+       retif(command == NULL, EINA_FALSE, "command is NULL");
+
+       static Setting_Activity_Handler __table_handler[] = {
+               {
+                       .command = "on",
+                       .handler = _handler_on,
+               },
+               {
+                       .command = "off",
+                       .handler = _handler_off,
+               },
+               {
+                       .command = "progress_on",
+                       .handler = _handler_progress_on,
+               },
+               {
+                       .command = "progress_off",
+                       .handler = _handler_progress_off,
+               },
+               {
+                       .command = NULL,
+                       .handler = NULL,
+               },
+       };
+
+       for (i = 0; __table_handler[i].command; i++) {
+               if (strcmp(__table_handler[i].command, command)) {
+                       continue;
+               }
+
+               if (__table_handler[i].handler != NULL) {
+                       DBG("process:%s", command);
+                       __table_handler[i].handler(data);
+               }
+               break;
+       }
+
+       return EINA_TRUE;
+}
+
+QP_Module_Setting flightmode = {
+       .name                           = "flightmode",
+       .init                           = _init,
+       .fini                           = _fini,
+       .lang_changed           = _lang_changed,
+       .refresh                        = _refresh,
+       .icon_get                       = _icon_get,
+       .label_get                      = _label_get,
+       .view_update        = _view_update,
+       .status_update          = _status_update,
+       .handler_longpress      = _long_press_cb,
+       .handler_ipc        = _handler_ipc,
+       .handler_press          = _mouse_clicked_cb,
+};
diff --git a/daemon/settings/modules/gps.c b/daemon/settings/modules/gps.c
new file mode 100644 (file)
index 0000000..c964cd0
--- /dev/null
@@ -0,0 +1,372 @@
+/*
+ * 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 <vconf.h>
+#include <syspopup_caller.h>
+#include <app_control.h>
+#include "common.h"
+#include "quickpanel-ui.h"
+#include "settings.h"
+#include "setting_utils.h"
+#include "setting_module_api.h"
+
+#define BUTTON_LABEL _("IDS_QP_BUTTON2_LOCATION_ABB")
+#define BUTTON_ICON_NORMAL "quick_icon_location.png"
+#define BUTTON_ICON_HIGHLIGHT NULL
+#define BUTTON_ICON_DIM NULL
+#define PACKAGE_SETTING_MENU "org.tizen.setting-location"
+#define OPERATION_SETTING_MENU "http://tizen.org/appcontrol/operation/configure/location"
+#define PACKAGE_SYSPOPUP "gps-syspopup"
+
+static void _mouse_clicked_cb(void *data, Evas_Object *obj, const char *emission, const char *source);
+
+static const char *_label_get(void)
+{
+       return BUTTON_LABEL;
+}
+
+static const char *_icon_get(qp_setting_icon_image_type type)
+{
+       if (type == QP_SETTING_ICON_NORMAL) {
+               return BUTTON_ICON_NORMAL;
+       } else if (type == QP_SETTING_ICON_HIGHLIGHT) {
+               return BUTTON_ICON_HIGHLIGHT;
+       } else if (type == QP_SETTING_ICON_DIM) {
+#ifdef BUTTON_ICON_DIM
+               return BUTTON_ICON_DIM;
+#endif
+       }
+
+       return NULL;
+}
+
+static void _long_press_cb(void *data)
+{
+#ifdef PACKAGE_SETTING_MENU
+       // Because operation is not DEFAULT, this function can not be called. Too many changes to add operation param.
+       // quickpanel_setting_icon_handler_longpress(PACKAGE_SETTING_MENU, NULL);
+
+       app_control_h service;
+       int ret = 0;
+
+       ret = app_control_create(&service);
+       if (ret != 0) {
+               ERR("Failed to create app control");
+               return;
+       }
+
+       app_control_set_app_id(service, PACKAGE_SETTING_MENU);
+       app_control_set_operation(service, OPERATION_SETTING_MENU);
+
+       ret = app_control_send_launch_request(service, NULL, NULL);
+       if (ret != 0) {
+               ERR("Failed to launch[%d]", ret);
+       }
+
+       app_control_destroy(service);
+
+#endif
+}
+
+static void _syspopup_launch(int is_on)
+{
+       syspopup_launch(PACKAGE_SYSPOPUP, NULL);
+}
+
+static void _view_update(Evas_Object *view, int state, int flag_extra_1, int flag_extra_2)
+{
+       Evas_Object *image = NULL;
+       const char *icon_path = NULL;
+
+       quickpanel_setting_icon_state_set(view, state);
+
+       if (state == ICON_VIEW_STATE_ON) {
+#ifdef BUTTON_ICON_HIGHLIGHT
+               icon_path = BUTTON_ICON_HIGHLIGHT;
+#endif
+       } else if (state == ICON_VIEW_STATE_DIM) {
+#ifdef BUTTON_ICON_DIM
+               icon_path = BUTTON_ICON_DIM;
+#endif
+       } else {
+               icon_path = BUTTON_ICON_NORMAL;
+       }
+
+       if (icon_path == NULL) {
+               icon_path = BUTTON_ICON_NORMAL;
+       }
+       image = quickpanel_setting_icon_image_new(view, icon_path);
+       quickpanel_setting_icon_content_set(view, image);
+       quickpanel_setting_icon_text_set(view, BUTTON_LABEL, state);
+}
+
+static void _status_update(QP_Module_Setting *module, int flag_extra_1, int flag_extra_2)
+{
+       int ret = 0;
+       int status = 0;
+       retif(module == NULL, , "Invalid parameter!");
+
+       quickpanel_setting_module_progress_mode_set(module, FLAG_DISABLE, FLAG_TURN_OFF);
+       quickpanel_setting_module_icon_timer_del(module);
+
+#ifdef HAVE_X
+       ret = vconf_get_int(VCONFKEY_LOCATION_USE_MY_LOCATION, &status);
+       msgif(ret != 0, "fail to get VCONFKEY_LOCATION_USE_MY_LOCATION:%d", ret);
+#endif
+
+       if (status == 1) {
+               quickpanel_setting_module_icon_state_set(module, ICON_VIEW_STATE_ON);
+       } else {
+               quickpanel_setting_module_icon_state_set(module, ICON_VIEW_STATE_OFF);
+       }
+
+       quickpanel_setting_module_icon_view_update(module,
+                       quickpanel_setting_module_icon_state_get(module),
+                       FLAG_VALUE_VOID);
+}
+
+static void _mouse_clicked_cb(void *data, Evas_Object *obj, const char *emission, const char *source)
+{
+       int ret = 0;
+       int enable = 0;
+       QP_Module_Setting *module = (QP_Module_Setting *)data;
+       retif(module == NULL, , "Invalid parameter!");
+
+       if (quickpanel_setting_module_is_icon_clickable(module) == 0) {
+               return;
+       }
+
+       if (quickpanel_setting_module_icon_state_get(module) == ICON_VIEW_STATE_OFF) {
+               _syspopup_launch(quickpanel_setting_module_icon_state_get(module));
+       } else {
+               // Use my location off
+#ifdef HAVE_X
+               ret = vconf_get_int(VCONFKEY_LOCATION_USE_MY_LOCATION, &enable);
+#endif
+               if (ret == 0) {
+                       if (enable == 1) {
+#ifdef HAVE_X
+                               vconf_set_int(VCONFKEY_LOCATION_USE_MY_LOCATION, 0);
+#endif
+                       }
+               } else {
+                       ERR("Failed to get Use my location[%d]", ret);
+               }
+               // GPS off
+               ret = vconf_get_int(VCONFKEY_LOCATION_ENABLED, &enable);
+               if (ret == 0) {
+                       if (enable == 1) {
+                               vconf_set_int(VCONFKEY_LOCATION_ENABLED, 0);
+                       }
+               } else {
+                       ERR("Failed to get GPS[%d]", ret);
+               }
+               // Wireless networks off
+               ret = vconf_get_int(VCONFKEY_LOCATION_NETWORK_ENABLED, &enable);
+               if (ret == 0) {
+                       if (enable == 1) {
+                               vconf_set_int(VCONFKEY_LOCATION_NETWORK_ENABLED, 0);
+                       }
+               } else {
+                       ERR("Failed to get GPS[%d]", ret);
+               }
+       }
+}
+
+static void _gps_vconf_cb(keynode_t *node,
+               void *data)
+{
+       _status_update(data, FLAG_VALUE_VOID, FLAG_VALUE_VOID);
+}
+
+static int _register_module_event_handler(void *data)
+{
+       int ret = 0;
+
+#ifdef HAVE_X
+       ret = vconf_notify_key_changed(VCONFKEY_LOCATION_USE_MY_LOCATION, _gps_vconf_cb, data);
+       msgif(ret != 0, "failed to notify key(VCONFKEY_LOCATION_USE_MY_LOCATION) : %d", ret);
+#endif
+       return QP_OK;
+}
+
+static int _unregister_module_event_handler(void *data)
+{
+       int ret = 0;
+#ifdef HAVE_X
+       ret = vconf_ignore_key_changed(VCONFKEY_LOCATION_USE_MY_LOCATION, _gps_vconf_cb);
+       msgif(ret != 0, "failed to ignore key(VCONFKEY_LOCATION_USE_MY_LOCATION) : %d", ret);
+#endif
+       return QP_OK;
+}
+
+/****************************************************************************
+ *
+ * Quickpanel Item functions
+ *
+ ****************************************************************************/
+static int _init(void *data)
+{
+       int ret = QP_OK;
+
+       ret = _register_module_event_handler(data);
+
+       return ret;
+}
+
+static int _fini(void *data)
+{
+       int ret = QP_OK;
+
+       ret = _unregister_module_event_handler(data);
+
+       return ret;
+}
+
+static void _lang_changed(void *data)
+{
+       QP_Module_Setting *module = (QP_Module_Setting *)data;
+       retif(module == NULL, , "Invalid parameter!");
+
+       quickpanel_setting_module_icon_view_update_text(module);
+}
+
+static void _refresh(void *data)
+{
+       QP_Module_Setting *module = (QP_Module_Setting *)data;
+       retif(module == NULL, , "Invalid parameter!");
+
+       quickpanel_setting_module_icon_view_update_text(module);
+}
+
+static void _reset_icon(QP_Module_Setting *module)
+{
+       retif(module == NULL, , "Invalid parameter!");
+
+       quickpanel_setting_module_progress_mode_set(module, FLAG_DISABLE, FLAG_VALUE_VOID);
+       _status_update(module, FLAG_VALUE_VOID, FLAG_VALUE_VOID);
+}
+
+static void _handler_on(void *data)
+{
+       QP_Module_Setting *module = (QP_Module_Setting *)data;
+       retif(module == NULL, , "Invalid parameter!");
+
+       quickpanel_setting_module_progress_mode_set(module, FLAG_DISABLE, FLAG_TURN_OFF);
+       quickpanel_setting_module_icon_timer_del(module);
+
+       if (quickpanel_setting_module_icon_state_get(module) == ICON_VIEW_STATE_OFF) {
+               quickpanel_setting_module_progress_mode_set(module, FLAG_ENABLE, FLAG_TURN_ON);
+               quickpanel_setting_module_icon_timer_add(module);
+       } else {
+               ERR("the button is already turned on");
+               _reset_icon(module);
+       }
+}
+
+static void _handler_off(void *data)
+{
+       QP_Module_Setting *module = (QP_Module_Setting *)data;
+       retif(module == NULL, , "Invalid parameter!");
+
+       quickpanel_setting_module_progress_mode_set(module, FLAG_DISABLE, FLAG_TURN_OFF);
+       quickpanel_setting_module_icon_timer_del(module);
+
+       if (quickpanel_setting_module_icon_state_get(module) == ICON_VIEW_STATE_ON) {
+               quickpanel_setting_module_progress_mode_set(module, FLAG_ENABLE, FLAG_TURN_OFF);
+               quickpanel_setting_module_icon_timer_add(module);
+       } else {
+               ERR("the button is already turned off");
+               _reset_icon(module);
+       }
+}
+
+static void _handler_progress_on(void *data)
+{
+       QP_Module_Setting *module = (QP_Module_Setting *)data;
+       retif(module == NULL, , "Invalid parameter!");
+
+       quickpanel_setting_module_progress_mode_set(module, FLAG_ENABLE, FLAG_VALUE_VOID);
+}
+
+static void _handler_progress_off(void *data)
+{
+       QP_Module_Setting *module = (QP_Module_Setting *)data;
+       retif(module == NULL, , "Invalid parameter!");
+
+       _reset_icon(module);
+}
+
+static int _handler_ipc(const char *command, void *data)
+{
+       int i = 0;
+       retif(data == NULL, EINA_FALSE, "item data is NULL");
+       retif(command == NULL, EINA_FALSE, "command is NULL");
+
+       static Setting_Activity_Handler __table_handler[] = {
+               {
+                       .command = "on",
+                       .handler = _handler_on,
+               },
+               {
+                       .command = "off",
+                       .handler = _handler_off,
+               },
+               {
+                       .command = "progress_on",
+                       .handler = _handler_progress_on,
+               },
+               {
+                       .command = "progress_off",
+                       .handler = _handler_progress_off,
+               },
+               {
+                       .command = NULL,
+                       .handler = NULL,
+               },
+       };
+
+       for (i = 0; __table_handler[i].command; i++) {
+               if (strcasecmp(__table_handler[i].command, command)) {
+                       continue;
+               }
+
+               if (__table_handler[i].handler != NULL) {
+                       DBG("process:%s", command);
+                       __table_handler[i].handler(data);
+               }
+               break;
+       }
+
+       return EINA_TRUE;
+}
+
+QP_Module_Setting gps = {
+       .name                           = "gps",
+       .init                           = _init,
+       .fini                           = _fini,
+       .lang_changed           = _lang_changed,
+       .refresh                        = _refresh,
+       .icon_get                       = _icon_get,
+       .label_get                      = _label_get,
+       .view_update        = _view_update,
+       .status_update          = _status_update,
+       .handler_longpress              = _long_press_cb,
+       .handler_ipc        = _handler_ipc,
+       .handler_press          = _mouse_clicked_cb,
+};
diff --git a/daemon/settings/modules/mobile_data.c b/daemon/settings/modules/mobile_data.c
new file mode 100644 (file)
index 0000000..3c41fff
--- /dev/null
@@ -0,0 +1,493 @@
+/*
+ * 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 <vconf.h>
+#include <syspopup_caller.h>
+#include <system_settings.h>
+#include <bundle_internal.h>
+#include "common.h"
+#include "quickpanel-ui.h"
+#include "settings.h"
+#include "setting_utils.h"
+#include "setting_module_api.h"
+
+
+#define BUTTON_LABEL _("IDS_ST_BUTTON2_MOBILE_NDATA")
+#define BUTTON_ICON_NORMAL "quick_icon_mobile_data.png"
+#define BUTTON_ICON_HIGHLIGHT NULL
+#define BUTTON_ICON_DIM NULL
+#define PACKAGE_SETTING_MENU "setting-network-efl"
+#define SYSPOPUP_NAME "mode-syspopup"
+
+#ifndef VCONFKEY_SETAPPL_MOBILE_DATA_ON_REMINDER
+#define VCONFKEY_SETAPPL_MOBILE_DATA_ON_REMINDER "db/setting/network/mobile_data_on_reminder"
+#endif
+#ifndef VCONFKEY_SETAPPL_MOBILE_DATA_OFF_REMINDER
+#define VCONFKEY_SETAPPL_MOBILE_DATA_OFF_REMINDER "db/setting/network/mobile_data_off_reminder"
+#endif
+
+
+
+static int _is_simcard_inserted(void);
+static int _is_in_flightmode(void);
+static void _mouse_clicked_cb(void *data, Evas_Object *obj, const char *emission, const char *source);
+
+
+static const char *_label_get(void)
+{
+       return BUTTON_LABEL;
+}
+
+static const char *_icon_get(qp_setting_icon_image_type type)
+{
+       if (type == QP_SETTING_ICON_NORMAL) {
+               return BUTTON_ICON_NORMAL;
+       } else if (type == QP_SETTING_ICON_HIGHLIGHT) {
+               return BUTTON_ICON_HIGHLIGHT;
+       } else if (type == QP_SETTING_ICON_DIM) {
+#ifdef BUTTON_ICON_DIM
+               return BUTTON_ICON_DIM;
+#endif
+       }
+
+       return NULL;
+}
+
+static void _long_press_cb(void *data)
+{
+#ifdef PACKAGE_SETTING_MENU
+       struct appdata *ad = quickpanel_get_app_data();
+       retif(ad == NULL, , "invalid data.");
+
+       if (_is_in_flightmode() == 1) {
+               quickpanel_setting_create_timeout_popup(ad->win, _("IDS_SCP_BODY_UNABLE_TO_CONNECT_TO_MOBILE_NETWORKS_WHILE_FLIGHT_MODE_IS_ENABLED_CONNECT_TO_A_WI_FI_NETWORK_INSTEAD_OR_DISABLE_FLIGHT_MODE_AND_TRY_AGAIN"));
+               return;
+       }
+
+       if (_is_simcard_inserted() == 0) {
+               quickpanel_setting_create_timeout_popup(ad->win, _("IDS_ST_BODY_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"));
+               return;
+       }
+
+       quickpanel_setting_icon_handler_longpress(PACKAGE_SETTING_MENU, NULL);
+#endif
+}
+
+static int _need_display_popup(int is_on)
+{
+       int ret = -1, status = 0;
+
+       if (is_on == 1) {
+               ret = vconf_get_bool(VCONFKEY_SETAPPL_MOBILE_DATA_ON_REMINDER,
+                               &status);
+               msgif(ret != 0, "failed to get VCONFKEY_SETAPPL_MOBILE_DATA_ON_REMINDER %d %d", ret, is_on);
+               if (ret == 0 && status == 1) {
+                       return 1;
+               }
+       } else {
+               ret = vconf_get_bool(VCONFKEY_SETAPPL_MOBILE_DATA_OFF_REMINDER,
+                               &status);
+               msgif(ret != 0, "failed to get VCONFKEY_SETAPPL_MOBILE_DATA_OFF_REMINDER %d %d", ret, is_on);
+               if (ret == 0 && status == 1) {
+                       return 1;
+               }
+       }
+
+       return 0;
+}
+
+static void _turn_on(int is_on)
+{
+       int ret = 0;
+
+       if (is_on) {
+               ret = system_settings_set_value_bool(SYSTEM_SETTINGS_KEY_3G_DATA_NETWORK_ENABLED, 1);
+               msgif(ret != SYSTEM_SETTINGS_ERROR_NONE, "failed to set SYSTEM_SETTINGS_KEY_3G_DATA_NETWORK_ENABLED %d %d", ret, is_on);
+       } else {
+               ret = system_settings_set_value_bool(SYSTEM_SETTINGS_KEY_3G_DATA_NETWORK_ENABLED, 0);
+               msgif(ret != SYSTEM_SETTINGS_ERROR_NONE,"failed to set SYSTEM_SETTINGS_KEY_3G_DATA_NETWORK_ENABLED: %d %d", ret, is_on);
+       }
+}
+
+static void _turn_on_with_popup(int is_on)
+{
+       bundle *b = NULL;
+       b = bundle_create();
+       if (b != NULL) {
+               if (is_on) {
+                       bundle_add(b, "_MODE_SYSTEM_POPUP_TYPE_", "MODE_SYSTEM_MOBILEDATA_ON");
+               } else {
+                       bundle_add(b, "_MODE_SYSTEM_POPUP_TYPE_", "MODE_SYSTEM_MOBILEDATA_OFF");
+               }
+               syspopup_launch(SYSPOPUP_NAME, b);
+               bundle_free(b);
+       } else {
+               ERR("failed to create a bundle");
+       }
+}
+
+static void _view_update(Evas_Object *view, int state, int flag_extra_1, int flag_extra_2)
+{
+       Evas_Object *image = NULL;
+       const char *icon_path = NULL;
+
+       quickpanel_setting_icon_state_set(view, state);
+
+       if (state == ICON_VIEW_STATE_ON) {
+#ifdef BUTTON_ICON_HIGHLIGHT
+               icon_path = BUTTON_ICON_HIGHLIGHT;
+#endif
+       } else if (state == ICON_VIEW_STATE_DIM) {
+#ifdef BUTTON_ICON_DIM
+               icon_path = BUTTON_ICON_DIM;
+#endif
+       } else {
+               icon_path = BUTTON_ICON_NORMAL;
+       }
+
+       if (icon_path == NULL) {
+               icon_path = BUTTON_ICON_NORMAL;
+       }
+       image = quickpanel_setting_icon_image_new(view, icon_path);
+       quickpanel_setting_icon_content_set(view, image);
+       quickpanel_setting_icon_text_set(view, BUTTON_LABEL, state);
+}
+
+
+static int _is_simcard_inserted(void)
+{
+       int ret_1 = QP_FAIL;
+       int ret_2 = QP_FAIL;
+       int sim_status_1 = VCONFKEY_TELEPHONY_SIM_UNKNOWN;
+       int sim_status_2 = VCONFKEY_TELEPHONY_SIM_UNKNOWN;
+
+       ret_1 = vconf_get_int(VCONFKEY_TELEPHONY_SIM_SLOT, &sim_status_1);
+       msgif(ret_1 != QP_OK, "failed to get the VCONFKEY_TELEPHONY_SIM_SLOT : %d", ret_1);
+
+       ret_2 = vconf_get_int(VCONFKEY_TELEPHONY_SIM_SLOT2, &sim_status_2);
+       msgif(ret_2 != QP_OK, "failed to get the VCONFKEY_TELEPHONY_SIM_SLOT2 : %d", ret_2);
+
+       INFO("MOBILE DATA SIM CARD: %d %d", sim_status_1, sim_status_2);
+
+       if ((ret_1 == QP_OK && sim_status_1 == VCONFKEY_TELEPHONY_SIM_INSERTED) ||
+               (ret_2 == QP_OK && sim_status_2 == VCONFKEY_TELEPHONY_SIM_INSERTED)) {
+               return 1;
+       }
+
+       return 0;
+}
+
+static int _is_in_flightmode(void)
+{
+       int ret = QP_FAIL, flight_mode = 0;
+
+#ifdef HAVE_X
+       ret = system_settings_get_value_bool(SYSTEM_SETTINGS_KEY_NETWORK_FLIGHT_MODE, &flight_mode);
+       msgif(ret != SYSTEM_SETTINGS_ERROR_NONE, "failed to get the SYSTEM_SETTINGS_KEY_NETWORK_FLIGHT_MODE : %d", ret);
+#endif
+       if (ret == QP_OK && flight_mode == 1) {
+               return 1;
+       }
+
+       return 0;
+}
+
+static void _status_update(QP_Module_Setting *module, int flag_extra_1, int flag_extra_2)
+{
+       int ret = 0;
+       int status = 0;
+       retif(module == NULL, , "Invalid parameter!");
+
+       quickpanel_setting_module_icon_timer_del(module);
+
+       if (quickpanel_uic_is_emul() == 1) {
+               status = 1;
+       } else if (_is_in_flightmode() == 1) {
+               status = 0;
+       } else if (_is_simcard_inserted() == 0) {
+               status = 0;
+       } else {
+               ret = system_settings_get_value_bool(SYSTEM_SETTINGS_KEY_3G_DATA_NETWORK_ENABLED, &status);
+               msgif(ret != SYSTEM_SETTINGS_ERROR_NONE, "fail to get SYSTEM_SETTINGS_KEY_3G_DATA_NETWORK_ENABLED:%d", ret);
+       }
+
+       if (status == 1) {
+               quickpanel_setting_module_icon_state_set(module, ICON_VIEW_STATE_ON);
+       } else {
+               quickpanel_setting_module_icon_state_set(module, ICON_VIEW_STATE_OFF);
+       }
+
+       quickpanel_setting_module_icon_view_update(module,
+                       quickpanel_setting_module_icon_state_get(module),
+                       FLAG_VALUE_VOID);
+}
+
+static void _mouse_clicked_cb(void *data,
+               Evas_Object *obj, const char *emission, const char *source)
+{
+       QP_Module_Setting *module = (QP_Module_Setting *)data;
+       retif(module == NULL, , "Invalid parameter!");
+
+       if (quickpanel_setting_module_is_icon_clickable(module) == 0) {
+               return;
+       }
+
+       struct appdata *ad = quickpanel_get_app_data();
+       retif(ad == NULL, , "invalid data.");
+
+       if (quickpanel_uic_is_emul() == 1) {
+               quickpanel_setting_create_timeout_popup(ad->win, _NOT_LOCALIZED("Unsupported."));
+               return;
+       }
+
+       if (_is_in_flightmode() == 1) {
+               quickpanel_setting_create_timeout_popup(ad->win, _("IDS_SCP_BODY_UNABLE_TO_CONNECT_TO_MOBILE_NETWORKS_WHILE_FLIGHT_MODE_IS_ENABLED_CONNECT_TO_A_WI_FI_NETWORK_INSTEAD_OR_DISABLE_FLIGHT_MODE_AND_TRY_AGAIN"));
+               return;
+       }
+
+       if (_is_simcard_inserted() == 0) {
+               quickpanel_setting_create_timeout_popup(ad->win, _("IDS_ST_BODY_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"));
+               return;
+       }
+
+       if (quickpanel_setting_module_icon_state_get(module) == ICON_VIEW_STATE_ON) {
+               /* disable */
+               if (_need_display_popup(0) == 1) {
+                       _turn_on_with_popup(0);
+               } else {
+                       _turn_on(0);
+               }
+       } else {
+               /* enable */
+               if (_need_display_popup(1) == 1) {
+                       _turn_on_with_popup(1);
+               } else {
+                       _turn_on(1);
+               }
+       }
+}
+
+static void _mobiledata_vconf_cb(keynode_t *node,
+               void *data)
+{
+       _status_update(data, FLAG_VALUE_VOID, FLAG_VALUE_VOID);
+}
+
+static int _register_module_event_handler(void *data)
+{
+       int ret = 0;
+
+       ret = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_3G_DATA_NETWORK_ENABLED, _mobiledata_vconf_cb, data);
+       msgif(ret != SYSTEM_SETTINGS_ERROR_NONE, "failed to notify key(%s) : %d", SYSTEM_SETTINGS_KEY_3G_DATA_NETWORK_ENABLED, ret);
+
+       ret = vconf_notify_key_changed(VCONFKEY_TELEPHONY_SIM_SLOT,_mobiledata_vconf_cb, data);
+       msgif(ret != 0, "failed to notify key(%s) : %d", VCONFKEY_TELEPHONY_SIM_SLOT, ret);
+#ifdef HAVE_X
+       ret = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_NETWORK_FLIGHT_MODE, _mobiledata_vconf_cb, data);
+       msgif(ret != SYSTEM_SETTINGS_ERROR_NONE, "failed to notify key(%s) : %d", SYSTEM_SETTINGS_KEY_NETWORK_FLIGHT_MODE, ret);
+#endif
+       return QP_OK;
+}
+
+static int _unregister_module_event_handler(void *data)
+{
+       int ret = 0;
+
+       ret = system_settings_unset_changed_cb(SYSTEM_SETTINGS_KEY_3G_DATA_NETWORK_ENABLED);
+       msgif(ret != SYSTEM_SETTINGS_ERROR_NONE, "failed to ignore key(%s) : %d", SYSTEM_SETTINGS_KEY_3G_DATA_NETWORK_ENABLED, ret);
+
+       ret = vconf_ignore_key_changed(VCONFKEY_TELEPHONY_SIM_SLOT,_mobiledata_vconf_cb);
+       msgif(ret != 0, "failed to ignore key(%s) : %d", VCONFKEY_TELEPHONY_SIM_SLOT, ret);
+
+#ifdef HAVE_X
+       ret = system_settings_unset_changed_cb(SYSTEM_SETTINGS_KEY_NETWORK_FLIGHT_MODE);
+       msgif(ret != SYSTEM_SETTINGS_ERROR_NONE, "failed to ignore key(%s) : %d", SYSTEM_SETTINGS_KEY_NETWORK_FLIGHT_MODE, ret);
+#endif
+       return QP_OK;
+}
+
+/****************************************************************************
+ *
+ * Quickpanel Item functions
+ *
+ ****************************************************************************/
+
+static int _init(void *data)
+{
+       int ret = QP_OK;
+
+       ret = _register_module_event_handler(data);
+
+       return ret;
+}
+
+static int _fini(void *data)
+{
+       int ret = QP_OK;
+
+       ret = _unregister_module_event_handler(data);
+
+       return ret;
+}
+
+static void _lang_changed(void *data)
+{
+       QP_Module_Setting *module = (QP_Module_Setting *)data;
+       retif(module == NULL, , "Invalid parameter!");
+
+       quickpanel_setting_module_icon_view_update_text(module);
+}
+
+static void _refresh(void *data)
+{
+       QP_Module_Setting *module = (QP_Module_Setting *)data;
+       retif(module == NULL, , "Invalid parameter!");
+
+       quickpanel_setting_module_icon_view_update_text(module);
+}
+
+static void _reset_icon(QP_Module_Setting *module)
+{
+       retif(module == NULL, , "Invalid parameter!");
+
+       quickpanel_setting_module_progress_mode_set(module, FLAG_DISABLE, FLAG_VALUE_VOID);
+       _status_update(module, FLAG_VALUE_VOID, FLAG_VALUE_VOID);
+}
+
+static void _handler_on(void *data)
+{
+       int ret = 0;
+       QP_Module_Setting *module = (QP_Module_Setting *)data;
+       retif(module == NULL, , "Invalid parameter!");
+
+       quickpanel_setting_module_progress_mode_set(module, FLAG_DISABLE, FLAG_TURN_OFF);
+       quickpanel_setting_module_icon_timer_del(module);
+
+       if (quickpanel_setting_module_icon_state_get(module) == ICON_VIEW_STATE_OFF) {
+               ret = system_settings_set_value_bool(SYSTEM_SETTINGS_KEY_3G_DATA_NETWORK_ENABLED, 1);
+
+               if (ret == SYSTEM_SETTINGS_ERROR_NONE) {
+                       quickpanel_setting_module_progress_mode_set(module, FLAG_ENABLE, FLAG_TURN_ON);
+                       quickpanel_setting_module_icon_timer_add(module);
+               } else {
+                       ERR("op failed:%d", ret);
+               }
+       } else {
+               ERR("the button is already turned on");
+               _reset_icon(module);
+       }
+}
+
+static void _handler_off(void *data)
+{
+       int ret = 0;
+       QP_Module_Setting *module = (QP_Module_Setting *)data;
+       retif(module == NULL, , "Invalid parameter!");
+
+       quickpanel_setting_module_progress_mode_set(module, FLAG_DISABLE, FLAG_TURN_OFF);
+       quickpanel_setting_module_icon_timer_del(module);
+
+       if (quickpanel_setting_module_icon_state_get(module) == ICON_VIEW_STATE_ON) {
+               ret = vconf_set_bool(VCONFKEY_3G_ENABLE, 0);
+
+               if (ret == 0) {
+                       quickpanel_setting_module_progress_mode_set(module, FLAG_ENABLE, FLAG_TURN_OFF);
+                       quickpanel_setting_module_icon_timer_add(module);
+               } else {
+                       ERR("op failed:%d", ret);
+               }
+       } else {
+               ERR("the button is already turned off");
+               _reset_icon(module);
+       }
+}
+
+static void _handler_progress_on(void *data)
+{
+       QP_Module_Setting *module = (QP_Module_Setting *)data;
+       retif(module == NULL, , "Invalid parameter!");
+
+       quickpanel_setting_module_progress_mode_set(module, FLAG_ENABLE, FLAG_VALUE_VOID);
+}
+
+static void _handler_progress_off(void *data)
+{
+       QP_Module_Setting *module = (QP_Module_Setting *)data;
+       retif(module == NULL, , "Invalid parameter!");
+
+       _reset_icon(module);
+}
+
+static int _handler_ipc(const char *command, void *data)
+{
+       int i = 0;
+       retif(data == NULL, EINA_FALSE, "item data is NULL");
+       retif(command == NULL, EINA_FALSE, "command is NULL");
+
+       static Setting_Activity_Handler __table_handler[] = {
+               {
+                       .command = "on",
+                       .handler = _handler_on,
+               },
+               {
+                       .command = "off",
+                       .handler = _handler_off,
+               },
+               {
+                       .command = "progress_on",
+                       .handler = _handler_progress_on,
+               },
+               {
+                       .command = "progress_off",
+                       .handler = _handler_progress_off,
+               },
+               {
+                       .command = NULL,
+                       .handler = NULL,
+               },
+       };
+
+       for (i = 0; __table_handler[i].command; i++) {
+               if (strcasecmp(__table_handler[i].command, command)) {
+                       continue;
+               }
+
+               if (__table_handler[i].handler != NULL) {
+                       DBG("process:%s", command);
+                       __table_handler[i].handler(data);
+               }
+               break;
+       }
+
+       return EINA_TRUE;
+}
+
+QP_Module_Setting mobile_data = {
+       .name                           = "mobile_data",
+       .init                           = _init,
+       .fini                           = _fini,
+       .lang_changed           = _lang_changed,
+       .refresh                        = _refresh,
+       .icon_get                       = _icon_get,
+       .label_get                      = _label_get,
+       .view_update        = _view_update,
+       .status_update          = _status_update,
+       .handler_longpress      = _long_press_cb,
+       .handler_ipc        = _handler_ipc,
+       .handler_press          = _mouse_clicked_cb,
+};
diff --git a/daemon/settings/modules/rotate-lock.c b/daemon/settings/modules/rotate-lock.c
new file mode 100644 (file)
index 0000000..4293d15
--- /dev/null
@@ -0,0 +1,214 @@
+/*
+ * 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 <vconf.h>
+#include <system_settings.h>
+#include <bundle_internal.h>
+#include "common.h"
+#include "quickpanel-ui.h"
+#include "settings.h"
+#include "setting_utils.h"
+#include "setting_module_api.h"
+
+
+#define BUTTON_LABEL _("IDS_ST_BUTTON2_AUTO_NROTATE")
+#define BUTTON_ICON_NORMAL "quick_icon_auto_rotate.png"
+#define BUTTON_ICON_HIGHLIGHT NULL
+#define BUTTON_ICON_DIM NULL
+#define PACKAGE_SETTING_MENU "setting-display-efl"
+
+static void _mouse_clicked_cb(void *data, Evas_Object *obj, const char *emission, const char *source);
+
+static const char *_label_get(void)
+{
+       return BUTTON_LABEL;
+}
+
+static const char *_icon_get(qp_setting_icon_image_type type)
+{
+       if (type == QP_SETTING_ICON_NORMAL) {
+               return BUTTON_ICON_NORMAL;
+       } else if (type == QP_SETTING_ICON_HIGHLIGHT) {
+               return BUTTON_ICON_HIGHLIGHT;
+       } else if (type == QP_SETTING_ICON_DIM) {
+#ifdef BUTTON_ICON_DIM
+               return BUTTON_ICON_DIM;
+#endif
+       }
+
+       return NULL;
+}
+
+static void _long_press_cb(void *data)
+{
+#ifdef PACKAGE_SETTING_MENU
+       bundle *kb = bundle_create();
+       if (kb != NULL) {
+               bundle_add(kb, "viewtype", "main");
+               quickpanel_setting_icon_handler_longpress(PACKAGE_SETTING_MENU, kb);
+               bundle_free(kb);
+       } else {
+               ERR("failed to create the bunlde");
+       }
+#endif
+}
+
+static void _view_update(Evas_Object *view, int state, int flag_extra_1, int flag_extra_2)
+{
+       Evas_Object *image = NULL;
+       const char *icon_path = NULL;
+
+       quickpanel_setting_icon_state_set(view, state);
+
+       if (state == ICON_VIEW_STATE_ON) {
+#ifdef BUTTON_ICON_HIGHLIGHT
+               icon_path = BUTTON_ICON_HIGHLIGHT;
+#endif
+       } else if (state == ICON_VIEW_STATE_DIM) {
+#ifdef BUTTON_ICON_DIM
+               icon_path = BUTTON_ICON_DIM;
+#endif
+       } else {
+               icon_path = BUTTON_ICON_NORMAL;
+       }
+
+       if (icon_path == NULL) {
+               icon_path = BUTTON_ICON_NORMAL;
+       }
+       image = quickpanel_setting_icon_image_new(view, icon_path);
+       quickpanel_setting_icon_content_set(view, image);
+       quickpanel_setting_icon_text_set(view, BUTTON_LABEL, state);
+}
+
+static void _status_update(QP_Module_Setting *module, int flag_extra_1, int flag_extra_2)
+{
+       int ret = 0;
+       int status = false;
+       retif(module == NULL, , "Invalid parameter!");
+
+#ifdef HAVE_X
+       ret = system_settings_get_value_bool(SYSTEM_SETTINGS_KEY_DISPLAY_SCREEN_ROTATION_AUTO, &status);
+       msgif(ret !=  SYSTEM_SETTINGS_ERROR_NONE , "failed to notify key SYSTEM_SETTINGS_KEY_DISPLAY_SCREEN_ROTATION_AUTO : %d", ret);
+#endif
+
+       if (status == true) {
+               quickpanel_setting_module_icon_state_set(module, ICON_VIEW_STATE_ON);
+       } else {
+               quickpanel_setting_module_icon_state_set(module, ICON_VIEW_STATE_OFF);
+       }
+
+       quickpanel_setting_module_icon_view_update(module, quickpanel_setting_module_icon_state_get(module),FLAG_VALUE_VOID);
+}
+
+static void _mouse_clicked_cb(void *data,
+               Evas_Object *obj, const char *emission, const char *source)
+{
+       int ret = 0;
+       bool status = false;
+
+#ifdef HAVE_X
+       ret = system_settings_get_value_bool(SYSTEM_SETTINGS_KEY_DISPLAY_SCREEN_ROTATION_AUTO, &status);
+       msgif(ret != SYSTEM_SETTINGS_ERROR_NONE, "failed to notify key SYSTEM_SETTINGS_KEY_DISPLAY_SCREEN_ROTATION_AUTO : %d", ret);
+       
+       ret = system_settings_set_value_bool(SYSTEM_SETTINGS_KEY_DISPLAY_SCREEN_ROTATION_AUTO, !status );
+       msgif(ret != SYSTEM_SETTINGS_ERROR_NONE, "failed to notify key SYSTEM_SETTINGS_KEY_DISPLAY_SCREEN_ROTATION_AUTO : %d", ret);
+#endif
+
+}
+
+static void _autorotation_vconf_cb(keynode_t *node,
+               void *data)
+{
+       _status_update(data, FLAG_VALUE_VOID, FLAG_VALUE_VOID);
+}
+
+static int _register_module_event_handler(void *data)
+{
+       int ret = 0;
+
+#ifdef HAVE_X
+       ret = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_DISPLAY_SCREEN_ROTATION_AUTO,_autorotation_vconf_cb, data);
+       msgif(ret != SYSTEM_SETTINGS_ERROR_NONE, "failed to notify key(SYSTEM_SETTINGS_KEY_DISPLAY_SCREEN_ROTATION_AUTO) : %d", ret);
+#endif
+
+       return QP_OK;
+}
+
+static int _unregister_module_event_handler(void *data)
+{
+       int ret = 0;
+#ifdef HAVE_X
+       ret = system_settings_unset_changed_cb(SYSTEM_SETTINGS_KEY_DISPLAY_SCREEN_ROTATION_AUTO);
+       msgif(ret != SYSTEM_SETTINGS_ERROR_NONE, "failed to ignore key(SYSTEM_SETTINGS_KEY_DISPLAY_SCREEN_ROTATION_AUTO) : %d", ret);
+#endif
+
+       return QP_OK;
+}
+
+/****************************************************************************
+ *
+ * Quickpanel Item functions
+ *
+ ****************************************************************************/
+static int _init(void *data)
+{
+       int ret = QP_OK;
+
+       ret = _register_module_event_handler(data);
+
+       return ret;
+}
+
+static int _fini(void *data)
+{
+       int ret = QP_OK;
+
+       ret = _unregister_module_event_handler(data);
+
+       return ret;
+}
+
+static void _lang_changed(void *data)
+{
+       QP_Module_Setting *module = (QP_Module_Setting *)data;
+       retif(module == NULL, , "Invalid parameter!");
+
+       quickpanel_setting_module_icon_view_update_text(module);
+}
+
+static void _refresh(void *data)
+{
+       QP_Module_Setting *module = (QP_Module_Setting *)data;
+       retif(module == NULL, , "Invalid parameter!");
+
+       quickpanel_setting_module_icon_view_update_text(module);
+}
+
+QP_Module_Setting rotate = {
+       .name                           = "rotate",
+       .init                           = _init,
+       .fini                           = _fini,
+       .lang_changed           = _lang_changed,
+       .refresh                        = _refresh,
+       .icon_get                       = _icon_get,
+       .label_get                      = _label_get,
+       .view_update        = _view_update,
+       .status_update          = _status_update,
+       .handler_longpress              = _long_press_cb,
+       .handler_press          = _mouse_clicked_cb,
+};
diff --git a/daemon/settings/modules/sound-profile.c b/daemon/settings/modules/sound-profile.c
new file mode 100644 (file)
index 0000000..bc7b30a
--- /dev/null
@@ -0,0 +1,300 @@
+/*
+ * 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 <vconf.h>
+#include "common.h"
+#include "quickpanel-ui.h"
+#include "settings.h"
+#include "setting_utils.h"
+#include "setting_module_api.h"
+#include "sound_manager.h"
+
+#define BUTTON_LABEL _("IDS_QP_BUTTON2_SOUND_ABB")
+#define BUTTON_ICON_SND_NORMAL "quick_icon_sn_vf.png"
+#define BUTTON_ICON_SND_HIGHLIGHT "quick_icon_sn_vf.png"
+#define BUTTON_ICON_MUTE_NORMAL "quick_icon_sf_vf.png"
+#define BUTTON_ICON_VIB_HIGHLIGHT "quick_icon_sf_vn.png"
+#define PACKAGE_SETTING_MENU "setting-profile-efl"
+#define SAM_LOG_FEATURE_SOUND "ST0C"
+
+static int g_check_press = 0;
+
+static void _mouse_clicked_cb(void *data, Evas_Object *obj, const char *emission, const char *source);
+
+static const char *_label_get(void)
+{
+       return BUTTON_LABEL;
+}
+
+static const char *_icon_get(qp_setting_icon_image_type type)
+{
+       if (type == QP_SETTING_ICON_NORMAL) {
+               return BUTTON_ICON_SND_NORMAL;
+       } else if (type == QP_SETTING_ICON_HIGHLIGHT) {
+               return BUTTON_ICON_SND_HIGHLIGHT;
+       } else if (type == QP_SETTING_ICON_DIM) {
+#ifdef BUTTON_ICON_DIM
+               return BUTTON_ICON_DIM;
+#endif
+       }
+
+       return NULL;
+}
+
+static void _long_press_cb(void *data)
+{
+#ifdef PACKAGE_SETTING_MENU
+       quickpanel_setting_icon_handler_longpress(PACKAGE_SETTING_MENU, NULL);
+#endif
+}
+
+static void _play_snd_job_cb(void *data)
+{
+#ifdef HAVE_X
+       if (feedback_play_type(FEEDBACK_TYPE_SOUND, FEEDBACK_PATTERN_SOUND_ON) != FEEDBACK_ERROR_NONE) {
+               ERR("failed to play a sound");
+       }
+#endif
+}
+
+static void _play_vib_job_cb(void *data)
+{
+#ifdef HAVE_X
+       if (feedback_play_type(FEEDBACK_TYPE_VIBRATION, FEEDBACK_PATTERN_VIBRATION_ON) != FEEDBACK_ERROR_NONE) {
+               ERR("failed to play a vibration");
+       }
+#endif
+}
+
+static void _view_update(Evas_Object *view, int state, int flag_extra_1, int flag_extra_2)
+{
+       int icon_state;
+       int ret = -1;
+       int sound_status = 1;
+       int vibration_status = 1;
+       Evas_Object *image = NULL;
+       const char *text = NULL;
+       const char *img_path = NULL;
+
+       retif(view == NULL, , "Invalid parameter!");
+
+       /* Get sound status */
+       ret = vconf_get_bool(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, &sound_status);
+       /* If fail, set sound on status */
+       if (ret != 0) {
+               ERR("failed get VCONFKEY_SETAPPL_SOUND_STATUS_BOOL:%d", ret);
+               sound_status = 1;
+       }
+
+       /* Get vibration status */
+       ret = vconf_get_bool(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL,
+                       &vibration_status);
+       /* If fail, set vibration on status */
+       if (ret != 0) {
+               ERR("failed get VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL:%d", ret);
+               vibration_status = 1;
+       }
+
+       INFO("sound : %d, vibration : %d", sound_status, vibration_status);
+
+       if (sound_status == 1 && vibration_status == 1) {
+               /* Sound & vibration profile */
+               icon_state = ICON_VIEW_STATE_ON;
+               text = _("IDS_QP_BUTTON2_SOUND_ABB");
+               img_path = BUTTON_ICON_SND_HIGHLIGHT;
+       } else if (sound_status == 0 && vibration_status == 1) {
+               /* Vibration profile */
+               icon_state = ICON_VIEW_STATE_ON;
+               text = _("IDS_QP_BUTTON2_VIBRATE");
+               img_path = BUTTON_ICON_VIB_HIGHLIGHT;
+       } else if (sound_status == 1 && vibration_status == 0) {
+               /*  Sound profile */
+               icon_state = ICON_VIEW_STATE_ON;
+               text = _("IDS_QP_BUTTON2_SOUND_ABB");
+               img_path = BUTTON_ICON_SND_HIGHLIGHT;
+       } else {
+               /*  Mute profile */
+               icon_state = ICON_VIEW_STATE_OFF;
+               text = _("IDS_QP_BUTTON2_MUTE_ABB");
+               img_path = BUTTON_ICON_MUTE_NORMAL;
+       }
+
+       quickpanel_setting_icon_state_set(view, icon_state);
+       quickpanel_setting_icon_text_set(view, text, icon_state);
+       image = quickpanel_setting_icon_image_new(view, img_path);
+       quickpanel_setting_icon_content_set(view, image);
+
+       if (quickpanel_uic_is_opened() && g_check_press) {
+               g_check_press = 0;
+               if (sound_status == 1 && vibration_status == 0) {
+                       ecore_job_add(_play_snd_job_cb, NULL);
+               } else if (sound_status == 0 && vibration_status == 1) {
+                       ecore_job_add(_play_vib_job_cb, NULL);
+               }
+       }
+}
+
+static void _status_update(QP_Module_Setting *module, int flag_extra_1, int flag_extra_2)
+{
+       retif(module == NULL, , "Invalid parameter!");
+
+       quickpanel_setting_module_icon_view_update(module,
+                       quickpanel_setting_module_icon_state_get(module),
+                       FLAG_VALUE_VOID);
+}
+
+static void _mouse_clicked_cb(void *data,
+               Evas_Object *obj, const char *emission, const char *source)
+{
+       int ret = 0;
+       int sound_status = 1;
+       int vibration_status = 1;
+       QP_Module_Setting *module = (QP_Module_Setting *)data;
+       retif(module == NULL, , "Invalid parameter!");
+
+       /* Get sound profile */
+       ret = vconf_get_bool(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL,
+                       &sound_status);
+       retif(ret != 0, , "failed to get sound status(%d)", ret);
+
+       ret = vconf_get_bool(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL,
+                       &vibration_status);
+       retif(ret != 0, ,"failed to get vibration status(%d)", ret);
+
+       INFO("sound : %d, vibration : %d", sound_status, vibration_status);
+
+       g_check_press = 1;
+
+       if (sound_status == 1 && vibration_status == 1) {
+               ret = vconf_set_bool(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, 0);
+               msgif(ret != 0, "failed set VCONFKEY_SETAPPL_SOUND_STATUS_BOOL:%d", ret);
+       } else  if (sound_status == 1 && vibration_status == 0) {
+               ret = vconf_set_bool(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL, 1);
+               msgif(ret != 0, "failed set VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL:%d", ret);
+               ret = vconf_set_bool(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, 0);
+               msgif(ret != 0, "failed set VCONFKEY_SETAPPL_SOUND_STATUS_BOOL:%d", ret);
+       } else if (sound_status == 0 && vibration_status == 1) {
+               ret = vconf_set_bool(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL, 0);
+               msgif(ret != 0, "failed set VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL:%d", ret);
+               /*insert log for mute mode on state */
+               //_log_manager_insert_log(SAM_LOG_FEATURE_SOUND, "MUTE", NULL);
+       } else if (sound_status == 0 && vibration_status == 0) {
+               ret = vconf_set_bool(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, 1);
+               msgif(ret != 0, "failed set VCONFKEY_SETAPPL_SOUND_STATUS_BOOL:%d", ret);
+       }
+}
+
+static void _soundprofile_vconf_cb(keynode_t *node,
+               void *data)
+{
+       _status_update(data, FLAG_VALUE_VOID, FLAG_VALUE_VOID);
+}
+
+static int _register_module_event_handler(void *data)
+{
+       int ret = 0;
+
+       ret = vconf_notify_key_changed(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL,
+                       _soundprofile_vconf_cb, data);
+       msgif(ret != 0,
+                       "failed to vconf_notify_key_changed [%s] -[%d]",
+                       VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, ret);
+
+       ret = vconf_notify_key_changed(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL,
+                       _soundprofile_vconf_cb, data);
+       msgif(ret != 0,
+                       "failed to vconf_notify_key_changed [%s] -[%d]",
+                       VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, ret);
+
+       return QP_OK;
+}
+
+static int _unregister_module_event_handler(void *data)
+{
+       int ret = 0;
+
+       ret = vconf_ignore_key_changed(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL,
+                       _soundprofile_vconf_cb);
+       msgif(ret != 0,
+                       "failed to vconf_ignore_key_changed [%s] -[%d]",
+                       VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, ret);
+
+       ret = vconf_ignore_key_changed(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL,
+                       _soundprofile_vconf_cb);
+       msgif(ret != 0,
+                       "failed to vconf_ignore_key_changed [%s] -[%d]",
+                       VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, ret);
+
+       return QP_OK;
+}
+
+/****************************************************************************
+ *
+ * Quickpanel Item functions
+ *
+ ****************************************************************************/
+static int _init(void *data)
+{
+       int ret = QP_OK;
+
+       ret = _register_module_event_handler(data);
+
+       return ret;
+}
+
+static int _fini(void *data)
+{
+       int ret = QP_OK;
+
+       ret = _unregister_module_event_handler(data);
+
+       return ret;
+}
+
+static void _lang_changed(void *data)
+{
+       QP_Module_Setting *module = (QP_Module_Setting *)data;
+       retif(module == NULL, , "Invalid parameter!");
+
+       quickpanel_setting_module_icon_view_update_text(module);
+       _status_update(module, FLAG_VALUE_VOID, FLAG_VALUE_VOID);
+}
+
+static void _refresh(void *data)
+{
+       QP_Module_Setting *module = (QP_Module_Setting *)data;
+       retif(module == NULL, , "Invalid parameter!");
+
+       quickpanel_setting_module_icon_view_update_text(module);
+       _status_update(module, FLAG_VALUE_VOID, FLAG_VALUE_VOID);
+}
+
+
+QP_Module_Setting sound = {
+       .name                           = "sound",
+       .init                           = _init,
+       .fini                           = _fini,
+       .lang_changed           = _lang_changed,
+       .refresh                        = _refresh,
+       .icon_get                       = _icon_get,
+       .label_get                      = _label_get,
+       .view_update        = _view_update,
+       .status_update          = _status_update,
+       .handler_longpress              = _long_press_cb,
+       .handler_press          = _mouse_clicked_cb,
+       .is_disable_feedback = 1,
+};
diff --git a/daemon/settings/modules/tethering.c b/daemon/settings/modules/tethering.c
new file mode 100644 (file)
index 0000000..45a77ae
--- /dev/null
@@ -0,0 +1,461 @@
+/*
+ * 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 <vconf.h>
+#include <tethering.h>
+#include <glib.h>
+#include <bundle_internal.h>
+#include <net_connection.h>
+#include <syspopup_caller.h>
+#include "common.h"
+#include "quickpanel-ui.h"
+#include "settings.h"
+#include "setting_utils.h"
+#include "setting_module_api.h"
+
+#define MOBILE_AP_SYSPOPUP_NAME                "mobileap-syspopup"
+#define BUTTON_LABEL                   _("IDS_ST_BUTTON2_WI_FI_NTETHERING")
+#define BUTTON_ICON_NORMAL             "quick_icon_wifi_tethering.png"
+#define BUTTON_ICON_HIGHLIGHT          NULL
+#define BUTTON_ICON_DIM NULL
+#define PACKAGE_SETTING_MENU           "setting-mobileap-efl"
+
+static void _mouse_clicked_cb(void *data, Evas_Object *obj, const char *emission, const char *source);
+
+static const char *_label_get(void)
+{
+       return BUTTON_LABEL;
+}
+
+static const char *_icon_get(qp_setting_icon_image_type type)
+{
+       if (type == QP_SETTING_ICON_NORMAL) {
+               return BUTTON_ICON_NORMAL;
+       } else if (type == QP_SETTING_ICON_HIGHLIGHT) {
+               return BUTTON_ICON_HIGHLIGHT;
+       } else if (type == QP_SETTING_ICON_DIM) {
+#ifdef BUTTON_ICON_DIM
+               return BUTTON_ICON_DIM;
+#endif
+       }
+
+       return NULL;
+}
+
+static void _long_press_cb(void *data)
+{
+#ifdef PACKAGE_SETTING_MENU
+       quickpanel_setting_icon_handler_longpress(PACKAGE_SETTING_MENU, NULL);
+#endif
+}
+
+static void _view_update(Evas_Object *view, int state, int flag_extra_1, int flag_extra_2)
+{
+       Evas_Object *image = NULL;
+       const char *icon_path = NULL;
+
+       quickpanel_setting_icon_state_set(view, state);
+
+       if (state == ICON_VIEW_STATE_ON) {
+#ifdef BUTTON_ICON_HIGHLIGHT
+               icon_path = BUTTON_ICON_HIGHLIGHT;
+#endif
+       } else if (state == ICON_VIEW_STATE_DIM) {
+#ifdef BUTTON_ICON_DIM
+               icon_path = BUTTON_ICON_DIM;
+#endif
+       } else {
+               icon_path = BUTTON_ICON_NORMAL;
+       }
+
+       if (icon_path == NULL) {
+               icon_path = BUTTON_ICON_NORMAL;
+       }
+       image = quickpanel_setting_icon_image_new(view, icon_path);
+       quickpanel_setting_icon_content_set(view, image);
+       quickpanel_setting_icon_text_set(view, BUTTON_LABEL, state);
+}
+
+static void _status_update(QP_Module_Setting *module, int flag_extra_1, int flag_extra_2)
+{
+       retif(module == NULL, , "Invalid parameter!");
+       retif(module->loader->extra_handler_1 == NULL, , "Invalid parameter!");
+
+       quickpanel_setting_module_icon_timer_del(module);
+
+       if (tethering_is_enabled(module->loader->extra_handler_1, TETHERING_TYPE_WIFI)) {
+               quickpanel_setting_module_icon_state_set(module, ICON_VIEW_STATE_ON);
+       } else {
+               quickpanel_setting_module_icon_state_set(module, ICON_VIEW_STATE_OFF);
+       }
+
+       quickpanel_setting_module_progress_mode_set(module, FLAG_DISABLE, FLAG_TURN_OFF);
+       quickpanel_setting_module_icon_timer_del(module);
+
+       quickpanel_setting_module_icon_view_update(module,
+                       quickpanel_setting_module_icon_state_get(module),
+                       FLAG_VALUE_VOID);
+}
+
+static void _tethering_enabled_cb(tethering_error_e result, tethering_type_e type, bool is_requested, void *user_data)
+{
+       QP_Module_Setting *module = (QP_Module_Setting *)user_data;
+       retif(module == NULL, , "Invalid parameter!");
+
+       retif(type != TETHERING_TYPE_WIFI, , "Another type of tethering is enabled - type:%d", type);
+
+       if (result != TETHERING_ERROR_NONE) {
+               if (is_requested == TRUE) {
+                       quickpanel_setting_module_progress_mode_set(module, FLAG_DISABLE, FLAG_TURN_OFF);
+                       quickpanel_setting_module_icon_timer_del(module);
+               }
+               _status_update(module, FLAG_VALUE_VOID, FLAG_VALUE_VOID);
+
+               WARN("Failed to enable tethering - error:%x", result);
+               return;
+       }
+
+       if (is_requested == TRUE) {
+               quickpanel_setting_module_progress_mode_set(module, FLAG_DISABLE, FLAG_TURN_OFF);
+               quickpanel_setting_module_icon_timer_del(module);
+       }
+       _status_update(module, FLAG_VALUE_VOID, FLAG_VALUE_VOID);
+       WARN("WIFI tethering is enabled - type:%d", type);
+
+       return;
+}
+
+static void _tethering_disabled_cb(tethering_error_e result, tethering_type_e type, tethering_disabled_cause_e cause, void *user_data)
+{
+       QP_Module_Setting *module = (QP_Module_Setting *)user_data;
+       retif(module == NULL, , "Invalid parameter!");
+       retif(module->loader == NULL, , "Invalid parameter!");
+
+       if (result != TETHERING_ERROR_NONE && type == TETHERING_TYPE_WIFI) {
+               quickpanel_setting_module_progress_mode_set(module, FLAG_DISABLE, FLAG_TURN_OFF);
+               quickpanel_setting_module_icon_timer_del(module);
+               _status_update(module, FLAG_VALUE_VOID, FLAG_VALUE_VOID);
+
+               WARN("Failed to disable tethering - error:%x", result);
+               return;
+       }
+
+       if (type == TETHERING_TYPE_WIFI) {
+               quickpanel_setting_module_progress_mode_set(module, FLAG_DISABLE, FLAG_TURN_OFF);
+               quickpanel_setting_module_icon_timer_del(module);
+               _status_update(module, FLAG_VALUE_VOID, FLAG_VALUE_VOID);
+               WARN("WIFI tethering is disabled - cause:%x", cause);
+       } else {
+               WARN("Ignored tethering event - result:%x type:%d cause:%x", result, type, cause);
+       }
+
+       return;
+}
+
+static int _tethering_enabled_set(void *data, Eina_Bool state)
+{
+       QP_Module_Setting *module = (QP_Module_Setting *)data;
+
+       if (module == NULL || module->loader->extra_handler_1 == NULL) {
+               ERR("invalid parameter\n");
+               return QP_FAIL;
+       }
+
+       if (state) {
+               if (tethering_is_enabled(NULL, TETHERING_TYPE_WIFI) == FALSE) {
+                       // for checking pre-conditions, popup will be provided by mobileap-syspopup
+                       bundle *b = bundle_create();
+                       if (!b) {
+                               ERR("Failed to create bundle.");
+                               return QP_FAIL;
+                       }
+                       bundle_add(b, "msg", "Confirm WiFi tethering on");
+                       syspopup_launch(MOBILE_AP_SYSPOPUP_NAME, b);
+                       bundle_free(b);
+               }
+       } else {
+               if (tethering_is_enabled(NULL, TETHERING_TYPE_WIFI) == TRUE) {
+                       bundle *b = bundle_create();
+                       if (!b) {
+                               ERR("Failed to create bundle.");
+                               return QP_FAIL;
+                       }
+                       bundle_add(b, "msg", "Confirm WiFi tethering off");
+                       syspopup_launch(MOBILE_AP_SYSPOPUP_NAME, b);
+                       bundle_free(b);
+               }
+       }
+
+       return QP_OK;
+}
+
+static void _mouse_clicked_cb(void *data,
+               Evas_Object *obj, const char *emission, const char *source)
+{
+       int ret = 0;
+       int is_on = 0;
+       QP_Module_Setting *module = (QP_Module_Setting *)data;
+       retif(module == NULL, , "Invalid parameter!");
+
+       if (quickpanel_setting_module_is_icon_clickable(module) == 0) {
+               DBG("Icon is not clickable");
+               return;
+       }
+
+       if (quickpanel_setting_module_icon_state_get(module) == ICON_VIEW_STATE_OFF) {
+               ret = _tethering_enabled_set(module, EINA_TRUE);
+               if (ret != QP_OK) {
+                       ERR("Failed to enable tethering");
+                       return;
+               }
+               is_on = 1;
+       } else {
+               ret = _tethering_enabled_set(module, EINA_FALSE);
+               if (ret != QP_OK) {
+                       ERR("Failed to disable tethering");
+                       return;
+               }
+               is_on = 0;
+       }
+
+       if (ret == QP_OK) {
+               if (is_on == 1) {
+                       quickpanel_setting_module_progress_mode_set(module, FLAG_ENABLE, FLAG_TURN_ON);
+               } else {
+                       quickpanel_setting_module_progress_mode_set(module, FLAG_ENABLE, FLAG_TURN_OFF);
+               }
+               quickpanel_setting_module_icon_timer_add(module);
+       }
+       return;
+}
+
+static int _register_module_event_handler(void *data)
+{
+       tethering_error_e ret = TETHERING_ERROR_NONE;
+       QP_Module_Setting *module = (QP_Module_Setting *)data;
+       retif(module == NULL, ret, "Invalid parameter!");
+
+       ret = tethering_create(&(module->loader->extra_handler_1));
+       msgif(ret != TETHERING_ERROR_NONE, "fail to create tethering handler");
+
+       ret = tethering_set_enabled_cb(module->loader->extra_handler_1,
+                       TETHERING_TYPE_WIFI, _tethering_enabled_cb, data);
+       msgif(ret != TETHERING_ERROR_NONE, "fail to register enabled callback");
+
+       ret = tethering_set_disabled_cb(module->loader->extra_handler_1,
+                       TETHERING_TYPE_WIFI, _tethering_disabled_cb, data);
+       msgif(ret != TETHERING_ERROR_NONE, "fail to register disabled callback");
+
+       return QP_OK;
+}
+
+static int _unregister_module_event_handler(void *data)
+{
+       tethering_error_e ret =TETHERING_ERROR_NONE;
+       QP_Module_Setting *module = (QP_Module_Setting *)data;
+       retif(module == NULL, ret, "Invalid parameter!");
+
+       if (module->loader->extra_handler_1 != NULL) {
+
+               tethering_destroy(module->loader->extra_handler_1);
+               module->loader->extra_handler_1 = NULL;
+       }
+
+       return QP_OK;
+}
+
+/****************************************************************************
+ *
+ * Quickpanel Item functions
+ *
+ ****************************************************************************/
+static int _init(void *data)
+{
+       int ret = QP_OK;
+
+       ret = _register_module_event_handler(data);
+
+       return ret;
+}
+
+static int _fini(void *data)
+{
+       int ret = QP_OK;
+
+       ret = _unregister_module_event_handler(data);
+
+       return ret;
+}
+
+static void _lang_changed(void *data)
+{
+       QP_Module_Setting *module = (QP_Module_Setting *)data;
+       retif(module == NULL, , "Invalid parameter!");
+
+       quickpanel_setting_module_icon_view_update_text(module);
+}
+
+static void _refresh(void *data)
+{
+       QP_Module_Setting *module = (QP_Module_Setting *)data;
+       retif(module == NULL, , "Invalid parameter!");
+
+       quickpanel_setting_module_icon_view_update_text(module);
+}
+
+static void _reset_icon(QP_Module_Setting *module)
+{
+       retif(module == NULL, , "Invalid parameter!");
+
+       quickpanel_setting_module_progress_mode_set(module, FLAG_DISABLE, FLAG_VALUE_VOID);
+       _status_update(module, FLAG_VALUE_VOID, FLAG_VALUE_VOID);
+}
+
+static void _handler_on(void *data)
+{
+       tethering_error_e ret = TETHERING_ERROR_NONE;
+       QP_Module_Setting *module = (QP_Module_Setting *)data;
+       retif(module == NULL, , "Invalid parameter!");
+
+       quickpanel_setting_module_progress_mode_set(module, FLAG_DISABLE, FLAG_TURN_OFF);
+       quickpanel_setting_module_icon_timer_del(module);
+
+       if (quickpanel_setting_module_icon_state_get(module) == ICON_VIEW_STATE_OFF) {
+               ret = _tethering_enabled_set(module, EINA_TRUE);
+
+               if (ret == QP_OK) {
+                       quickpanel_setting_module_progress_mode_set(module, FLAG_ENABLE, FLAG_TURN_ON);
+                       quickpanel_setting_module_icon_timer_add(module);
+               } else {
+                       ERR("op failed:%d", ret);
+               }
+       } else {
+               ERR("the button is already turned on");
+               _reset_icon(module);
+       }
+}
+
+static void _handler_off(void *data)
+{
+       int ret = TETHERING_ERROR_NONE;
+       QP_Module_Setting *module = (QP_Module_Setting *)data;
+       retif(module == NULL, , "Invalid parameter!");
+
+       quickpanel_setting_module_progress_mode_set(module, FLAG_DISABLE, FLAG_TURN_OFF);
+       quickpanel_setting_module_icon_timer_del(module);
+
+       if (quickpanel_setting_module_icon_state_get(module) == ICON_VIEW_STATE_ON) {
+               ret = _tethering_enabled_set(module, EINA_FALSE);
+               if (ret == QP_OK) {
+                       quickpanel_setting_module_progress_mode_set(module, FLAG_ENABLE, FLAG_TURN_OFF);
+                       quickpanel_setting_module_icon_timer_add(module);
+               } else {
+                       ERR("op failed:%d", ret);
+               }
+       } else {
+               ERR("the button is already turned off");
+               _reset_icon(module);
+       }
+}
+
+static void _handler_progress_on(void *data)
+{
+       QP_Module_Setting *module = (QP_Module_Setting *)data;
+       retif(module == NULL, , "Invalid parameter!");
+
+       quickpanel_setting_module_progress_mode_set(module, FLAG_ENABLE, FLAG_TURN_ON);
+}
+
+static void _handler_progress_off(void *data)
+{
+       QP_Module_Setting *module = (QP_Module_Setting *)data;
+       retif(module == NULL, , "Invalid parameter!");
+
+       _reset_icon(module);
+}
+
+static void _handler_progress_reset(void *data)
+{
+       QP_Module_Setting *module = (QP_Module_Setting *)data;
+       retif(module == NULL, , "Invalid parameter!");
+
+       _reset_icon(module);
+}
+
+static int _handler_ipc(const char *command, void *data)
+{
+       int i = 0;
+       retif(data == NULL, EINA_FALSE, "item data is NULL");
+       retif(command == NULL, EINA_FALSE, "command is NULL");
+
+       static Setting_Activity_Handler __table_handler[] = {
+               {
+                       .command = "on",
+                       .handler = _handler_on,
+               },
+               {
+                       .command = "off",
+                       .handler = _handler_off,
+               },
+               {
+                       .command = "progress_on",
+                       .handler = _handler_progress_on,
+               },
+               {
+                       .command = "progress_off",
+                       .handler = _handler_progress_off,
+               },
+               {
+                       .command = "progress_reset",
+                       .handler = _handler_progress_reset,
+               },
+               {
+                       .command = NULL,
+                       .handler = NULL,
+               },
+       };
+
+       for (i = 0; __table_handler[i].command; i++) {
+               if (strcasecmp(__table_handler[i].command, command)) {
+                       continue;
+               }
+
+               if (__table_handler[i].handler != NULL) {
+                       DBG("process:%s", command);
+                       __table_handler[i].handler(data);
+               }
+               break;
+       }
+
+       return EINA_TRUE;
+}
+
+QP_Module_Setting tethering = {
+       .name                           = "wifi_hotspot",
+       .init                           = _init,
+       .fini                           = _fini,
+       .lang_changed                   = _lang_changed,
+       .refresh                        = _refresh,
+       .icon_get                       = _icon_get,
+       .label_get                      = _label_get,
+       .view_update        = _view_update,
+       .status_update          = _status_update,
+       .handler_longpress      = _long_press_cb,
+       .handler_ipc        = _handler_ipc,
+       .handler_press          = _mouse_clicked_cb,
+};
diff --git a/daemon/settings/modules/ultra_power_saving.c b/daemon/settings/modules/ultra_power_saving.c
new file mode 100644 (file)
index 0000000..c7ee5c8
--- /dev/null
@@ -0,0 +1,255 @@
+/*
+ * 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 <app.h>
+#include <vconf.h>
+#include <syspopup_caller.h>
+#include <bundle_internal.h>
+#include "common.h"
+#include "quickpanel-ui.h"
+#include "settings.h"
+#include "setting_utils.h"
+#include "setting_module_api.h"
+
+
+#define BUTTON_LABEL _("IDS_QP_BUTTON2_U_POWER_NSAVING_ABB")
+#define BUTTON_ICON_NORMAL "quick_icon_ultra_power_saving.png"
+#define BUTTON_ICON_HIGHLIGHT NULL
+#define BUTTON_ICON_DIM NULL
+#define PACKAGE_SETTING_MENU "setting-powersaving-efl"
+#define SYSPOPUP_NAME "mode-syspopup"
+
+static void _mouse_clicked_cb(void *data, Evas_Object *obj, const char *emission, const char *source);
+
+static const char *_label_get(void)
+{
+       return BUTTON_LABEL;
+}
+
+static const char *_icon_get(qp_setting_icon_image_type type)
+{
+       if (type == QP_SETTING_ICON_NORMAL) {
+               return BUTTON_ICON_NORMAL;
+       } else if (type == QP_SETTING_ICON_HIGHLIGHT) {
+               return BUTTON_ICON_HIGHLIGHT;
+       } else if (type == QP_SETTING_ICON_DIM) {
+#ifdef BUTTON_ICON_DIM
+               return BUTTON_ICON_DIM;
+#endif
+       }
+
+       return NULL;
+}
+
+static void _long_press_cb(void *data)
+{
+#ifdef PACKAGE_SETTING_MENU
+       bundle *kb = bundle_create();
+       if (kb != NULL) {
+               bundle_add(kb, "power_saving", "upsm");
+               quickpanel_setting_icon_handler_longpress(PACKAGE_SETTING_MENU, kb);
+               bundle_free(kb);
+       } else {
+               ERR("failed to create the bunlde");
+       }
+#endif
+}
+
+#if 0
+static int _is_need_to_show_disclaimer(void) {
+       int ret = 0, status = 0;
+
+       ret = vconf_get_bool(VCONFKEY_SETAPPL_UPSM_DO_NOT_SHOW_DISCLAIMER, &status);
+       if (ret == 0 && status) {
+               return 0;
+       }
+
+       return 1;
+}
+#endif
+
+static void _turn_on(int is_on)
+{
+       bundle *b = NULL;
+
+       //if(_is_need_to_show_disclaimer() == 1)
+       {
+               b = bundle_create();
+               if (b != NULL) {
+                       bundle_add(b, "viewtype", "disc");
+
+                       quickpanel_setting_icon_handler_longpress(PACKAGE_SETTING_MENU, b);
+                       bundle_free(b);
+               }
+       }
+       /*else
+       {
+               b = bundle_create();
+               if (b != NULL) {
+                       if (is_on) {
+                               bundle_add(b, "_MODE_SYSTEM_POPUP_TYPE_", "POPUP_EMERGENCY_PSMODE_SETTING");
+                       } else {
+                               bundle_add(b, "_MODE_SYSTEM_POPUP_TYPE_", "POPUP_NORMAL_PSMODE");
+                       }
+                       syspopup_launch(SYSPOPUP_NAME, b);
+                       bundle_free(b);
+               } else {
+                       ERR("failed to create a bundle");
+               }
+       }*/
+}
+
+static void _view_update(Evas_Object *view, int state, int flag_extra_1, int flag_extra_2)
+{
+       Evas_Object *image = NULL;
+       const char *icon_path = NULL;
+
+       quickpanel_setting_icon_state_set(view, state);
+
+       if (state == ICON_VIEW_STATE_ON) {
+#ifdef BUTTON_ICON_HIGHLIGHT
+               icon_path = BUTTON_ICON_HIGHLIGHT;
+#endif
+       } else if (state == ICON_VIEW_STATE_DIM) {
+#ifdef BUTTON_ICON_DIM
+               icon_path = BUTTON_ICON_DIM;
+#endif
+       } else {
+               icon_path = BUTTON_ICON_NORMAL;
+       }
+
+       if (icon_path == NULL) {
+               icon_path = BUTTON_ICON_NORMAL;
+       }
+       image = quickpanel_setting_icon_image_new(view, icon_path);
+       quickpanel_setting_icon_content_set(view, image);
+       quickpanel_setting_icon_text_set(view, BUTTON_LABEL, state);
+}
+
+static void _status_update(QP_Module_Setting *module, int flag_extra_1, int flag_extra_2)
+{
+       int ret = 0;
+       int status = 0;
+       retif(module == NULL, , "Invalid parameter!");
+
+       ret = vconf_get_int(VCONFKEY_SETAPPL_PSMODE, &status);
+       msgif(ret != 0, "fail to get VCONFKEY_SETAPPL_PSMODE:%d", ret);
+
+       if (status == SETTING_PSMODE_EMERGENCY) {
+               quickpanel_setting_module_icon_state_set(module, ICON_VIEW_STATE_ON);
+       } else {
+               quickpanel_setting_module_icon_state_set(module, ICON_VIEW_STATE_OFF);
+       }
+
+       quickpanel_setting_module_icon_view_update(module,
+                       quickpanel_setting_module_icon_state_get(module),
+                       FLAG_VALUE_VOID);
+}
+
+static void _mouse_clicked_cb(void *data,
+               Evas_Object *obj, const char *emission, const char *source)
+{
+       QP_Module_Setting *module = (QP_Module_Setting *)data;
+       retif(module == NULL, , "Invalid parameter!");
+
+       if (quickpanel_setting_module_icon_state_get(module) == ICON_VIEW_STATE_ON) {
+               _turn_on(0);
+       } else {
+               _turn_on(1);
+       }
+}
+
+static void _powersave_vconf_cb(keynode_t *node, void *data)
+{
+       _status_update(data, FLAG_VALUE_VOID, FLAG_VALUE_VOID);
+}
+
+static int _register_module_event_handler(void *data)
+{
+       int ret = 0;
+
+       ret = vconf_notify_key_changed(VCONFKEY_SETAPPL_PSMODE,
+                       _powersave_vconf_cb, data);
+       msgif(ret != 0, "failed to notify key(VCONFKEY_SETAPPL_PSMODE) : %d", ret);
+
+       return QP_OK;
+}
+
+static int _unregister_module_event_handler(void *data)
+{
+       int ret = 0;
+
+       ret = vconf_ignore_key_changed(VCONFKEY_SETAPPL_PSMODE,
+                       _powersave_vconf_cb);
+       msgif(ret != 0, "failed to ignore key(VCONFKEY_SETAPPL_PSMODE) : %d", ret);
+
+       return QP_OK;
+}
+
+/****************************************************************************
+ *
+ * Quickpanel Item functions
+ *
+ ****************************************************************************/
+static int _init(void *data)
+{
+       int ret = QP_OK;
+
+       ret = _register_module_event_handler(data);
+
+       return ret;
+}
+
+static int _fini(void *data)
+{
+       int ret = QP_OK;
+
+       ret = _unregister_module_event_handler(data);
+
+       return ret;
+}
+
+static void _lang_changed(void *data)
+{
+       QP_Module_Setting *module = (QP_Module_Setting *)data;
+       retif(module == NULL, , "Invalid parameter!");
+
+       quickpanel_setting_module_icon_view_update_text(module);
+}
+
+static void _refresh(void *data)
+{
+       QP_Module_Setting *module = (QP_Module_Setting *)data;
+       retif(module == NULL, , "Invalid parameter!");
+
+       quickpanel_setting_module_icon_view_update_text(module);
+}
+
+QP_Module_Setting u_power_saving = {
+       .name                           = "u_power_saving",
+       .init                           = _init,
+       .fini                           = _fini,
+       .lang_changed           = _lang_changed,
+       .refresh                        = _refresh,
+       .icon_get                       = _icon_get,
+       .label_get                      = _label_get,
+       .view_update        = _view_update,
+       .status_update          = _status_update,
+       .handler_longpress              = _long_press_cb,
+       .handler_press          = _mouse_clicked_cb,
+};
diff --git a/daemon/settings/modules/wifi.c b/daemon/settings/modules/wifi.c
new file mode 100644 (file)
index 0000000..5f65151
--- /dev/null
@@ -0,0 +1,579 @@
+/*
+ * 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 <app.h>
+#include <tethering.h>
+
+#include <wifi.h>
+#include <vconf.h>
+#include "common.h"
+#include "quickpanel-ui.h"
+#include "settings.h"
+#include "setting_utils.h"
+#include "setting_module_api.h"
+
+#define E_DATA_POPUP_MODULE_ITEM "mobule_item"
+#define BUTTON_LABEL _("IDS_ST_BUTTON2_WI_FI_ABB")
+#define BUTTON_ICON_NORMAL "quick_icon_wifi.png"
+#define BUTTON_ICON_HIGHLIGHT NULL
+#define BUTTON_ICON_DIM NULL
+#define PACKAGE_SETTING_MENU "wifi-efl-ug-lite"
+#define PACKAGE_SETTING_MENU_PTN "wifi-efl-ug" // for redwood partner
+
+static int _wifi_on(void *data, const char *popup_txt);
+static int _wifi_off(void);
+static int _wifi_is_on(bool *is_on);
+static void _wifi_state_changed_cb(wifi_device_state_e state, void *user_data);
+static void _mouse_clicked_cb(void *data, Evas_Object *obj, const char *emission, const char *source);
+static void _reset_icon(QP_Module_Setting *module);
+
+static const char *_label_get(void)
+{
+       return BUTTON_LABEL;
+}
+
+static const char *_icon_get(qp_setting_icon_image_type type)
+{
+       if (type == QP_SETTING_ICON_NORMAL) {
+               return BUTTON_ICON_NORMAL;
+       } else if (type == QP_SETTING_ICON_HIGHLIGHT) {
+               return BUTTON_ICON_HIGHLIGHT;
+       } else if (type == QP_SETTING_ICON_DIM) {
+#ifdef BUTTON_ICON_DIM
+               return BUTTON_ICON_DIM;
+#endif
+       }
+
+       return NULL;
+}
+
+static void _long_press_cb(void *data)
+{
+#ifdef PACKAGE_SETTING_MENU
+       if (quickpanel_common_ui_is_package_exist(PACKAGE_SETTING_MENU)) {
+               quickpanel_setting_icon_handler_longpress(PACKAGE_SETTING_MENU, NULL);
+       } else {
+               DBG("No package[%s] try[%s]", PACKAGE_SETTING_MENU, PACKAGE_SETTING_MENU_PTN);
+               quickpanel_setting_icon_handler_longpress(PACKAGE_SETTING_MENU_PTN, NULL);
+       }
+#endif
+}
+
+static void _view_update(Evas_Object *view, int state, int flag_extra_1, int flag_extra_2)
+{
+       Evas_Object *image = NULL;
+       const char *icon_path = NULL;
+
+       quickpanel_setting_icon_state_set(view, state);
+
+       if (state == ICON_VIEW_STATE_ON) {
+#ifdef BUTTON_ICON_HIGHLIGHT
+               icon_path = BUTTON_ICON_HIGHLIGHT;
+#endif
+       } else if (state == ICON_VIEW_STATE_DIM) {
+#ifdef BUTTON_ICON_DIM
+               icon_path = BUTTON_ICON_DIM;
+#endif
+       } else {
+               icon_path = BUTTON_ICON_NORMAL;
+       }
+
+       if (icon_path == NULL) {
+               icon_path = BUTTON_ICON_NORMAL;
+       }
+       image = quickpanel_setting_icon_image_new(view, icon_path);
+       quickpanel_setting_icon_content_set(view, image);
+       quickpanel_setting_icon_text_set(view, BUTTON_LABEL, state);
+}
+
+static void _status_update(QP_Module_Setting *module, int wifi_status, int flag_extra_2)
+{
+       ERR("");
+       int ret = -1;
+       bool is_on = 0;
+       retif(module == NULL, , "Invalid parameter!");
+
+       quickpanel_setting_module_icon_timer_del(module);
+
+       if (wifi_status == FLAG_VALUE_VOID) {
+               ret = _wifi_is_on(&is_on);
+       } else {
+               ret = 0;
+               if (wifi_status == WIFI_DEVICE_STATE_ACTIVATED) {
+                       is_on = true;
+               } else {
+                       is_on = false;
+               }
+       }
+
+       if (ret == 0 && is_on == true) {
+               quickpanel_setting_module_icon_state_set(module, ICON_VIEW_STATE_ON);
+       } else {
+               quickpanel_setting_module_icon_state_set(module, ICON_VIEW_STATE_OFF);
+       }
+
+       quickpanel_setting_module_progress_mode_set(module, FLAG_DISABLE, FLAG_TURN_OFF);
+       quickpanel_setting_module_icon_timer_del(module);
+
+       quickpanel_setting_module_icon_view_update(module,
+                       quickpanel_setting_module_icon_state_get(module),
+                       FLAG_VALUE_VOID);
+}
+
+static void _mouse_clicked_cb(void *data,
+               Evas_Object *obj, const char *emission, const char *source)
+{
+       int ret = 0;
+       int is_on = 0;
+       QP_Module_Setting *module = (QP_Module_Setting *)data;
+       retif(module == NULL, , "Invalid parameter!");
+
+       if (quickpanel_setting_module_is_icon_clickable(module) == 0) {
+               return;
+       }
+
+       if (quickpanel_setting_module_icon_state_get(module) == ICON_VIEW_STATE_ON) {
+               is_on = FLAG_TURN_OFF;
+               ret = _wifi_off();
+       } else {
+               is_on = FLAG_TURN_ON;
+               ret = _wifi_on(module,
+                               _("IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"));
+       }
+
+       if (ret != 0) {
+               ERR("wifi op failed:%d", ret);
+               return;
+       }
+
+       if (is_on == 1) {
+               quickpanel_setting_module_progress_mode_set(module, FLAG_ENABLE, FLAG_TURN_ON);
+       } else {
+               quickpanel_setting_module_progress_mode_set(module, FLAG_ENABLE, FLAG_TURN_OFF);
+       }
+       quickpanel_setting_module_icon_timer_add(module);
+}
+
+static int _register_module_event_handler(void *data)
+{
+       int ret = 0;
+
+       ret = wifi_initialize();
+       msgif(ret < 0, "[ERR] wifi_initialize()");
+
+       ret = wifi_set_device_state_changed_cb(_wifi_state_changed_cb, data);
+       if (ret != 0) {
+               ERR("wifi cb register failed:%d", ret);
+       } else {
+               ERR("wifi op register done:%d", ret);
+       }
+
+       return QP_OK;
+}
+
+static int _unregister_module_event_handler(void *data)
+{
+       int ret = 0;
+
+       ret = wifi_unset_device_state_changed_cb();
+       if (ret != 0) {
+               ERR("wifi cb unregister failed:%d", ret);
+       } else {
+               ERR("wifi op unregister done:%d", ret);
+       }
+
+       ret = wifi_deinitialize();
+       msgif(ret != WIFI_ERROR_NONE, "Fail to deactivate Wi-Fi device");
+
+       return QP_OK;
+}
+
+/****************************************************************************
+ *
+ * Quickpanel Item functions
+ *
+ ****************************************************************************/
+
+static int _init(void *data)
+{
+       int ret = QP_OK;
+
+       ret = _register_module_event_handler(data);
+
+       return ret;
+}
+
+static int _fini(void *data)
+{
+       int ret = QP_OK;
+
+       ret = _unregister_module_event_handler(data);
+
+       return ret;
+}
+
+static void _lang_changed(void *data)
+{
+       QP_Module_Setting *module = (QP_Module_Setting *)data;
+       retif(module == NULL, , "Invalid parameter!");
+
+       quickpanel_setting_module_icon_view_update_text(module);
+}
+
+static void _refresh(void *data)
+{
+       QP_Module_Setting *module = (QP_Module_Setting *)data;
+       retif(module == NULL, , "Invalid parameter!");
+
+       quickpanel_setting_module_icon_view_update_text(module);
+}
+
+static void _wifi_activated_cb(wifi_error_e result, void *user_data)
+{
+       if (result == WIFI_ERROR_NONE) {
+               /* succeed to turn on Wi-Fi */
+       } else {
+               /* failed to turn on Wi-Fi */
+       }
+}
+
+static void _wifi_deactivated_cb(wifi_error_e result, void* user_data)
+{
+       if (result == WIFI_ERROR_NONE) {
+               /* succeed to turn off Wi-Fi */
+       } else {
+               /* failed to turn off Wi-Fi */
+       }
+}
+
+static void _tethering_disabled_cb(tethering_error_e error, tethering_type_e type, tethering_disabled_cause_e code, void *data)
+{
+       int ret;
+       QP_Module_Setting *module = (QP_Module_Setting *)data;
+       retif(module == NULL, , "Invalid parameter!");
+
+       tethering_h th = (tethering_h)(module->loader->extra_handler_1);
+       retif(th == NULL, , "th is NULL");
+       tethering_destroy(th);
+       module->loader->extra_handler_1 = NULL;
+
+       if (error != TETHERING_ERROR_NONE) {
+               /* failed to disable wifi tethering */
+               return;
+       }
+
+       ret = wifi_activate_with_wifi_picker_tested(_wifi_activated_cb, NULL);
+       if (ret != WIFI_ERROR_NONE) {
+               ERR("Fail to activate Wi-Fi device [%d]\n", ret);
+               return;
+       }
+}
+
+static bool _tethering_disable(tethering_type_e type, void *data)
+{
+       tethering_h th = NULL;
+       tethering_error_e ret = TETHERING_ERROR_NONE;
+       QP_Module_Setting *module = (QP_Module_Setting *)data;
+
+       retif(module == NULL, false, "Invalid parameter!");
+
+       if (quickpanel_setting_module_is_icon_clickable(module) == 0) {
+               return false;
+       }
+
+       /* disable wifi tethering */
+       ret = tethering_create(&th);
+       if (ret != TETHERING_ERROR_NONE) {
+               /* failed to create tethering handle */
+               return false;
+       }
+
+       ret = tethering_set_disabled_cb(th, type,
+               _tethering_disabled_cb, module);
+       if (ret != TETHERING_ERROR_NONE) {
+               /* failed to set disabled callback */
+               tethering_destroy(th);
+               return false;
+       }
+
+       module->loader->extra_handler_1 = th;
+       quickpanel_setting_module_progress_mode_set(module, FLAG_ENABLE, FLAG_TURN_ON);
+       quickpanel_setting_module_icon_timer_add(module);
+
+       ret = tethering_disable(th, type);
+       if (ret != TETHERING_ERROR_NONE) {
+               ERR("fail to tethering_disable()");
+               return false;
+       }
+
+       return true;
+}
+
+static void _tethering_wifi_reply_cb(app_control_h request, app_control_h reply, app_control_result_e result, void *user_data)
+{
+       QP_Module_Setting *module = (QP_Module_Setting *) user_data;
+       char *resp_type = NULL;
+
+       DBG("Result[%d]", result);
+       if (result == APP_CONTROL_RESULT_SUCCEEDED && reply) {
+               app_control_get_extra_data(reply, "_SYSPOPUP_RESP_", &resp_type);
+               if (resp_type) {
+                       DBG("Response[%s]", resp_type);
+                       if (!strcmp("RESP_TETHERING_TYPE_WIFI_OFF", resp_type)) {
+                               _tethering_disable(TETHERING_TYPE_WIFI, user_data);
+                       } else if (!strcmp("RESP_TETHERING_TYPE_WIFI_AP_OFF", resp_type)) {
+                               _tethering_disable(TETHERING_TYPE_RESERVED, user_data);
+                       }
+
+                       free(resp_type);
+               }
+       }
+
+       _reset_icon(module);
+}
+
+static void _tethering_off_popup(Evas_Object *win, void *data, int type, const char *popup_txt)
+{
+       app_control_h service = NULL;
+       int ret = APP_CONTROL_ERROR_NONE;
+
+       ret = app_control_create(&service);
+       if (ret != APP_CONTROL_ERROR_NONE) {
+               ERR("Failed to create app_control[%d]", ret);
+               return;
+       }
+
+       app_control_add_extra_data(service, "_SYSPOPUP_TITLE_", "mobileap");
+       if (type == TETHERING_TYPE_WIFI) {
+               app_control_add_extra_data(service, "_SYSPOPUP_CONTENT_", "TETHERING_TYPE_WIFI");
+       } else {
+               app_control_add_extra_data(service, "_SYSPOPUP_CONTENT_", "TETHERING_TYPE_WIFI_AP");
+       }
+       app_control_add_extra_data(service, "_SYSPOPUP_TYPE_", "popup_user_resp");
+       app_control_add_extra_data(service, "_AP_NAME_", "none");
+
+       app_control_set_app_id(service, "net.netpopup");
+
+       ret = app_control_send_launch_request(service, _tethering_wifi_reply_cb, data);
+       if (ret != APP_CONTROL_ERROR_NONE) {
+               ERR("Failed to send launch request[%d]", ret);
+       }
+
+       app_control_destroy(service);
+}
+
+static int _wifi_on(void *data, const char *popup_txt)
+{
+       int ret = -1;
+       struct appdata *ad = quickpanel_get_app_data();
+       QP_Module_Setting *module = (QP_Module_Setting *)data;
+       retif(ad == NULL, ret, "Invalid parameter!");
+       retif(module == NULL, ret, "Invalid parameter!");
+
+       /* Check wifi tethering status */
+       if (tethering_is_enabled(NULL, TETHERING_TYPE_WIFI) == TRUE) {
+               _tethering_off_popup(ad->win, data, TETHERING_TYPE_WIFI, popup_txt);
+               return -1;
+       } else if (tethering_is_enabled(NULL, TETHERING_TYPE_RESERVED) == TRUE) {
+               _tethering_off_popup(ad->win, data, TETHERING_TYPE_RESERVED, popup_txt);
+               return -1;
+       }
+
+       ret = wifi_activate_with_wifi_picker_tested(_wifi_activated_cb, NULL);
+       if (ret != WIFI_ERROR_NONE) {
+               ERR("Fail to activate Wi-Fi device [%d]\n", ret);
+               return -1;
+       }
+
+       return 0;
+}
+
+static int _wifi_off(void)
+{
+       int ret;
+
+       ret = wifi_deactivate(_wifi_deactivated_cb, NULL);
+       if (ret != WIFI_ERROR_NONE) {
+               ERR("Fail to activate Wi-Fi device [%d]\n", ret);
+               return -1;
+       }
+
+       return 0;
+}
+
+static int _wifi_is_on(bool *is_on)
+{
+       int ret;
+
+       ret = wifi_is_activated(is_on);
+       if (ret != WIFI_ERROR_NONE) {
+               ERR("Fail to get Wi-Fi device status [%d]\n", ret);
+               return -1;
+       }
+
+       return 0;
+}
+
+/*
+       Set Wi-Fi status changed callback
+       - needs to update your Wi-Fi status.
+*/
+static void _wifi_state_changed_cb(wifi_device_state_e state, void *user_data)
+{
+       ERR("state:%d", state);
+
+       if (state == WIFI_DEVICE_STATE_ACTIVATED) {
+               /* Wi-Fi is activated(On) - change your Wi-Fi status */
+               _status_update(user_data, state, FLAG_VALUE_VOID);
+       } else if (state == WIFI_DEVICE_STATE_DEACTIVATED) {
+               /* Wi-Fi is deactivated(Off) - change your Wi-Fi status */
+               _status_update(user_data, state, FLAG_VALUE_VOID);
+       } else {
+               /* Ignore */
+       }
+}
+
+static void _reset_icon(QP_Module_Setting *module) {
+       retif(module == NULL, , "Invalid parameter!");
+
+       quickpanel_setting_module_progress_mode_set(module, FLAG_DISABLE, FLAG_VALUE_VOID);
+       _status_update(module, FLAG_VALUE_VOID, FLAG_VALUE_VOID);
+}
+
+static void _handler_on(void *data)
+{
+       int ret = 0;
+       QP_Module_Setting *module = (QP_Module_Setting *)data;
+       retif(module == NULL, , "Invalid parameter!");
+
+       quickpanel_setting_module_progress_mode_set(module, FLAG_DISABLE, FLAG_TURN_OFF);
+       quickpanel_setting_module_icon_timer_del(module);
+
+       if (quickpanel_setting_module_icon_state_get(module) == ICON_VIEW_STATE_OFF) {
+               ret = _wifi_on(module, _("IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"));
+
+               if (ret == 0) {
+                       quickpanel_setting_module_progress_mode_set(module, FLAG_ENABLE, FLAG_TURN_ON);
+                       quickpanel_setting_module_icon_timer_add(module);
+               } else {
+                       ERR("op failed:%d", ret);
+               }
+       } else {
+               ERR("the button is already turned on");
+               _reset_icon(module);
+       }
+}
+
+static void _handler_off(void *data)
+{
+       int ret = 0;
+       QP_Module_Setting *module = (QP_Module_Setting *)data;
+       retif(module == NULL, , "Invalid parameter!");
+
+       quickpanel_setting_module_progress_mode_set(module, FLAG_DISABLE, FLAG_TURN_OFF);
+       quickpanel_setting_module_icon_timer_del(module);
+
+       if (quickpanel_setting_module_icon_state_get(module) == ICON_VIEW_STATE_ON) {
+               ret = _wifi_off();
+
+               if (ret == 0) {
+                       quickpanel_setting_module_progress_mode_set(module, FLAG_ENABLE, FLAG_TURN_OFF);
+                       quickpanel_setting_module_icon_timer_add(module);
+               } else {
+                       ERR("op failed:%d", ret);
+               }
+       } else {
+               ERR("the button is already turned off");
+               _reset_icon(module);
+       }
+}
+
+static void _handler_progress_on(void *data)
+{
+       QP_Module_Setting *module = (QP_Module_Setting *)data;
+       retif(module == NULL, , "Invalid parameter!");
+
+       quickpanel_setting_module_progress_mode_set(module, FLAG_ENABLE, FLAG_VALUE_VOID);
+}
+
+static void _handler_progress_off(void *data)
+{
+       QP_Module_Setting *module = (QP_Module_Setting *)data;
+       retif(module == NULL, , "Invalid parameter!");
+
+       _reset_icon(module);
+}
+
+static int _handler_ipc(const char *command, void *data)
+{
+       int i = 0;
+       retif(data == NULL, EINA_FALSE, "item data is NULL");
+       retif(command == NULL, EINA_FALSE, "command is NULL");
+
+       static Setting_Activity_Handler __table_handler[] = {
+               {
+                       .command = "on",
+                       .handler = _handler_on,
+               },
+               {
+                       .command = "off",
+                       .handler = _handler_off,
+               },
+               {
+                       .command = "progress_on",
+                       .handler = _handler_progress_on,
+               },
+               {
+                       .command = "progress_off",
+                       .handler = _handler_progress_off,
+               },
+               {
+                       .command = NULL,
+                       .handler = NULL,
+               },
+       };
+
+       for (i = 0; __table_handler[i].command; i++) {
+               if (strcasecmp(__table_handler[i].command, command)) {
+                       continue;
+               }
+
+               if (__table_handler[i].handler != NULL) {
+                       DBG("process:%s", command);
+                       __table_handler[i].handler(data);
+               }
+               break;
+       }
+
+       return EINA_TRUE;
+}
+
+QP_Module_Setting wifi = {
+       .name                           = "wifi",
+       .init                           = _init,
+       .fini                           = _fini,
+       .lang_changed           = _lang_changed,
+       .refresh                        = _refresh,
+       .icon_get                       = _icon_get,
+       .label_get                      = _label_get,
+       .view_update        = _view_update,
+       .status_update          = _status_update,
+       .handler_longpress      = _long_press_cb,
+       .handler_ipc        = _handler_ipc,
+       .handler_press          = _mouse_clicked_cb,
+};
diff --git a/daemon/settings/setting_module_api.c b/daemon/settings/setting_module_api.c
new file mode 100644 (file)
index 0000000..b7f1cfe
--- /dev/null
@@ -0,0 +1,291 @@
+/*
+ * 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 "common.h"
+#include "quickpanel_def.h"
+#include "quickpanel-ui.h"
+#include "settings.h"
+#include "setting_utils.h"
+#ifdef QP_SCREENREADER_ENABLE
+#include "accessibility.h"
+#endif
+#include "setting_module_api.h"
+
+#define E_DATA_CONTAINER_TYPE "container_type"
+
+static qp_setting_icon_container_type
+_icon_container_type_get(Evas_Object *view)
+{
+       retif(view == NULL, QP_SETTING_ICON_CONTAINER_NONE, "invalid parameter");
+
+       return (qp_setting_icon_container_type)evas_object_data_get(view, E_DATA_CONTAINER_TYPE);
+}
+
+static void _icon_view_add(QP_Module_Setting *module, Evas_Object *view
+               ,qp_setting_icon_container_type container_type)
+{
+       retif(module == NULL, , "invalid parameter");
+       retif(view == NULL, , "invalid parameter");
+
+       if (eina_list_data_find(module->view_list, view) == NULL) {
+               evas_object_data_set(view, E_DATA_CONTAINER_TYPE, (void *)container_type);
+               module->view_list = eina_list_append(module->view_list, view);
+       }
+}
+
+static void _icon_view_del(QP_Module_Setting *module, Evas_Object *view)
+{
+       retif(module == NULL, , "invalid parameter");
+       retif(view == NULL, , "invalid parameter");
+
+       module->view_list = eina_list_remove(module->view_list, view);
+}
+
+HAPI Evas_Object *quickpanel_setting_module_icon_create(QP_Module_Setting *module, Evas_Object *parent)
+{
+       Evas_Object *view = NULL;
+       retif(module == NULL, NULL, "invalid parameter");
+       retif(parent == NULL, NULL, "invalid parameter");
+
+       view = quickpanel_setting_icon_new(parent);
+       retif(view == NULL, NULL, "failed to create icon");
+
+       if (module->label_get != NULL) {
+               quickpanel_setting_icon_text_set(view, module->label_get(), ICON_VIEW_STATE_OFF);
+       }
+       if (module->handler_press != NULL) {
+               if (module->is_disable_feedback) {
+                       quickpanel_setting_icon_click_cb_without_feedback_add(view, module->handler_press, module);
+               } else {
+                       quickpanel_setting_icon_click_cb_add(view, module->handler_press, module);
+               }
+       }
+       evas_object_data_set(view, E_DATA_MODULE_INFO, module);
+       evas_object_show(view);
+
+       return view;
+}
+
+HAPI QP_Module_Setting *quickpanel_setting_module_get_from_icon(Evas_Object *icon)
+{
+       return evas_object_data_get(icon, E_DATA_MODULE_INFO);
+}
+
+HAPI void quickpanel_setting_module_icon_add(QP_Module_Setting *module, Evas_Object *icon,
+               qp_setting_icon_container_type container_type)
+{
+       _icon_view_add(module, icon, container_type);
+}
+
+HAPI Evas_Object *quickpanel_setting_module_icon_get(QP_Module_Setting *module,
+               qp_setting_icon_container_type container_type)
+{
+       Eina_List *l;
+       Eina_List *l_next;
+       Evas_Object *view = NULL;
+       retif(module == NULL, NULL, "invalid parameter");
+
+       if (module->view_update != NULL) {
+               EINA_LIST_FOREACH_SAFE(module->view_list, l, l_next, view) {
+                       if (_icon_container_type_get(view) == container_type) {
+                               return view;
+                       }
+               }
+       }
+
+       return NULL;
+}
+
+HAPI void quickpanel_setting_module_icon_remove(QP_Module_Setting *module, Evas_Object *icon)
+{
+       _icon_view_del(module, icon);
+}
+
+HAPI void quickpanel_setting_module_icon_state_set(QP_Module_Setting *module, int state)
+{
+       retif(module == NULL, , "invalid parameter");
+       retif(module->loader == NULL, , "invalid parameter");
+
+       module->loader->state = state;
+}
+
+HAPI int quickpanel_setting_module_icon_state_get(QP_Module_Setting *module)
+{
+       retif(module == NULL, FLAG_TURN_OFF, "invalid parameter");
+       retif(module->loader == NULL, FLAG_TURN_OFF, "invalid parameter");
+
+       return module->loader->state;
+}
+
+HAPI void quickpanel_setting_module_icon_view_update(QP_Module_Setting *module, int flag_extra_1, int flag_extra_2)
+{
+       Eina_List *l;
+       Eina_List *l_next;
+       Evas_Object *view = NULL;
+       retif(module == NULL, , "invalid parameter");
+
+       int status = quickpanel_setting_module_icon_state_get(module);
+
+       if (module->view_update != NULL) {
+               EINA_LIST_FOREACH_SAFE(module->view_list, l, l_next, view) {
+                       module->view_update(view, status, flag_extra_1, flag_extra_2);
+               }
+       }
+}
+
+HAPI void quickpanel_setting_module_icon_view_update_text(QP_Module_Setting *module)
+{
+       Eina_List *l;
+       Eina_List *l_next;
+       Evas_Object *view = NULL;
+       retif(module == NULL, , "invalid parameter");
+
+       if (module->view_update != NULL && module->label_get != NULL) {
+               EINA_LIST_FOREACH_SAFE(module->view_list, l, l_next, view) {
+                       quickpanel_setting_icon_text_set(view, module->label_get(), quickpanel_setting_module_icon_state_get(module));
+               }
+       }
+}
+
+HAPI void quickpanel_setting_module_icon_status_update(QP_Module_Setting *module, int flag_extra_1, int flag_extra_2)
+{
+       retif(module == NULL, , "invalid parameter");
+
+       if (module->status_update != NULL) {
+               module->status_update(module, flag_extra_1, flag_extra_2);
+       }
+}
+
+HAPI int quickpanel_setting_module_is_icon_clickable(QP_Module_Setting *module)
+{
+       retif(module == NULL, 0, "invalid parameter");
+       retif(module->loader == NULL, 0, "invalid parameter");
+
+       if (module->loader->timer != NULL) {
+               return 0;
+       }
+       if (module->loader->state_icon == STATE_ICON_BUSY) {
+               return 0;
+       }
+
+       return 1;
+}
+
+static Eina_Bool _timer_expire_cb(void *data)
+{
+       retif(data == NULL, ECORE_CALLBACK_CANCEL, "invalid parameter");
+
+       quickpanel_setting_module_icon_timer_del(data);
+       quickpanel_setting_module_icon_status_update(data, FLAG_VALUE_VOID, FLAG_VALUE_VOID);
+
+       return ECORE_CALLBACK_CANCEL;
+}
+
+HAPI void quickpanel_setting_module_icon_timer_add(QP_Module_Setting *module)
+{
+       retif(module == NULL, , "invalid parameter");
+       retif(module->loader == NULL, , "invalid parameter");
+
+       quickpanel_setting_module_icon_timer_del(module);
+       module->loader->timer = ecore_timer_add(TIMER_COUNT, _timer_expire_cb, module);
+}
+
+HAPI void quickpanel_setting_module_icon_timer_del(QP_Module_Setting *module)
+{
+       retif(module == NULL, , "invalid parameter");
+       retif(module->loader == NULL, , "invalid parameter");
+
+       if (module->loader->timer != NULL) {
+               ecore_timer_del(module->loader->timer);
+               module->loader->timer = NULL;
+       }
+}
+
+#ifdef __PROGRESSBAR_ENABLED__
+static Evas_Object *_progressbar_get(Evas_Object *parent)
+{
+       Evas_Object *content = NULL;
+
+       content = elm_progressbar_add(parent);
+       retif(!content, NULL, "fail to elm_progressbar_add");
+
+       elm_object_style_set(content, "quickpanel_style");
+       evas_object_size_hint_weight_set(content,
+                       EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       elm_progressbar_pulse(content, EINA_TRUE);
+       evas_object_show(content);
+
+       return content;
+}
+
+static void _progressbar_set(Evas_Object *view, int is_enable, int is_request_on)
+{
+       Evas_Object *content = NULL;
+       Evas_Object *content_old = NULL;
+       retif(view == NULL, , "invalid parameter");
+
+       if (is_enable == FLAG_ENABLE) {
+               content_old = quickpanel_setting_icon_content_get(view);
+               if (content_old != NULL) {
+                       evas_object_del(content_old);
+                       content_old = NULL;
+               }
+               content = _progressbar_get(view);
+               quickpanel_setting_icon_content_set(view, content);
+
+               quickpanel_setting_icon_state_progress_set(view);
+               quickpanel_setting_icon_state_set(view, ICON_VIEW_STATE_DIM);
+       }
+}
+#endif
+
+HAPI void quickpanel_setting_module_progress_mode_set(QP_Module_Setting *module, int is_enable, int is_request_on)
+{
+       Eina_List *l;
+       Eina_List *l_next;
+       Evas_Object *view = NULL;
+       retif(module == NULL, , "invalid parameter");
+       retif(module->loader == NULL, , "invalid parameter");
+
+       EINA_LIST_FOREACH_SAFE(module->view_list, l, l_next, view) {
+#ifdef __PROGRESSBAR_ENABLED__
+               _progressbar_set(view, is_enable, is_request_on);
+#else
+               if (is_enable) {
+                       quickpanel_setting_icon_state_progress_set(view);
+               }
+#endif
+       }
+
+       if (is_enable == FLAG_ENABLE) {
+               module->loader->state_icon = STATE_ICON_BUSY;
+       } else {
+               module->loader->state_icon = STATE_ICON_IDLE;
+       }
+}
+
+HAPI void quickpanel_setting_module_icon_destroy(QP_Module_Setting *module, Evas_Object *icon)
+{
+       retif(module == NULL, , "invalid parameter");
+       retif(icon == NULL, , "invalid parameter");
+
+       _icon_view_del(module, icon);
+       quickpanel_setting_icon_click_cb_del(icon, module->handler_press);
+       evas_object_del(icon);
+       icon = NULL;
+}
diff --git a/daemon/settings/setting_module_api.h b/daemon/settings/setting_module_api.h
new file mode 100644 (file)
index 0000000..39ae152
--- /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 __SETTING_MODULE_API_H__
+#define __SETTING_MODULE_API_H__
+
+#include <Elementary.h>
+#include "settings.h"
+
+#define FLAG_VALUE_VOID 0xDEADDEAD
+
+#define FLAG_ENABLE 1
+#define FLAG_DISABLE 0
+
+#define FLAG_TURN_ON 1
+#define FLAG_TURN_OFF 0
+
+typedef enum _qp_setting_icon_container_type {
+       QP_SETTING_ICON_CONTAINER_NONE = -1,
+       QP_SETTING_ICON_CONTAINER_FEATURED = 0,
+       QP_SETTING_ICON_CONTAINER_ALL_LIST,
+} qp_setting_icon_container_type;
+
+Evas_Object *quickpanel_setting_module_icon_create(QP_Module_Setting *module, Evas_Object *parent);
+void quickpanel_setting_module_icon_add(QP_Module_Setting *module, Evas_Object *icon, qp_setting_icon_container_type container_type);
+void quickpanel_setting_module_icon_remove(QP_Module_Setting *module, Evas_Object *icon);
+void quickpanel_setting_module_icon_state_set(QP_Module_Setting *module, int state);
+int quickpanel_setting_module_icon_state_get(QP_Module_Setting *module);
+Evas_Object *quickpanel_setting_module_icon_get(QP_Module_Setting *module,
+               qp_setting_icon_container_type container_type);
+void quickpanel_setting_module_icon_view_update(QP_Module_Setting *module, int flag_extra_1, int flag_extra_2);
+void quickpanel_setting_module_icon_view_update_text(QP_Module_Setting *module);
+void quickpanel_setting_module_icon_status_update(QP_Module_Setting *module, int flag_extra_1, int flag_extra_2);
+int quickpanel_setting_module_is_icon_clickable(QP_Module_Setting *module);
+void quickpanel_setting_module_icon_timer_add(QP_Module_Setting *module);
+void quickpanel_setting_module_icon_timer_del(QP_Module_Setting *module);
+void quickpanel_setting_module_progress_mode_set(QP_Module_Setting *module, int is_enable, int is_request_on);
+void quickpanel_setting_module_icon_destroy(QP_Module_Setting *module, Evas_Object *icon);
+
+QP_Module_Setting *quickpanel_setting_module_get_from_icon(Evas_Object *icon);
+
+#endif /* __SETTING_MODULE_API_H__ */
diff --git a/daemon/settings/setting_utils.c b/daemon/settings/setting_utils.c
new file mode 100644 (file)
index 0000000..e2ca27b
--- /dev/null
@@ -0,0 +1,632 @@
+/*
+ * 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 <glib.h>
+#include <efl_assist.h>
+#include <notification.h>
+
+#include "common.h"
+#include "quickpanel_def.h"
+#include "quickpanel-ui.h"
+#include "setting_utils.h"
+#ifdef QP_SCREENREADER_ENABLE
+#include "accessibility.h"
+#endif
+
+#define DEFAULT_EDJ            EDJDIR"/"PACKAGE".edj"
+#define _EDJ(o) elm_layout_edje_get(o)
+
+#define TEXT_LEN 128
+#define QP_SETTING_INITIAL_PAGE_NUM 0
+#define DIVIDER_MAGIC 0xCAFECAFE
+#define E_DATA_DIVIDER_MAGIC "divider_magic"
+
+static inline void __escaped_text_set(Evas_Object *obj,
+                       const char *part, const char *text)
+{
+       char buf[256] = {0,};
+       char *ecaped = NULL;
+
+       if (!obj) {
+               return;
+       }
+
+       if (!part) {
+               return;
+       }
+
+       strncpy(buf, text, sizeof(buf) - 1);
+       quickpanel_common_util_char_trim(buf);
+       ecaped = evas_textblock_text_utf8_to_markup(NULL, buf);
+
+       elm_object_part_text_set(obj, part, ecaped);
+
+       if (ecaped) {
+               free(ecaped);
+       }
+}
+
+HAPI int quickpanel_setting_icon_text_set(Evas_Object *icon, const char *text, int state)
+{
+       retif(icon == NULL, QP_FAIL, "invalid parameter");
+       retif(text == NULL, QP_FAIL, "invalid parameter");
+
+       __escaped_text_set(icon, "icon.text", text);
+
+#ifdef QP_SCREENREADER_ENABLE
+       char buf[256] = {0,};
+       Evas_Object *ao = NULL;
+
+       ao = quickpanel_accessibility_screen_reader_object_get(icon,
+                       SCREEN_READER_OBJ_TYPE_ELM_OBJECT, "focus", icon);
+       if (ao != NULL) {
+               elm_access_info_set(ao, ELM_ACCESS_TYPE, _NOT_LOCALIZED("Button"));
+               strncpy(buf, text, sizeof(buf) - 1);
+               quickpanel_common_util_char_replace(buf, '\n', ' ');
+               elm_access_info_set(ao, ELM_ACCESS_INFO, buf);
+       }
+
+       ao = quickpanel_accessibility_screen_reader_object_get(icon,
+                       SCREEN_READER_OBJ_TYPE_ELM_OBJECT, "focus", icon);
+       if (ao != NULL) {
+               if (state == ICON_VIEW_STATE_ON) {
+                       elm_access_info_set(ao, ELM_ACCESS_STATE, _NOT_LOCALIZED("On"));
+               } else if (state == ICON_VIEW_STATE_DIM) {
+                       elm_access_info_set(ao, ELM_ACCESS_STATE, _NOT_LOCALIZED("Turned off"));
+               } else if (state == ICON_VIEW_STATE_OFF) {
+                       elm_access_info_set(ao, ELM_ACCESS_STATE, _NOT_LOCALIZED("Off"));
+               }
+       }
+#endif
+
+       return QP_OK;
+}
+
+HAPI void quickpanel_setting_icon_access_text_set(Evas_Object *icon, const char *text)
+{
+#ifdef QP_SCREENREADER_ENABLE
+       char buf[256] = {0,};
+       Evas_Object *ao = NULL;
+#endif
+
+       retif(icon == NULL, , "invalid parameter");
+       retif(text == NULL, , "invalid parameter");
+
+#ifdef QP_SCREENREADER_ENABLE
+       ao = quickpanel_accessibility_screen_reader_object_get(icon,
+                       SCREEN_READER_OBJ_TYPE_ELM_OBJECT, "focus", icon);
+       if (ao != NULL) {
+               elm_access_info_set(ao, ELM_ACCESS_TYPE, _NOT_LOCALIZED("Button"));
+               strncpy(buf, text, sizeof(buf) - 1);
+               quickpanel_common_util_char_replace(buf, '\n', ' ');
+               elm_access_info_set(ao, ELM_ACCESS_INFO, buf);
+       }
+#endif
+}
+
+HAPI Evas_Object *quickpanel_setting_icon_content_get(Evas_Object *icon)
+{
+       retif(icon == NULL, NULL, "invalid parameter");
+
+       struct appdata *ad = (struct appdata*)quickpanel_get_app_data();
+       retif(ad == NULL, NULL, "application data is NULL");
+
+       return elm_object_part_content_get(icon, "icon.swallow.wvga");
+}
+
+HAPI int quickpanel_setting_icon_content_set(Evas_Object *icon, Evas_Object *content)
+{
+       retif(icon == NULL, QP_FAIL, "invalid parameter");
+       retif(content == NULL, QP_FAIL, "invalid parameter");
+
+       struct appdata *ad = (struct appdata*)quickpanel_get_app_data();
+       retif(ad == NULL, QP_FAIL, "application data is NULL");
+
+       elm_object_part_content_set(icon, "icon.swallow.wvga", content);
+
+       return QP_OK;
+}
+
+HAPI int quickpanel_setting_icon_state_set(Evas_Object *icon, int state)
+{
+#ifdef QP_SCREENREADER_ENABLE
+       Evas_Object *ao = NULL;
+#endif
+       retif(icon == NULL, -1, "invalid parameter");
+       SERR("icon:%p state:%d", icon, state);
+
+#ifdef QP_SCREENREADER_ENABLE
+       ao = quickpanel_accessibility_screen_reader_object_get(icon,
+                       SCREEN_READER_OBJ_TYPE_ELM_OBJECT, "focus", icon);
+       if (ao != NULL) {
+               if (state == ICON_VIEW_STATE_ON) {
+                       elm_access_info_set(ao, ELM_ACCESS_STATE, _NOT_LOCALIZED("On"));
+               } else if (state == ICON_VIEW_STATE_DIM) {
+                       elm_access_info_set(ao, ELM_ACCESS_STATE, _NOT_LOCALIZED("Turned off"));
+               } else if (state == ICON_VIEW_STATE_OFF) {
+                       elm_access_info_set(ao, ELM_ACCESS_STATE, _NOT_LOCALIZED("Off"));
+               }
+       }
+#endif
+
+       if (state == ICON_VIEW_STATE_ON) {
+               elm_object_signal_emit(icon, "icon.on", "quickpanl.prog");
+       } else if (state == ICON_VIEW_STATE_DIM) {
+               elm_object_signal_emit(icon, "icon.dim", "quickpanl.prog");
+       } else {
+               elm_object_signal_emit(icon, "icon.off", "quickpanl.prog");
+       }
+
+       edje_object_message_signal_process(_EDJ(icon));
+
+       return 0;
+}
+
+HAPI int quickpanel_setting_icon_state_progress_set(Evas_Object *icon)
+{
+       retif(icon == NULL, -1, "invalid parameter");
+
+       elm_object_signal_emit(icon, "icon.progress", "quickpanl.prog");
+       edje_object_message_signal_process(_EDJ(icon));
+
+       return 0;
+}
+
+HAPI Evas_Object *quickpanel_setting_icon_new(Evas_Object *parent)
+{
+       const char *signal = NULL;
+       Evas_Object *icon = NULL;
+       retif(parent == NULL, NULL, "invalid parameter");
+
+       struct appdata *ad = quickpanel_get_app_data();
+       retif(ad == NULL, EINA_FALSE, "invalid data.");
+
+       icon = elm_layout_add(parent);
+       retif(!icon, NULL, "fail to add layout");
+
+       elm_layout_file_set(icon, DEFAULT_EDJ, "quickpanel/setting_icon_wvga");
+
+       evas_object_size_hint_weight_set(icon,
+                       EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       elm_object_signal_emit(icon, "icon.off", "quickpanl.prog");
+
+       Evas_Object *focus = quickpanel_accessibility_ui_get_focus_object(icon);
+       elm_object_part_content_set(icon, "focus", focus);
+
+       if (ad->angle == 0 || ad->angle == 180) {
+               signal = "icon.portrait";
+       } else {
+               signal = "icon.landscape";
+       }
+
+       elm_object_signal_emit(icon, signal, "quickpanl.prog");
+       edje_object_message_signal_process(_EDJ(icon));
+
+       return icon;
+}
+
+HAPI Evas_Object *quickpanel_setting_icon_image_new(Evas_Object *parent, const char *img_path)
+{
+       Evas_Object *content = NULL;
+       retif(parent == NULL, NULL, "invalid parameter");
+       retif(img_path == NULL, NULL, "invalid parameter");
+
+       content = elm_image_add(parent);
+       retif(content == NULL, NULL, "failed to create image");
+
+       if (!elm_image_file_set(content, DEFAULT_EDJ, img_path)) {
+               ERR("fail to set file[%s]", img_path);
+               evas_object_del(content);
+               content = NULL;
+               return NULL;
+       }
+
+       return content;
+}
+
+HAPI static Evas_Object *quickpanel_setting_container_get(Evas_Object *base)
+{
+       Evas_Object *container = NULL;
+       retif(base == NULL, NULL, "invalid parameter");
+
+       container = elm_object_part_content_get(base, QP_SETTING_BASE_PART);
+
+       return container;
+}
+
+HAPI Evas_Object *quickpanel_setting_scroller_get(Evas_Object *base)
+{
+       Evas_Object *container = NULL;
+       Evas_Object *scroller = NULL;
+       retif(base == NULL, NULL, "invalid parameter");
+
+       struct appdata *ad = (struct appdata*)quickpanel_get_app_data();
+       retif(ad == NULL, NULL, "application data is NULL");
+
+       container = quickpanel_setting_container_get(base);
+
+       scroller = elm_object_part_content_get(container, QP_SETTING_SCROLLER_PART_WVGA);
+
+       retif(scroller == NULL, NULL, "invalid parameter");
+
+       return scroller;
+}
+
+HAPI Evas_Object *quickpanel_setting_box_get_from_scroller(Evas_Object *base)
+{
+       Evas_Object *scroller = NULL;
+       Evas_Object *box = NULL;
+       retif(base == NULL, NULL, "invalid parameter");
+
+       scroller = quickpanel_setting_scroller_get(base);
+       retif(scroller == NULL, NULL, "invalid parameter");
+
+       box = elm_object_content_get(scroller);
+
+       return box;
+}
+
+
+HAPI Evas_Object *quickpanel_setting_box_get(Evas_Object *base)
+{
+       Evas_Object *container = NULL;
+       Evas_Object *box = NULL;
+       retif(base == NULL, NULL, "invalid parameter");
+
+       container = quickpanel_setting_container_get(base);
+       retif(container == NULL, NULL, "invalid parameter");
+       box = elm_object_part_content_get(container, QP_SETTING_SCROLLER_PART_WVGA);
+
+       return box;
+}
+
+
+HAPI int quickpanel_setting_container_rotation_set(Evas_Object *base, int angle)
+{
+       Evas_Object *container = NULL;
+       const char *signal = NULL;
+
+       retif(!base, -1, "base is NULL");
+       retif(angle < 0, -1, "angle is %d", angle);
+
+       container = quickpanel_setting_container_get(base);
+       retif(!container, -1, "box is NULL");
+
+       if (angle % 180 == 0) {
+               signal = "portrait";
+       } else {
+               signal = "landscape";
+       }
+
+       elm_object_signal_emit(container, signal, "background");
+       edje_object_message_signal_process(_EDJ(container));
+
+       return 0;
+}
+
+HAPI int quickpanel_setting_icons_rotation_set(Evas_Object *base, int angle)
+{
+       Evas_Object *box = NULL;
+       Evas_Object *icon = NULL;
+       Eina_List *icons = NULL;
+       Eina_List *l = NULL;
+       const char *signal = NULL;
+
+       retif(!base, -1, "base is NULL");
+       retif(angle < 0, -1, "angle is %d", angle);
+
+       box = quickpanel_setting_box_get(base);
+       retif(!box, -1, "box is NULL");
+
+       icons = elm_box_children_get(box);
+       retif(!icons, -1, "icons list is NULL");
+
+       if (angle % 180 == 0) {
+               signal = "icon.portrait";
+       } else {
+               signal = "icon.landscape";
+       }
+
+       EINA_LIST_FOREACH(icons, l, icon) {
+               elm_object_signal_emit(icon, signal, "quickpanl.prog");
+               edje_object_message_signal_process(_EDJ(icon));
+       }
+
+       eina_list_free(icons);
+
+       return 0;
+}
+
+HAPI void quickpanel_setting_icons_emit_sig(Evas_Object *icon, const char *signal)
+{
+       retif(!icon, , "icon is NULL");
+       retif(!signal, , "icon is NULL");
+
+       elm_object_signal_emit(icon, signal, "quickpanl.prog");
+       edje_object_message_signal_process(_EDJ(icon));
+}
+
+HAPI int quickpanel_setting_icons_dragging_set(Evas_Object *icon, int is_on)
+{
+       const char *signal = NULL;
+       retif(!icon, QP_FAIL, "icon is NULL");
+
+       if (is_on == 1) {
+               signal = "dragging.on";
+       } else {
+               signal = "dragging.off";
+       }
+
+       elm_object_signal_emit(icon, signal, "quickpanl.prog");
+       edje_object_message_signal_process(_EDJ(icon));
+
+       return QP_OK;
+}
+
+HAPI int quickpanel_setting_icons_screen_mode_set(Evas_Object *icon, int screen_mode)
+{
+       const char *signal = NULL;
+       retif(!icon, QP_FAIL, "icon is NULL");
+
+       if (screen_mode == 0) {
+               signal = "icon.portrait";
+       } else {
+               signal = "icon.landscape";
+       }
+
+       elm_object_signal_emit(icon, signal, "quickpanl.prog");
+       edje_object_message_signal_process(_EDJ(icon));
+
+       return QP_OK;
+}
+
+HAPI int quickpanel_setting_icon_pack(Evas_Object *box, Evas_Object *icon, int is_attach_divider)
+{
+       retif(box == NULL, QP_FAIL, "box is NULL");
+
+       elm_box_pack_end(box, icon);
+
+       return QP_OK;
+}
+
+HAPI void quickpanel_setting_icon_unpack_all(Evas_Object *box)
+{
+       Eina_List *l;
+       Eina_List *l_next;
+       Evas_Object *node = NULL;
+       Eina_List *list = NULL;
+       retif(box == NULL, , "invalid parameter");
+
+       list = elm_box_children_get(box);
+       retif(list == NULL, , "empty list");
+
+       elm_box_unpack_all(box);
+
+       EINA_LIST_FOREACH_SAFE(list, l, l_next, node) {
+               if (node != NULL) {
+                       if (evas_object_data_get(node, E_DATA_DIVIDER_MAGIC) == (void *)DIVIDER_MAGIC) {
+                               evas_object_del(node);
+                               node = NULL;
+                       }
+               }
+       }
+
+       eina_list_free(list);
+}
+
+HAPI int quickpanel_setting_scroll_page_get(void *data)
+{
+       int page_h = 0x99;
+       struct appdata *ad = NULL;
+       retif(data == NULL, QP_FAIL, "Invalid parameter!");
+
+       ad = data;
+       retif(!ad->ly, QP_FAIL, "layout is NULL!");
+
+       Evas_Object *scroller = quickpanel_setting_scroller_get(ad->ly);
+       elm_scroller_current_page_get(scroller, &page_h, NULL);
+
+       return page_h;
+}
+
+HAPI int quickpanel_setting_set_scroll_page_width(void *data)
+{
+       struct appdata *ad = NULL;
+       retif(data == NULL, QP_FAIL, "Invalid parameter!");
+
+       ad = data;
+       retif(!ad->ly, QP_FAIL, "layout is NULL!");
+
+       Evas_Object *scroller = quickpanel_setting_scroller_get(ad->ly);
+
+       int w, h;
+#if HAVE_X
+       Ecore_X_Screen *screen = ecore_x_default_screen_get();
+       ecore_x_screen_size_get(screen, &w, &h);
+#else
+       elm_win_screen_size_get(ad->win, NULL, NULL, &w, &h);
+#endif
+       elm_scroller_page_size_set(scroller, w / QP_SETTING_NUM_PORTRAIT_ICONS, 0);
+
+       return 0;
+}
+
+HAPI int quickpanel_setting_start(Evas_Object *base)
+{
+       Evas_Object *scroller = NULL;
+       retif(base == NULL, QP_FAIL, "Invalid parameter!");
+
+       scroller = quickpanel_setting_scroller_get(base);
+       retif(scroller == NULL, QP_FAIL, "Invalid parameter!");
+
+       elm_scroller_page_bring_in(scroller, 0, 0);
+
+       return QP_OK;
+}
+
+HAPI int quickpanel_setting_stop(Evas_Object *base, int is_bring_in)
+{
+       int page = QP_SETTING_INITIAL_PAGE_NUM;
+       Evas_Object *scroller = NULL;
+       retif(base == NULL, QP_FAIL, "Invalid parameter!");
+
+       scroller = quickpanel_setting_scroller_get(base);
+       retif(scroller == NULL, QP_FAIL, "Invalid parameter!");
+
+       if (is_bring_in == 1) {
+               elm_scroller_page_bring_in(scroller, page, 0);
+       } else {
+               elm_scroller_page_show(scroller, page, 0);
+       }
+
+       return QP_OK;
+}
+
+HAPI int quickpanel_setting_layout_set(Evas_Object *base, Evas_Object *setting)
+{
+       retif(base == NULL, QP_FAIL, "Invalid parameter!");
+       retif(setting == NULL, QP_FAIL, "Invalid parameter!");
+
+       elm_object_part_content_set(base, QP_SETTING_BASE_PART, setting);
+
+       return 0;
+}
+
+HAPI Evas_Object *quickpanel_setting_layout_get(Evas_Object *base, const char *setting_part)
+{
+       retif(base == NULL, NULL, "Invalid parameter!");
+       retif(setting_part == NULL, NULL, "Invalid parameter!");
+
+       return elm_object_part_content_get(base, setting_part);
+}
+
+HAPI int quickpanel_setting_layout_remove(Evas_Object *base)
+{
+       Evas_Object *container = NULL;
+       Evas_Object *scroller = NULL;
+       Evas_Object *box = NULL;
+       retif(base == NULL, QP_FAIL, "Invalid parameter!");
+
+       container = quickpanel_setting_container_get(base);
+       scroller = quickpanel_setting_scroller_get(base);
+       box = quickpanel_setting_box_get(base);
+
+       if (box) {
+               elm_box_clear(box);
+               evas_object_del(box);
+               box = NULL;
+       }
+       if (scroller) {
+               evas_object_del(scroller);
+               scroller = NULL;
+       }
+       if (container) {
+               evas_object_del(container);
+               container = NULL;
+       }
+
+       return QP_OK;
+}
+
+HAPI void quickpanel_setting_create_confirm_popup(
+                                       Evas_Object *parent,
+                                       char *title,
+                                       char *text,
+                                       Evas_Smart_Cb func)
+{
+       Evas_Object *popup = elm_popup_add(parent);
+       Evas_Object *btn = NULL;
+
+       if (popup == NULL) {
+               return;
+       }
+
+       evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND,
+                                        EVAS_HINT_EXPAND);
+
+       if (title) {
+               elm_object_part_text_set(popup, "title,text", title);
+       }
+
+       if (text) {
+               elm_object_text_set(popup, text);
+       }
+
+       btn = elm_button_add(popup);
+       elm_object_style_set(btn, "popup");
+       elm_object_text_set(btn, _("IDS_ST_SK_OK"));
+       elm_object_part_content_set(popup, "button1", btn);
+       evas_object_smart_callback_add(btn, "clicked", func, popup);
+
+       evas_object_show(popup);
+       quickpanel_common_ui_set_current_popup(popup, func);
+}
+
+HAPI void quickpanel_setting_create_2button_confirm_popup(
+                                       Evas_Object *parent,
+                                       char *title,
+                                       char *text,
+                                       char *btn1_text,
+                                       Evas_Smart_Cb btn1_func,
+                                       char *btn2_text,
+                                       Evas_Smart_Cb btn2_func)
+{
+       Evas_Object *popup = elm_popup_add(parent);
+       Evas_Object *btn = NULL;
+
+       if (popup == NULL) {
+               return;
+       }
+
+       evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND,
+                                        EVAS_HINT_EXPAND);
+
+       if (title) {
+               elm_object_part_text_set(popup, "title,text", title);
+       }
+
+       if (text) {
+               elm_object_text_set(popup, text);
+       }
+
+       if (btn1_func != NULL && btn1_text != NULL) {
+               btn = elm_button_add(popup);
+               elm_object_style_set(btn, "popup");
+               elm_object_text_set(btn, btn1_text);
+               elm_object_part_content_set(popup, "button1", btn);
+               evas_object_smart_callback_add(btn, "clicked", btn1_func, popup);
+       }
+       if (btn2_func != NULL && btn2_text != NULL) {
+               btn = elm_button_add(popup);
+               elm_object_style_set(btn, "popup");
+               elm_object_text_set(btn, btn2_text);
+               elm_object_part_content_set(popup, "button2", btn);
+               evas_object_smart_callback_add(btn, "clicked", btn2_func, popup);
+       }
+
+       evas_object_show(popup);
+       quickpanel_common_ui_set_current_popup(popup, btn1_func);
+}
+
+HAPI void
+quickpanel_setting_create_timeout_popup(Evas_Object *parent, char *msg)
+{
+       retif(msg == NULL, , "invalid parameter");
+
+       notification_status_message_post(msg);
+}
diff --git a/daemon/settings/setting_utils.h b/daemon/settings/setting_utils.h
new file mode 100644 (file)
index 0000000..300c585
--- /dev/null
@@ -0,0 +1,73 @@
+/*
+ * 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 __SETTING_UTILS_H__
+#define __SETTING_UTILS_H__
+
+#include <Elementary.h>
+#include "settings.h"
+
+#define TIMER_CONTINUE 1
+#define TIMER_STOP     0
+#define TIMER_COUNT    10
+
+#define QP_SETTING_BASE_PART "qp.base.setting.swallow"
+#define QP_SETTING_SCROLLER_PART_HD "setting.container.swallow.hd"
+#define QP_SETTING_SCROLLER_PART_WVGA "setting.container.swallow.wvga"
+#define QP_SETTING_CONTAINER_ICON_PART "setting.icon.swallow"
+#define QP_SETTING_BRIGHTNESS_PART_HD "brightness.container.swallow.hd"
+#define QP_SETTING_BRIGHTNESS_PART_WVGA "brightness.container.swallow.wvga"
+
+int quickpanel_setting_start(Evas_Object *base);
+int quickpanel_setting_stop(Evas_Object *base, int is_bring_in);
+
+Evas_Object *quickpanel_setting_scroller_get(Evas_Object *base);
+int quickpanel_setting_set_scroll_page_width(void *data);
+int quickpanel_setting_layout_set(Evas_Object *base, Evas_Object *setting);
+Evas_Object *quickpanel_setting_layout_get(Evas_Object *base, const char *setting_part);
+
+int quickpanel_setting_layout_remove(Evas_Object *base);
+int quickpanel_setting_icon_text_set(Evas_Object *icon, const char *text, int state);
+void quickpanel_setting_icon_access_text_set(Evas_Object *icon, const char *text);
+int quickpanel_setting_icon_content_set(Evas_Object *icon, Evas_Object *content);
+
+Evas_Object *quickpanel_setting_box_get(Evas_Object *base);
+Evas_Object *quickpanel_setting_icon_new(Evas_Object *parent);
+Evas_Object *quickpanel_setting_icon_image_new(Evas_Object *parent, const char *img_path);
+int quickpanel_setting_icon_pack(Evas_Object *box, Evas_Object *icon, int is_attach_divider);
+void quickpanel_setting_icon_unpack_all(Evas_Object *box);
+int quickpanel_setting_container_rotation_set(Evas_Object *base, int angle);
+int quickpanel_setting_icons_rotation_set(Evas_Object *base, int angle);
+int quickpanel_setting_icons_dragging_set(Evas_Object *icon, int is_on);
+int quickpanel_setting_icons_screen_mode_set(Evas_Object *icon, int screen_mode);
+void quickpanel_setting_icons_emit_sig(Evas_Object *icon, const char *signal);
+Evas_Object *quickpanel_setting_icon_content_get(Evas_Object *icon);
+int quickpanel_setting_icon_content_set(Evas_Object *icon, Evas_Object *content);
+
+int quickpanel_setting_icon_state_set(Evas_Object *icon, int is_on);
+int quickpanel_setting_icon_state_progress_set(Evas_Object *icon);
+
+// Do not use full window popup in quickpanel
+void quickpanel_setting_create_confirm_popup(Evas_Object *parent, char *title, char *text, Evas_Smart_Cb func);
+void quickpanel_setting_create_2button_confirm_popup(Evas_Object *parent, char *title, char *text,
+               char *btn1_text, Evas_Smart_Cb btn1_func, char *btn2_text, Evas_Smart_Cb btn2_func);
+void quickpanel_setting_create_timeout_popup(Evas_Object *parent, char *msg);
+
+int quickpanel_setting_scroll_page_get(void *data);
+
+#endif /* __SETTING_UTILS_H__ */
diff --git a/daemon/settings/setting_utils_x11.c b/daemon/settings/setting_utils_x11.c
new file mode 100644 (file)
index 0000000..5a5bfc3
--- /dev/null
@@ -0,0 +1,629 @@
+/*
+ * 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 <glib.h>
+#include <efl_assist.h>
+#include <notification.h>
+
+#include "common.h"
+#include "quickpanel_def.h"
+#include "quickpanel-ui.h"
+#include "setting_utils.h"
+#ifdef QP_SCREENREADER_ENABLE
+#include "accessibility.h"
+#endif
+
+#define DEFAULT_EDJ            EDJDIR"/"PACKAGE".edj"
+#define _EDJ(o) elm_layout_edje_get(o)
+
+#define TEXT_LEN 128
+#define QP_SETTING_INITIAL_PAGE_NUM 0
+#define DIVIDER_MAGIC 0xCAFECAFE
+#define E_DATA_DIVIDER_MAGIC "divider_magic"
+
+static inline void __escaped_text_set(Evas_Object *obj,
+                       const char *part, const char *text)
+{
+       char buf[256] = {0,};
+       char *ecaped = NULL;
+
+       if (!obj) {
+               return;
+       }
+
+       if (!part) {
+               return;
+       }
+
+       strncpy(buf, text, sizeof(buf) - 1);
+       quickpanel_common_util_char_trim(buf);
+       ecaped = evas_textblock_text_utf8_to_markup(NULL, buf);
+
+       elm_object_part_text_set(obj, part, ecaped);
+
+       if (ecaped) {
+               free(ecaped);
+       }
+}
+
+HAPI int quickpanel_setting_icon_text_set(Evas_Object *icon, const char *text, int state)
+{
+       retif(icon == NULL, QP_FAIL, "invalid parameter");
+       retif(text == NULL, QP_FAIL, "invalid parameter");
+
+       __escaped_text_set(icon, "icon.text", text);
+
+#ifdef QP_SCREENREADER_ENABLE
+       char buf[256] = {0,};
+       Evas_Object *ao = NULL;
+
+       ao = quickpanel_accessibility_screen_reader_object_get(icon,
+                       SCREEN_READER_OBJ_TYPE_ELM_OBJECT, "focus", icon);
+       if (ao != NULL) {
+               elm_access_info_set(ao, ELM_ACCESS_TYPE, _NOT_LOCALIZED("Button"));
+               strncpy(buf, text, sizeof(buf) - 1);
+               quickpanel_common_util_char_replace(buf, '\n', ' ');
+               elm_access_info_set(ao, ELM_ACCESS_INFO, buf);
+       }
+
+       ao = quickpanel_accessibility_screen_reader_object_get(icon,
+                       SCREEN_READER_OBJ_TYPE_ELM_OBJECT, "focus", icon);
+       if (ao != NULL) {
+               if (state == ICON_VIEW_STATE_ON) {
+                       elm_access_info_set(ao, ELM_ACCESS_STATE, _NOT_LOCALIZED("On"));
+               } else if (state == ICON_VIEW_STATE_DIM) {
+                       elm_access_info_set(ao, ELM_ACCESS_STATE, _NOT_LOCALIZED("Turned off"));
+               } else if (state == ICON_VIEW_STATE_OFF) {
+                       elm_access_info_set(ao, ELM_ACCESS_STATE, _NOT_LOCALIZED("Off"));
+               }
+       }
+#endif
+
+       return QP_OK;
+}
+
+HAPI void quickpanel_setting_icon_access_text_set(Evas_Object *icon, const char *text)
+{
+#ifdef QP_SCREENREADER_ENABLE
+       char buf[256] = {0,};
+       Evas_Object *ao = NULL;
+#endif
+
+       retif(icon == NULL, , "invalid parameter");
+       retif(text == NULL, , "invalid parameter");
+
+#ifdef QP_SCREENREADER_ENABLE
+       ao = quickpanel_accessibility_screen_reader_object_get(icon,
+                       SCREEN_READER_OBJ_TYPE_ELM_OBJECT, "focus", icon);
+       if (ao != NULL) {
+               elm_access_info_set(ao, ELM_ACCESS_TYPE, _NOT_LOCALIZED("Button"));
+               strncpy(buf, text, sizeof(buf) - 1);
+               quickpanel_common_util_char_replace(buf, '\n', ' ');
+               elm_access_info_set(ao, ELM_ACCESS_INFO, buf);
+       }
+#endif
+}
+
+HAPI Evas_Object *quickpanel_setting_icon_content_get(Evas_Object *icon)
+{
+       retif(icon == NULL, NULL, "invalid parameter");
+
+       struct appdata *ad = (struct appdata*)quickpanel_get_app_data();
+       retif(ad == NULL, NULL, "application data is NULL");
+
+       return elm_object_part_content_get(icon, "icon.swallow.wvga");
+}
+
+HAPI int quickpanel_setting_icon_content_set(Evas_Object *icon, Evas_Object *content)
+{
+       retif(icon == NULL, QP_FAIL, "invalid parameter");
+       retif(content == NULL, QP_FAIL, "invalid parameter");
+
+       struct appdata *ad = (struct appdata*)quickpanel_get_app_data();
+       retif(ad == NULL, QP_FAIL, "application data is NULL");
+
+       elm_object_part_content_set(icon, "icon.swallow.wvga", content);
+
+       return QP_OK;
+}
+
+HAPI int quickpanel_setting_icon_state_set(Evas_Object *icon, int state)
+{
+#ifdef QP_SCREENREADER_ENABLE
+       Evas_Object *ao = NULL;
+#endif
+       retif(icon == NULL, -1, "invalid parameter");
+       SERR("icon:%p state:%d", icon, state);
+
+#ifdef QP_SCREENREADER_ENABLE
+       ao = quickpanel_accessibility_screen_reader_object_get(icon,
+                       SCREEN_READER_OBJ_TYPE_ELM_OBJECT, "focus", icon);
+       if (ao != NULL) {
+               if (state == ICON_VIEW_STATE_ON) {
+                       elm_access_info_set(ao, ELM_ACCESS_STATE, _NOT_LOCALIZED("On"));
+               } else if (state == ICON_VIEW_STATE_DIM) {
+                       elm_access_info_set(ao, ELM_ACCESS_STATE, _NOT_LOCALIZED("Turned off"));
+               } else if (state == ICON_VIEW_STATE_OFF) {
+                       elm_access_info_set(ao, ELM_ACCESS_STATE, _NOT_LOCALIZED("Off"));
+               }
+       }
+#endif
+
+       if (state == ICON_VIEW_STATE_ON) {
+               elm_object_signal_emit(icon, "icon.on", "quickpanl.prog");
+       } else if (state == ICON_VIEW_STATE_DIM) {
+               elm_object_signal_emit(icon, "icon.dim", "quickpanl.prog");
+       } else {
+               elm_object_signal_emit(icon, "icon.off", "quickpanl.prog");
+       }
+
+       edje_object_message_signal_process(_EDJ(icon));
+
+       return 0;
+}
+
+HAPI int quickpanel_setting_icon_state_progress_set(Evas_Object *icon)
+{
+       retif(icon == NULL, -1, "invalid parameter");
+
+       elm_object_signal_emit(icon, "icon.progress", "quickpanl.prog");
+       edje_object_message_signal_process(_EDJ(icon));
+
+       return 0;
+}
+
+HAPI Evas_Object *quickpanel_setting_icon_new(Evas_Object *parent)
+{
+       const char *signal = NULL;
+       Evas_Object *icon = NULL;
+       retif(parent == NULL, NULL, "invalid parameter");
+
+       struct appdata *ad = quickpanel_get_app_data();
+       retif(ad == NULL, EINA_FALSE, "invalid data.");
+
+       icon = elm_layout_add(parent);
+       retif(!icon, NULL, "fail to add layout");
+
+       elm_layout_file_set(icon, DEFAULT_EDJ, "quickpanel/setting_icon_wvga");
+
+       evas_object_size_hint_weight_set(icon,
+                       EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       elm_object_signal_emit(icon, "icon.off", "quickpanl.prog");
+
+       Evas_Object *focus = quickpanel_accessibility_ui_get_focus_object(icon);
+       elm_object_part_content_set(icon, "focus", focus);
+
+       if (ad->angle == 0 || ad->angle == 180) {
+               signal = "icon.portrait";
+       } else {
+               signal = "icon.landscape";
+       }
+
+       elm_object_signal_emit(icon, signal, "quickpanl.prog");
+       edje_object_message_signal_process(_EDJ(icon));
+
+       return icon;
+}
+
+HAPI Evas_Object *quickpanel_setting_icon_image_new(Evas_Object *parent, const char *img_path)
+{
+       Evas_Object *content = NULL;
+       retif(parent == NULL, NULL, "invalid parameter");
+       retif(img_path == NULL, NULL, "invalid parameter");
+
+       content = elm_image_add(parent);
+       retif(content == NULL, NULL, "failed to create image");
+
+       if (!elm_image_file_set(content, DEFAULT_EDJ, img_path)) {
+               ERR("fail to set file[%s]", img_path);
+               evas_object_del(content);
+               content = NULL;
+               return NULL;
+       }
+
+       return content;
+}
+
+HAPI static Evas_Object *quickpanel_setting_container_get(Evas_Object *base)
+{
+       Evas_Object *container = NULL;
+       retif(base == NULL, NULL, "invalid parameter");
+
+       container = elm_object_part_content_get(base, QP_SETTING_BASE_PART);
+
+       return container;
+}
+
+HAPI Evas_Object *quickpanel_setting_scroller_get(Evas_Object *base)
+{
+       Evas_Object *container = NULL;
+       Evas_Object *scroller = NULL;
+       retif(base == NULL, NULL, "invalid parameter");
+
+       struct appdata *ad = (struct appdata*)quickpanel_get_app_data();
+       retif(ad == NULL, NULL, "application data is NULL");
+
+       container = quickpanel_setting_container_get(base);
+
+       scroller = elm_object_part_content_get(container, QP_SETTING_SCROLLER_PART_WVGA);
+
+       retif(scroller == NULL, NULL, "invalid parameter");
+
+       return scroller;
+}
+
+HAPI Evas_Object *quickpanel_setting_box_get_from_scroller(Evas_Object *base)
+{
+       Evas_Object *scroller = NULL;
+       Evas_Object *box = NULL;
+       retif(base == NULL, NULL, "invalid parameter");
+
+       scroller = quickpanel_setting_scroller_get(base);
+       retif(scroller == NULL, NULL, "invalid parameter");
+
+       box = elm_object_content_get(scroller);
+
+       return box;
+}
+
+
+HAPI Evas_Object *quickpanel_setting_box_get(Evas_Object *base)
+{
+       Evas_Object *container = NULL;
+       Evas_Object *box = NULL;
+       retif(base == NULL, NULL, "invalid parameter");
+
+       container = quickpanel_setting_container_get(base);
+       retif(container == NULL, NULL, "invalid parameter");
+       box = elm_object_part_content_get(container, QP_SETTING_SCROLLER_PART_WVGA);
+
+       return box;
+}
+
+
+HAPI int quickpanel_setting_container_rotation_set(Evas_Object *base, int angle)
+{
+       Evas_Object *container = NULL;
+       const char *signal = NULL;
+
+       retif(!base, -1, "base is NULL");
+       retif(angle < 0, -1, "angle is %d", angle);
+
+       container = quickpanel_setting_container_get(base);
+       retif(!container, -1, "box is NULL");
+
+       if (angle % 180 == 0) {
+               signal = "portrait";
+       } else {
+               signal = "landscape";
+       }
+
+       elm_object_signal_emit(container, signal, "background");
+       edje_object_message_signal_process(_EDJ(container));
+
+       return 0;
+}
+
+HAPI int quickpanel_setting_icons_rotation_set(Evas_Object *base, int angle)
+{
+       Evas_Object *box = NULL;
+       Evas_Object *icon = NULL;
+       Eina_List *icons = NULL;
+       Eina_List *l = NULL;
+       const char *signal = NULL;
+
+       retif(!base, -1, "base is NULL");
+       retif(angle < 0, -1, "angle is %d", angle);
+
+       box = quickpanel_setting_box_get(base);
+       retif(!box, -1, "box is NULL");
+
+       icons = elm_box_children_get(box);
+       retif(!icons, -1, "icons list is NULL");
+
+       if (angle % 180 == 0) {
+               signal = "icon.portrait";
+       } else {
+               signal = "icon.landscape";
+       }
+
+       EINA_LIST_FOREACH(icons, l, icon) {
+               elm_object_signal_emit(icon, signal, "quickpanl.prog");
+               edje_object_message_signal_process(_EDJ(icon));
+       }
+
+       eina_list_free(icons);
+
+       return 0;
+}
+
+HAPI void quickpanel_setting_icons_emit_sig(Evas_Object *icon, const char *signal)
+{
+       retif(!icon, , "icon is NULL");
+       retif(!signal, , "icon is NULL");
+
+       elm_object_signal_emit(icon, signal, "quickpanl.prog");
+       edje_object_message_signal_process(_EDJ(icon));
+}
+
+HAPI int quickpanel_setting_icons_dragging_set(Evas_Object *icon, int is_on)
+{
+       const char *signal = NULL;
+       retif(!icon, QP_FAIL, "icon is NULL");
+
+       if (is_on == 1) {
+               signal = "dragging.on";
+       } else {
+               signal = "dragging.off";
+       }
+
+       elm_object_signal_emit(icon, signal, "quickpanl.prog");
+       edje_object_message_signal_process(_EDJ(icon));
+
+       return QP_OK;
+}
+
+HAPI int quickpanel_setting_icons_screen_mode_set(Evas_Object *icon, int screen_mode)
+{
+       const char *signal = NULL;
+       retif(!icon, QP_FAIL, "icon is NULL");
+
+       if (screen_mode == 0) {
+               signal = "icon.portrait";
+       } else {
+               signal = "icon.landscape";
+       }
+
+       elm_object_signal_emit(icon, signal, "quickpanl.prog");
+       edje_object_message_signal_process(_EDJ(icon));
+
+       return QP_OK;
+}
+
+HAPI int quickpanel_setting_icon_pack(Evas_Object *box, Evas_Object *icon, int is_attach_divider)
+{
+       retif(box == NULL, QP_FAIL, "box is NULL");
+
+       elm_box_pack_end(box, icon);
+
+       return QP_OK;
+}
+
+HAPI void quickpanel_setting_icon_unpack_all(Evas_Object *box)
+{
+       Eina_List *l;
+       Eina_List *l_next;
+       Evas_Object *node = NULL;
+       Eina_List *list = NULL;
+       retif(box == NULL, , "invalid parameter");
+
+       list = elm_box_children_get(box);
+       retif(list == NULL, , "empty list");
+
+       elm_box_unpack_all(box);
+
+       EINA_LIST_FOREACH_SAFE(list, l, l_next, node) {
+               if (node != NULL) {
+                       if (evas_object_data_get(node, E_DATA_DIVIDER_MAGIC) == (void *)DIVIDER_MAGIC) {
+                               evas_object_del(node);
+                               node = NULL;
+                       }
+               }
+       }
+
+       eina_list_free(list);
+}
+
+HAPI int quickpanel_setting_scroll_page_get(void *data)
+{
+       int page_h = 0x99;
+       struct appdata *ad = NULL;
+       retif(data == NULL, QP_FAIL, "Invalid parameter!");
+
+       ad = data;
+       retif(!ad->ly, QP_FAIL, "layout is NULL!");
+
+       Evas_Object *scroller = quickpanel_setting_scroller_get(ad->ly);
+       elm_scroller_current_page_get(scroller, &page_h, NULL);
+
+       return page_h;
+}
+
+HAPI int quickpanel_setting_set_scroll_page_width(void *data)
+{
+       struct appdata *ad = NULL;
+       retif(data == NULL, QP_FAIL, "Invalid parameter!");
+
+       ad = data;
+       retif(!ad->ly, QP_FAIL, "layout is NULL!");
+
+       Evas_Object *scroller = quickpanel_setting_scroller_get(ad->ly);
+
+       int w, h;
+       Ecore_X_Screen *screen = ecore_x_default_screen_get();
+       ecore_x_screen_size_get(screen, &w, &h);
+
+       elm_scroller_page_size_set(scroller, w / QP_SETTING_NUM_PORTRAIT_ICONS, 0);
+
+       return 0;
+}
+
+HAPI int quickpanel_setting_start(Evas_Object *base)
+{
+       Evas_Object *scroller = NULL;
+       retif(base == NULL, QP_FAIL, "Invalid parameter!");
+
+       scroller = quickpanel_setting_scroller_get(base);
+       retif(scroller == NULL, QP_FAIL, "Invalid parameter!");
+
+       elm_scroller_page_bring_in(scroller, 0, 0);
+
+       return QP_OK;
+}
+
+HAPI int quickpanel_setting_stop(Evas_Object *base, int is_bring_in)
+{
+       int page = QP_SETTING_INITIAL_PAGE_NUM;
+       Evas_Object *scroller = NULL;
+       retif(base == NULL, QP_FAIL, "Invalid parameter!");
+
+       scroller = quickpanel_setting_scroller_get(base);
+       retif(scroller == NULL, QP_FAIL, "Invalid parameter!");
+
+       if (is_bring_in == 1) {
+               elm_scroller_page_bring_in(scroller, page, 0);
+       } else {
+               elm_scroller_page_show(scroller, page, 0);
+       }
+
+       return QP_OK;
+}
+
+HAPI int quickpanel_setting_layout_set(Evas_Object *base, Evas_Object *setting)
+{
+       retif(base == NULL, QP_FAIL, "Invalid parameter!");
+       retif(setting == NULL, QP_FAIL, "Invalid parameter!");
+
+       elm_object_part_content_set(base, QP_SETTING_BASE_PART, setting);
+
+       return 0;
+}
+
+HAPI Evas_Object *quickpanel_setting_layout_get(Evas_Object *base, const char *setting_part)
+{
+       retif(base == NULL, NULL, "Invalid parameter!");
+       retif(setting_part == NULL, NULL, "Invalid parameter!");
+
+       return elm_object_part_content_get(base, setting_part);
+}
+
+HAPI int quickpanel_setting_layout_remove(Evas_Object *base)
+{
+       Evas_Object *container = NULL;
+       Evas_Object *scroller = NULL;
+       Evas_Object *box = NULL;
+       retif(base == NULL, QP_FAIL, "Invalid parameter!");
+
+       container = quickpanel_setting_container_get(base);
+       scroller = quickpanel_setting_scroller_get(base);
+       box = quickpanel_setting_box_get(base);
+
+       if (box) {
+               elm_box_clear(box);
+               evas_object_del(box);
+               box = NULL;
+       }
+       if (scroller) {
+               evas_object_del(scroller);
+               scroller = NULL;
+       }
+       if (container) {
+               evas_object_del(container);
+               container = NULL;
+       }
+
+       return QP_OK;
+}
+
+HAPI void quickpanel_setting_create_confirm_popup(
+                                       Evas_Object *parent,
+                                       char *title,
+                                       char *text,
+                                       Evas_Smart_Cb func)
+{
+       Evas_Object *popup = elm_popup_add(parent);
+       Evas_Object *btn = NULL;
+
+       if (popup == NULL) {
+               return;
+       }
+
+       evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND,
+                                        EVAS_HINT_EXPAND);
+
+       if (title) {
+               elm_object_part_text_set(popup, "title,text", title);
+       }
+
+       if (text) {
+               elm_object_text_set(popup, text);
+       }
+
+       btn = elm_button_add(popup);
+       elm_object_style_set(btn, "popup");
+       elm_object_text_set(btn, _("IDS_ST_SK_OK"));
+       elm_object_part_content_set(popup, "button1", btn);
+       evas_object_smart_callback_add(btn, "clicked", func, popup);
+
+       evas_object_show(popup);
+       quickpanel_common_ui_set_current_popup(popup, func);
+}
+
+HAPI void quickpanel_setting_create_2button_confirm_popup(
+                                       Evas_Object *parent,
+                                       char *title,
+                                       char *text,
+                                       char *btn1_text,
+                                       Evas_Smart_Cb btn1_func,
+                                       char *btn2_text,
+                                       Evas_Smart_Cb btn2_func)
+{
+       Evas_Object *popup = elm_popup_add(parent);
+       Evas_Object *btn = NULL;
+
+       if (popup == NULL) {
+               return;
+       }
+
+       evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND,
+                                        EVAS_HINT_EXPAND);
+
+       if (title) {
+               elm_object_part_text_set(popup, "title,text", title);
+       }
+
+       if (text) {
+               elm_object_text_set(popup, text);
+       }
+
+       if (btn1_func != NULL && btn1_text != NULL) {
+               btn = elm_button_add(popup);
+               elm_object_style_set(btn, "popup");
+               elm_object_text_set(btn, btn1_text);
+               elm_object_part_content_set(popup, "button1", btn);
+               evas_object_smart_callback_add(btn, "clicked", btn1_func, popup);
+       }
+       if (btn2_func != NULL && btn2_text != NULL) {
+               btn = elm_button_add(popup);
+               elm_object_style_set(btn, "popup");
+               elm_object_text_set(btn, btn2_text);
+               elm_object_part_content_set(popup, "button2", btn);
+               evas_object_smart_callback_add(btn, "clicked", btn2_func, popup);
+       }
+
+       evas_object_show(popup);
+       quickpanel_common_ui_set_current_popup(popup, btn1_func);
+}
+
+HAPI void
+quickpanel_setting_create_timeout_popup(Evas_Object *parent, char *msg)
+{
+       retif(msg == NULL, , "invalid parameter");
+
+       notification_status_message_post(msg);
+}
diff --git a/daemon/settings/settings.c b/daemon/settings/settings.c
new file mode 100644 (file)
index 0000000..5f67c01
--- /dev/null
@@ -0,0 +1,479 @@
+/*
+ * 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 <stdlib.h>
+#include <glib.h>
+#include <vconf.h>
+#include "common.h"
+#include "quickpanel-ui.h"
+#include "quickpanel_def.h"
+#include "modules.h"
+#include "settings.h"
+#include "setting_utils.h"
+#include "settings_ipc.h"
+#include "pager_common.h"
+#ifdef QP_SCREENREADER_ENABLE
+#include "accessibility.h"
+#endif
+#include "preference.h"
+#ifdef QP_EMERGENCY_MODE_ENABLE
+#include "emergency_mode.h"
+#endif
+#include "configuration.h"
+
+static int quickpanel_settings_init(void *data);
+static int quickpanel_settings_fini(void *data);
+static int quickpanel_settings_suspend(void *data);
+static int quickpanel_settings_resume(void *data);
+static void quickpanel_settings_lang_changed(void *data);
+static void quickpanel_settings_reflesh(void *data);
+static Eina_Bool _module_is_enabled(QP_Module_Setting *module);
+
+extern QP_Module_Setting wifi;
+extern QP_Module_Setting gps;
+extern QP_Module_Setting bluetooth;
+extern QP_Module_Setting sound;
+extern QP_Module_Setting rotate;
+extern QP_Module_Setting mobile_data;
+extern QP_Module_Setting flightmode;
+extern QP_Module_Setting u_power_saving;
+extern QP_Module_Setting tethering;
+extern QP_Module_Setting assistive_light;
+
+QP_Module settings = {
+       .name = "settings",
+       .init = quickpanel_settings_init,
+       .fini = quickpanel_settings_fini,
+       .suspend = quickpanel_settings_suspend,
+       .resume = quickpanel_settings_resume,
+       .lang_changed = quickpanel_settings_lang_changed,
+       .refresh = quickpanel_settings_reflesh,
+};
+
+static struct _info {
+       GHashTable *module_table;
+       QP_Module_Setting *modules[];
+} s_info = {
+       .module_table = NULL,
+       .modules = {
+               &wifi,
+               &gps,
+               &sound,
+               &rotate,
+               &bluetooth,
+               NULL,
+       },
+};
+
+static void _module_init(QP_Module_Setting *module)
+{
+       if (module->init != NULL) {
+               module->loader = (QP_Setting_Loaded_Item *)calloc(1, sizeof(QP_Setting_Loaded_Item));
+               module->init(module);
+               module->is_loaded = EINA_TRUE;
+       }
+}
+
+static void _module_fini(QP_Module_Setting *module)
+{
+       if (module->fini != NULL) {
+               module->fini(module);
+               if (module->loader != NULL) {
+                       free(module->loader);
+                       module->loader = NULL;
+                       module->is_loaded = EINA_FALSE;
+               }
+       }
+}
+
+static int _module_count_get(void)
+{
+       int i, cnt = 0;
+
+       for (i = 0; s_info.modules[i] != NULL; i++) {
+               cnt++;
+       }
+
+       return cnt;
+}
+
+static QP_Module_Setting *_module_get_by_name(const char *name)
+{
+       retif(name == NULL, NULL, "invalid parameter");
+       retif(s_info.module_table == NULL, NULL, "invalid parameter");
+
+       return g_hash_table_lookup(s_info.module_table, name);
+}
+
+static Eina_Bool _module_is_enabled(QP_Module_Setting *module) {
+       retif(module == NULL, EINA_FALSE, "invalid parameter");
+       retif(module->name == NULL, EINA_FALSE, "invalid parameter");
+
+       if (strcmp(module->name, MODULE_BLANK) == 0) {
+               return EINA_FALSE;
+       }
+       if (module->supported_get) {
+               if (module->supported_get() == 0)
+                       return EINA_FALSE;
+       }
+       return EINA_TRUE;
+}
+
+static char *_preference_get(const char *key)
+{
+       char line[PREF_LEN_VALUE_MAX + 1] = {0,};
+
+       if (quickpanel_preference_get(key, line) == QP_OK) {
+               DBG("quicksetting order from file:%s", line);
+               return strdup(line);
+       }
+
+       return NULL;
+}
+
+static void _reservied_list_get_with_active_list(Eina_List **list)
+{
+       int i = 0, module_count = 0;
+       Eina_List *list_featured = NULL;
+       retif(list == NULL, , "invalid data.");
+
+       quickpanel_settings_featured_list_get(&list_featured);
+       retif(list_featured == NULL, , "failed to get default active list");
+
+       module_count = _module_count_get();
+
+       for (i = 0; i < module_count; i++) {
+               if (eina_list_data_find(list_featured, s_info.modules[i]) == NULL){
+                       if (_module_is_enabled(s_info.modules[i]) == EINA_TRUE) {
+                               *list = eina_list_append (*list, s_info.modules[i]);
+                       }
+               }
+       }
+
+       eina_list_free(list_featured);
+}
+
+static int quickpanel_settings_init(void *data)
+{
+       int i;
+       int mod_count = 0;
+       struct appdata *ad = data;
+       retif(ad == NULL, QP_FAIL, "Invalid parameter!");
+
+       mod_count = _module_count_get();
+       if (s_info.module_table != NULL) {
+               g_hash_table_remove_all(s_info.module_table);
+               g_hash_table_destroy(s_info.module_table);
+               s_info.module_table = NULL;
+       }
+       s_info.module_table = g_hash_table_new_full(g_str_hash, g_str_equal,
+                                       (GDestroyNotify)g_free,
+                                       NULL);
+       if (s_info.module_table != NULL) {
+               for (i = 0; i < mod_count; i++) {
+                       if (s_info.modules[i]->supported_get != NULL) {
+                               if (s_info.modules[i]->supported_get() == 0) {
+                                       continue;
+                               }
+                       }
+
+                       if (s_info.modules[i]->init != NULL && s_info.modules[i]->name != NULL) {
+                               ERR("quickbutton %s is initialized", s_info.modules[i]->name);
+                               DBG("quickbutton %s is initialized", s_info.modules[i]->name);
+                               g_hash_table_insert(s_info.module_table,
+                                               g_strdup(s_info.modules[i]->name),
+                                               s_info.modules[i]);
+                               _module_init(s_info.modules[i]);
+                       }
+               }
+       } else {
+               ERR("failed to create module has table");
+               return QP_FAIL;
+       }
+
+       quickpanel_settings_ipc_init(ad);
+
+       return QP_OK;
+}
+
+static int quickpanel_settings_fini(void *data)
+{
+       int i;
+       int ret = 0;
+       struct appdata *ad = data;
+       retif(ad == NULL, QP_FAIL, "Invalid parameter!");
+
+       quickpanel_settings_ipc_fini(ad);
+
+       for (i = 0; s_info.modules[i] != NULL; i++) {
+               if (_module_is_enabled(s_info.modules[i]) == EINA_TRUE) {
+                       _module_fini(s_info.modules[i]);
+               }
+       }
+
+       if (s_info.module_table) {
+               g_hash_table_remove_all(s_info.module_table);
+               g_hash_table_destroy(s_info.module_table);
+               s_info.module_table = NULL;
+       }
+
+       return ret;
+}
+
+static int quickpanel_settings_suspend(void *data)
+{
+       int i;
+       int ret = 0;
+       struct appdata *ad = data;
+       retif(ad == NULL, QP_FAIL, "Invalid parameter!");
+
+       for (i = 0; s_info.modules[i] != NULL; i++) {
+               if (_module_is_enabled(s_info.modules[i]) == EINA_TRUE) {
+                       if ((s_info.modules[i])->suspend != NULL) {
+                               (s_info.modules[i])->suspend(s_info.modules[i]);
+                       }
+               }
+       }
+
+       return ret;
+}
+
+static int quickpanel_settings_resume(void *data)
+{
+       int i;
+       int ret = 0;
+       struct appdata *ad = data;
+       retif(ad == NULL, QP_FAIL, "Invalid parameter!");
+
+       for (i = 0; s_info.modules[i] != NULL; i++) {
+               if (_module_is_enabled(s_info.modules[i]) == EINA_TRUE) {
+                       if ((s_info.modules[i])->resume != NULL) {
+                               (s_info.modules[i])->resume(s_info.modules[i]);
+                       }
+               }
+       }
+
+       return ret;
+}
+
+static void quickpanel_settings_lang_changed(void *data)
+{
+       int i;
+       struct appdata *ad = data;
+       retif(ad == NULL, , "Invalid parameter!");
+
+       for (i = 0; s_info.modules[i] != NULL; i++) {
+               if (_module_is_enabled(s_info.modules[i]) == EINA_TRUE) {
+                       if ((s_info.modules[i])->lang_changed != NULL) {
+                               (s_info.modules[i])->lang_changed(s_info.modules[i]);
+                       }
+               }
+       }
+}
+
+static void quickpanel_settings_reflesh(void *data)
+{
+       int i;
+       struct appdata *ad = data;
+       retif(ad == NULL, , "Invalid parameter!");
+
+       for (i = 0; s_info.modules[i] != NULL; i++) {
+               if (_module_is_enabled(s_info.modules[i]) == EINA_TRUE) {
+                       if ((s_info.modules[i])->refresh != NULL) {
+                               (s_info.modules[i])->refresh(s_info.modules[i]);
+                       }
+               }
+       }
+}
+
+HAPI int quickpanel_settings_featured_list_validation_check(char *order)
+{
+       int i = 0, is_valid = 0;
+       int order_count = 0;
+       gchar **order_split = NULL;
+       QP_Module_Setting *mod = NULL;
+       retif(order == NULL, is_valid, "Invalid parameter!");
+
+       if (s_info.module_table == NULL) {
+               return is_valid;
+       }
+
+       order_split = g_strsplit(order, ",", 0);
+
+       if (order_split != NULL) {
+               order_count = g_strv_length(order_split);
+
+               if (order_count >= QP_SETTING_NUM_MINIMUM_ICON) {
+                       for (i = 0; i < order_count; i++) {
+                               mod = _module_get_by_name(order_split[i]);
+                               if (mod != NULL) {
+                                       is_valid = 1;
+                               } else {
+                                       is_valid = 0;
+                                       break;
+                               }
+                       }
+               }
+
+               g_strfreev(order_split);
+       }
+
+       return is_valid;
+}
+
+HAPI void quickpanel_settings_featured_list_get(Eina_List **list)
+{
+       int i = 0, seq_count = 0;
+       int num_featured = 0;
+       int seq_added_count = 0;
+       gchar **params = NULL;
+       QP_Module_Setting *module = NULL;
+       retif(list == NULL, , "invalid data.");
+       char *sequence = _preference_get(PREF_QUICKSETTING_ORDER);
+       const char *default_sequence = quickpanel_preference_default_get(PREF_QUICKSETTING_ORDER);
+
+       char *num_featured_str =  _preference_get(PREF_QUICKSETTING_FEATURED_NUM);
+       const char *default_num_featured_str = quickpanel_preference_default_get(PREF_QUICKSETTING_FEATURED_NUM);
+
+       if (sequence != NULL) {
+               params = g_strsplit(sequence, ",", 0);
+               free(sequence);
+       } else {
+               params = g_strsplit(default_sequence, ",", 0);
+       }
+
+       if (num_featured_str != NULL) {
+               num_featured = atoi(num_featured_str);
+               free(num_featured_str);
+       } else {
+               if (default_num_featured_str != NULL) {
+                       num_featured = atoi(default_num_featured_str);
+               } else {
+                       num_featured = QP_SETTING_NUM_TOTAL_ICON;
+               }
+       }
+
+       if (params != NULL) {
+               seq_count = g_strv_length(params);
+
+               for (i = 0; i < seq_count; i++) {
+                       if (seq_added_count >= num_featured){
+                               break;
+                       }
+
+                       module = _module_get_by_name(params[i]);
+                       if (module != NULL) {
+                               if (_module_is_enabled(module) == EINA_TRUE) {
+                                       *list = eina_list_append (*list, module);
+                                       seq_added_count++;
+                               }
+                       }
+               }
+
+               g_strfreev(params);
+       }
+}
+
+HAPI void quickpanel_settings_all_list_get(Eina_List **list)
+{
+       int i = 0, seq_count = 0;
+       gchar **params = NULL;
+       QP_Module_Setting *module = NULL;
+       retif(list == NULL, , "invalid data.");
+       char *sequence = _preference_get(PREF_QUICKSETTING_ORDER);
+       const char *default_sequence = quickpanel_preference_default_get(PREF_QUICKSETTING_ORDER);
+
+       if (sequence != NULL) {
+               params = g_strsplit(sequence, ",", 0);
+               free(sequence);
+       } else if (default_sequence != NULL){
+               params = g_strsplit(default_sequence, ",", 0);
+       }
+
+       if (params != NULL) {
+               seq_count = g_strv_length(params);
+
+               for (i = 0; i < seq_count; i++) {
+                       module = _module_get_by_name(params[i]);
+                       if (module != NULL) {
+                               if (_module_is_enabled(module) == EINA_TRUE) {
+                                       *list = eina_list_append (*list, module);
+                               }
+                       }
+               }
+
+               g_strfreev(params);
+       }
+}
+
+HAPI void quickpanel_setting_save_list_to_file(Eina_List *list, int num_featured)
+{
+       Eina_List *l;
+       Eina_List *l_next;
+       QP_Module_Setting *module = NULL;
+       char buf[32] = {0,};
+       retif(list == NULL, , "invalid parameter");
+
+       int is_first = 1;
+
+       char *base = NULL;
+       char *temp = NULL;
+
+       EINA_LIST_FOREACH_SAFE(list, l, l_next, module) {
+               if (module == NULL){
+                       continue;
+               }
+               if (module->name == NULL) {
+                       continue;
+               }
+               if (_module_is_enabled(module) == EINA_FALSE) {
+                       continue;
+               }
+
+               if (is_first == 1) {
+                       base = g_strdup(module->name);
+                       is_first = 0;
+               } else {
+                       temp = g_strconcat(base, ",", module->name, NULL);
+                       if (base != NULL) g_free(base);
+                       base = temp;
+                       temp = NULL;
+               }
+       }
+
+       if (base != NULL) {
+               if (quickpanel_preference_set(PREF_QUICKSETTING_ORDER, base) == QP_FAIL) {
+                       ERR("failed to write quicksetting order");
+               }
+               g_free(base);
+               snprintf(buf, sizeof(buf) - 1, "%d", num_featured);
+               if (quickpanel_preference_set(PREF_QUICKSETTING_FEATURED_NUM, buf) == QP_FAIL) {
+                       ERR("failed to write quicksetting featured num");
+               }
+       }
+}
+
+HAPI QP_Module_Setting *quickpanel_settings_module_get_by_name(const char *name)
+{
+       return _module_get_by_name(name);
+}
+
+HAPI int quickpanel_settings_module_count_get(void)
+{
+       return _module_count_get();
+}
diff --git a/daemon/settings/settings.h b/daemon/settings/settings.h
new file mode 100644 (file)
index 0000000..6694617
--- /dev/null
@@ -0,0 +1,113 @@
+/*
+ * 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 __SETTING_H__
+#define __SETTING_H__
+
+#include <Elementary.h>
+#include "quickpanel_def.h"
+#include "quickpanel-ui.h"
+#include "settings_icon_common.h"
+
+#define MODULE_BLANK "blank"
+#define FILE_QP_BUTTON_ORDER_INI DATADIR_RW"/qp_setting_order.ini"
+#define E_DATA_MODULE_INFO "module_info"
+
+#define ICON_VIEW_STATE_OFF 0
+#define ICON_VIEW_STATE_ON 1
+#define ICON_VIEW_STATE_DIM 2
+
+#define STATE_ICON_NOT_LOADED 0
+#define STATE_ICON_IDLE 1
+#define STATE_ICON_BUSY 2
+
+#define QS_DBUS_SIG_ACTIVITY "ACTIVITY"
+#define QS_DBUS_SIG_EDITING "EDITING"
+
+typedef enum _qp_setting_icon_state_type {
+       QP_SETTING_ICON_STATE_NOT_LOADED,
+       QP_SETTING_ICON_STATE_IDLE,
+       QP_SETTING_ICON_STATE_BUSY,
+} qp_setting_icon_state_type;
+
+typedef enum _qp_setting_icon_image_type {
+       QP_SETTING_ICON_NORMAL,
+       QP_SETTING_ICON_HIGHLIGHT,
+       QP_SETTING_ICON_DIM,
+} qp_setting_icon_image_type;
+
+typedef  struct _Setting_Activity_Handler {
+       char *command;
+       void (*handler)(void *data);
+} Setting_Activity_Handler;
+
+typedef struct _QP_Module_Setting QP_Module_Setting;
+typedef struct _QP_Setting_Loaded_Item QP_Setting_Loaded_Item;
+
+struct _QP_Module_Setting {
+       char *name;
+       int is_disable_feedback;
+
+       /* func */
+       int (*init) (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 *);
+       void (*qp_opened) (void *);
+       void (*qp_closed) (void *);
+
+       const char *(*label_get) (void);
+       const char *(*icon_get) (qp_setting_icon_image_type type);
+       int (*supported_get) (void);
+       void (*view_update)(Evas_Object *, int, int, int);
+       void (*status_update)(QP_Module_Setting *, int, int);
+
+       int (*handler_ipc)(const char *, void *);
+       Edje_Signal_Cb handler_press;
+       void (*handler_longpress) (void *);
+
+       /* do not modify this area */
+       /* internal data */
+       Eina_Bool is_loaded;
+       QP_Setting_Loaded_Item *loader;
+       Eina_List *view_list;
+};
+
+struct _QP_Setting_Loaded_Item {
+       QP_Module_Setting *module;
+       void *app_data;
+       int state_icon;
+
+       Evas_Object *view;
+       Ecore_Timer *timer;
+       int state;
+       void *extra_handler_1;
+};
+
+void quickpanel_setting_save_list_to_file(Eina_List *list, int num_featured);
+int quickpanel_settings_featured_list_validation_check(char *order);
+void quickpanel_settings_featured_list_get(Eina_List **list);
+void quickpanel_settings_all_list_get(Eina_List **list);
+
+QP_Module_Setting *quickpanel_settings_module_get_by_name(const char *name);
+int quickpanel_settings_module_count_get(void);
+
+#endif
diff --git a/daemon/settings/settings_gridbox.c b/daemon/settings/settings_gridbox.c
new file mode 100644 (file)
index 0000000..1c81624
--- /dev/null
@@ -0,0 +1,490 @@
+/*
+ * 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 "quickpanel-ui.h"
+#include "common.h"
+#include "list_util.h"
+#include "quickpanel_def.h"
+#include "settings_gridbox.h"
+#include "pager.h"
+
+#define E_DATA_LAYOUT_PORTRAIT "layout_portrait"
+#define E_DATA_LAYOUT_LANDSCAPE "layout_landscape"
+#define E_DATA_ITEM_TYPE "item_type"
+#define E_DATA_POS_INFO "pos_info"
+#define DIVIDER_TOUCH_W 20
+
+typedef struct _info_layout {
+       int n_per_rows;
+       int padding_top;
+       int padding_left;
+       int padding_right;
+       int padding_bottom;
+       int padding_between_h;
+       int padding_between_v;
+       int child_w;
+       int child_h;
+       double scale;
+       int limit_w;
+} info_layout;
+
+typedef struct _info_position {
+       int index;
+       int offset_x;
+       int offset_y;
+       int width;
+       int height;
+} info_position;
+
+static Eina_List *_position_info_add(Eina_List *list, int is_icon, int index, int offset_x, int offset_y, int width, int height)
+{
+       info_position *pos_info = (info_position *) calloc(1, sizeof(info_position));
+       retif(pos_info == NULL, NULL, "failed to allocate memory");
+
+       pos_info->index = index;
+
+       if (is_icon == 1) {
+               if (offset_x <= 0) {
+                       pos_info->offset_x = offset_x;
+                       pos_info->width = width - DIVIDER_TOUCH_W;
+               } else {
+                       pos_info->offset_x = offset_x + DIVIDER_TOUCH_W;
+                       pos_info->width = width - DIVIDER_TOUCH_W - DIVIDER_TOUCH_W;
+               }
+       } else {
+               if (offset_x <= 0) {
+                       pos_info->offset_x = offset_x;
+                       pos_info->width = width - DIVIDER_TOUCH_W;
+               } else {
+                       pos_info->offset_x = offset_x - DIVIDER_TOUCH_W;
+                       pos_info->width = width + DIVIDER_TOUCH_W + DIVIDER_TOUCH_W;
+               }
+       }
+
+       pos_info->offset_y = offset_y;
+       pos_info->height = height;
+
+       return eina_list_append(list, pos_info);
+}
+
+static void _position_info_clear(Eina_List *list)
+{
+       info_position *pos_info = NULL;
+
+       EINA_LIST_FREE(list, pos_info) {
+               if (pos_info != NULL) {
+                       free(pos_info);
+                       pos_info = NULL;
+               }
+       }
+}
+
+static Eina_List *_position_info_get(Evas_Object *gridbox)
+{
+       return evas_object_data_get(gridbox, E_DATA_POS_INFO);
+}
+
+static void _position_info_set(Evas_Object *gridbox, Eina_List *list)
+{
+       evas_object_data_set(gridbox, E_DATA_POS_INFO, list);
+}
+
+static info_layout *_get_layout(Evas_Object *gridbox)
+{
+       struct appdata *ad = quickpanel_get_app_data();
+       info_layout *info_layout = NULL;
+
+       retif(ad == NULL, NULL, "invalid data.");
+       retif(gridbox == NULL, NULL, "invalid parameter");
+
+       if (ad->angle == 270 || ad->angle == 90) {
+               info_layout = evas_object_data_get(gridbox, E_DATA_LAYOUT_LANDSCAPE);
+       } else {
+               info_layout = evas_object_data_get(gridbox, E_DATA_LAYOUT_PORTRAIT);
+       }
+
+       return info_layout;
+}
+
+static int _item_is_icon(Evas_Object *icon)
+{
+       const char *item_type = NULL;
+       retif(icon == NULL, 1, "invalid parameter");
+
+       item_type = evas_object_data_get(icon, E_DATA_ITEM_TYPE);
+       retif(item_type == NULL, 1, "invalid parameter");
+
+       if (strcmp(item_type, SETTINGS_GRIDBOX_ITEM_ICON) == 0) {
+               return 1;
+       }
+
+       return 0;
+}
+
+static void _item_pos_get(int order, int *x, int *y, void *data)
+{
+       info_layout *info_layout = data;
+       retif(info_layout == NULL, , "invalid parameter");
+
+       int n_per_row = info_layout->n_per_rows;
+
+       int row = (order - 1) / n_per_row;
+       int column = (order - 1) - (row * n_per_row);
+
+       int row_x = info_layout->padding_left
+                       + ((info_layout->child_w + info_layout->padding_between_h) * column);
+
+       int row_y = info_layout->padding_top
+                       + ((info_layout->child_h + info_layout->padding_between_v) * row);
+
+       if (x != NULL) {
+               *x = row_x;
+       }
+
+       if (y != NULL) {
+               *y = row_y;
+       }
+}
+
+static inline void _item_move_and_resize(Evas_Object *item, int x, int y, int w, int h)
+{
+       evas_object_move(item, x, y);
+       evas_object_size_hint_min_set(item, w, h);
+       evas_object_resize(item, w, h);
+}
+
+static void _layout_cb(Evas_Object *o, Evas_Object_Box_Data *priv, void *data)
+{
+       int n_children;
+       int x, y;
+       int off_x = 0, off_y = 0;
+       Eina_List *l;
+       Eina_List *l_next;
+       Evas_Object_Box_Option *opt;
+       int child_w;
+       int space_w = 0;
+       int num_padding_between = 0;
+
+       retif(o == NULL, , "invalid parameter");
+       retif(priv == NULL, , "invalid parameter");
+       retif(data == NULL, , "invalid parameter");
+
+       info_layout *info_layout = _get_layout(data);
+       Eina_List *list_pos_info = _position_info_get(data);
+
+       n_children = eina_list_count(priv->children);
+       DBG("layout function:%d", n_children);
+       if (!n_children) {
+               evas_object_size_hint_min_set(o, ELM_SCALE_SIZE(-1), ELM_SCALE_SIZE(0));
+               return;
+       }
+
+       //box geometry
+       evas_object_geometry_get(o, &x, &y, NULL, NULL);
+
+       num_padding_between = info_layout->n_per_rows >> 1;
+       num_padding_between += (info_layout->n_per_rows > 1 && (info_layout->n_per_rows % 2) > 0) ? 1 : 0;
+
+       space_w = (info_layout->padding_left * 2) + (info_layout->padding_between_h * num_padding_between);
+       child_w = (info_layout->limit_w - space_w) / info_layout->n_per_rows;
+
+       info_layout->child_w = child_w;
+
+       if (list_pos_info != NULL) {
+               _position_info_clear(list_pos_info);
+               _position_info_set(data, NULL);
+               list_pos_info = NULL;
+       }
+
+       int order_obj = 0;
+       int order_children = 1;
+       int order_divider = 1;
+       Evas_Object *btn_previous = NULL;
+
+       EINA_LIST_FOREACH_SAFE(priv->children, l, l_next, opt) {
+               if (_item_is_icon(opt->obj)) {
+                       _item_pos_get(order_children, &off_x, &off_y, info_layout);
+                       _item_move_and_resize(opt->obj, x + off_x, y + off_y,
+                                       info_layout->child_w, info_layout->child_h);
+                       order_children++;
+                       list_pos_info =
+                                       _position_info_add(list_pos_info, 1, order_obj, off_x, off_y, info_layout->child_w, info_layout->child_h);
+                       if (btn_previous != NULL && opt->obj != NULL) {
+                               elm_object_focus_next_object_set(opt->obj, btn_previous, ELM_FOCUS_LEFT);
+                               elm_object_focus_next_object_set(btn_previous, opt->obj, ELM_FOCUS_RIGHT);
+                       }
+                       btn_previous = opt->obj;
+               } else {
+                       _item_pos_get(order_children - 1, &off_x, &off_y, info_layout);
+                       _item_move_and_resize(opt->obj, x + off_x + info_layout->child_w, y + off_y,
+                                       info_layout->padding_between_h, info_layout->child_h);
+                       if ((order_divider % info_layout->n_per_rows) == 0) {
+                               evas_object_hide(opt->obj);
+                       } else {
+                               evas_object_show(opt->obj);
+                       }
+                       order_divider++;
+                       list_pos_info =
+                                       _position_info_add(list_pos_info, 0, order_obj, off_x + info_layout->child_w, off_y,
+                                                       info_layout->padding_between_h, info_layout->child_h);
+               }
+               order_obj++;
+       }
+
+       _position_info_set(data, list_pos_info);
+}
+
+static void _deleted_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+       DBG("deleted_cb");
+       Eina_List *list = NULL;
+       Evas_Object *gridbox = obj;
+       retif(gridbox == NULL, , "invalid parameter");
+
+       info_layout *info_layout_portrait = evas_object_data_get(gridbox,
+                       E_DATA_LAYOUT_PORTRAIT);
+       info_layout *info_layout_landscape = evas_object_data_get(gridbox,
+                       E_DATA_LAYOUT_LANDSCAPE);
+
+       list = _position_info_get(gridbox);
+       _position_info_clear(list);
+       _position_info_set(gridbox, NULL);
+
+       quickpanel_settings_gridbox_item_remove_all(gridbox);
+       evas_object_data_del(gridbox, E_DATA_LAYOUT_PORTRAIT);
+       evas_object_data_del(gridbox, E_DATA_LAYOUT_LANDSCAPE);
+
+       if (info_layout_portrait != NULL) {
+               free(info_layout_portrait);
+       }
+       if (info_layout_landscape != NULL) {
+               free(info_layout_landscape);
+       }
+}
+
+HAPI Evas_Object *quickpanel_settings_gridbox_create(Evas_Object *parent, void *data)
+{
+       retif(parent == NULL, NULL, "invalid parameter");
+       retif(data == NULL, NULL, "invalid parameter");
+       struct appdata *ad = data;
+       Evas_Object *gridbox = NULL;
+
+       info_layout *info_layout_portrait = NULL;
+       info_layout *info_layout_landscape = NULL;
+
+       info_layout_portrait = (info_layout *) calloc(1,
+                       sizeof(info_layout));
+       retif(info_layout_portrait == NULL, NULL, "memory allocation failed");
+       info_layout_portrait->padding_between_h = 2 * ad->scale;
+       info_layout_portrait->padding_between_v = 1 * ad->scale;
+       info_layout_portrait->padding_top = 0;
+       info_layout_portrait->padding_left = 1;
+       info_layout_portrait->padding_bottom = 0;
+       info_layout_portrait->n_per_rows = 8;
+       info_layout_portrait->child_w = 0;
+
+       info_layout_portrait->child_h = QP_SETTING_ICON_MIN_WH_WVGA * ad->scale;
+
+       info_layout_portrait->limit_w = ad->win_width;
+       info_layout_portrait->scale = ad->scale;
+
+       info_layout_landscape = (info_layout *) calloc(1, sizeof(info_layout));
+       if (info_layout_landscape == NULL) {
+               free(info_layout_portrait);
+               ERR("memory allocation failed");
+               return NULL;
+       }
+       info_layout_landscape->padding_between_h = 2 * ad->scale;
+       info_layout_landscape->padding_between_v = 1 * ad->scale;
+       info_layout_landscape->padding_top = 0;
+       info_layout_landscape->padding_left = 1;
+       info_layout_landscape->padding_bottom = 0;
+       info_layout_landscape->n_per_rows = 10;
+       info_layout_landscape->child_w = 0;
+
+       info_layout_landscape->child_h = QP_SETTING_ICON_MIN_WH_WVGA * ad->scale;
+
+       info_layout_landscape->limit_w = ad->win_height;
+       info_layout_landscape->scale = ad->scale;
+
+       gridbox = elm_box_add(parent);
+       evas_object_size_hint_weight_set(gridbox, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_fill_set(gridbox, EVAS_HINT_FILL, EVAS_HINT_FILL);
+       elm_box_horizontal_set(gridbox, EINA_TRUE);
+
+       elm_box_layout_set(gridbox, _layout_cb, gridbox, NULL);
+
+       evas_object_data_set(gridbox, E_DATA_LAYOUT_PORTRAIT, info_layout_portrait);
+       evas_object_data_set(gridbox, E_DATA_LAYOUT_LANDSCAPE, info_layout_landscape);
+       evas_object_event_callback_add(gridbox, EVAS_CALLBACK_DEL, _deleted_cb, NULL);
+
+       evas_object_show(gridbox);
+
+       return gridbox;
+}
+
+HAPI void quickpanel_settings_gridbox_remove(Evas_Object *gridbox)
+{
+       retif(gridbox == NULL, , "invalid parameter");
+
+       quickpanel_settings_gridbox_item_remove_all(gridbox);
+       evas_object_del(gridbox);
+       gridbox = NULL;
+}
+
+HAPI void quickpanel_settings_gridbox_item_add(Evas_Object *gridbox, Evas_Object *item, const char *item_type, int is_prepend)
+{
+       evas_object_data_set(item, E_DATA_ITEM_TYPE, item_type);
+
+       if (is_prepend == SETTINGS_GRIDBOX_PREPEND) {
+               elm_box_pack_start(gridbox, item);
+       } else {
+               elm_box_pack_end(gridbox, item);
+       }
+}
+
+HAPI void quickpanel_settings_gridbox_item_remove(Evas_Object *gridbox, Evas_Object *item)
+{
+       retif(gridbox == NULL, , "invalid parameter");
+       retif(item == NULL, , "invalid parameter");
+
+       elm_box_unpack(gridbox, item);
+       evas_object_del(item);
+       item = NULL;
+}
+
+HAPI void quickpanel_settings_gridbox_item_remove_all(Evas_Object *gridbox)
+{
+       Eina_List *l;
+       Eina_List *l_next;
+       Evas_Object *obj = NULL;
+       Eina_List *item_list = NULL;
+
+       retif(gridbox == NULL, , "invalid parameter");
+
+       item_list = elm_box_children_get(gridbox);
+       retif(item_list == NULL, , "invalid parameter");
+
+       EINA_LIST_FOREACH_SAFE(item_list, l, l_next, obj) {
+               if (obj != NULL) {
+                       quickpanel_settings_gridbox_item_remove(gridbox, obj);
+               }
+       }
+
+       eina_list_free(item_list);
+}
+
+HAPI void quickpanel_settings_gridbox_rotation(Evas_Object *gridbox, int angle)
+{
+       const char *signal = NULL;
+
+       retif(gridbox == NULL, , "invalid parameter");
+
+       info_layout *info_layout_portrait = evas_object_data_get(gridbox,
+                       E_DATA_LAYOUT_PORTRAIT);
+       info_layout *info_layout_landscape = evas_object_data_get(gridbox,
+                       E_DATA_LAYOUT_LANDSCAPE);
+
+       retif(info_layout_portrait == NULL || info_layout_landscape == NULL, ,
+                       "gridbox is crashed");
+
+       Eina_List *l;
+       Eina_List *l_next;
+       Evas_Object *obj;
+       Eina_List *item_list = elm_box_children_get(gridbox);
+       retif(item_list == NULL, , "invalid parameter");
+
+       if (angle == 270 || angle == 90) {
+               signal = "icon.landscape";
+       } else {
+               signal = "icon.portrait";
+       }
+
+       EINA_LIST_FOREACH_SAFE(item_list, l, l_next, obj) {
+               if (obj != NULL) {
+                       elm_object_signal_emit(obj, signal, "quickpanl.prog");
+                       edje_object_message_signal_process(_EDJ(obj));
+               }
+       }
+}
+
+HAPI int quickpanel_settings_gridbox_item_count_get(Evas_Object *gridbox)
+{
+       int item_count = 0;
+       Eina_List *items = NULL;
+       retif(gridbox == NULL, 0, "invalid parameter");
+
+       if ((items = elm_box_children_get(gridbox)) != NULL) {
+               item_count = eina_list_count(items);
+               eina_list_free(items);
+               return item_count;
+       } else {
+               return 0;
+       }
+}
+
+HAPI int quickpanel_settings_gridbox_item_index_get(Evas_Object *gridbox, int touch_x, int touch_y)
+{
+       Eina_List *l;
+       Eina_List *l_next;
+       Eina_List *list_pos_info = NULL;
+       info_position *pos_info = NULL;
+       int x = 0, y = 0, w = 0, h = 0;
+
+       evas_object_geometry_get(gridbox, &x, &y, &w, &h);
+       list_pos_info = _position_info_get(gridbox);
+
+       if (touch_x >= x && touch_x <= x + w && touch_y >= y && touch_y <= y + h) {
+               touch_x = touch_x - x;
+               touch_y = touch_y - y;
+               EINA_LIST_FOREACH_SAFE(list_pos_info, l, l_next, pos_info) {
+                       if (pos_info != NULL) {
+                               if (touch_x >= pos_info->offset_x && touch_x <= pos_info->offset_x + pos_info->width
+                                               && touch_y >= pos_info->offset_y && touch_y <= pos_info->offset_y + pos_info->height) {
+                                       return pos_info->index;
+                               }
+                       }
+               }
+       }
+       return -1;
+}
+
+HAPI void quickpanel_settings_gridbox_unpack_all(Evas_Object *gridbox)
+{
+       Eina_List *l;
+       Eina_List *l_next;
+       Evas_Object *node = NULL;
+       Eina_List *list = NULL;
+       retif(gridbox == NULL, , "invalid parameter");
+
+       list = elm_box_children_get(gridbox);
+       retif(list == NULL, , "empty list");
+
+       elm_box_unpack_all(gridbox);
+
+       EINA_LIST_FOREACH_SAFE(list, l, l_next, node) {
+               if (node != NULL) {
+                       if (_item_is_icon(node) == 0) {
+                               evas_object_del(node);
+                               node = NULL;
+                       }
+               }
+       }
+
+       eina_list_free(list);
+}
diff --git a/daemon/settings/settings_gridbox.h b/daemon/settings/settings_gridbox.h
new file mode 100644 (file)
index 0000000..3550e88
--- /dev/null
@@ -0,0 +1,36 @@
+/*
+ * 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 __QUICKPANEL_SETTINGS_GRIDBOX_H__
+#define __QUICKPANEL_SETTINGS_GRIDBOX_H__
+
+#define SETTINGS_GRIDBOX_PREPEND 1
+#define SETTINGS_GRIDBOX_APPEND 0
+#define SETTINGS_GRIDBOX_ITEM_ICON "item_icon"
+#define SETTINGS_GRIDBOX_ITEM_DIVIDER "item_divider"
+
+Evas_Object *quickpanel_settings_gridbox_create(Evas_Object *parent, void *data);
+void quickpanel_settings_gridbox_remove(Evas_Object *gridbox);
+void quickpanel_settings_gridbox_item_add(Evas_Object *gridbox, Evas_Object *item, const char *item_type, int is_prepend);
+void quickpanel_settings_gridbox_item_remove(Evas_Object *gridbox, Evas_Object *item);
+void quickpanel_settings_gridbox_item_remove_all(Evas_Object *gridbox);
+void quickpanel_settings_gridbox_rotation(Evas_Object *gridbox, int angle);
+int quickpanel_settings_gridbox_item_count_get(Evas_Object *gridbox);
+int quickpanel_settings_gridbox_item_index_get(Evas_Object *gridbox, int touch_x, int touch_y);
+void quickpanel_settings_gridbox_unpack_all(Evas_Object *gridbox);
+#endif
diff --git a/daemon/settings/settings_icon_common.c b/daemon/settings/settings_icon_common.c
new file mode 100644 (file)
index 0000000..a29b7fa
--- /dev/null
@@ -0,0 +1,259 @@
+/*
+ * 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 "quickpanel-ui.h"
+#include "quickpanel_def.h"
+#include "common.h"
+#include "modules.h"
+#include "settings.h"
+#include "setting_utils.h"
+#include "setting_module_api.h"
+#include "accessibility.h"
+#include "configuration.h"
+#include "pager_common.h"
+
+#define E_DATA_ICON_CLICKED_CB "clicked_cb"
+#define E_DATA_ICON_ORIGINAL_OBJ "original_obj"
+
+static struct _info {
+       int down_x;
+       Eina_Bool is_longpressed;
+       Ecore_Timer *timer_longpress;
+} s_info = {
+       .down_x = 0,
+       .is_longpressed = EINA_FALSE,
+       .timer_longpress = NULL,
+};
+
+static Eina_Bool _icon_handler_longpress(void *data)
+{
+       DBG("");
+       Evas_Object *obj = data;
+       QP_Module_Setting *module = NULL;
+       retif(obj == NULL, ECORE_CALLBACK_CANCEL, "invalid argument");
+
+       struct appdata *ad = (struct appdata*)quickpanel_get_app_data();
+       retif(ad == NULL, ECORE_CALLBACK_CANCEL, "application data is NULL");
+
+       quickpanel_media_play_feedback();
+
+       ecore_timer_del(s_info.timer_longpress);
+       s_info.timer_longpress = NULL;
+       s_info.is_longpressed = EINA_TRUE;
+
+       module = evas_object_data_get(obj, E_DATA_MODULE_INFO);
+       if (module != NULL) {
+               if (module->handler_longpress != NULL) {
+                       if (module->name) {
+                               DBG("launch setting menu of %s", module->name);
+                       }
+                       module->handler_longpress(obj);
+
+                       elm_object_signal_emit(obj, "mouse,up,1", "background.super");
+               }
+       }
+
+       return ECORE_CALLBACK_CANCEL;
+}
+
+static void _icon_mouse_move_cb(void *data, Evas *e, Evas_Object *obj,
+               void *event_info)
+{
+       int down_x = 0;
+       retif(obj == NULL, , "invalid argument");
+
+       quickpanel_page_get_touched_pos(&down_x, NULL);
+
+       if (s_info.down_x - down_x > 15 || s_info.down_x - down_x < -15) {
+               if (s_info.timer_longpress != NULL) {
+                       ecore_timer_del(s_info.timer_longpress);
+                       s_info.timer_longpress = NULL;
+               }
+       }
+}
+
+static void _icon_mouse_up_cb(void *data, Evas_Object *obj,
+               const char *emission, const char *source)
+{
+       retif(obj == NULL, , "invalid argument");
+
+       if (s_info.timer_longpress != NULL) {
+               ecore_timer_del(s_info.timer_longpress);
+               s_info.timer_longpress = NULL;
+               s_info.is_longpressed = EINA_FALSE;
+       }
+
+       evas_object_event_callback_del(obj, EVAS_CALLBACK_MOUSE_MOVE,
+                                       _icon_mouse_move_cb);
+}
+
+static void _icon_mouse_down_cb(void *data, Evas_Object *obj,
+               const char *emission, const char *source)
+{
+       retif(obj == NULL, , "invalid argument");
+
+       if (s_info.timer_longpress != NULL) {
+               ecore_timer_del(s_info.timer_longpress);
+               s_info.timer_longpress = NULL;
+       }
+
+       quickpanel_page_get_touched_pos(&(s_info.down_x), NULL);
+
+       s_info.is_longpressed = EINA_FALSE;
+       s_info.timer_longpress = ecore_timer_add(
+                       quickpanel_conf_longpress_time_get(),
+                       _icon_handler_longpress, obj);
+
+       evas_object_event_callback_add(obj, EVAS_CALLBACK_MOUSE_MOVE,
+                       _icon_mouse_move_cb, NULL);
+}
+
+#ifdef QP_SCREENREADER_ENABLE
+static void
+_icon_focus_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       Evas_Object *icon = NULL;
+       Edje_Signal_Cb func = NULL;
+       retif(obj == NULL, , "invalid argument");
+
+       struct appdata *ad = (struct appdata*)quickpanel_get_app_data();
+       retif(ad == NULL, , "application data is NULL");
+
+       if (s_info.timer_longpress != NULL) {
+               ecore_timer_del(s_info.timer_longpress);
+               s_info.timer_longpress = NULL;
+       }
+
+       if (s_info.is_longpressed != EINA_TRUE) {
+               quickpanel_media_play_feedback();
+       }
+
+       icon = evas_object_data_get(obj, E_DATA_ICON_ORIGINAL_OBJ);
+       if (icon != NULL) {
+               func = evas_object_data_get(icon, E_DATA_ICON_CLICKED_CB);
+
+               if (func != NULL && s_info.is_longpressed != EINA_TRUE) {
+                       func(data, icon,  "mouse,clicked,1", "background.super");
+               }
+       }
+}
+
+static void
+_icon_focus_clicked_cb_without_feedback(void *data, Evas_Object *obj, void *event_info)
+{
+       Evas_Object *icon = NULL;
+       Edje_Signal_Cb func = NULL;
+       retif(obj == NULL, , "invalid argument");
+
+       struct appdata *ad = (struct appdata*)quickpanel_get_app_data();
+       retif(ad == NULL, , "application data is NULL");
+
+       if (s_info.timer_longpress != NULL) {
+               ecore_timer_del(s_info.timer_longpress);
+               s_info.timer_longpress = NULL;
+       }
+
+       icon = evas_object_data_get(obj, E_DATA_ICON_ORIGINAL_OBJ);
+       if (icon != NULL) {
+               func = evas_object_data_get(icon, E_DATA_ICON_CLICKED_CB);
+
+               if (func != NULL && s_info.is_longpressed != EINA_TRUE) {
+                       func(data, icon,  "mouse,clicked,1", "background.super");
+               }
+       }
+}
+#endif
+
+HAPI int quickpanel_setting_icon_click_cb_add(Evas_Object *icon,
+                       Edje_Signal_Cb func, void *data)
+{
+       retif(icon == NULL, QP_FAIL, "invalid parameter");
+       retif(func == NULL, QP_FAIL, "invalid parameter");
+
+       struct appdata *ad = (struct appdata*)quickpanel_get_app_data();
+       retif(ad == NULL, QP_FAIL, "application data is NULL");
+
+       elm_object_signal_callback_add(icon, "mouse,up,1", "background.super", _icon_mouse_up_cb, data);
+       elm_object_signal_callback_add(icon, "mouse,down,1", "background.super", _icon_mouse_down_cb, data);
+
+       evas_object_data_set(icon, E_DATA_ICON_CLICKED_CB, func);
+
+#ifdef QP_SCREENREADER_ENABLE
+       Evas_Object *ao = NULL;
+       ao = quickpanel_accessibility_screen_reader_object_get(icon,
+                       SCREEN_READER_OBJ_TYPE_ELM_OBJECT, "focus", icon);
+       if (ao != NULL) {
+               evas_object_smart_callback_add(ao, "clicked",
+                               _icon_focus_clicked_cb, data);
+               evas_object_data_set(ao, E_DATA_ICON_ORIGINAL_OBJ, icon);
+       }
+#endif
+
+       return 0;
+}
+
+HAPI int quickpanel_setting_icon_click_cb_without_feedback_add(Evas_Object *icon,
+                       Edje_Signal_Cb func, void *data)
+{
+       retif(icon == NULL, QP_FAIL, "invalid parameter");
+       retif(func == NULL, QP_FAIL, "invalid parameter");
+
+       struct appdata *ad = (struct appdata*)quickpanel_get_app_data();
+       retif(ad == NULL, QP_FAIL, "application data is NULL");
+
+       elm_object_signal_callback_add(icon, "mouse,up,1", "background.super", _icon_mouse_up_cb, data);
+       elm_object_signal_callback_add(icon, "mouse,down,1", "background.super", _icon_mouse_down_cb, data);
+
+       evas_object_data_set(icon, E_DATA_ICON_CLICKED_CB, func);
+
+#ifdef QP_SCREENREADER_ENABLE
+       Evas_Object *ao = NULL;
+       ao = quickpanel_accessibility_screen_reader_object_get(icon,
+                       SCREEN_READER_OBJ_TYPE_ELM_OBJECT, "focus", icon);
+       if (ao != NULL) {
+               evas_object_smart_callback_add(ao, "clicked",
+                               _icon_focus_clicked_cb_without_feedback, data);
+               evas_object_data_set(ao, E_DATA_ICON_ORIGINAL_OBJ, icon);
+       }
+#endif
+
+       return 0;
+}
+
+HAPI int quickpanel_setting_icon_click_cb_del(Evas_Object *icon, Edje_Signal_Cb func)
+{
+       retif(icon == NULL, QP_FAIL, "invalid parameter");
+       retif(func == NULL, QP_FAIL, "invalid parameter");
+
+       struct appdata *ad = (struct appdata*)quickpanel_get_app_data();
+       retif(ad == NULL, QP_FAIL, "application data is NULL");
+
+       elm_object_signal_callback_del(icon, "mouse,clicked,1", "background.super", func);
+
+       return QP_OK;
+}
+
+HAPI void quickpanel_setting_icon_handler_longpress(const char *pkgname, void *data)
+{
+       int ret;
+
+       ret = quickpanel_uic_launch_ug_by_appcontrol(pkgname, data);
+       quickpanel_uic_launch_app_inform_result(pkgname, ret);
+       quickpanel_uic_close_quickpanel(true, 1);
+}
+
diff --git a/daemon/settings/settings_icon_common.h b/daemon/settings/settings_icon_common.h
new file mode 100644 (file)
index 0000000..f9ed1ee
--- /dev/null
@@ -0,0 +1,29 @@
+/*
+ * 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 __SETTING_ICON_COMMON_H__
+#define __SETTING_ICON_COMMON_H__
+
+int quickpanel_setting_icon_click_cb_add(Evas_Object *icon,
+                       Edje_Signal_Cb func, void *data);
+int quickpanel_setting_icon_click_cb_without_feedback_add(Evas_Object *icon,
+                       Edje_Signal_Cb func, void *data);
+int quickpanel_setting_icon_click_cb_del(Evas_Object *icon, Edje_Signal_Cb func);
+void quickpanel_setting_icon_handler_longpress(const char *pkgname, void *data);
+
+#endif /* __SETTING_ICON_COMMON_H__ */
diff --git a/daemon/settings/settings_ipc.c b/daemon/settings/settings_ipc.c
new file mode 100644 (file)
index 0000000..3cf0f8b
--- /dev/null
@@ -0,0 +1,202 @@
+/*
+ * 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 <glib.h>
+#include "quickpanel-ui.h"
+#include "quickpanel_def.h"
+#include "common.h"
+#include "modules.h"
+#include "settings.h"
+#include "setting_utils.h"
+#include "settings_view_all.h"
+#include "settings_view_featured.h"
+
+static struct _info {
+       E_DBus_Signal_Handler *hdl_activity;
+       E_DBus_Signal_Handler *hdl_editing;
+} s_info = {
+       .hdl_activity = NULL,
+       .hdl_editing = NULL,
+};
+
+static void _handler_activity(void *data, DBusMessage *msg)
+{
+       int ret = 0;
+       DBusError err;
+       char *module = NULL;
+       char *command = NULL;
+       QP_Module_Setting *mod = NULL;
+       retif(data == NULL || msg == NULL, , "Invalid parameter!");
+
+       dbus_error_init(&err);
+       ret = dbus_message_get_args(msg, &err,
+                       DBUS_TYPE_STRING, &module,
+                       DBUS_TYPE_STRING, &command,
+                       DBUS_TYPE_INVALID);
+       retif(ret == 0, , "dbus_message_get_args error");
+       retif(module == NULL, , "Failed to get module");
+       retif(command == NULL, , "Failed to get command");
+
+       if (dbus_error_is_set(&err)) {
+               ERR("Dbus err: %s", err.message);
+               dbus_error_free(&err);
+               return;
+       }
+
+       mod = quickpanel_settings_module_get_by_name(module);
+       if (mod != NULL) {
+               DBG("module:%s, command:%s", module, command);
+               if (mod->handler_ipc != NULL) {
+                       if (mod->is_loaded == EINA_TRUE && mod->loader != NULL) {
+                               mod->handler_ipc(command, mod);
+                       } else {
+                               ERR("module:%s isn't loaded");
+                       }
+               } else {
+                       ERR("module:%s don't have IPC handler");
+               }
+       } else {
+               ERR("failed to lookup module:%s", module);
+       }
+}
+
+static void _handler_editing(void *data, DBusMessage *msg)
+{
+       int i = 0;
+       int ret = 0, is_error = 0;
+       DBusError err;
+       char *key = NULL;
+       char *order = NULL;
+       int num_featured = 0;
+       int order_count = 0;
+       gchar **order_split = NULL;
+       Eina_List *list_active = NULL;
+       QP_Module_Setting *mod = NULL;
+       retif(data == NULL || msg == NULL, , "Invalid parameter!");
+
+       dbus_error_init(&err);
+       ret = dbus_message_get_args(msg, &err,
+                       DBUS_TYPE_STRING, &key,
+                       DBUS_TYPE_STRING, &order,
+                       DBUS_TYPE_INT32, &num_featured,
+                       DBUS_TYPE_INVALID);
+       retif(ret == 0, , "dbus_message_get_args error");
+       retif(key == NULL, , "Failed to get key");
+       retif(order == NULL, , "Failed to get value");
+
+       if (dbus_error_is_set(&err)) {
+               ERR("dbus err: %s", err.message);
+               dbus_error_free(&err);
+               return;
+       }
+
+       if (strcmp(key, "quicksetting_order") == 0) {
+               DBG("order:%s %d", order, num_featured);
+               if (quickpanel_settings_featured_list_validation_check(order) == 1) {
+                       order_split = g_strsplit(order, ",", 0);
+                       if (order_split != NULL) {
+                               order_count = g_strv_length(order_split);
+                               DBG("count of quicksettings:%d", order_count);
+
+                               for (i = 0; i < order_count; i++) {
+                                       mod = quickpanel_settings_module_get_by_name(order_split[i]);
+                                       if (mod != NULL && mod->init != NULL) {
+                                               list_active = eina_list_append (list_active, mod);
+                                       } else {
+                                               ERR("failed to get quicksetting:%s", order_split[i]);
+                                               is_error = 1;
+                                       }
+                               }
+
+                               if (is_error == 0) {
+                                       if (list_active != NULL) {
+                                               quickpanel_setting_view_featured_reload(list_active, num_featured);
+                                                quickpanel_setting_view_all_reload(list_active);
+                                                quickpanel_setting_save_list_to_file(list_active, num_featured);
+                                                eina_list_free(list_active);
+                                       }
+                               }
+                               g_strfreev(order_split);
+                       }
+               } else {
+                       ERR("setting order validation check failed, igonore this signal");
+               }
+       }
+}
+
+static void _settings_ipc_init(void *data)
+{
+       struct appdata *ad = data;
+       retif(ad == NULL, , "Invalid parameter!");
+       retif(ad->dbus_connection == NULL, , "Invalid parameter!");
+
+       s_info.hdl_activity =
+               e_dbus_signal_handler_add(ad->dbus_connection, NULL,
+                               QP_DBUS_PATH,
+                               QP_DBUS_NAME,
+                               QS_DBUS_SIG_ACTIVITY,
+                               _handler_activity, ad);
+       msgif(s_info.hdl_activity == NULL, "fail to add size signal");
+
+       s_info.hdl_editing =
+               e_dbus_signal_handler_add(ad->dbus_connection, NULL,
+                               QP_DBUS_PATH,
+                               QP_DBUS_NAME,
+                               QS_DBUS_SIG_EDITING,
+                               _handler_editing, ad);
+       msgif(s_info.hdl_editing == NULL, "fail to add size signal");
+}
+
+static void _settings_ipc_fini(void *data)
+{
+       struct appdata *ad = data;
+       retif(ad == NULL, , "Invalid parameter!");
+       retif(ad->dbus_connection == NULL, , "Invalid parameter!");
+
+       if (s_info.hdl_activity != NULL) {
+               e_dbus_signal_handler_del(ad->dbus_connection,
+                               s_info.hdl_activity);
+               s_info.hdl_activity = NULL;
+       }
+
+       if (s_info.hdl_editing != NULL) {
+               e_dbus_signal_handler_del(ad->dbus_connection,
+                               s_info.hdl_editing);
+               s_info.hdl_editing = NULL;
+       }
+}
+
+
+/*****************************************************************************
+ *
+ * Util functions
+ *
+ *****************************************************************************/
+HAPI int quickpanel_settings_ipc_init(void *data)
+{
+       _settings_ipc_init(data);
+
+       return QP_OK;
+}
+
+HAPI int quickpanel_settings_ipc_fini(void *data)
+{
+       _settings_ipc_fini(data);
+
+       return QP_OK;
+}
diff --git a/daemon/settings/settings_ipc.h b/daemon/settings/settings_ipc.h
new file mode 100644 (file)
index 0000000..e496cab
--- /dev/null
@@ -0,0 +1,25 @@
+/*
+ * 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 __SETTING_IPC_H__
+#define __SETTING_IPC_H__
+
+int quickpanel_settings_ipc_init(void *data);
+int quickpanel_settings_ipc_fini(void *data);
+
+#endif /* __SETTING_IPC_H__ */
diff --git a/daemon/settings/settings_view_all.c b/daemon/settings/settings_view_all.c
new file mode 100644 (file)
index 0000000..2138f1d
--- /dev/null
@@ -0,0 +1,286 @@
+/*
+ * 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 <glib.h>
+#include <notification.h>
+#include "common.h"
+#include "quickpanel-ui.h"
+#include "quickpanel_def.h"
+#include "modules.h"
+#include "preference.h"
+#include "settings.h"
+#include "setting_utils.h"
+#include "settings_gridbox.h"
+#include "setting_module_api.h"
+#include "pager_common.h"
+#include "page_setting_all.h"
+#include "accessibility.h"
+#include "configuration.h"
+#ifdef QP_EMERGENCY_MODE_ENABLE
+#include "emergency_mode.h"
+#endif
+
+static int _init(void *data);
+static int _fini(void *data);
+static int _resume(void *data);
+static void _opened(void *data);
+static void _closed(void *data);
+static void _refresh(void *data);
+static void _view_icons_add(void);
+static void _view_icons_del(void);
+
+QP_Module settings_view_all = {
+       .name = "settings_view_all",
+       .init = _init,
+       .fini = _fini,
+       .resume = _resume,
+       .qp_opened = _opened,
+       .qp_closed = _closed,
+       .refresh = _refresh,
+       .lang_changed = NULL,
+};
+
+static int _icons_rotation_set(int angle)
+{
+       Evas_Object *icon = NULL;
+       Eina_List *icons = NULL;
+       Evas_Object *section = NULL;
+       Eina_List *l = NULL;
+       const char *signal = NULL;
+
+       retif(angle < 0, -1, "angle is %d", angle);
+
+       section = quickpanel_page_setting_all_view_get("ACTIVE.BUTTONS");
+       retif(!section, -1, "box is NULL");
+
+       icons = elm_box_children_get(section);
+       retif(!icons, -1, "icons list is NULL");
+
+       if (angle % 180 == 0) {
+               signal = "icon.portrait";
+       } else {
+               signal = "icon.landscape";
+       }
+
+       EINA_LIST_FOREACH(icons, l, icon) {
+               elm_object_signal_emit(icon, signal, "quickpanl.prog");
+               edje_object_message_signal_process(_EDJ(icon));
+       }
+
+       eina_list_free(icons);
+
+       return 0;
+}
+
+static Evas_Object *_icon_create(QP_Module_Setting *module, Evas_Object *parent) {
+       retif(module == NULL, NULL, "Invalid parameter!");
+       retif(parent == NULL, NULL, "Invalid parameter!");
+
+       return quickpanel_setting_module_icon_create(module, parent);
+}
+
+static Evas_Object *_divider_create(Evas_Object *parent) {
+       Evas_Object *divider = NULL;
+       retif(parent == NULL, NULL, "invalid parameter");
+
+       struct appdata *ad = (struct appdata*)quickpanel_get_app_data();
+       retif(ad == NULL, NULL, "application data is NULL");
+
+       divider = quickpanel_uic_load_edj(parent, DEFAULT_EDJ, "quickpanel/setting_icon_divider", 0);
+
+       retif(divider == NULL, NULL, "failed to load divider");
+
+       return divider;
+}
+
+static void _icon_pack(Evas_Object *gridbox, Evas_Object *icon, int need_divider)
+{
+       Evas_Object *divider = NULL;
+       retif(gridbox == NULL, , "Invalid parameter!");
+       retif(icon == NULL, , "Invalid parameter!");
+
+       quickpanel_settings_gridbox_item_add(gridbox, icon, SETTINGS_GRIDBOX_ITEM_ICON, SETTINGS_GRIDBOX_APPEND);
+
+       if (need_divider == 1) {
+               divider = _divider_create(gridbox);
+               if (divider != NULL) {
+                       quickpanel_settings_gridbox_item_add(gridbox, divider,
+                                       SETTINGS_GRIDBOX_ITEM_DIVIDER, SETTINGS_GRIDBOX_APPEND);
+               }
+       }
+}
+
+static void _view_icons_add()
+{
+       int index = 0, total = 0;
+       Eina_List *l;
+       Eina_List *l_next;
+       Evas_Object *gridbox = NULL;
+       Evas_Object *icon = NULL;
+       QP_Module_Setting *module = NULL;
+       Eina_List *list_all_icon = NULL;
+       Evas_Object *layout = quickpanel_page_setting_all_view_get("LAYOUT");
+       retif(layout == NULL, , "Invalid parameter!");
+
+       quickpanel_settings_all_list_get(&list_all_icon);
+       retif(list_all_icon == NULL, , "Invalid parameter!");
+
+       gridbox = quickpanel_page_setting_all_view_get("ACTIVE.BUTTONS");
+       if (gridbox == NULL) {
+               gridbox = quickpanel_settings_gridbox_create(layout, quickpanel_get_app_data());
+               quickpanel_page_setting_all_view_set("ACTIVE.BUTTONS", gridbox);
+       }
+
+       total = eina_list_count(list_all_icon);
+       DBG("total:%d", total);
+       EINA_LIST_FOREACH_SAFE(list_all_icon, l, l_next, module) {
+               icon = _icon_create(module, gridbox);
+               if (icon != NULL) {
+                       _icon_pack(gridbox, icon, (index != total - 1) ? 1 : 0);
+                       quickpanel_setting_module_icon_add(module, icon, QP_SETTING_ICON_CONTAINER_ALL_LIST);
+                       quickpanel_setting_module_icon_status_update(module, FLAG_VALUE_VOID, FLAG_VALUE_VOID);
+               }
+               DBG("all list:%s", module->name);
+               index++;
+       }
+
+       eina_list_free(list_all_icon);
+}
+
+static void _view_icons_del(void)
+{
+       Eina_List *l;
+       Eina_List *l_next;
+       Evas_Object *icon = NULL;
+       QP_Module_Setting *module = NULL;
+       Eina_List *list_icons = NULL;
+       Evas_Object *box = quickpanel_page_setting_all_view_get("ACTIVE.BUTTONS");
+       retif(box == NULL, , "Invalid parameter!");
+
+       list_icons = elm_box_children_get(box);
+
+       EINA_LIST_FOREACH_SAFE(list_icons, l, l_next, icon) {
+               module = quickpanel_setting_module_get_from_icon(icon);
+               quickpanel_setting_module_icon_remove(module, icon);
+               elm_box_unpack(box, icon);
+               if (icon != NULL) {
+                       evas_object_del(icon);
+                       icon = NULL;
+               }
+       }
+
+       eina_list_free(list_icons);
+}
+
+static int _view_create(void *data)
+{
+       _view_icons_add();
+
+       return QP_OK;
+}
+
+static int _view_destroy(void *data)
+{
+       _view_icons_del();
+
+       return QP_OK;
+}
+
+/*****************************************************************************
+ *
+ * Util functions
+ *
+ *****************************************************************************/
+static int _init(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       retif(ad == NULL, QP_FAIL, "Invalid parameter!");
+
+        _view_create(data);
+
+       return QP_OK;
+}
+
+static int _fini(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       retif(ad == NULL, QP_FAIL, "Invalid parameter!");
+
+       _view_destroy(ad);
+
+       return QP_OK;
+}
+
+static int _resume(void *data)
+{
+       struct appdata *ad = data;
+       retif(ad == NULL, QP_FAIL, "Invalid parameter!");
+
+       return QP_OK;
+}
+
+static void _opened(void *data)
+{
+       struct appdata *ad = data;
+       retif(ad == NULL, , "Invalid parameter!");
+}
+
+static void _closed(void *data)
+{
+       struct appdata *ad = data;
+       retif(ad == NULL, , "Invalid parameter!");
+}
+
+static void _refresh(void *data) {
+       struct appdata *ad = data;
+       retif(ad == NULL, , "Invalid parameter!");
+
+       _icons_rotation_set(ad->angle);
+}
+
+HAPI void quickpanel_setting_view_all_reload(Eina_List *list_all_module)
+{
+       int index = 0, total = 0;
+       Eina_List *l;
+       Eina_List *l_next;
+       Evas_Object *gridbox = NULL;
+       Evas_Object *icon = NULL;
+       QP_Module_Setting *module = NULL;
+       retif(list_all_module == NULL, , "Invalid parameter!");
+
+       gridbox = quickpanel_page_setting_all_view_get("ACTIVE.BUTTONS");
+       retif(gridbox == NULL, , "Invalid parameter!");
+
+       quickpanel_settings_gridbox_unpack_all(gridbox);
+
+       total = eina_list_count(list_all_module);
+       DBG("total:%d", total);
+       EINA_LIST_FOREACH_SAFE(list_all_module, l, l_next, module) {
+               if ((icon = quickpanel_setting_module_icon_get(module,
+                               QP_SETTING_ICON_CONTAINER_ALL_LIST)) == NULL) {
+                       icon = _icon_create(module, gridbox);
+               }
+               if (icon != NULL) {
+                       _icon_pack(gridbox, icon, (index != total - 1) ? 1 : 0);
+                       quickpanel_setting_module_icon_add(module, icon, QP_SETTING_ICON_CONTAINER_ALL_LIST);
+                       quickpanel_setting_module_icon_status_update(module, FLAG_VALUE_VOID, FLAG_VALUE_VOID);
+               }
+               DBG("all list:%s", module->name);
+               index++;
+       }
+}
diff --git a/daemon/settings/settings_view_all.h b/daemon/settings/settings_view_all.h
new file mode 100644 (file)
index 0000000..7232a7f
--- /dev/null
@@ -0,0 +1,24 @@
+/*
+ * 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 __SETTING_VIEW_ALL_H__
+#define __SETTING_VIEW_ALL_H__
+
+void qp_setting_view_all_reload(Eina_List *list_all_module);
+
+#endif /* __SETTING_VIEW_ALL_H__ */
diff --git a/daemon/settings/settings_view_featured.c b/daemon/settings/settings_view_featured.c
new file mode 100644 (file)
index 0000000..16f8b89
--- /dev/null
@@ -0,0 +1,390 @@
+/*
+ * 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 <glib.h>
+#include <notification.h>
+#include <efl_assist.h>
+#include "common.h"
+#include "quickpanel-ui.h"
+#include "quickpanel_def.h"
+#include "modules.h"
+#include "preference.h"
+#include "settings.h"
+#include "setting_utils.h"
+#include "settings_gridbox.h"
+#include "setting_module_api.h"
+#include "settings_view_featured.h"
+#include "pager_common.h"
+#include "accessibility.h"
+#include "configuration.h"
+#ifdef QP_EMERGENCY_MODE_ENABLE
+#include "emergency_mode.h"
+#endif
+
+static int _init(void *data);
+static void _init_job_cb(void *data);
+static int _fini(void *data);
+static int _resume(void *data);
+static void _opened(void *data);
+static void _closed(void *data);
+static void _refresh(void *data);
+static void _lang_changed(void *data);
+
+QP_Module settings_view_featured = {
+       .name = "settings_view_featured",
+       .init = _init,
+       .init_job_cb = _init_job_cb,
+       .fini = _fini,
+       .resume = _resume,
+       .qp_opened = _opened,
+       .qp_closed = _closed,
+       .refresh = _refresh,
+       .lang_changed = _lang_changed,
+};
+
+static void _view_layout_create_with_scroller(void *data)
+{
+       Evas_Object *scroller = NULL;
+       Evas_Object *box = NULL;
+       Evas_Object *container = NULL;
+       struct appdata *ad = data;
+       retif(!ad->ly, , "layout is NULL!");
+
+       container = quickpanel_uic_load_edj(ad->ly, DEFAULT_EDJ, "quickpanel/setting_container_wvga", 0);
+
+       retif(container == NULL, , "failed to load container");
+
+       scroller = elm_scroller_add(container);
+       retif(!scroller, , "fail to add scroller");
+       elm_object_style_set(scroller, "effect");
+       elm_scroller_bounce_set(scroller, EINA_TRUE, EINA_FALSE);
+       elm_scroller_policy_set(scroller, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_OFF);
+       elm_scroller_movement_block_set(scroller, ELM_SCROLLER_MOVEMENT_BLOCK_HORIZONTAL);
+
+       box = elm_box_add(scroller);
+       if (!box) {
+               ERR("fail to add box");
+               if (scroller != NULL) {
+                       evas_object_del(scroller);
+                       scroller = NULL;
+               }
+               if (container != NULL) {
+                       evas_object_del(container);
+                       container = NULL;
+               }
+               return;
+       }
+
+       elm_object_style_set(box, "effect");
+
+       evas_object_size_hint_weight_set(box, 0.0 , EVAS_HINT_EXPAND);
+       evas_object_size_hint_fill_set(box, EVAS_HINT_FILL, EVAS_HINT_FILL);
+       elm_box_horizontal_set(box, EINA_TRUE);
+       evas_object_show(box);
+
+       elm_object_content_set(scroller, box);
+
+       elm_object_part_content_set(container, QP_SETTING_SCROLLER_PART_WVGA, scroller);
+
+       quickpanel_setting_layout_set(ad->ly, container);
+}
+
+
+static void _view_layout_create(void *data)
+{
+       Evas_Object *box = NULL;
+       Evas_Object *container = NULL;
+       struct appdata *ad = data;
+       retif(!ad->ly, , "layout is NULL!");
+
+       container = quickpanel_uic_load_edj(ad->ly, DEFAULT_EDJ, "quickpanel/setting_container_wvga", 0);
+
+       retif(container == NULL, , "failed to load container");
+
+       box = elm_box_add(container);
+       if (!box) {
+               if (container != NULL) {
+                       evas_object_del(container);
+                       container = NULL;
+               }
+               return;
+       }
+
+       elm_object_style_set(box, "effect");
+
+       evas_object_size_hint_weight_set(box, 0.0 , EVAS_HINT_EXPAND);
+       evas_object_size_hint_fill_set(box, EVAS_HINT_FILL, EVAS_HINT_FILL);
+       elm_box_horizontal_set(box, EINA_TRUE);
+       evas_object_show(box);
+
+       elm_object_part_content_set(container, QP_SETTING_SCROLLER_PART_WVGA, box);
+
+       quickpanel_setting_layout_set(ad->ly, container);
+}
+
+static void _view_icons_add(void *data)
+{
+       int index = 0, total = 0;
+       Eina_List *l;
+       Eina_List *l_next;
+       Evas_Object *icon = NULL;
+       QP_Module_Setting *module = NULL;
+       Eina_List *list_featured_icon = NULL;
+       struct appdata *ad = (struct appdata *)data;
+       Evas_Object *box = quickpanel_setting_box_get(ad->ly);
+       retif(box == NULL, , "Invalid parameter!");
+
+       quickpanel_settings_featured_list_get(&list_featured_icon);
+       retif(list_featured_icon == NULL, , "Invalid parameter!");
+
+       total = eina_list_count(list_featured_icon);
+       EINA_LIST_FOREACH_SAFE(list_featured_icon, l, l_next, module) {
+               icon = quickpanel_setting_module_icon_create(module, box);
+               quickpanel_setting_module_icon_add(module, icon, QP_SETTING_ICON_CONTAINER_FEATURED);
+               quickpanel_setting_icon_pack(box, icon, (index == total - 1) ? 0 : 1);
+               quickpanel_setting_module_icon_status_update(module, FLAG_VALUE_VOID, FLAG_VALUE_VOID);
+               index++;
+       }
+
+       eina_list_free(list_featured_icon);
+}
+
+static void _view_icons_del(void *data)
+{
+       Eina_List *l;
+       Eina_List *l_next;
+       Evas_Object *icon = NULL;
+       QP_Module_Setting *module = NULL;
+       Eina_List *list_featured_icon = NULL;
+       struct appdata *ad = (struct appdata *)data;
+       retif(ad == NULL, , "Invalid parameter!");
+       Evas_Object *box = quickpanel_setting_box_get(ad->ly);
+       retif(box == NULL, , "Invalid parameter!");
+       list_featured_icon = elm_box_children_get(box);
+
+       EINA_LIST_FOREACH_SAFE(list_featured_icon, l, l_next, icon) {
+               module = quickpanel_setting_module_get_from_icon(icon);
+               quickpanel_setting_module_icon_remove(module, icon);
+               elm_box_unpack(box, icon);
+               if (icon != NULL) {
+                       evas_object_del(icon);
+                       icon = NULL;
+               }
+       }
+
+       eina_list_free(list_featured_icon);
+}
+
+/*****************************************************************************
+ *
+ * Util functions
+ *
+ *****************************************************************************/
+static int _init(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       retif(ad == NULL, QP_FAIL, "Invalid parameter!");
+
+#ifdef QP_EMERGENCY_MODE_ENABLE
+       if (quickpanel_emergency_mode_is_on()) {
+               elm_object_signal_emit(ad->ly, "quickpanel.setting.hide", "quickpanel.prog");
+               return QP_OK;
+       }
+#endif
+
+        _view_layout_create(data);
+        _view_icons_add(data);
+
+       elm_object_signal_emit(ad->ly, "quickpanel.setting.show", "quickpanel.prog");
+
+       return QP_OK;
+}
+
+static void _init_job_cb(void *data)
+{
+       struct appdata *ad = data;
+       Evas_Object *scroller = NULL;
+       retif(ad == NULL, , "Invalid parameter!");
+
+       quickpanel_setting_set_scroll_page_width(ad);
+       quickpanel_setting_stop(ad->ly, 0);
+       scroller = quickpanel_setting_scroller_get(ad->ly);
+       evas_object_show(scroller);
+}
+
+static int _fini(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       retif(ad == NULL, QP_FAIL, "Invalid parameter!");
+
+       _view_icons_del(ad);
+       quickpanel_setting_layout_remove(ad->ly);
+       elm_object_signal_emit(ad->ly, "quickpanel.setting.hide", "quickpanel.prog");
+
+       return QP_OK;
+}
+
+static int _resume(void *data)
+{
+       struct appdata *ad = data;
+       retif(ad == NULL, QP_FAIL, "Invalid parameter!");
+
+       return QP_OK;
+}
+
+static void _opened(void *data)
+{
+       struct appdata *ad = data;
+       retif(ad == NULL, , "Invalid parameter!");
+
+       quickpanel_setting_view_featured_initial_focus_set();
+}
+
+static void _closed(void *data)
+{
+       struct appdata *ad = data;
+       Evas_Object *focused_obj = NULL;
+       retif(ad == NULL, , "Invalid parameter!");
+
+       quickpanel_setting_stop(ad->ly, 0);
+
+       if (ad->win != NULL) {
+               focused_obj = elm_object_focused_object_get(ad->win);
+               if (focused_obj != NULL) {
+                       elm_object_focus_set(focused_obj, EINA_FALSE);
+               }
+       }
+}
+
+static void _refresh(void *data) {
+       struct appdata *ad = data;
+       retif(ad == NULL, , "Invalid parameter!");
+
+       quickpanel_setting_container_rotation_set(ad->ly, ad->angle);
+       quickpanel_setting_icons_rotation_set(ad->ly, ad->angle);
+       if (ad->is_opened == 0) {
+               quickpanel_setting_stop(ad->ly, 1);
+       }
+}
+
+static void _lang_changed(void *data)
+{
+       struct appdata *ad = data;
+       retif(ad == NULL, , "Invalid parameter!");
+
+       if (ad->is_opened == 0) {
+               quickpanel_setting_stop(ad->ly, 0);
+       }
+}
+
+HAPI Eina_Bool quickpanel_settings_is_in_left_edge(void)
+{
+       if (quickpanel_setting_scroll_page_get(quickpanel_get_app_data()) == 0) {
+               return EINA_TRUE;
+       }
+
+       return EINA_FALSE;
+}
+
+HAPI void quickpanel_setting_view_featured_reload(Eina_List *list_all_module, int num_featured)
+{
+       int index = 0, total = 0;
+       Eina_List *l;
+       Eina_List *l_next;
+       Evas_Object *box = NULL;
+       Evas_Object *icon = NULL;
+       QP_Module_Setting *module = NULL;
+       struct appdata *ad = quickpanel_get_app_data();
+       retif(list_all_module == NULL, , "Invalid parameter!");
+
+       box = quickpanel_setting_box_get(ad->ly);
+       retif(box == NULL, , "invalid parameter");
+
+       quickpanel_setting_icon_unpack_all(box);
+
+       total = eina_list_count(list_all_module);
+       DBG("total:%d", total);
+       EINA_LIST_FOREACH_SAFE(list_all_module, l, l_next, module) {
+               if (index < num_featured) {
+                       if ((icon = quickpanel_setting_module_icon_get(module,
+                                       QP_SETTING_ICON_CONTAINER_FEATURED)) == NULL) {
+                               icon = quickpanel_setting_module_icon_create(module, box);
+                       }
+                       if (icon != NULL) {
+                               quickpanel_setting_module_icon_add(module, icon, QP_SETTING_ICON_CONTAINER_FEATURED);
+                               quickpanel_setting_icon_pack(box, icon, (index == num_featured - 1) ? 0 : 1);
+                               quickpanel_setting_module_icon_status_update(module, FLAG_VALUE_VOID, FLAG_VALUE_VOID);
+                       }
+                       DBG("all list:%s", module->name);
+               } else {
+                       if ((icon = quickpanel_setting_module_icon_get(module,
+                                       QP_SETTING_ICON_CONTAINER_FEATURED)) != NULL) {
+                               quickpanel_setting_module_icon_remove(module, icon);
+                               evas_object_del(icon);
+                               icon = NULL;
+                       }
+               }
+
+               index++;
+       }
+}
+
+HAPI void quickpanel_setting_view_featured_initial_focus_set(void)
+{
+       struct appdata *ad = quickpanel_get_app_data();
+       retif(ad == NULL, , "Invalid parameter!");
+
+       Evas_Object *obj_first = NULL;
+       Eina_List *list_featured_icon = NULL;
+       Evas_Object *box = quickpanel_setting_box_get(ad->ly);
+       retif(box == NULL, , "Invalid parameter!");
+
+#ifdef QP_EMERGENCY_MODE_ENABLE
+       if (quickpanel_emergency_mode_is_on()) {
+               return;
+       }
+#endif
+
+       if (quickpanel_uic_opened_reason_get() == OPENED_BY_CMD_SHOW_SETTINGS) {
+               return;
+       }
+
+       list_featured_icon = elm_box_children_get(box);
+       if (list_featured_icon != NULL) {
+               obj_first = eina_list_nth(list_featured_icon, 0);
+               if (obj_first != NULL) {
+                       elm_object_focus_set(obj_first, EINA_FALSE);
+                       elm_object_focus_set(obj_first, EINA_TRUE);
+               }
+               eina_list_free(list_featured_icon);
+       }
+}
+
+HAPI void quickpanel_setting_view_featured_brightness_init(Evas_Object *brightness_view)
+{
+       struct appdata *ad = quickpanel_get_app_data();
+       retif(ad == NULL, , "Invalid parameter!");
+
+       Evas_Object *container = NULL;
+
+       container = quickpanel_setting_layout_get(ad->ly, QP_SETTING_BASE_PART);
+
+       retif(container == NULL, ,"Failed to get container");
+
+       elm_object_part_content_set(container, QP_SETTING_BRIGHTNESS_PART_WVGA, brightness_view);
+}
diff --git a/daemon/settings/settings_view_featured.h b/daemon/settings/settings_view_featured.h
new file mode 100644 (file)
index 0000000..e1b5c3c
--- /dev/null
@@ -0,0 +1,27 @@
+/*
+ * 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 __SETTING_VIEW_FEATURED_H__
+#define __SETTING_VIEW_FEATURED_H__
+
+Eina_Bool quickpanel_settings_is_in_left_edge(void);
+void quickpanel_setting_view_featured_reload(Eina_List *list_all_module, int num_featured);
+void quickpanel_setting_view_featured_initial_focus_set(void);
+void quickpanel_setting_view_featured_brightness_init(Evas_Object *brightness_view);
+
+#endif /* __SETTING_VIEW_FEATURED_H__ */
diff --git a/daemon/sim_controller.c b/daemon/sim_controller.c
new file mode 100644 (file)
index 0000000..8302b45
--- /dev/null
@@ -0,0 +1,769 @@
+/*
+ * 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 <stdio.h>
+#include <stdlib.h>
+#include <Evas.h>
+#include <Elementary.h>
+#include <Eina.h>
+#include <dlog.h>
+#include <vconf.h>
+
+#include <tapi_common.h>
+#include <ITapiSim.h>
+#include <TelCall.h>
+#include <ITapiCall.h>
+#include <TelNetwork.h>
+#include "setting_utils.h"
+
+#include "list_util.h"
+#include "quickpanel-ui.h"
+#include "common.h"
+
+#include "handler_controller.h"
+
+#define TAPI_HANDLE_MAX  2
+
+static struct
+{
+       TapiHandle *handle[TAPI_HANDLE_MAX+1];
+       Eina_Bool sim_card_ready[2];
+
+       Evas_Object *layout;
+
+       int call_state; // 0:none, 1:call
+}
+sim_state_info =
+{
+               .handle[0] = NULL,
+               .handle[1] = NULL,
+               .handle[2] = NULL,
+               .sim_card_ready[0] = EINA_FALSE,
+               .sim_card_ready[1] = EINA_FALSE,
+               .layout = NULL,
+               .call_state = 0,
+};
+
+static int _sim_controller_get_call_state(void);
+
+static void register_sim_callbacks();
+static void unregister_sim_callbacks();
+
+static void __sim_controller_call_state_changed_cb(keynode_t *key, void *data)
+{
+       int call_state = _sim_controller_get_call_state();
+
+       if (sim_state_info.call_state != call_state)
+       {
+               DBG("Call state changed[%d]", call_state);
+               sim_state_info.call_state = call_state;
+       }
+}
+
+static int _sim_controller_get_call_state(void)
+{
+       int value = 0;
+       int ret = 0;
+
+       ret = vconf_get_int(VCONFKEY_CALL_STATE, &value);
+       if (ret != 0)
+       {
+               ERR("Failed to get call state");
+               return 0;
+       }
+
+       if (value == VCONFKEY_CALL_OFF)
+       {
+               return 0;
+       }
+
+       DBG("Call status[%d]", value);
+       return 1;
+}
+
+static char *get_sim_plmn(TapiHandle *handle)
+{
+       int ret;
+       char *network_name = NULL;
+
+       /* Reading Network (PLMN) name - ‘string’ type Property */
+       ret = tel_get_property_string(handle,
+                       TAPI_PROP_NETWORK_NETWORK_NAME, &network_name);
+       if(ret == TAPI_API_SUCCESS)
+       {
+         /* ‘network_name’ contains valid Network name based on Display condition */
+               return network_name;
+       }
+       else
+       {
+               ERR("Sim = %p PLMN = ERROR[%d]", handle, ret);
+         /* get property failed */
+       }
+
+       return NULL;
+}
+
+static char *get_sim_spn(TapiHandle *handle)
+{
+       int ret;
+       char *spn_name = NULL;
+
+
+       /* Reading SPN name - ‘string’ type Property */
+       ret = tel_get_property_string(handle,
+                       TAPI_PROP_NETWORK_SPN_NAME, &spn_name);
+       if(ret == TAPI_API_SUCCESS)
+       {
+         /* ‘spn_name’ contains valid Service provider name */
+               return spn_name;
+       }
+       else
+       {
+               ERR("Sim = %p SPN = ERROR[%d]", handle, ret);
+         /* get property failed */
+               return NULL;
+       }
+}
+
+static char *get_plmn_spn_network(int handle_num, TapiHandle *handle)
+{
+       int ret = TAPI_API_SUCCESS;
+       int service_type = TAPI_NETWORK_SERVICE_TYPE_UNKNOWN;
+       int name_option = TAPI_NETWORK_DISP_INVALID;
+       char *plmn = NULL;
+       char *spn = NULL;
+       char buf[1024] = { 0, };
+
+       // get service type
+       ret = tel_get_property_int(handle, TAPI_PROP_NETWORK_SERVICE_TYPE, &service_type);
+       if (ret != TAPI_API_SUCCESS)
+       {
+               ERR("Failed to get service type[%d]", ret);
+       }
+
+       if (service_type >= TAPI_NETWORK_SERVICE_TYPE_2G)
+       {
+               // get network name option
+               ret = tel_get_property_int(handle, TAPI_PROP_NETWORK_NAME_OPTION, &name_option);
+               if (ret != TAPI_API_SUCCESS)
+               {
+                       ERR("Failed to get name option[%d]", ret);
+               }
+
+               switch (name_option)
+               {
+               case TAPI_NETWORK_DISP_SPN:
+                       spn = get_sim_spn(handle);
+                       if (spn != NULL && spn[0] != 0)
+                       {
+                               INFO("PLMN/SPN - Sim %p using SPN: %s", handle, spn);
+                               snprintf(buf, sizeof(buf), "%s", spn);
+                       }
+                       break;
+               case TAPI_NETWORK_DISP_PLMN:
+                       plmn = get_sim_plmn(handle);
+                       if (plmn != NULL && plmn[0] != 0)
+                       {
+                               INFO("PLMN/SPN - Sim %p using PLMN: %s", handle, plmn);
+                               snprintf(buf, sizeof(buf), "%s", plmn);
+                       }
+                       break;
+               case TAPI_NETWORK_DISP_SPN_PLMN:
+                       spn = get_sim_spn(handle);
+                       plmn = get_sim_plmn(handle);
+                       if (spn != NULL && spn[0] != 0 && plmn != NULL && plmn[0] != 0)
+                       {
+                               INFO("PLMN/SPN - Sim %p using SPN: %s, PLMN: %s", handle, spn, plmn);
+                               snprintf(buf, sizeof(buf), "%s - %s", plmn, spn);
+                       }
+                       else if (spn != NULL && spn[0] != 0)
+                       {
+                               INFO("PLMN/SPN - Sim %p using SPN: %s", handle, spn);
+                               snprintf(buf, sizeof(buf), "%s", spn);
+                       }
+                       else if (plmn != NULL && plmn[0] != 0)
+                       {
+                               INFO("PLMN/SPN - Sim %p using PLMN: %s", handle, plmn);
+                               snprintf(buf, sizeof(buf), "%s", plmn);
+                       }
+                       break;
+               default:
+                       ERR("Invalid name option[%d]", name_option);
+                       plmn = get_sim_plmn(handle);
+                       if (plmn != NULL && plmn[0] != 0)
+                       {
+                               INFO("PLMN/SPN - Sim %p using PLMN: %s", handle, plmn);
+                               snprintf(buf, sizeof(buf), "%s", plmn);
+                       }
+                       break;
+               }
+       }
+       else
+       {
+               switch (service_type)
+               {
+               case TAPI_NETWORK_SERVICE_TYPE_NO_SERVICE:
+                       snprintf(buf, sizeof(buf), "%s", _("IDS_IDLE_BODY_NO_SERVICE"));
+                       break;
+               case TAPI_NETWORK_SERVICE_TYPE_EMERGENCY:
+                       snprintf(buf, sizeof(buf), "%s", _("IDS_IDLE_MBODY_EMERGENCY_CALLS_ONLY"));
+                       break;
+               case TAPI_NETWORK_SERVICE_TYPE_SEARCH:
+                       snprintf(buf, sizeof(buf), "%s", _("IDS_COM_BODY_SEARCHING"));
+                       break;
+               default:
+                       ERR("invalid service type[%d]", service_type);
+                       plmn = get_sim_plmn(handle);
+                       if (plmn != NULL && plmn[0] != 0)
+                       {
+                               INFO("PLMN/SPN - Sim %p using PLMN: %s", handle, plmn);
+                               snprintf(buf, sizeof(buf), "%s", plmn);
+                       }
+                       break;
+               }
+       }
+
+       DBG("handle[%d][%p] service_type[%d], name_option[%d] >> [%s]", handle_num, handle, service_type, name_option, buf);
+
+       if (strlen(buf) == 0)
+       {
+               ERR("Empty string");
+               snprintf(buf, sizeof(buf), "%s", _("IDS_IDLE_BODY_NO_SERVICE"));
+       }
+       else if (strncasecmp(buf, "No Service", strlen("No Service")) == 0)
+       {
+               ERR("USING SPECIAL NETWORK NAME:  %s in handle: %d", _("IDS_IDLE_BODY_NO_SERVICE"), handle_num);
+               return strdup(_("IDS_IDLE_BODY_NO_SERVICE"));
+       }
+       else if (strncasecmp(buf, "EMERGENCY", strlen("EMERGENCY")) == 0)
+       {
+               ERR("USING SPECIAL NETWORK NAME:  %s in handle: %d", _("IDS_IDLE_MBODY_EMERGENCY_CALLS_ONLY"), handle_num);
+               return strdup(_("IDS_IDLE_MBODY_EMERGENCY_CALLS_ONLY"));
+       }
+       else if (strncasecmp(buf, "Searching", strlen("Searching")) == 0)
+       {
+               ERR("USING SPECIAL NETWORK NAME:  %s in handle: %d", _("IDS_COM_BODY_SEARCHING"), handle_num);
+               return strdup(_("IDS_COM_BODY_SEARCHING"));
+       }
+       else if (strncasecmp(buf, "SIM Error", strlen("SIM Error")) == 0)
+       {
+               ERR("USING SPECIAL NETWORK NAME:  %s in handle: %d", _("IDS_IDLE_BODY_INVALID_SIM_CARD"), handle_num);
+               return strdup(_("IDS_IDLE_BODY_INVALID_SIM_CARD"));
+       }
+       else if (strncasecmp(buf, "NO SIM", strlen("NO SIM")) == 0)
+       {
+               ERR("USING SPECIAL NETWORK NAME:  %s in handle: %d", _("IDS_IDLE_MBODY_EMERGENCY_CALLS_ONLY"), handle_num);
+               return strdup(_("IDS_IDLE_MBODY_EMERGENCY_CALLS_ONLY"));
+       }
+
+       return strdup(buf);
+}
+
+// --------------------------------------------------------------------------------------------
+static void print_sim_status(TelSimCardStatus_t sim_status, int card_changed)
+{
+       switch(sim_status)
+       {
+               case TAPI_SIM_STATUS_CARD_ERROR        :
+                       INFO("Sim card status: TAPI_SIM_STATUS_CARD_ERROR");
+               break;
+
+               case TAPI_SIM_STATUS_CARD_NOT_PRESENT  :
+                       INFO("Sim card status: TAPI_SIM_STATUS_CARD_NOT_PRESENT");
+               break;
+
+               case TAPI_SIM_STATUS_SIM_INITIALIZING  :
+                       INFO("Sim card status: TAPI_SIM_STATUS_SIM_INITIALIZING");
+               break;
+
+               case TAPI_SIM_STATUS_SIM_INIT_COMPLETED:
+                       INFO("Sim card status: TAPI_SIM_STATUS_SIM_INIT_COMPLETED");
+               break;
+
+               case TAPI_SIM_STATUS_SIM_PIN_REQUIRED  :
+                       INFO("Sim card status: TAPI_SIM_STATUS_SIM_PIN_REQUIRED");
+               break;
+
+               case TAPI_SIM_STATUS_SIM_PUK_REQUIRED  :
+                       INFO("Sim card status: TAPI_SIM_STATUS_SIM_PUK_REQUIRED");
+               break;
+
+               case TAPI_SIM_STATUS_CARD_BLOCKED      :
+                       INFO("Sim card status: TAPI_SIM_STATUS_CARD_BLOCKED");
+               break;
+
+               case TAPI_SIM_STATUS_SIM_NCK_REQUIRED  :
+                       INFO("Sim card status: TAPI_SIM_STATUS_SIM_NCK_REQUIRED");
+               break;
+
+               case TAPI_SIM_STATUS_SIM_NSCK_REQUIRED :
+                       INFO("Sim card status: TAPI_SIM_STATUS_SIM_NSCK_REQUIRED");
+               break;
+
+               case TAPI_SIM_STATUS_SIM_SPCK_REQUIRED :
+                       INFO("Sim card status: TAPI_SIM_STATUS_SIM_SPCK_REQUIRED");
+               break;
+
+               case TAPI_SIM_STATUS_SIM_CCK_REQUIRED  :
+                       INFO("Sim card status: TAPI_SIM_STATUS_SIM_CCK_REQUIRED");
+               break;
+
+               case TAPI_SIM_STATUS_CARD_REMOVED      :
+                       INFO("Sim card status: TAPI_SIM_STATUS_CARD_REMOVED");
+               break;
+
+               case TAPI_SIM_STATUS_SIM_LOCK_REQUIRED :
+                       INFO("Sim card status: TAPI_SIM_STATUS_SIM_LOCK_REQUIRED");
+               break;
+
+               case TAPI_SIM_STATUS_CARD_CRASHED      :
+                       INFO("Sim card status: TAPI_SIM_STATUS_CARD_CRASHED");
+               break;
+
+               case TAPI_SIM_STATUS_CARD_POWEROFF     :
+                       INFO("Sim card status: TAPI_SIM_STATUS_CARD_POWEROFF");
+               break;
+
+               case TAPI_SIM_STATUS_UNKNOWN           :
+                       INFO("Sim card status: TAPI_SIM_STATUS_UNKNOWN");
+               break;
+       }
+
+       INFO("Sim_card_changed: %d", card_changed);
+}
+
+static void get_sim_status()
+{
+       int i;
+       int ret;
+       TelSimCardStatus_t sim_status;
+       int card_changed;
+
+       for(i = 0; i < TAPI_HANDLE_MAX + 1; ++i)
+       {
+               if(sim_state_info.handle[i])
+               {
+                       ret = tel_get_sim_init_info (sim_state_info.handle[i], &sim_status, &card_changed);
+                       if(ret == 0)
+                       {
+                               print_sim_status(sim_status, card_changed);
+
+                               if(sim_status == TAPI_SIM_STATUS_SIM_INIT_COMPLETED ||
+                                       sim_status == TAPI_SIM_STATUS_SIM_PIN_REQUIRED)
+                               {
+                                       if (i < TAPI_HANDLE_MAX)
+                                       {
+                                               sim_state_info.sim_card_ready[i] = EINA_TRUE;
+                                       }
+                               }
+                               else
+                               {
+                                       ERR("SIM[%d] is not completed initialization [%d]", i, sim_status);
+                               }
+                       }
+                       else
+                       {
+                               ERR("Could not get sim[%d] status[%d]", i, ret);
+                       }
+               }
+       }
+}
+
+static void sim_handler_text_set(Eina_Bool flight_mode)
+{
+       if (flight_mode)
+       {
+               // if flight mode, No service
+               quickpanel_handler_text_set(_("IDS_IDLE_BODY_NO_SERVICE"));
+       }
+       else if (sim_state_info.sim_card_ready[0] && sim_state_info.sim_card_ready[1])
+       {
+               quickpanel_handler_text_set(NULL);
+       }
+       else if(sim_state_info.sim_card_ready[0])
+       {
+               char *plmn_spn1 = get_plmn_spn_network(0, sim_state_info.handle[0]);
+               quickpanel_handler_text_set(plmn_spn1);
+               if (plmn_spn1)
+               {
+                       free(plmn_spn1);
+               }
+       }
+       else if(sim_state_info.sim_card_ready[1])
+       {
+               char *plmn_spn1 = get_plmn_spn_network(1, sim_state_info.handle[1]);
+               quickpanel_handler_text_set(plmn_spn1);
+               if (plmn_spn1)
+               {
+                       free(plmn_spn1);
+               }
+       }
+       else
+       {
+               quickpanel_handler_text_set(_("IDS_IDLE_MBODY_EMERGENCY_CALLS_ONLY"));
+       }
+
+}
+
+static void init_view()
+{
+       struct appdata *ad = NULL;
+
+       ad = quickpanel_get_app_data();
+       if (ad == NULL)
+       {
+               ERR("invalid data");
+               return;
+       }
+
+       int flight_mode_state = EINA_FALSE;
+       int ret = vconf_get_bool(VCONFKEY_TELEPHONY_FLIGHT_MODE, &flight_mode_state);
+       if(ret != 0)
+       {
+               ERR("Could not get 'VCONFKEY_TELEPHONY_FLIGHT_MODE' value");
+       }
+
+       sim_handler_text_set(flight_mode_state);
+}
+
+/* Initialize TAPI */
+static void _init_tel()
+{
+       char **cp_list = NULL;
+       unsigned int modem_num = 0;
+
+       /* Get CP name list – cp_list */
+       cp_list = tel_get_cp_name_list();
+
+       if(cp_list == NULL)
+       {
+               ERR("Could not get the cp_name_list");
+               return;
+       }
+
+       while (cp_list[modem_num])
+       {
+               /* Initialize TAPI handle */
+               sim_state_info.handle[modem_num] = tel_init(cp_list[modem_num]);
+
+               if(cp_list[modem_num])
+               ERR("sim_state_info.handle[%d] = %s; ptr = %p", modem_num,
+                               cp_list[modem_num], sim_state_info.handle[modem_num]);
+
+               /* Move to next CP Name in cp_list */
+               modem_num++;
+       }
+
+       sim_state_info.handle[modem_num] = NULL;
+
+       /* free cp_list */
+       free(cp_list);
+}
+
+/* De-initialize TAPI */
+static void _deinit_tel()
+{
+       int i = 0;
+       while (sim_state_info.handle[i])
+       {
+               /* De-initialize TAPI handle */
+               tel_deinit(sim_state_info.handle[i]);
+               sim_state_info.handle[i] = NULL;
+
+               /* Move to next handle */
+               i++;
+       }
+}
+
+/* Telephony state change callback */
+void tel_ready_cb(keynode_t *key, void *data)
+{
+       Eina_Bool status = EINA_FALSE;
+
+       status = vconf_keynode_get_bool(key);
+
+       if (status == TRUE)
+       {       /* Telephony State - READY */
+               DBG("tel status[%d]", status);
+               _init_tel();
+               register_sim_callbacks();
+               get_sim_status();
+
+               init_view();
+       }
+       else
+       {   /* Telephony State – NOT READY */
+               /* De-initialization is optional here (ONLY if required) */
+               ERR("tel status[%d]", status);
+               _deinit_tel();
+               sim_state_info.sim_card_ready[0] = EINA_FALSE;
+               sim_state_info.sim_card_ready[1] = EINA_FALSE;
+
+               unregister_sim_callbacks();
+       }
+}
+
+static void tel_flight_mode_cb(keynode_t *key, void *data)
+{
+       Eina_Bool flight_mode_state = EINA_FALSE;
+
+       flight_mode_state = vconf_keynode_get_bool(key);
+       sim_handler_text_set(flight_mode_state);
+}
+
+// --------------------------------------------------------------------------------------------
+static void on_sim_card_status_changed(TapiHandle *handle, const char *noti_id, void *data, void *user_data)
+{
+       int handle_num = (int)user_data;
+       int *sim_status = data;
+
+       ERR("SIM[%p][%d] status[%d], [%d][%d]", handle, handle_num, *sim_status, sim_state_info.sim_card_ready[0], sim_state_info.sim_card_ready[1]);
+
+       if(*sim_status == TAPI_SIM_STATUS_SIM_INIT_COMPLETED ||
+               *sim_status == TAPI_SIM_STATUS_SIM_PIN_REQUIRED)
+       {
+               sim_state_info.sim_card_ready[handle_num] = EINA_TRUE;
+       }
+       else
+       {
+               sim_state_info.sim_card_ready[handle_num] = EINA_FALSE;
+       }
+
+       init_view();
+}
+
+static void on_plmn_spn_changed(TapiHandle *handle, const char *noti_id,
+               void *data, void *user_data)
+{
+       if(!handle)
+       {
+               ERR("handle == NULL");
+               return;
+       }
+
+       int  flight_mode_state = EINA_FALSE;
+       int ret = vconf_get_bool(VCONFKEY_TELEPHONY_FLIGHT_MODE, &flight_mode_state);
+       if(ret != 0)
+       {
+               ERR("Could not get the 'VCONFKEY_TELEPHONY_FLIGHT_MODE' value");
+       }
+       sim_handler_text_set(flight_mode_state);
+}
+
+static void register_sim_callbacks()
+{
+       int i;
+       int ret;
+       for(i = 0; i < TAPI_HANDLE_MAX; ++i)
+       {
+               if(sim_state_info.handle[i])
+               {
+                       ret = tel_register_noti_event (sim_state_info.handle[i],
+                                       TAPI_NOTI_SIM_STATUS, on_sim_card_status_changed, (void*)i);
+
+                       if (ret != TAPI_API_SUCCESS)
+                       {
+                               ERR("Failed to register 'on_sim_card_status_changed' callback to handle[%d][%d]", i, ret);
+                       }
+                       else
+                       {
+                               ERR("SIM card status changed event registered");
+                       }
+
+                       ret = tel_register_noti_event(sim_state_info.handle[i],
+                                       TAPI_PROP_NETWORK_SPN_NAME, on_plmn_spn_changed, (void*)i);
+                       if (ret != TAPI_API_SUCCESS)
+                       {
+                               ERR("Failed to register 'on_plmn_spn_changed' callback to handle[%d][%d]", i, ret);
+                       }
+
+                       ret = tel_register_noti_event(sim_state_info.handle[i],
+                                       TAPI_PROP_NETWORK_NETWORK_NAME, on_plmn_spn_changed, (void*)i);
+                       if (ret != TAPI_API_SUCCESS)
+                       {
+                               ERR("Failed to register 'on_plmn_spn_changed' callback to handle: %i", i);
+                       }
+
+                       ret = tel_register_noti_event(sim_state_info.handle[i], TAPI_PROP_NETWORK_SERVICE_TYPE, on_plmn_spn_changed, (void*) i);
+                       if (ret != TAPI_API_SUCCESS)
+                       {
+                               ERR("Failed to register network service type[%d][%d]", ret, i);
+                       }
+
+                       ret = tel_register_noti_event(sim_state_info.handle[i], TAPI_PROP_NETWORK_NAME_OPTION, on_plmn_spn_changed, (void*) i);
+                       if (ret != TAPI_API_SUCCESS)
+                       {
+                               ERR("Failed to register network name option[%d][%d]", ret, i);
+                       }
+               }
+               else
+               {
+                       ERR("No handle [%d]", i);
+               }
+       }
+}
+
+static void unregister_sim_callbacks()
+{
+       int i;
+       int ret;
+       for(i = 0; i < TAPI_HANDLE_MAX; ++i)
+       {
+               if(sim_state_info.handle[i])
+               {
+                       ret = tel_deregister_noti_event(sim_state_info.handle[i], TAPI_NOTI_SIM_STATUS);
+                       if (ret != TAPI_API_SUCCESS)
+                       {
+                               ERR("Failed to dereregister TAPI_NOTI_SIM_STATUS callback from handle: %i", i);
+                       }
+                       else
+                       {
+                               DBG("SIM status changed event deregistered");
+                       }
+
+                       ret = tel_deregister_noti_event(sim_state_info.handle[i], TAPI_PROP_NETWORK_NETWORK_NAME);
+                       if (ret != TAPI_API_SUCCESS)
+                       {
+                               ERR("Failed to dereregister TAPI_PROP_NETWORK_PLMN callback from handle: %i", i);
+                       }
+
+                       ret = tel_deregister_noti_event(sim_state_info.handle[i], TAPI_PROP_NETWORK_SPN_NAME);
+                       if (ret != TAPI_API_SUCCESS)
+                       {
+                               ERR("Failed to dereregister TAPI_PROP_NETWORK_SPN_NAME callback from handle: %i", i);
+                       }
+
+                       ret = tel_deregister_noti_event(sim_state_info.handle[i], TAPI_PROP_NETWORK_SERVICE_TYPE);
+                       if (ret != TAPI_API_SUCCESS)
+                       {
+                               ERR("Failed to deregister network service type[%d][%d]", ret, i);
+                       }
+
+                       ret = tel_deregister_noti_event(sim_state_info.handle[i], TAPI_PROP_NETWORK_NAME_OPTION);
+                       if (ret != TAPI_API_SUCCESS)
+                       {
+                               ERR("Failed to deregister network name option[%d][%d]", ret, i);
+                       }
+
+                       if(i == 0)
+                       {
+                               ret = tel_deregister_noti_event(sim_state_info.handle[i], TAPI_NOTI_CALL_PREFERRED_VOICE_SUBSCRIPTION);
+                               if (ret != TAPI_API_SUCCESS)
+                               {
+                                       ERR("Failed to dereregister  callback to handle: %d", i);
+                               }
+                       }
+               }
+       }
+}
+
+
+void sim_controller_init(Evas_Object *master_layout)
+{
+       int state = EINA_FALSE;
+       int ret;
+       /* Check if Telephony state - READY */
+       ret = vconf_get_bool(VCONFKEY_TELEPHONY_READY, &state);
+
+       DBG("VCONFKEY_TELEPHONY_READY == %d", state);
+
+       if (ret != -1 && state == TRUE)
+       {       /* Telephony State - READY */
+               /* Initialize TAPI handles */
+
+               _init_tel();
+               register_sim_callbacks();
+               get_sim_status();
+
+               init_view();
+       }
+       else
+       {       /* Telephony State – NOT READY, register for change in state */
+               DBG("Telephony state: [NOT Ready]");
+       }
+
+       /* Register for Telephony state change */
+       ret = vconf_notify_key_changed(VCONFKEY_TELEPHONY_READY, tel_ready_cb, master_layout);
+       if(ret != 0)
+               ERR("Failed to register VCONFKEY_TELEPHONY_READY key changed callback");
+
+       ret = vconf_notify_key_changed(VCONFKEY_TELEPHONY_FLIGHT_MODE, tel_flight_mode_cb, master_layout);
+       if(ret != 0)
+               ERR("Failed to register VCONFKEY_TELEPHONY_FLIGHT_MODE key changed callback");
+
+       ret = vconf_notify_key_changed(VCONFKEY_CALL_STATE, __sim_controller_call_state_changed_cb, NULL);
+       if (ret != 0)
+       {
+               ERR("Failed to notify call state[%d]", ret);
+       }
+}
+
+void sim_controller_resume()
+{
+       int state = FALSE;
+       int ret = 0;
+       int i = 0;
+       TelSimCardStatus_t sim_status;
+       int card_changed;
+
+       ret = vconf_get_bool(VCONFKEY_TELEPHONY_READY, &state);
+       if (ret != 0 || state == FALSE)
+       {
+               ERR("Failed to get telephony state[%d][%d]", state, ret);
+               return;
+       }
+
+       for (i = 0; i < TAPI_HANDLE_MAX; ++i)
+       {
+               if (sim_state_info.handle[i])
+               {
+                       ret = tel_get_sim_init_info(sim_state_info.handle[i], &sim_status, &card_changed);
+                       DBG("SIM[%d] info[%d][%d][%d]", i, ret, sim_status, card_changed);
+                       if (sim_status == TAPI_SIM_STATUS_SIM_INIT_COMPLETED ||
+                               sim_status == TAPI_SIM_STATUS_SIM_PIN_REQUIRED)
+                       {
+                               if (sim_state_info.sim_card_ready[i] != EINA_TRUE)
+                               {
+                                       ERR("SIM[%d] is init completed but local value is not ture", i);
+                               }
+                       }
+               }
+               else
+               {
+                       ERR("No handle[%d]", i);
+               }
+       }
+}
+
+void sim_controller_on_language_change()
+{
+       on_plmn_spn_changed(sim_state_info.handle[0], "SELF", NULL, (void*) 0);
+       on_plmn_spn_changed(sim_state_info.handle[1], "SELF", NULL, (void*) 1);
+
+       if (sim_state_info.handle[0] == NULL && sim_state_info.handle[1] == NULL)
+       {
+               int flight_mode = EINA_FALSE;
+               int ret = vconf_get_bool(VCONFKEY_TELEPHONY_FLIGHT_MODE, &flight_mode);
+               if (ret != 0)
+               {
+                       ERR("Failed to get flight mode[%d]", ret);
+               }
+
+               sim_handler_text_set(flight_mode);
+       }
+}
diff --git a/daemon/sim_controller.h b/daemon/sim_controller.h
new file mode 100644 (file)
index 0000000..008f4ac
--- /dev/null
@@ -0,0 +1,29 @@
+/*
+ * 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 __SIM_CONTROL_H__
+#define __SIM_CONTROL_H__
+
+#include <Elementary.h>
+#include <Evas.h>
+
+void sim_controller_init(Evas_Object *master_layout);
+void sim_controller_resume();
+void sim_controller_on_language_change();
+
+#endif //  __SIM_CONTROL_H__
\ No newline at end of file
diff --git a/daemon/vi/vi_manager.c b/daemon/vi/vi_manager.c
new file mode 100644 (file)
index 0000000..eeca062
--- /dev/null
@@ -0,0 +1,468 @@
+/*
+ * 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 "vi_manager.h"
+#include "list_util.h"
+#include "pager.h"
+
+static int _init(void *data);
+static int _fini(void *data);
+static int _resume(void *data);
+static void _qp_opened(void *data);
+
+QP_Module vi_manager = {
+       .name = "vi_manager",
+       .init = _init,
+       .fini = _fini,
+       .resume = _resume,
+       .qp_opened = _qp_opened,
+       .lang_changed = NULL,
+       .refresh = NULL
+};
+
+static struct info {
+       Eina_List *vi_list;
+       Eina_List *vi_user_event_list;
+       QP_VI *current;
+       qp_vim_state_type state;
+} s_info = {
+       .vi_list = NULL,
+       .vi_user_event_list = NULL,
+       .current = NULL,
+       .state = VIM_STATE_NOT_READY,
+};
+
+static QP_VI *_vi_list_get_first(void);
+static QP_VI *_vi_user_event_list_get_first(void);
+static void _vi_list_del(QP_VI *vi);
+
+static inline void _vim_set_state(qp_vim_state_type state)
+{
+       s_info.state = state;
+}
+
+static inline qp_vim_state_type _vim_get_state(void)
+{
+       return s_info.state;
+}
+
+static void _vi_freeze_start(void)
+{
+       struct appdata *ad = quickpanel_get_app_data();
+       retif(ad == NULL, , "invalid parameter");
+       retif(ad->list == NULL, , "invalid parameter");
+
+       if (!evas_object_freeze_events_get(ad->scroller)) {
+               INFO("VIM freezing");
+               evas_object_freeze_events_set(ad->scroller, EINA_TRUE);
+       }
+}
+
+static void _vi_freeze_stop(void)
+{
+       struct appdata *ad = quickpanel_get_app_data();
+       retif(ad == NULL, , "invalid parameter");
+       retif(ad->list == NULL, , "invalid parameter");
+
+       if (evas_object_freeze_events_get(ad->scroller)) {
+               INFO("VIM unfreezing");
+               evas_object_freeze_events_set(ad->scroller, EINA_FALSE);
+       }
+}
+
+static void _vi_restart_job_cb(void *data)
+{
+       QP_VI *next_vi = NULL;
+       QP_VI *user_vi = NULL;
+
+       next_vi = _vi_list_get_first();
+
+       if (next_vi != NULL && next_vi->disable_interrupt_userevent == 0) {
+               while ((user_vi = _vi_user_event_list_get_first()) != NULL) {
+                       if (user_vi->interrupt_cb != NULL) {
+                               user_vi->interrupt_cb(user_vi);
+                               user_vi->state = VI_STATE_INTERRUPTED;
+                       }
+                       quickpanel_vi_user_event_del(user_vi);
+               }
+       }
+
+       if (_vim_get_state() == VIM_STATE_READY) {
+               next_vi = _vi_list_get_first();
+
+               if (next_vi) {
+                       if (next_vi->job_cb != NULL) {
+                               _vim_set_state(VIM_STATE_WORKING);
+                               next_vi->state = VI_STATE_RUNNING;
+                               next_vi->job_cb(next_vi);
+                       }
+               }
+       } else if (_vim_get_state() == VIM_STATE_SUSPENDED
+                       || _vim_get_state() == VIM_STATE_NOT_READY){
+               while ((next_vi = _vi_list_get_first()) != NULL) {
+                       quickpanel_vi_done(next_vi);
+               }
+       }
+}
+
+static void _vi_list_add(QP_VI *new_vi)
+{
+       retif(new_vi == NULL, ,"invalid parameter");
+
+       s_info.vi_list = eina_list_append(s_info.vi_list, new_vi);
+}
+
+static int _vi_list_count(void)
+{
+       retif(s_info.vi_list == NULL, 0, "list null");
+
+       return eina_list_count(s_info.vi_list);
+}
+
+static void _vi_list_del(QP_VI *vi)
+{
+       retif(vi == NULL, ,"invalid parameter");
+
+       s_info.vi_list = eina_list_remove(s_info.vi_list, vi);
+}
+
+static int _vi_list_is_data_valid(void *node)
+{
+       if (eina_list_data_find(s_info.vi_list, node) != NULL) {
+               return 1;
+       }
+
+       return 0;
+}
+
+static QP_VI *_vi_list_get_first(void)
+{
+       QP_VI *vi = eina_list_nth(s_info.vi_list, 0);
+
+       return vi;
+}
+
+static QP_VI *_vi_user_event_list_get_first(void)
+{
+       QP_VI *vi = eina_list_nth(s_info.vi_user_event_list, 0);
+
+       return vi;
+}
+
+HAPI QP_VI *quickpanel_vi_new(void)
+{
+       QP_VI *vi = (QP_VI *)calloc(1, sizeof(QP_VI));
+
+       retif(vi == NULL, NULL, "failed to memory allocation");
+
+       return vi;
+}
+
+HAPI QP_VI *quickpanel_vi_new_with_data(qp_vi_op_type op_type,
+                                                                               qp_item_type_e item_type,
+                                                                               void *container,
+                                                                               void *target,
+                                                                               vi_cb init_cb,
+                                                                               vi_cb job_cb,
+                                                                               vi_cb done_cb,
+                                                                               vi_cb interrupt_cb,
+                                                                               void *extra_data_1,
+                                                                               void *extra_data_2,
+                                                                               int extra_flag_1,
+                                                                               int extra_flag_2)
+{
+       QP_VI *vi = (QP_VI *)calloc(1, sizeof(QP_VI));
+
+       retif(vi == NULL, NULL, "failed to memory allocation");
+
+       DBG("");
+
+       vi->state = VI_STATE_NOT_READY;
+       vi->op_type = op_type;
+       vi->item_type = item_type;
+       vi->container = container;
+       vi->target = target;
+       vi->init_cb = init_cb;
+       vi->job_cb = job_cb;
+       vi->done_cb = done_cb;
+       vi->interrupt_cb = interrupt_cb;
+       vi->extra_data_1 = extra_data_1;
+       vi->extra_data_2 = extra_data_2;
+       vi->extra_flag_1 = extra_flag_1;
+       vi->extra_flag_2 = extra_flag_2;
+
+       return vi;
+}
+
+HAPI void quickpanel_vi_start(QP_VI *vi)
+{
+       retif(vi == NULL, , "vi is NULL");
+
+       /*
+        * workaround - turn off mapbuf
+        * if mapbuf is enabled, geometry information from object become invalid
+        */
+       quickpanel_pager_mapbuf_set(0);
+
+       if (vi->init_cb != NULL) {
+               vi->init_cb(vi);
+       }
+
+       vi->state = VI_STATE_READY;
+
+       if (vi->disable_freezing == 0) {
+               _vi_freeze_start();
+       }
+       _vi_list_add(vi);
+       if (vi->target != NULL) {
+               evas_object_ref(vi->target);
+               if (vi->op_type == VI_OP_DELETE) {
+                       evas_object_freeze_events_set(vi->target, EINA_TRUE);
+               }
+       }
+       if (_vim_get_state() == VIM_STATE_NOT_READY) {
+               _vi_restart_job_cb(NULL);
+       } else {
+               ecore_job_add(_vi_restart_job_cb, NULL);
+       }
+}
+
+HAPI void quickpanel_vi_interrupt(QP_VI *vi)
+{
+       retif(vi == NULL, , "vi is NULL");
+
+       if (!_vi_list_is_data_valid(vi)) {
+               return;
+       }
+
+       _vi_list_del(vi);
+
+       if (vi->interrupt_cb != NULL) {
+               vi->interrupt_cb(vi);
+               vi->state = VI_STATE_INTERRUPTED;
+       }
+
+       if (s_info.current == vi) {
+               s_info.current = NULL;
+       }
+       if (_vim_get_state() == VIM_STATE_WORKING) {
+               if (!quickpanel_uic_is_opened()) {
+                       _vim_set_state(VIM_STATE_SUSPENDED);
+               } else {
+                       _vim_set_state(VIM_STATE_READY);
+               }
+       }
+
+       evas_object_unref(vi->target);
+       free(vi);
+
+       if (_vi_list_count() <= 0) {
+               _vi_freeze_stop();
+       }
+
+       ecore_job_add(_vi_restart_job_cb, NULL);
+}
+
+HAPI void quickpanel_vi_done(QP_VI *vi)
+{
+       retif(vi == NULL, , "vi is NULL");
+
+       if (!_vi_list_is_data_valid(vi)) {
+               return;
+       }
+
+       _vi_list_del(vi);
+
+       if (vi->done_cb != NULL) {
+               vi->done_cb(vi);
+               vi->state = VI_STATE_DONE;
+       }
+
+       if (s_info.current == vi) {
+               s_info.current = NULL;
+       }
+       if (_vim_get_state() == VIM_STATE_WORKING) {
+               if (!quickpanel_uic_is_opened()) {
+                       _vim_set_state(VIM_STATE_SUSPENDED);
+               } else {
+                       _vim_set_state(VIM_STATE_READY);
+               }
+       }
+
+       evas_object_unref(vi->target);
+       free(vi);
+
+       if (_vi_list_count() <= 0) {
+               _vi_freeze_stop();
+       }
+
+       ecore_job_add(_vi_restart_job_cb, NULL);
+}
+
+HAPI void quickpanel_vi_done_cb_for_transit(void *data, Elm_Transit *transit)
+{
+       retif(data == NULL, , "data is NULL");
+
+       quickpanel_vi_done(data);
+}
+
+HAPI void quickpanel_vim_set_state_ready(void)
+{
+       if (!quickpanel_uic_is_opened()) {
+               _vim_set_state(VIM_STATE_SUSPENDED);
+       } else {
+               _vim_set_state(VIM_STATE_READY);
+       }
+}
+
+HAPI void quickpanel_vim_set_state_suspend(void)
+{
+       _vim_set_state(VIM_STATE_SUSPENDED);
+}
+
+#define VIM_DURATION_INSERT 0.17
+#define VIM_DURATION_UPDATE 0.17
+#define VIM_DURATION_DELETE 0.17
+#define VIM_DURATION_REORDER 0.25
+#define VIM_THROTTLE_THRESHOLD 5
+
+HAPI double quickpanel_vim_get_duration(qp_vi_op_type op_type)
+{
+       int count = 0;
+       double duration = 0.0;
+
+       switch (op_type) {
+       case VI_OP_INSERT:
+               duration =  VIM_DURATION_INSERT;
+               break;
+       case VI_OP_UPDATE:
+               duration =  VIM_DURATION_UPDATE;
+               break;
+       case VI_OP_DELETE:
+               duration =  VIM_DURATION_DELETE;
+               break;
+       case VI_OP_REORDER:
+               duration =  VIM_DURATION_REORDER;
+               break;
+       default :
+               duration = VIM_DURATION_INSERT;
+               break;
+       }
+
+       if ((count = _vi_list_count()) > VIM_THROTTLE_THRESHOLD) {
+               duration = duration * (1.0 / (double)count);
+       }
+
+       return duration;
+}
+
+HAPI Elm_Transit_Tween_Mode quickpanel_vim_get_tweenmode(qp_vi_op_type op_type)
+{
+       Elm_Transit_Tween_Mode mode = ELM_TRANSIT_TWEEN_MODE_LINEAR;
+
+       switch (op_type) {
+       case VI_OP_INSERT:
+               mode =  ELM_TRANSIT_TWEEN_MODE_DECELERATE;
+               break;
+       case VI_OP_UPDATE:
+               mode =  ELM_TRANSIT_TWEEN_MODE_DECELERATE;
+               break;
+       case VI_OP_DELETE:
+               mode =  ELM_TRANSIT_TWEEN_MODE_ACCELERATE;
+               break;
+       case VI_OP_REORDER:
+               mode =  ELM_TRANSIT_TWEEN_MODE_SINUSOIDAL;
+               break;
+       default :
+               mode = ELM_TRANSIT_TWEEN_MODE_LINEAR;
+               break;
+       }
+
+       return mode;
+}
+
+/*****************************************************************************
+ *
+ * Util functions
+ *
+ *****************************************************************************/
+static int _init(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       retif(ad == NULL, QP_FAIL, "Invalid parameter!");
+
+       _vim_set_state(VIM_STATE_NOT_READY);
+
+       return QP_OK;
+}
+
+static int _fini(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       retif(ad == NULL, QP_FAIL, "Invalid parameter!");
+
+       _vim_set_state(VIM_STATE_NOT_READY);
+
+       return QP_OK;
+}
+
+static int _resume(void *data)
+{
+       struct appdata *ad = data;
+       retif(ad == NULL, QP_FAIL, "Invalid parameter!");
+
+       if (_vim_get_state() == VIM_STATE_SUSPENDED) {
+               _vim_set_state(VIM_STATE_READY);
+       }
+
+       return QP_OK;
+}
+
+static void _qp_opened(void *data)
+{
+       struct appdata *ad = data;
+       retif(ad == NULL, , "Invalid parameter!");
+
+       if (_vim_get_state() == VIM_STATE_SUSPENDED) {
+               _vim_set_state(VIM_STATE_READY);
+       }
+}
+
+HAPI void quickpanel_vi_user_event_add(QP_VI *new_vi)
+{
+       retif(new_vi == NULL, ,"invalid parameter");
+
+       s_info.vi_user_event_list = eina_list_append(s_info.vi_user_event_list, new_vi);
+}
+
+HAPI void quickpanel_vi_user_event_del(QP_VI *vi)
+{
+       retif(vi == NULL, ,"invalid parameter");
+
+       if (eina_list_data_find(s_info.vi_user_event_list, vi) != NULL) {
+               s_info.vi_user_event_list = eina_list_remove(s_info.vi_user_event_list, vi);
+               free(vi);
+       }
+}
+
+HAPI void quickpanel_vi_object_event_freeze_set(Evas_Object *obj, Eina_Bool freeze)
+{
+       retif(obj == NULL, ,"invalid parameter");
+
+       evas_object_freeze_events_set(obj, freeze);
+}
diff --git a/daemon/vi/vi_manager.h b/daemon/vi/vi_manager.h
new file mode 100644 (file)
index 0000000..b2713f9
--- /dev/null
@@ -0,0 +1,103 @@
+/*
+ * 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 __QUICKPANEL_VI_MANAGER_H__
+#define __QUICKPANEL_VI_MANAGER_H__
+
+#include "quickpanel-ui.h"
+#include "common.h"
+#include "list_util.h"
+
+typedef Eina_Bool (*vi_cb)(void *data);
+
+typedef enum _qp_vim_state_type {
+       VIM_STATE_NOT_READY = 0,
+       VIM_STATE_READY,
+       VIM_STATE_WORKING,
+       VIM_STATE_SUSPENDED,
+} qp_vim_state_type;
+
+typedef enum _qp_vi_state_type {
+       VI_STATE_NOT_READY = 0,
+       VI_STATE_READY = 1,
+       VI_STATE_RUNNING,
+       VI_STATE_DONE,
+       VI_STATE_INTERRUPTED,
+} qp_vi_state_type;
+
+typedef enum _qp_vi_op_type {
+       VI_OP_NONE = -1,
+       VI_OP_INSERT = 0,
+       VI_OP_UPDATE,
+       VI_OP_DELETE,
+       VI_OP_DELETE_ALL,
+       VI_OP_REORDER,
+       VI_OP_ROTATION,
+       VI_OP_RESIZE,
+} qp_vi_op_type;
+
+typedef struct _QP_VI {
+       qp_vi_state_type state;
+       qp_vi_op_type op_type;
+       qp_item_type_e item_type;
+       void *container;
+       void *target;
+       vi_cb init_cb;
+       vi_cb job_cb;
+       vi_cb done_cb;
+       vi_cb interrupt_cb;
+       int disable_interrupt_userevent;
+       int disable_freezing;
+       void *extra_data_1;
+       void *extra_data_2;
+       int extra_flag_1;
+       int extra_flag_2;
+} QP_VI;
+
+typedef  struct _qp_vi_op_table {
+       qp_vi_op_type op_type;
+       void (*handler)(void *data);
+} qp_vi_op_table;
+
+QP_VI *quickpanel_vi_new(void);
+QP_VI *quickpanel_vi_new_with_data(    qp_vi_op_type op_type,
+                                                                               qp_item_type_e item_type,
+                                                                               void *container,
+                                                                               void *target,
+                                                                               vi_cb init_cb,
+                                                                               vi_cb job_cb,
+                                                                               vi_cb done_cb,
+                                                                               vi_cb interrupt_cb,
+                                                                               void *extra_data_1,
+                                                                               void *extra_data_2,
+                                                                               int extra_flag_1,
+                                                                               int extra_flag_2);
+void quickpanel_vi_start(QP_VI *vi);
+void quickpanel_vi_interrupt(QP_VI *vi);
+void quickpanel_vi_done(QP_VI *vi);
+void quickpanel_vim_set_state_ready(void);
+void quickpanel_vim_set_state_suspend(void);
+double quickpanel_vim_get_duration(qp_vi_op_type op_type);
+void quickpanel_vi_done_cb_for_transit(void *data, Elm_Transit *transit);
+Elm_Transit_Tween_Mode quickpanel_vim_get_tweenmode(qp_vi_op_type op_type);
+
+void quickpanel_vi_user_event_add(QP_VI *vi);
+void quickpanel_vi_user_event_del(QP_VI *vi);
+void quickpanel_vi_object_event_freeze_set(Evas_Object *obj, Eina_Bool freeze);
+
+#endif
index 57ebfe7..c7aa941 100644 (file)
@@ -1,23 +1,36 @@
-#CONFIGURE_FILE(${PROJECT_NAME}.desktop.in ${CMAKE_CURRENT_BINARY_DIR}/${VENDOR}.${PROJECT_NAME}.desktop)
-#INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/${VENDOR}.${PROJECT_NAME}.desktop DESTINATION ${DESKTOPDIR})
-CONFIGURE_FILE(${PROJECT_NAME}.xml.in ${CMAKE_CURRENT_BINARY_DIR}/${VENDOR}.${PROJECT_NAME}.xml)
-INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/${VENDOR}.${PROJECT_NAME}.xml DESTINATION ${MANIFESTXMLDIR})
+INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/icons DESTINATION ${RESDIR} FILES_MATCHING PATTERN "*.png")
+#CONFIGURE_FILE(${PROJECT_NAME}.desktop.in ${CMAKE_CURRENT_BINARY_DIR}/org.tizen.${PROJECT_NAME}.desktop)
+#INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/org.tizen.${PROJECT_NAME}.desktop DESTINATION ${DESKTOPDIR})
+CONFIGURE_FILE(${PROJECT_NAME}.xml.in ${CMAKE_CURRENT_BINARY_DIR}/org.tizen.${PROJECT_NAME}.xml)
+INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/org.tizen.${PROJECT_NAME}.xml DESTINATION ${MANIFESTXMLDIR})
+
+CONFIGURE_FILE(${PROJECT_NAME}.sh.in ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME})
+INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME} DESTINATION /etc/init.d/)
 
 #CONFIGURE_FILE(${PROJECT_NAME}.png ${CMAKE_CURRENT_BINARY_DIR}/${VENDOR}.${PROJECT_NAME}.png COPYONLY)
 #INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/${VENDOR}.${PROJECT_NAME}.png DESTINATION "/usr/share/icons/default/small")
 
-INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/sip.wav DESTINATION "${DATADIR}")
+MESSAGE("EDJE_CC CUSTOM FLAG : ${EDJEFLAGS}")
+
 
 ADD_CUSTOM_TARGET(quickpanel.edj
-               COMMAND edje_cc -id ${CMAKE_CURRENT_SOURCE_DIR}/icons  -id ${CMAKE_CURRENT_SOURCE_DIR}/images
+               COMMAND edje_cc -id ${CMAKE_CURRENT_SOURCE_DIR}/images_icon  -id ${CMAKE_CURRENT_SOURCE_DIR}/images "${EDJEFLAGS}"
                ${CMAKE_CURRENT_SOURCE_DIR}/quickpanel.edc
                ${CMAKE_CURRENT_BINARY_DIR}/quickpanel.edj
                DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/quickpanel.edc
 )
 ADD_DEPENDENCIES(${PROJECT_NAME} quickpanel.edj)
 
+ADD_CUSTOM_TARGET(quickpanel_activenoti.edj
+                COMMAND edje_cc -id ${CMAKE_CURRENT_SOURCE_DIR}/images_icon  -id ${CMAKE_CURRENT_SOURCE_DIR}/images "${EDJEFLAGS}"
+                ${CMAKE_CURRENT_SOURCE_DIR}/quickpanel_activenoti.edc
+                ${CMAKE_CURRENT_BINARY_DIR}/quickpanel_activenoti.edj
+                DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/quickpanel_activenoti.edc
+)
+ADD_DEPENDENCIES(${PROJECT_NAME} quickpanel_activenoti.edj)
+
 ADD_CUSTOM_TARGET(quickpanel_theme.edj
-               COMMAND edje_cc -id ${CMAKE_CURRENT_SOURCE_DIR}/icons -id ${CMAKE_CURRENT_SOURCE_DIR}/images
+               COMMAND edje_cc -id ${CMAKE_CURRENT_SOURCE_DIR}/images_icon -id ${CMAKE_CURRENT_SOURCE_DIR}/images "${EDJEFLAGS}"
                ${CMAKE_CURRENT_SOURCE_DIR}/quickpanel_theme.edc
                ${CMAKE_CURRENT_BINARY_DIR}/quickpanel_theme.edj
                DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/quickpanel_theme.edc
@@ -25,6 +38,7 @@ ADD_CUSTOM_TARGET(quickpanel_theme.edj
 ADD_DEPENDENCIES(${PROJECT_NAME} quickpanel_theme.edj)
 
 INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/quickpanel.edj DESTINATION ${EDJDIR})
+INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/quickpanel_activenoti.edj DESTINATION ${EDJDIR})
 INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/quickpanel_theme.edj DESTINATION ${EDJDIR})
 INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/icons DESTINATION ${RESDIR} FILES_MATCHING PATTERN "*.png")
 
diff --git a/data/color_classes.edc b/data/color_classes.edc
new file mode 100644 (file)
index 0000000..d9c2d6e
--- /dev/null
@@ -0,0 +1,379 @@
+/*
+* 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: "AO007L1";
+               color: 18 75 107 255;
+       }
+       color_class {
+               name: "AO007L2";
+               color: 255 255 255 51;
+       }
+       color_class {
+               name: "AO021P";
+               color: 20 107 147 76;
+       }
+       color_class {
+               name: "AO025";
+               color: 255 255 255 255;
+       }
+       color_class {
+               name: "AO027";
+               color: 255 255 255 76;
+       }
+       color_class {
+               name: "AO033";
+               color: 0 0 0 12;
+       }
+       color_class {
+               name: "AO001L1";
+               color: 18 75 107 255;
+       }
+       color_class {
+               name: "AO001L1D";
+               color: 18 75 107 127;
+       }
+       color_class {
+               name: "AO001L1P";
+               color: 15 60 89 255;
+       }
+       color_class {
+               name: "AO002";
+               color: 159 239 0 255;
+       }
+       color_class {
+               name: "AO003";
+               color: 255 255 255 127;
+       }
+       color_class {
+               name: "AO003D";
+               color: 255 255 255 76;
+       }
+       color_class {
+               name: "AO003E1";
+               color: 255 255 255 165;
+       }
+       color_class {
+               name: "AO004";
+               color: 255 255 255 255;
+       }
+       color_class {
+               name: "AO004D";
+               color: 88 144 170 255;
+       }
+       color_class {
+               name: "AO005L2";
+               color: 255 255 255 255;
+       }
+       color_class {
+               name: "AO005L1";
+               color: 16 81 112 255;
+       }
+       color_class {
+               name: "AO005L1D";
+               color: 178 178 178 76;
+       }
+       color_class {
+               name: "AO005L3";
+               color: 255 255 255 255;
+       }
+       color_class {
+               name: "AO005L4";
+               color: 255 255 255 51;
+       }
+       color_class {
+               name: "AO008";
+               color: 255 255 255 255;
+       }
+       color_class {
+               name: "AO010";
+               color: 224 33 33 255;
+       }
+       color_class {
+               name: "AO031";
+               color: 20 107 147 255;
+       }
+       color_class {
+               name: "AO032";
+               color: 255 255 255 255;
+       }
+       color_class {
+               name: "AO011L1";
+               color: 20 107 147 153;
+       }
+       color_class {
+               name: "AO011L1P";
+               color: 66 162 206 255;
+       }
+       color_class {
+               name: "AO011L1D";
+               color: 20 107 147 153;
+       }
+       color_class {
+               name: "AO011L1E01";
+               color: 20 107 147 255;
+       }
+       color_class {
+               name: "AO011i";
+               color: 255 255 255 255;
+       }
+       color_class {
+               name: "AO011iD";
+               color: 255 255 255 127;
+       }
+       color_class {
+               name: "AO011L3";
+               color: 48 48 48 255;
+       }
+       color_class {
+               name: "AO011L3P";
+               color: 20 107 147 255;
+       }
+       color_class {
+               name: "AO011L3D";
+               color: 48 48 48 76;
+       }
+       color_class {
+               name: "AO0111i";
+               color: 224 33 33 255;
+       }
+       color_class {
+               name: "AO0111";
+               color: 20 107 147 153;
+       }
+       color_class {
+               name: "AO012L1";
+               color: 82 196 11 255;
+       }
+       color_class {
+               name: "AO012L1P";
+               color: 66 158 9 255;
+       }
+       color_class {
+               name: "AO012L1D";
+               color: 106 196 51 255;
+       }
+       color_class {
+               name: "AO013L1";
+               color: 249 56 22 255;
+       }
+       color_class {
+               name: "AO013L1P";
+               color: 211 47 19 255;
+       }
+       color_class {
+               name: "AO013L1D";
+               color: 249 56 22 58;
+       }
+       color_class {
+               name: "AO014L1";
+               color: 20 107 147 255;
+       }
+       color_class {
+               name: "AO014L1P";
+               color: 11 61 84 255;
+       }
+       color_class {
+               name: "AO014L1D";
+               color: 50 116 147 255;
+       }
+       color_class {
+               name: "AO014";
+               color: 255 255 255 255;
+       }
+       color_class {
+               name: "AO014P";
+               color: 255 255 255 255;
+       }
+       color_class {
+               name: "AO014D";
+               color: 255 255 255 102;
+       }
+       color_class {
+               name: "AO015";
+               color: 159 239 0 255;
+       }
+       color_class {
+               name: "AO015P";
+               color: 159 239 0 255;
+       }
+       color_class {
+               name: "AO015D";
+               color: 159 239 0 102;
+       }
+       color_class {
+               name: "AO016";
+               color: 255 255 255 255;
+       }
+       color_class {
+               name: "AO016P";
+               color: 255 255 255 255;
+       }
+       color_class {
+               name: "AO016D";
+               color: 255 255 255 102;
+       }
+       color_class {
+               name: "AO019";
+               color: 66 162 206 255;
+       }
+       color_class {
+               name: "AO020";
+               color: 170 172 175 255;
+       }
+       color_class {
+               name: "AO029";
+               color: 24 126 173 204;
+       }
+       color_class {
+               name: "AO029P";
+               color: 20 107 147 255;
+       }
+       color_class {
+               name: "AO029D";
+               color: 0 0 0 76;
+       }
+       color_class {
+               name: "AO030E1";
+               color: 0 126 181 255;
+       }
+       color_class {
+               name: "AO030E2";
+               color: 148 39 170 255;
+       }
+       color_class {
+               name: "AO030E3";
+               color: 58 66 71 255;
+       }
+       color_class {
+               name: "AO030E4";
+               color: 247 187 7 255;
+       }
+       color_class {
+               name: "AO030E5";
+               color: 242 98 2 255;
+       }
+       color_class {
+               name: "AO030E6";
+               color: 26 49 124 255;
+       }
+       color_class {
+               name: "AO030E7";
+               color: 0 150 100 255;
+       }
+       color_class {
+               name: "AO030E8";
+               color: 232 69 156 255;
+       }
+       color_class {
+               name: "AO030E9";
+               color: 83 175 26 255;
+       }
+       color_class {
+               name: "AO030D";
+               color: 0 0 0 76;
+       }
+       color_class {
+               name: "AO010S";
+               color: 20 107 147 255;
+       }
+       color_class {
+               name: "ATO008";
+               color: 255 255 255 255;
+       }
+       color_class {
+               name: "ATO0081";
+               color: 255 255 255 255;
+       }
+       color_class {
+               name: "ATO009";
+               color: 255 255 255 255;
+       }
+       color_class {
+               name: "ATO016";
+               color: 255 255 255 255;
+       }
+       color_class {
+               name: "ATO019";
+               color: 255 255 255 255;
+       }
+       color_class {
+               name: "ATO017";
+               color: 255 255 255 255;
+       }
+       color_class {
+               name: "ATO006P";
+               color: 20 107 147 255;
+       }
+       color_class {
+               name: "ATO006D";
+               color: 20 107 147 127;
+       }
+       color_class {
+               name: "ATO005";
+               color: 0 0 0 255;
+       }
+       color_class {
+               name: "ATO006";
+               color: 76 76 76 255;
+       }
+       color_class {
+               name: "ATO007E1";
+               color: 0 126 181 255;
+       }
+       color_class {
+               name: "ATO007E2";
+               color: 148 39 170 255;
+       }
+       color_class {
+               name: "ATO007E3";
+               color: 58 66 71 255;
+       }
+       color_class {
+               name: "ATO007E4";
+               color: 247 187 7 255;
+       }
+       color_class {
+               name: "ATO007E5";
+               color: 242 98 2 255;
+       }
+       color_class {
+               name: "ATO007E6";
+               color: 26 49 124 255;
+       }
+       color_class {
+               name: "ATO007E7";
+               color: 0 150 100 255;
+       }
+       color_class {
+               name: "ATO007E8";
+               color: 232 69 156 255;
+       }
+       color_class {
+               name: "ATO007E9";
+               color: 83 175 26 255;
+       }
+       color_class {
+               name: "ATO007D";
+               color: 76 76 76 255;
+       }
+       color_class {
+               name: "AO008_STATUS";
+               color: 18 75 107 255;
+       }
+}
diff --git a/data/images/B31_help_tap_1_default.png b/data/images/B31_help_tap_1_default.png
new file mode 100644 (file)
index 0000000..02a5914
Binary files /dev/null and b/data/images/B31_help_tap_1_default.png differ
diff --git a/data/images/B32_help_start_right_01.png b/data/images/B32_help_start_right_01.png
new file mode 100644 (file)
index 0000000..595a9ec
Binary files /dev/null and b/data/images/B32_help_start_right_01.png differ
diff --git a/data/images/B32_help_start_right_02.png b/data/images/B32_help_start_right_02.png
new file mode 100644 (file)
index 0000000..59a61eb
Binary files /dev/null and b/data/images/B32_help_start_right_02.png differ
diff --git a/data/images/B32_help_start_right_03.png b/data/images/B32_help_start_right_03.png
new file mode 100644 (file)
index 0000000..1c40e51
Binary files /dev/null and b/data/images/B32_help_start_right_03.png differ
diff --git a/data/images/B32_help_start_right_04.png b/data/images/B32_help_start_right_04.png
new file mode 100644 (file)
index 0000000..72362c9
Binary files /dev/null and b/data/images/B32_help_start_right_04.png differ
diff --git a/data/images/B32_notification_tray_effect_bg_01.png b/data/images/B32_notification_tray_effect_bg_01.png
new file mode 100644 (file)
index 0000000..9fb2081
Binary files /dev/null and b/data/images/B32_notification_tray_effect_bg_01.png differ
diff --git a/data/images/B32_notification_tray_effect_l_bg.png b/data/images/B32_notification_tray_effect_l_bg.png
new file mode 100644 (file)
index 0000000..61bb4bc
Binary files /dev/null and b/data/images/B32_notification_tray_effect_l_bg.png differ
diff --git a/data/images/bg_press.#.png b/data/images/bg_press.#.png
new file mode 100644 (file)
index 0000000..805ea78
Binary files /dev/null and b/data/images/bg_press.#.png differ
diff --git a/data/images/core_activity_Indicator_medium_00.png b/data/images/core_activity_Indicator_medium_00.png
new file mode 100644 (file)
index 0000000..37b7a90
Binary files /dev/null and b/data/images/core_activity_Indicator_medium_00.png differ
diff --git a/data/images/core_activity_Indicator_medium_01.png b/data/images/core_activity_Indicator_medium_01.png
new file mode 100644 (file)
index 0000000..c14c54b
Binary files /dev/null and b/data/images/core_activity_Indicator_medium_01.png differ
diff --git a/data/images/core_activity_Indicator_medium_02.png b/data/images/core_activity_Indicator_medium_02.png
new file mode 100644 (file)
index 0000000..693f8f2
Binary files /dev/null and b/data/images/core_activity_Indicator_medium_02.png differ
diff --git a/data/images/core_activity_Indicator_medium_03.png b/data/images/core_activity_Indicator_medium_03.png
new file mode 100644 (file)
index 0000000..0270a40
Binary files /dev/null and b/data/images/core_activity_Indicator_medium_03.png differ
diff --git a/data/images/core_activity_Indicator_medium_04.png b/data/images/core_activity_Indicator_medium_04.png
new file mode 100644 (file)
index 0000000..6fc5587
Binary files /dev/null and b/data/images/core_activity_Indicator_medium_04.png differ
diff --git a/data/images/core_activity_Indicator_medium_05.png b/data/images/core_activity_Indicator_medium_05.png
new file mode 100644 (file)
index 0000000..ee5d96b
Binary files /dev/null and b/data/images/core_activity_Indicator_medium_05.png differ
diff --git a/data/images/core_activity_Indicator_medium_06.png b/data/images/core_activity_Indicator_medium_06.png
new file mode 100644 (file)
index 0000000..46e3964
Binary files /dev/null and b/data/images/core_activity_Indicator_medium_06.png differ
diff --git a/data/images/core_activity_Indicator_medium_07.png b/data/images/core_activity_Indicator_medium_07.png
new file mode 100644 (file)
index 0000000..93ebf9e
Binary files /dev/null and b/data/images/core_activity_Indicator_medium_07.png differ
diff --git a/data/images/core_activity_Indicator_medium_08.png b/data/images/core_activity_Indicator_medium_08.png
new file mode 100644 (file)
index 0000000..8e4c688
Binary files /dev/null and b/data/images/core_activity_Indicator_medium_08.png differ
diff --git a/data/images/core_activity_Indicator_medium_09.png b/data/images/core_activity_Indicator_medium_09.png
new file mode 100644 (file)
index 0000000..007218f
Binary files /dev/null and b/data/images/core_activity_Indicator_medium_09.png differ
diff --git a/data/images/core_activity_Indicator_medium_10.png b/data/images/core_activity_Indicator_medium_10.png
new file mode 100644 (file)
index 0000000..75cb0f8
Binary files /dev/null and b/data/images/core_activity_Indicator_medium_10.png differ
diff --git a/data/images/core_activity_Indicator_medium_11.png b/data/images/core_activity_Indicator_medium_11.png
new file mode 100644 (file)
index 0000000..5df320a
Binary files /dev/null and b/data/images/core_activity_Indicator_medium_11.png differ
diff --git a/data/images/core_activity_Indicator_medium_12.png b/data/images/core_activity_Indicator_medium_12.png
new file mode 100644 (file)
index 0000000..c28de6b
Binary files /dev/null and b/data/images/core_activity_Indicator_medium_12.png differ
diff --git a/data/images/core_activity_Indicator_medium_13.png b/data/images/core_activity_Indicator_medium_13.png
new file mode 100644 (file)
index 0000000..2fd2e51
Binary files /dev/null and b/data/images/core_activity_Indicator_medium_13.png differ
diff --git a/data/images/core_activity_Indicator_medium_14.png b/data/images/core_activity_Indicator_medium_14.png
new file mode 100644 (file)
index 0000000..9e07a5d
Binary files /dev/null and b/data/images/core_activity_Indicator_medium_14.png differ
diff --git a/data/images/core_activity_Indicator_medium_15.png b/data/images/core_activity_Indicator_medium_15.png
new file mode 100644 (file)
index 0000000..5fccce5
Binary files /dev/null and b/data/images/core_activity_Indicator_medium_15.png differ
diff --git a/data/images/core_activity_Indicator_medium_16.png b/data/images/core_activity_Indicator_medium_16.png
new file mode 100644 (file)
index 0000000..5bdbcdd
Binary files /dev/null and b/data/images/core_activity_Indicator_medium_16.png differ
diff --git a/data/images/core_activity_Indicator_medium_17.png b/data/images/core_activity_Indicator_medium_17.png
new file mode 100644 (file)
index 0000000..88becef
Binary files /dev/null and b/data/images/core_activity_Indicator_medium_17.png differ
diff --git a/data/images/core_activity_Indicator_medium_18.png b/data/images/core_activity_Indicator_medium_18.png
new file mode 100644 (file)
index 0000000..ef23ee0
Binary files /dev/null and b/data/images/core_activity_Indicator_medium_18.png differ
diff --git a/data/images/core_activity_Indicator_medium_19.png b/data/images/core_activity_Indicator_medium_19.png
new file mode 100644 (file)
index 0000000..e8a6dba
Binary files /dev/null and b/data/images/core_activity_Indicator_medium_19.png differ
diff --git a/data/images/core_activity_Indicator_medium_20.png b/data/images/core_activity_Indicator_medium_20.png
new file mode 100644 (file)
index 0000000..79e50b1
Binary files /dev/null and b/data/images/core_activity_Indicator_medium_20.png differ
diff --git a/data/images/core_activity_Indicator_medium_21.png b/data/images/core_activity_Indicator_medium_21.png
new file mode 100644 (file)
index 0000000..2f9f472
Binary files /dev/null and b/data/images/core_activity_Indicator_medium_21.png differ
diff --git a/data/images/core_activity_Indicator_medium_22.png b/data/images/core_activity_Indicator_medium_22.png
new file mode 100644 (file)
index 0000000..9f77e60
Binary files /dev/null and b/data/images/core_activity_Indicator_medium_22.png differ
diff --git a/data/images/core_activity_Indicator_medium_23.png b/data/images/core_activity_Indicator_medium_23.png
new file mode 100644 (file)
index 0000000..bea093d
Binary files /dev/null and b/data/images/core_activity_Indicator_medium_23.png differ
diff --git a/data/images/core_activity_Indicator_medium_24.png b/data/images/core_activity_Indicator_medium_24.png
new file mode 100644 (file)
index 0000000..dcad32d
Binary files /dev/null and b/data/images/core_activity_Indicator_medium_24.png differ
diff --git a/data/images/core_activity_Indicator_medium_25.png b/data/images/core_activity_Indicator_medium_25.png
new file mode 100644 (file)
index 0000000..46cdca2
Binary files /dev/null and b/data/images/core_activity_Indicator_medium_25.png differ
diff --git a/data/images/core_activity_Indicator_medium_26.png b/data/images/core_activity_Indicator_medium_26.png
new file mode 100644 (file)
index 0000000..62071df
Binary files /dev/null and b/data/images/core_activity_Indicator_medium_26.png differ
diff --git a/data/images/core_activity_Indicator_medium_27.png b/data/images/core_activity_Indicator_medium_27.png
new file mode 100644 (file)
index 0000000..55b2cab
Binary files /dev/null and b/data/images/core_activity_Indicator_medium_27.png differ
diff --git a/data/images/core_activity_Indicator_medium_28.png b/data/images/core_activity_Indicator_medium_28.png
new file mode 100644 (file)
index 0000000..85868f5
Binary files /dev/null and b/data/images/core_activity_Indicator_medium_28.png differ
diff --git a/data/images/core_activity_Indicator_medium_29.png b/data/images/core_activity_Indicator_medium_29.png
new file mode 100644 (file)
index 0000000..6e358a1
Binary files /dev/null and b/data/images/core_activity_Indicator_medium_29.png differ
diff --git a/data/images/core_icon_badge_container.#.png b/data/images/core_icon_badge_container.#.png
new file mode 100644 (file)
index 0000000..4f533f4
Binary files /dev/null and b/data/images/core_icon_badge_container.#.png differ
diff --git a/data/images/core_list_button_bg.#.png b/data/images/core_list_button_bg.#.png
new file mode 100644 (file)
index 0000000..db0c22d
Binary files /dev/null and b/data/images/core_list_button_bg.#.png differ
diff --git a/data/images/core_probress_bar.#.png b/data/images/core_probress_bar.#.png
new file mode 100644 (file)
index 0000000..568d39f
Binary files /dev/null and b/data/images/core_probress_bar.#.png differ
diff --git a/data/images/core_probress_bar.png b/data/images/core_probress_bar.png
new file mode 100644 (file)
index 0000000..5ed62da
Binary files /dev/null and b/data/images/core_probress_bar.png differ
diff --git a/data/images/core_probressbar_bg.#.png b/data/images/core_probressbar_bg.#.png
new file mode 100644 (file)
index 0000000..568d39f
Binary files /dev/null and b/data/images/core_probressbar_bg.#.png differ
diff --git a/data/images/core_progress_bar.#.png b/data/images/core_progress_bar.#.png
new file mode 100644 (file)
index 0000000..5ed62da
Binary files /dev/null and b/data/images/core_progress_bar.#.png differ
diff --git a/data/images/core_progress_bar.png b/data/images/core_progress_bar.png
new file mode 100644 (file)
index 0000000..5ed62da
Binary files /dev/null and b/data/images/core_progress_bar.png differ
diff --git a/data/images/core_progressbar_bg.#.png b/data/images/core_progressbar_bg.#.png
new file mode 100644 (file)
index 0000000..e19c598
Binary files /dev/null and b/data/images/core_progressbar_bg.#.png differ
diff --git a/data/images/core_progressbar_bg.png b/data/images/core_progressbar_bg.png
new file mode 100644 (file)
index 0000000..e19c598
Binary files /dev/null and b/data/images/core_progressbar_bg.png differ
diff --git a/data/images/core_slider_center_point_bg.png b/data/images/core_slider_center_point_bg.png
new file mode 100644 (file)
index 0000000..3acbdeb
Binary files /dev/null and b/data/images/core_slider_center_point_bg.png differ
diff --git a/data/images/core_slider_handle_normal.png b/data/images/core_slider_handle_normal.png
new file mode 100644 (file)
index 0000000..f612432
Binary files /dev/null and b/data/images/core_slider_handle_normal.png differ
diff --git a/data/images/core_slider_handle_press.png b/data/images/core_slider_handle_press.png
new file mode 100644 (file)
index 0000000..96a1a7c
Binary files /dev/null and b/data/images/core_slider_handle_press.png differ
diff --git a/data/images/core_theme_bg_01.png b/data/images/core_theme_bg_01.png
new file mode 100644 (file)
index 0000000..be3057d
Binary files /dev/null and b/data/images/core_theme_bg_01.png differ
diff --git a/data/images/handler_bg.#.png b/data/images/handler_bg.#.png
new file mode 100644 (file)
index 0000000..38bd634
Binary files /dev/null and b/data/images/handler_bg.#.png differ
diff --git a/data/images/handler_bg_ef.#.png b/data/images/handler_bg_ef.#.png
new file mode 100644 (file)
index 0000000..38db7ff
Binary files /dev/null and b/data/images/handler_bg_ef.#.png differ
diff --git a/data/images/handler_btn.png b/data/images/handler_btn.png
new file mode 100644 (file)
index 0000000..7f22db0
Binary files /dev/null and b/data/images/handler_btn.png differ
diff --git a/data/images/handler_btn_02.png b/data/images/handler_btn_02.png
new file mode 100644 (file)
index 0000000..f4fedc3
Binary files /dev/null and b/data/images/handler_btn_02.png differ
diff --git a/data/images/icon_arrow_down.png b/data/images/icon_arrow_down.png
new file mode 100644 (file)
index 0000000..46d3d7b
Binary files /dev/null and b/data/images/icon_arrow_down.png differ
diff --git a/data/images/icon_arrow_up.png b/data/images/icon_arrow_up.png
new file mode 100644 (file)
index 0000000..65fcac2
Binary files /dev/null and b/data/images/icon_arrow_up.png differ
diff --git a/data/images/icon_bg.png b/data/images/icon_bg.png
new file mode 100644 (file)
index 0000000..95ee1b4
Binary files /dev/null and b/data/images/icon_bg.png differ
diff --git a/data/images/icon_bg_press.png b/data/images/icon_bg_press.png
new file mode 100644 (file)
index 0000000..48c8c1c
Binary files /dev/null and b/data/images/icon_bg_press.png differ
diff --git a/data/images/icon_bg_small.png b/data/images/icon_bg_small.png
new file mode 100644 (file)
index 0000000..aaea3e7
Binary files /dev/null and b/data/images/icon_bg_small.png differ
diff --git a/data/images/icon_edit.png b/data/images/icon_edit.png
new file mode 100644 (file)
index 0000000..b48d4b2
Binary files /dev/null and b/data/images/icon_edit.png differ
diff --git a/data/images/icon_indicator_setting.png b/data/images/icon_indicator_setting.png
new file mode 100644 (file)
index 0000000..55b4d61
Binary files /dev/null and b/data/images/icon_indicator_setting.png differ
diff --git a/data/images/icon_search.png b/data/images/icon_search.png
new file mode 100644 (file)
index 0000000..3210298
Binary files /dev/null and b/data/images/icon_search.png differ
diff --git a/data/images/icon_settings.png b/data/images/icon_settings.png
new file mode 100644 (file)
index 0000000..f890d51
Binary files /dev/null and b/data/images/icon_settings.png differ
diff --git a/data/images/line_indicator_divider.png b/data/images/line_indicator_divider.png
new file mode 100644 (file)
index 0000000..b818951
Binary files /dev/null and b/data/images/line_indicator_divider.png differ
diff --git a/data/images/quick_btn_close_white_dim.png b/data/images/quick_btn_close_white_dim.png
new file mode 100644 (file)
index 0000000..cac9843
Binary files /dev/null and b/data/images/quick_btn_close_white_dim.png differ
diff --git a/data/images/quick_btn_close_white_nor.png b/data/images/quick_btn_close_white_nor.png
new file mode 100644 (file)
index 0000000..476fe97
Binary files /dev/null and b/data/images/quick_btn_close_white_nor.png differ
diff --git a/data/images/quick_btn_close_white_press.png b/data/images/quick_btn_close_white_press.png
new file mode 100644 (file)
index 0000000..339a81e
Binary files /dev/null and b/data/images/quick_btn_close_white_press.png differ
diff --git a/data/images/quick_button_each_bg.png b/data/images/quick_button_each_bg.png
new file mode 100644 (file)
index 0000000..185839e
Binary files /dev/null and b/data/images/quick_button_each_bg.png differ
diff --git a/data/images/quick_button_each_bg_land.png b/data/images/quick_button_each_bg_land.png
new file mode 100644 (file)
index 0000000..89f8485
Binary files /dev/null and b/data/images/quick_button_each_bg_land.png differ
diff --git a/data/images/quick_button_each_ef.png b/data/images/quick_button_each_ef.png
new file mode 100644 (file)
index 0000000..57c76e4
Binary files /dev/null and b/data/images/quick_button_each_ef.png differ
diff --git a/data/images/quick_button_each_ef_land.png b/data/images/quick_button_each_ef_land.png
new file mode 100644 (file)
index 0000000..ab7ad43
Binary files /dev/null and b/data/images/quick_button_each_ef_land.png differ
diff --git a/data/images/quick_button_over.png b/data/images/quick_button_over.png
new file mode 100644 (file)
index 0000000..5dcd5cf
Binary files /dev/null and b/data/images/quick_button_over.png differ
diff --git a/data/images/quick_button_over_land.png b/data/images/quick_button_over_land.png
new file mode 100644 (file)
index 0000000..d77867f
Binary files /dev/null and b/data/images/quick_button_over_land.png differ
diff --git a/data/images/quick_handle.png b/data/images/quick_handle.png
new file mode 100644 (file)
index 0000000..8016b29
Binary files /dev/null and b/data/images/quick_handle.png differ
diff --git a/data/images/quick_icon_brightness.png b/data/images/quick_icon_brightness.png
new file mode 100644 (file)
index 0000000..3053e9c
Binary files /dev/null and b/data/images/quick_icon_brightness.png differ
diff --git a/data/images/quick_icon_brightness_00.png b/data/images/quick_icon_brightness_00.png
new file mode 100644 (file)
index 0000000..eaf1c97
Binary files /dev/null and b/data/images/quick_icon_brightness_00.png differ
diff --git a/data/images/quick_icon_brightness_01.png b/data/images/quick_icon_brightness_01.png
new file mode 100644 (file)
index 0000000..4911739
Binary files /dev/null and b/data/images/quick_icon_brightness_01.png differ
diff --git a/data/images/quick_icon_brightness_02.png b/data/images/quick_icon_brightness_02.png
new file mode 100644 (file)
index 0000000..b5d5a0f
Binary files /dev/null and b/data/images/quick_icon_brightness_02.png differ
diff --git a/data/images/quick_icon_brightness_03.png b/data/images/quick_icon_brightness_03.png
new file mode 100644 (file)
index 0000000..a189fed
Binary files /dev/null and b/data/images/quick_icon_brightness_03.png differ
diff --git a/data/images/quick_icon_brightness_04.png b/data/images/quick_icon_brightness_04.png
new file mode 100644 (file)
index 0000000..8bf8e3d
Binary files /dev/null and b/data/images/quick_icon_brightness_04.png differ
diff --git a/data/images/quick_icon_brightness_05.png b/data/images/quick_icon_brightness_05.png
new file mode 100644 (file)
index 0000000..a9df3fc
Binary files /dev/null and b/data/images/quick_icon_brightness_05.png differ
diff --git a/data/images/quick_icon_brightness_06.png b/data/images/quick_icon_brightness_06.png
new file mode 100644 (file)
index 0000000..a92d320
Binary files /dev/null and b/data/images/quick_icon_brightness_06.png differ
diff --git a/data/images/quick_icon_brightness_07.png b/data/images/quick_icon_brightness_07.png
new file mode 100644 (file)
index 0000000..050c878
Binary files /dev/null and b/data/images/quick_icon_brightness_07.png differ
diff --git a/data/images/quick_icon_brightness_08.png b/data/images/quick_icon_brightness_08.png
new file mode 100644 (file)
index 0000000..8377efa
Binary files /dev/null and b/data/images/quick_icon_brightness_08.png differ
diff --git a/data/images/quick_icon_brightness_09.png b/data/images/quick_icon_brightness_09.png
new file mode 100644 (file)
index 0000000..b90022e
Binary files /dev/null and b/data/images/quick_icon_brightness_09.png differ
diff --git a/data/images/quick_icon_brightness_10.png b/data/images/quick_icon_brightness_10.png
new file mode 100644 (file)
index 0000000..a376394
Binary files /dev/null and b/data/images/quick_icon_brightness_10.png differ
diff --git a/data/images/quick_icon_brightness_11.png b/data/images/quick_icon_brightness_11.png
new file mode 100644 (file)
index 0000000..b2fdfb5
Binary files /dev/null and b/data/images/quick_icon_brightness_11.png differ
diff --git a/data/images/quick_menu_divide.png b/data/images/quick_menu_divide.png
new file mode 100644 (file)
index 0000000..35b9519
Binary files /dev/null and b/data/images/quick_menu_divide.png differ
diff --git a/data/images/quick_menu_divide_highlight.png b/data/images/quick_menu_divide_highlight.png
new file mode 100644 (file)
index 0000000..934d07c
Binary files /dev/null and b/data/images/quick_menu_divide_highlight.png differ
diff --git a/data/images/quick_menu_touch.png b/data/images/quick_menu_touch.png
new file mode 100644 (file)
index 0000000..54921fd
Binary files /dev/null and b/data/images/quick_menu_touch.png differ
diff --git a/data/images/quick_standard_btn_focus.9.png b/data/images/quick_standard_btn_focus.9.png
new file mode 100644 (file)
index 0000000..64aee6b
Binary files /dev/null and b/data/images/quick_standard_btn_focus.9.png differ
diff --git a/data/images/quick_standard_btn_nor.9.png b/data/images/quick_standard_btn_nor.9.png
new file mode 100644 (file)
index 0000000..84aba62
Binary files /dev/null and b/data/images/quick_standard_btn_nor.9.png differ
diff --git a/data/images/quick_standard_btn_nor.png b/data/images/quick_standard_btn_nor.png
new file mode 100644 (file)
index 0000000..a7f682d
Binary files /dev/null and b/data/images/quick_standard_btn_nor.png differ
diff --git a/data/images/quick_standard_btn_press.9.png b/data/images/quick_standard_btn_press.9.png
new file mode 100644 (file)
index 0000000..981d56d
Binary files /dev/null and b/data/images/quick_standard_btn_press.9.png differ
diff --git a/data/images/toggle_mw_bg_nor.png b/data/images/toggle_mw_bg_nor.png
new file mode 100644 (file)
index 0000000..80df1f1
Binary files /dev/null and b/data/images/toggle_mw_bg_nor.png differ
diff --git a/data/images/toggle_mw_bg_touch.png b/data/images/toggle_mw_bg_touch.png
new file mode 100644 (file)
index 0000000..57ac363
Binary files /dev/null and b/data/images/toggle_mw_bg_touch.png differ
diff --git a/data/images_icon/Q02_Notification_multi_window.png b/data/images_icon/Q02_Notification_multi_window.png
new file mode 100644 (file)
index 0000000..e9ce062
Binary files /dev/null and b/data/images_icon/Q02_Notification_multi_window.png differ
diff --git a/data/images_icon/Q02_Notification_update.png b/data/images_icon/Q02_Notification_update.png
new file mode 100644 (file)
index 0000000..d95a0d9
Binary files /dev/null and b/data/images_icon/Q02_Notification_update.png differ
diff --git a/data/images_icon/btn_mw_circlization_dim.png b/data/images_icon/btn_mw_circlization_dim.png
new file mode 100644 (file)
index 0000000..1be6828
Binary files /dev/null and b/data/images_icon/btn_mw_circlization_dim.png differ
diff --git a/data/images_icon/btn_mw_circlization_nor.png b/data/images_icon/btn_mw_circlization_nor.png
new file mode 100644 (file)
index 0000000..59fe947
Binary files /dev/null and b/data/images_icon/btn_mw_circlization_nor.png differ
diff --git a/data/images_icon/btn_mw_circlization_press.png b/data/images_icon/btn_mw_circlization_press.png
new file mode 100644 (file)
index 0000000..a517c56
Binary files /dev/null and b/data/images_icon/btn_mw_circlization_press.png differ
diff --git a/data/images_icon/btn_mw_close_nor.png b/data/images_icon/btn_mw_close_nor.png
new file mode 100644 (file)
index 0000000..3d68c69
Binary files /dev/null and b/data/images_icon/btn_mw_close_nor.png differ
diff --git a/data/images_icon/btn_mw_close_press.png b/data/images_icon/btn_mw_close_press.png
new file mode 100644 (file)
index 0000000..d00efd2
Binary files /dev/null and b/data/images_icon/btn_mw_close_press.png differ
diff --git a/data/images_icon/btn_mw_squarization_dim.png b/data/images_icon/btn_mw_squarization_dim.png
new file mode 100644 (file)
index 0000000..84e6d01
Binary files /dev/null and b/data/images_icon/btn_mw_squarization_dim.png differ
diff --git a/data/images_icon/btn_mw_squarization_nor.png b/data/images_icon/btn_mw_squarization_nor.png
new file mode 100644 (file)
index 0000000..f0f73bd
Binary files /dev/null and b/data/images_icon/btn_mw_squarization_nor.png differ
diff --git a/data/images_icon/btn_mw_squarization_press.png b/data/images_icon/btn_mw_squarization_press.png
new file mode 100644 (file)
index 0000000..ab009bc
Binary files /dev/null and b/data/images_icon/btn_mw_squarization_press.png differ
diff --git a/data/images_icon/noti_download_01.png b/data/images_icon/noti_download_01.png
new file mode 100644 (file)
index 0000000..1347662
Binary files /dev/null and b/data/images_icon/noti_download_01.png differ
diff --git a/data/images_icon/noti_download_02.png b/data/images_icon/noti_download_02.png
new file mode 100644 (file)
index 0000000..52848ca
Binary files /dev/null and b/data/images_icon/noti_download_02.png differ
diff --git a/data/images_icon/noti_download_03.png b/data/images_icon/noti_download_03.png
new file mode 100644 (file)
index 0000000..ef20442
Binary files /dev/null and b/data/images_icon/noti_download_03.png differ
diff --git a/data/images_icon/noti_download_04.png b/data/images_icon/noti_download_04.png
new file mode 100644 (file)
index 0000000..b609329
Binary files /dev/null and b/data/images_icon/noti_download_04.png differ
diff --git a/data/images_icon/noti_download_05.png b/data/images_icon/noti_download_05.png
new file mode 100644 (file)
index 0000000..bab9835
Binary files /dev/null and b/data/images_icon/noti_download_05.png differ
diff --git a/data/images_icon/noti_download_complete.png b/data/images_icon/noti_download_complete.png
new file mode 100644 (file)
index 0000000..9e35143
Binary files /dev/null and b/data/images_icon/noti_download_complete.png differ
diff --git a/data/images_icon/noti_install_01.png b/data/images_icon/noti_install_01.png
new file mode 100644 (file)
index 0000000..ced3bdd
Binary files /dev/null and b/data/images_icon/noti_install_01.png differ
diff --git a/data/images_icon/noti_install_02.png b/data/images_icon/noti_install_02.png
new file mode 100644 (file)
index 0000000..481ff3f
Binary files /dev/null and b/data/images_icon/noti_install_02.png differ
diff --git a/data/images_icon/noti_install_03.png b/data/images_icon/noti_install_03.png
new file mode 100644 (file)
index 0000000..2d04ca0
Binary files /dev/null and b/data/images_icon/noti_install_03.png differ
diff --git a/data/images_icon/noti_install_04.png b/data/images_icon/noti_install_04.png
new file mode 100644 (file)
index 0000000..16fa161
Binary files /dev/null and b/data/images_icon/noti_install_04.png differ
diff --git a/data/images_icon/noti_install_05.png b/data/images_icon/noti_install_05.png
new file mode 100644 (file)
index 0000000..a33c76c
Binary files /dev/null and b/data/images_icon/noti_install_05.png differ
diff --git a/data/images_icon/noti_install_complete.png b/data/images_icon/noti_install_complete.png
new file mode 100644 (file)
index 0000000..b9bd97c
Binary files /dev/null and b/data/images_icon/noti_install_complete.png differ
diff --git a/data/images_icon/noti_upload_01.png b/data/images_icon/noti_upload_01.png
new file mode 100644 (file)
index 0000000..6445da8
Binary files /dev/null and b/data/images_icon/noti_upload_01.png differ
diff --git a/data/images_icon/noti_upload_02.png b/data/images_icon/noti_upload_02.png
new file mode 100644 (file)
index 0000000..bf230fd
Binary files /dev/null and b/data/images_icon/noti_upload_02.png differ
diff --git a/data/images_icon/noti_upload_03.png b/data/images_icon/noti_upload_03.png
new file mode 100644 (file)
index 0000000..306a258
Binary files /dev/null and b/data/images_icon/noti_upload_03.png differ
diff --git a/data/images_icon/noti_upload_04.png b/data/images_icon/noti_upload_04.png
new file mode 100644 (file)
index 0000000..50c0e9d
Binary files /dev/null and b/data/images_icon/noti_upload_04.png differ
diff --git a/data/images_icon/noti_upload_05.png b/data/images_icon/noti_upload_05.png
new file mode 100644 (file)
index 0000000..fb49ad8
Binary files /dev/null and b/data/images_icon/noti_upload_05.png differ
diff --git a/data/images_icon/noti_upload_complete.png b/data/images_icon/noti_upload_complete.png
new file mode 100644 (file)
index 0000000..2ee11d8
Binary files /dev/null and b/data/images_icon/noti_upload_complete.png differ
diff --git a/data/images_icon/quick_button_icon_bg.png b/data/images_icon/quick_button_icon_bg.png
new file mode 100644 (file)
index 0000000..392389c
Binary files /dev/null and b/data/images_icon/quick_button_icon_bg.png differ
diff --git a/data/images_icon/quick_icon_allshare.png b/data/images_icon/quick_icon_allshare.png
new file mode 100644 (file)
index 0000000..42176ed
Binary files /dev/null and b/data/images_icon/quick_icon_allshare.png differ
diff --git a/data/images_icon/quick_icon_auto_rotate.png b/data/images_icon/quick_icon_auto_rotate.png
new file mode 100644 (file)
index 0000000..48d9136
Binary files /dev/null and b/data/images_icon/quick_icon_auto_rotate.png differ
diff --git a/data/images_icon/quick_icon_blocking_mode.png b/data/images_icon/quick_icon_blocking_mode.png
new file mode 100644 (file)
index 0000000..bea9615
Binary files /dev/null and b/data/images_icon/quick_icon_blocking_mode.png differ
diff --git a/data/images_icon/quick_icon_bluetooth.png b/data/images_icon/quick_icon_bluetooth.png
new file mode 100644 (file)
index 0000000..ec747f8
Binary files /dev/null and b/data/images_icon/quick_icon_bluetooth.png differ
diff --git a/data/images_icon/quick_icon_command.png b/data/images_icon/quick_icon_command.png
new file mode 100644 (file)
index 0000000..2115f86
Binary files /dev/null and b/data/images_icon/quick_icon_command.png differ
diff --git a/data/images_icon/quick_icon_downloadbooster_off.png b/data/images_icon/quick_icon_downloadbooster_off.png
new file mode 100644 (file)
index 0000000..136380a
Binary files /dev/null and b/data/images_icon/quick_icon_downloadbooster_off.png differ
diff --git a/data/images_icon/quick_icon_driving.png b/data/images_icon/quick_icon_driving.png
new file mode 100644 (file)
index 0000000..19815b6
Binary files /dev/null and b/data/images_icon/quick_icon_driving.png differ
diff --git a/data/images_icon/quick_icon_flightmode.png b/data/images_icon/quick_icon_flightmode.png
new file mode 100644 (file)
index 0000000..a2cae7a
Binary files /dev/null and b/data/images_icon/quick_icon_flightmode.png differ
diff --git a/data/images_icon/quick_icon_glovemode.png b/data/images_icon/quick_icon_glovemode.png
new file mode 100644 (file)
index 0000000..92518b2
Binary files /dev/null and b/data/images_icon/quick_icon_glovemode.png differ
diff --git a/data/images_icon/quick_icon_gps.png b/data/images_icon/quick_icon_gps.png
new file mode 100644 (file)
index 0000000..735136e
Binary files /dev/null and b/data/images_icon/quick_icon_gps.png differ
diff --git a/data/images_icon/quick_icon_location.png b/data/images_icon/quick_icon_location.png
new file mode 100644 (file)
index 0000000..ecb55de
Binary files /dev/null and b/data/images_icon/quick_icon_location.png differ
diff --git a/data/images_icon/quick_icon_mirroring.png b/data/images_icon/quick_icon_mirroring.png
new file mode 100644 (file)
index 0000000..e5fbc2d
Binary files /dev/null and b/data/images_icon/quick_icon_mirroring.png differ
diff --git a/data/images_icon/quick_icon_mobile_data.png b/data/images_icon/quick_icon_mobile_data.png
new file mode 100644 (file)
index 0000000..0d7c9bc
Binary files /dev/null and b/data/images_icon/quick_icon_mobile_data.png differ
diff --git a/data/images_icon/quick_icon_multi_window.png b/data/images_icon/quick_icon_multi_window.png
new file mode 100644 (file)
index 0000000..2a9c61b
Binary files /dev/null and b/data/images_icon/quick_icon_multi_window.png differ
diff --git a/data/images_icon/quick_icon_nfc.png b/data/images_icon/quick_icon_nfc.png
new file mode 100644 (file)
index 0000000..baa82d5
Binary files /dev/null and b/data/images_icon/quick_icon_nfc.png differ
diff --git a/data/images_icon/quick_icon_personal_mode.png b/data/images_icon/quick_icon_personal_mode.png
new file mode 100644 (file)
index 0000000..ad6bb1b
Binary files /dev/null and b/data/images_icon/quick_icon_personal_mode.png differ
diff --git a/data/images_icon/quick_icon_power_saving.png b/data/images_icon/quick_icon_power_saving.png
new file mode 100644 (file)
index 0000000..ac6b385
Binary files /dev/null and b/data/images_icon/quick_icon_power_saving.png differ
diff --git a/data/images_icon/quick_icon_private_mode.png b/data/images_icon/quick_icon_private_mode.png
new file mode 100644 (file)
index 0000000..fabadcf
Binary files /dev/null and b/data/images_icon/quick_icon_private_mode.png differ
diff --git a/data/images_icon/quick_icon_ready_to_share.png b/data/images_icon/quick_icon_ready_to_share.png
new file mode 100644 (file)
index 0000000..ca5ac43
Binary files /dev/null and b/data/images_icon/quick_icon_ready_to_share.png differ
diff --git a/data/images_icon/quick_icon_sbeam.png b/data/images_icon/quick_icon_sbeam.png
new file mode 100644 (file)
index 0000000..5f85e1e
Binary files /dev/null and b/data/images_icon/quick_icon_sbeam.png differ
diff --git a/data/images_icon/quick_icon_sf_vf.png b/data/images_icon/quick_icon_sf_vf.png
new file mode 100644 (file)
index 0000000..a585498
Binary files /dev/null and b/data/images_icon/quick_icon_sf_vf.png differ
diff --git a/data/images_icon/quick_icon_sf_vn.png b/data/images_icon/quick_icon_sf_vn.png
new file mode 100644 (file)
index 0000000..ff22abe
Binary files /dev/null and b/data/images_icon/quick_icon_sf_vn.png differ
diff --git a/data/images_icon/quick_icon_smart_stay.png b/data/images_icon/quick_icon_smart_stay.png
new file mode 100644 (file)
index 0000000..2d2ab5d
Binary files /dev/null and b/data/images_icon/quick_icon_smart_stay.png differ
diff --git a/data/images_icon/quick_icon_sn_vf.png b/data/images_icon/quick_icon_sn_vf.png
new file mode 100644 (file)
index 0000000..005e793
Binary files /dev/null and b/data/images_icon/quick_icon_sn_vf.png differ
diff --git a/data/images_icon/quick_icon_sn_vn.png b/data/images_icon/quick_icon_sn_vn.png
new file mode 100644 (file)
index 0000000..3a598ef
Binary files /dev/null and b/data/images_icon/quick_icon_sn_vn.png differ
diff --git a/data/images_icon/quick_icon_sync.png b/data/images_icon/quick_icon_sync.png
new file mode 100644 (file)
index 0000000..72c9d1f
Binary files /dev/null and b/data/images_icon/quick_icon_sync.png differ
diff --git a/data/images_icon/quick_icon_torch.png b/data/images_icon/quick_icon_torch.png
new file mode 100644 (file)
index 0000000..0a90ae8
Binary files /dev/null and b/data/images_icon/quick_icon_torch.png differ
diff --git a/data/images_icon/quick_icon_ultra_power_saving.png b/data/images_icon/quick_icon_ultra_power_saving.png
new file mode 100644 (file)
index 0000000..51968bc
Binary files /dev/null and b/data/images_icon/quick_icon_ultra_power_saving.png differ
diff --git a/data/images_icon/quick_icon_wifi.png b/data/images_icon/quick_icon_wifi.png
new file mode 100644 (file)
index 0000000..2fd7255
Binary files /dev/null and b/data/images_icon/quick_icon_wifi.png differ
diff --git a/data/images_icon/quick_icon_wifi_tethering.png b/data/images_icon/quick_icon_wifi_tethering.png
new file mode 100644 (file)
index 0000000..dceb644
Binary files /dev/null and b/data/images_icon/quick_icon_wifi_tethering.png differ
old mode 100755 (executable)
new mode 100644 (file)
similarity index 100%
rename from data/icons/quick_standard_btn_nor.png
rename to data/images_icon/quick_standard_btn_nor.png
diff --git a/data/images_icon/toggle_mw_hide_nor.png b/data/images_icon/toggle_mw_hide_nor.png
new file mode 100644 (file)
index 0000000..36001fa
Binary files /dev/null and b/data/images_icon/toggle_mw_hide_nor.png differ
diff --git a/data/images_icon/toggle_mw_hide_press.png b/data/images_icon/toggle_mw_hide_press.png
new file mode 100644 (file)
index 0000000..0fccd26
Binary files /dev/null and b/data/images_icon/toggle_mw_hide_press.png differ
diff --git a/data/images_icon/toggle_mw_show_nor.png b/data/images_icon/toggle_mw_show_nor.png
new file mode 100644 (file)
index 0000000..af9cad6
Binary files /dev/null and b/data/images_icon/toggle_mw_show_nor.png differ
diff --git a/data/images_icon/toggle_mw_show_press.png b/data/images_icon/toggle_mw_show_press.png
new file mode 100644 (file)
index 0000000..efb5dd7
Binary files /dev/null and b/data/images_icon/toggle_mw_show_press.png differ
diff --git a/data/images_noti_icons/Account/noti_account_samsung.png b/data/images_noti_icons/Account/noti_account_samsung.png
new file mode 100644 (file)
index 0000000..274c505
Binary files /dev/null and b/data/images_noti_icons/Account/noti_account_samsung.png differ
diff --git a/data/images_noti_icons/Account/noti_account_tizen.png b/data/images_noti_icons/Account/noti_account_tizen.png
new file mode 100644 (file)
index 0000000..aef42af
Binary files /dev/null and b/data/images_noti_icons/Account/noti_account_tizen.png differ
diff --git a/data/images_noti_icons/Bluetooth/noti_bluetooth.png b/data/images_noti_icons/Bluetooth/noti_bluetooth.png
new file mode 100644 (file)
index 0000000..2c445af
Binary files /dev/null and b/data/images_noti_icons/Bluetooth/noti_bluetooth.png differ
diff --git a/data/images_noti_icons/Bluetooth/noti_bluetooth_activated.png b/data/images_noti_icons/Bluetooth/noti_bluetooth_activated.png
new file mode 100644 (file)
index 0000000..171e2f5
Binary files /dev/null and b/data/images_noti_icons/Bluetooth/noti_bluetooth_activated.png differ
diff --git a/data/images_noti_icons/Bluetooth/noti_bluetooth_fail.png b/data/images_noti_icons/Bluetooth/noti_bluetooth_fail.png
new file mode 100644 (file)
index 0000000..77be75f
Binary files /dev/null and b/data/images_noti_icons/Bluetooth/noti_bluetooth_fail.png differ
diff --git a/data/images_noti_icons/Bluetooth/noti_bluetooth_not_connected.png b/data/images_noti_icons/Bluetooth/noti_bluetooth_not_connected.png
new file mode 100644 (file)
index 0000000..2574dbc
Binary files /dev/null and b/data/images_noti_icons/Bluetooth/noti_bluetooth_not_connected.png differ
diff --git a/data/images_noti_icons/Calendar/noti_calendar.png b/data/images_noti_icons/Calendar/noti_calendar.png
new file mode 100644 (file)
index 0000000..84333ab
Binary files /dev/null and b/data/images_noti_icons/Calendar/noti_calendar.png differ
diff --git a/data/images_noti_icons/Calendar/noti_calendar_alarm.png b/data/images_noti_icons/Calendar/noti_calendar_alarm.png
new file mode 100644 (file)
index 0000000..32c4017
Binary files /dev/null and b/data/images_noti_icons/Calendar/noti_calendar_alarm.png differ
diff --git a/data/images_noti_icons/Clock/noti_clock_snooze.png b/data/images_noti_icons/Clock/noti_clock_snooze.png
new file mode 100644 (file)
index 0000000..fe0d331
Binary files /dev/null and b/data/images_noti_icons/Clock/noti_clock_snooze.png differ
diff --git a/data/images_noti_icons/Common/noti_download_01.png b/data/images_noti_icons/Common/noti_download_01.png
new file mode 100644 (file)
index 0000000..1347662
Binary files /dev/null and b/data/images_noti_icons/Common/noti_download_01.png differ
diff --git a/data/images_noti_icons/Common/noti_download_02.png b/data/images_noti_icons/Common/noti_download_02.png
new file mode 100644 (file)
index 0000000..52848ca
Binary files /dev/null and b/data/images_noti_icons/Common/noti_download_02.png differ
diff --git a/data/images_noti_icons/Common/noti_download_03.png b/data/images_noti_icons/Common/noti_download_03.png
new file mode 100644 (file)
index 0000000..ef20442
Binary files /dev/null and b/data/images_noti_icons/Common/noti_download_03.png differ
diff --git a/data/images_noti_icons/Common/noti_download_04.png b/data/images_noti_icons/Common/noti_download_04.png
new file mode 100644 (file)
index 0000000..b609329
Binary files /dev/null and b/data/images_noti_icons/Common/noti_download_04.png differ
diff --git a/data/images_noti_icons/Common/noti_download_05.png b/data/images_noti_icons/Common/noti_download_05.png
new file mode 100644 (file)
index 0000000..bab9835
Binary files /dev/null and b/data/images_noti_icons/Common/noti_download_05.png differ
diff --git a/data/images_noti_icons/Common/noti_download_complete.png b/data/images_noti_icons/Common/noti_download_complete.png
new file mode 100644 (file)
index 0000000..9e35143
Binary files /dev/null and b/data/images_noti_icons/Common/noti_download_complete.png differ
diff --git a/data/images_noti_icons/Common/noti_download_failed.png b/data/images_noti_icons/Common/noti_download_failed.png
new file mode 100644 (file)
index 0000000..650311f
Binary files /dev/null and b/data/images_noti_icons/Common/noti_download_failed.png differ
diff --git a/data/images_noti_icons/Common/noti_syncing.png b/data/images_noti_icons/Common/noti_syncing.png
new file mode 100644 (file)
index 0000000..fa69a14
Binary files /dev/null and b/data/images_noti_icons/Common/noti_syncing.png differ
diff --git a/data/images_noti_icons/Common/noti_upload_01.png b/data/images_noti_icons/Common/noti_upload_01.png
new file mode 100644 (file)
index 0000000..6445da8
Binary files /dev/null and b/data/images_noti_icons/Common/noti_upload_01.png differ
diff --git a/data/images_noti_icons/Common/noti_upload_02.png b/data/images_noti_icons/Common/noti_upload_02.png
new file mode 100644 (file)
index 0000000..bf230fd
Binary files /dev/null and b/data/images_noti_icons/Common/noti_upload_02.png differ
diff --git a/data/images_noti_icons/Common/noti_upload_03.png b/data/images_noti_icons/Common/noti_upload_03.png
new file mode 100644 (file)
index 0000000..306a258
Binary files /dev/null and b/data/images_noti_icons/Common/noti_upload_03.png differ
diff --git a/data/images_noti_icons/Common/noti_upload_04.png b/data/images_noti_icons/Common/noti_upload_04.png
new file mode 100644 (file)
index 0000000..50c0e9d
Binary files /dev/null and b/data/images_noti_icons/Common/noti_upload_04.png differ
diff --git a/data/images_noti_icons/Common/noti_upload_05.png b/data/images_noti_icons/Common/noti_upload_05.png
new file mode 100644 (file)
index 0000000..fb49ad8
Binary files /dev/null and b/data/images_noti_icons/Common/noti_upload_05.png differ
diff --git a/data/images_noti_icons/Common/noti_upload_complete.png b/data/images_noti_icons/Common/noti_upload_complete.png
new file mode 100644 (file)
index 0000000..2ee11d8
Binary files /dev/null and b/data/images_noti_icons/Common/noti_upload_complete.png differ
diff --git a/data/images_noti_icons/Common/noti_upload_failed.png b/data/images_noti_icons/Common/noti_upload_failed.png
new file mode 100644 (file)
index 0000000..ef239c5
Binary files /dev/null and b/data/images_noti_icons/Common/noti_upload_failed.png differ
diff --git a/data/images_noti_icons/Contact/noti_contact_default.png b/data/images_noti_icons/Contact/noti_contact_default.png
new file mode 100644 (file)
index 0000000..45b6a70
Binary files /dev/null and b/data/images_noti_icons/Contact/noti_contact_default.png differ
diff --git a/data/images_noti_icons/Drop box/moti_dropbox.png b/data/images_noti_icons/Drop box/moti_dropbox.png
new file mode 100644 (file)
index 0000000..829fa20
Binary files /dev/null and b/data/images_noti_icons/Drop box/moti_dropbox.png differ
diff --git a/data/images_noti_icons/E-mail/noti_email.png b/data/images_noti_icons/E-mail/noti_email.png
new file mode 100644 (file)
index 0000000..fd3cfde
Binary files /dev/null and b/data/images_noti_icons/E-mail/noti_email.png differ
diff --git a/data/images_noti_icons/E-mail/noti_email_delivery_report.png b/data/images_noti_icons/E-mail/noti_email_delivery_report.png
new file mode 100644 (file)
index 0000000..2af411f
Binary files /dev/null and b/data/images_noti_icons/E-mail/noti_email_delivery_report.png differ
diff --git a/data/images_noti_icons/E-mail/noti_email_read_report.png b/data/images_noti_icons/E-mail/noti_email_read_report.png
new file mode 100644 (file)
index 0000000..9c85489
Binary files /dev/null and b/data/images_noti_icons/E-mail/noti_email_read_report.png differ
diff --git a/data/images_noti_icons/E-mail/noti_email_scheduled.png b/data/images_noti_icons/E-mail/noti_email_scheduled.png
new file mode 100644 (file)
index 0000000..167b2e1
Binary files /dev/null and b/data/images_noti_icons/E-mail/noti_email_scheduled.png differ
diff --git a/data/images_noti_icons/E-mail/noti_email_sent.png b/data/images_noti_icons/E-mail/noti_email_sent.png
new file mode 100644 (file)
index 0000000..488a904
Binary files /dev/null and b/data/images_noti_icons/E-mail/noti_email_sent.png differ
diff --git a/data/images_noti_icons/Etc/Icon_tethering_unknown_usb_fail.png b/data/images_noti_icons/Etc/Icon_tethering_unknown_usb_fail.png
new file mode 100644 (file)
index 0000000..2482af9
Binary files /dev/null and b/data/images_noti_icons/Etc/Icon_tethering_unknown_usb_fail.png differ
diff --git a/data/images_noti_icons/Etc/noti_accessory_connected.png b/data/images_noti_icons/Etc/noti_accessory_connected.png
new file mode 100644 (file)
index 0000000..dabd9ab
Binary files /dev/null and b/data/images_noti_icons/Etc/noti_accessory_connected.png differ
diff --git a/data/images_noti_icons/Etc/noti_all_connected.png b/data/images_noti_icons/Etc/noti_all_connected.png
new file mode 100644 (file)
index 0000000..81533ce
Binary files /dev/null and b/data/images_noti_icons/Etc/noti_all_connected.png differ
diff --git a/data/images_noti_icons/Etc/noti_auto_rejected.png b/data/images_noti_icons/Etc/noti_auto_rejected.png
new file mode 100644 (file)
index 0000000..38d25d2
Binary files /dev/null and b/data/images_noti_icons/Etc/noti_auto_rejected.png differ
diff --git a/data/images_noti_icons/Etc/noti_backup.png b/data/images_noti_icons/Etc/noti_backup.png
new file mode 100644 (file)
index 0000000..283a859
Binary files /dev/null and b/data/images_noti_icons/Etc/noti_backup.png differ
diff --git a/data/images_noti_icons/Etc/noti_battery_charge.png b/data/images_noti_icons/Etc/noti_battery_charge.png
new file mode 100644 (file)
index 0000000..b7f01db
Binary files /dev/null and b/data/images_noti_icons/Etc/noti_battery_charge.png differ
diff --git a/data/images_noti_icons/Etc/noti_battery_loading.png b/data/images_noti_icons/Etc/noti_battery_loading.png
new file mode 100644 (file)
index 0000000..4a2955e
Binary files /dev/null and b/data/images_noti_icons/Etc/noti_battery_loading.png differ
diff --git a/data/images_noti_icons/Etc/noti_bluetooth_download.png b/data/images_noti_icons/Etc/noti_bluetooth_download.png
new file mode 100644 (file)
index 0000000..53a3384
Binary files /dev/null and b/data/images_noti_icons/Etc/noti_bluetooth_download.png differ
diff --git a/data/images_noti_icons/Etc/noti_camera_connected.png b/data/images_noti_icons/Etc/noti_camera_connected.png
new file mode 100644 (file)
index 0000000..cadf0de
Binary files /dev/null and b/data/images_noti_icons/Etc/noti_camera_connected.png differ
diff --git a/data/images_noti_icons/Etc/noti_chat.png b/data/images_noti_icons/Etc/noti_chat.png
new file mode 100644 (file)
index 0000000..d3e0665
Binary files /dev/null and b/data/images_noti_icons/Etc/noti_chat.png differ
diff --git a/data/images_noti_icons/Etc/noti_data_usage_warning.png b/data/images_noti_icons/Etc/noti_data_usage_warning.png
new file mode 100644 (file)
index 0000000..328e3e4
Binary files /dev/null and b/data/images_noti_icons/Etc/noti_data_usage_warning.png differ
diff --git a/data/images_noti_icons/Etc/noti_desktop_mode.png b/data/images_noti_icons/Etc/noti_desktop_mode.png
new file mode 100644 (file)
index 0000000..40e63b9
Binary files /dev/null and b/data/images_noti_icons/Etc/noti_desktop_mode.png differ
diff --git a/data/images_noti_icons/Etc/noti_dormant_mode.png b/data/images_noti_icons/Etc/noti_dormant_mode.png
new file mode 100644 (file)
index 0000000..6c503f8
Binary files /dev/null and b/data/images_noti_icons/Etc/noti_dormant_mode.png differ
diff --git a/data/images_noti_icons/Etc/noti_download_booster.png b/data/images_noti_icons/Etc/noti_download_booster.png
new file mode 100644 (file)
index 0000000..3f6fd6f
Binary files /dev/null and b/data/images_noti_icons/Etc/noti_download_booster.png differ
diff --git a/data/images_noti_icons/Etc/noti_ecb_mode.png b/data/images_noti_icons/Etc/noti_ecb_mode.png
new file mode 100644 (file)
index 0000000..cfaeb11
Binary files /dev/null and b/data/images_noti_icons/Etc/noti_ecb_mode.png differ
diff --git a/data/images_noti_icons/Etc/noti_error.png b/data/images_noti_icons/Etc/noti_error.png
new file mode 100644 (file)
index 0000000..79e287e
Binary files /dev/null and b/data/images_noti_icons/Etc/noti_error.png differ
diff --git a/data/images_noti_icons/Etc/noti_firewall_activated.png b/data/images_noti_icons/Etc/noti_firewall_activated.png
new file mode 100644 (file)
index 0000000..3e2ec47
Binary files /dev/null and b/data/images_noti_icons/Etc/noti_firewall_activated.png differ
diff --git a/data/images_noti_icons/Etc/noti_fm_radio.png b/data/images_noti_icons/Etc/noti_fm_radio.png
new file mode 100644 (file)
index 0000000..a35c79f
Binary files /dev/null and b/data/images_noti_icons/Etc/noti_fm_radio.png differ
diff --git a/data/images_noti_icons/Etc/noti_fota.png b/data/images_noti_icons/Etc/noti_fota.png
new file mode 100644 (file)
index 0000000..7980d1d
Binary files /dev/null and b/data/images_noti_icons/Etc/noti_fota.png differ
diff --git a/data/images_noti_icons/Etc/noti_fota_completion.png b/data/images_noti_icons/Etc/noti_fota_completion.png
new file mode 100644 (file)
index 0000000..42b4615
Binary files /dev/null and b/data/images_noti_icons/Etc/noti_fota_completion.png differ
diff --git a/data/images_noti_icons/Etc/noti_fota_postpone.png b/data/images_noti_icons/Etc/noti_fota_postpone.png
new file mode 100644 (file)
index 0000000..90a752c
Binary files /dev/null and b/data/images_noti_icons/Etc/noti_fota_postpone.png differ
diff --git a/data/images_noti_icons/Etc/noti_gqs_on.png b/data/images_noti_icons/Etc/noti_gqs_on.png
new file mode 100644 (file)
index 0000000..d380339
Binary files /dev/null and b/data/images_noti_icons/Etc/noti_gqs_on.png differ
diff --git a/data/images_noti_icons/Etc/noti_gqs_searching.png b/data/images_noti_icons/Etc/noti_gqs_searching.png
new file mode 100644 (file)
index 0000000..d380339
Binary files /dev/null and b/data/images_noti_icons/Etc/noti_gqs_searching.png differ
diff --git a/data/images_noti_icons/Etc/noti_im.png b/data/images_noti_icons/Etc/noti_im.png
new file mode 100644 (file)
index 0000000..6700fed
Binary files /dev/null and b/data/images_noti_icons/Etc/noti_im.png differ
diff --git a/data/images_noti_icons/Etc/noti_install_01.png b/data/images_noti_icons/Etc/noti_install_01.png
new file mode 100644 (file)
index 0000000..ced3bdd
Binary files /dev/null and b/data/images_noti_icons/Etc/noti_install_01.png differ
diff --git a/data/images_noti_icons/Etc/noti_install_02.png b/data/images_noti_icons/Etc/noti_install_02.png
new file mode 100644 (file)
index 0000000..481ff3f
Binary files /dev/null and b/data/images_noti_icons/Etc/noti_install_02.png differ
diff --git a/data/images_noti_icons/Etc/noti_install_03.png b/data/images_noti_icons/Etc/noti_install_03.png
new file mode 100644 (file)
index 0000000..2d04ca0
Binary files /dev/null and b/data/images_noti_icons/Etc/noti_install_03.png differ
diff --git a/data/images_noti_icons/Etc/noti_install_04.png b/data/images_noti_icons/Etc/noti_install_04.png
new file mode 100644 (file)
index 0000000..16fa161
Binary files /dev/null and b/data/images_noti_icons/Etc/noti_install_04.png differ
diff --git a/data/images_noti_icons/Etc/noti_install_05.png b/data/images_noti_icons/Etc/noti_install_05.png
new file mode 100644 (file)
index 0000000..a33c76c
Binary files /dev/null and b/data/images_noti_icons/Etc/noti_install_05.png differ
diff --git a/data/images_noti_icons/Etc/noti_install_complete.png b/data/images_noti_icons/Etc/noti_install_complete.png
new file mode 100644 (file)
index 0000000..b9bd97c
Binary files /dev/null and b/data/images_noti_icons/Etc/noti_install_complete.png differ
diff --git a/data/images_noti_icons/Etc/noti_install_failed.png b/data/images_noti_icons/Etc/noti_install_failed.png
new file mode 100644 (file)
index 0000000..25a8290
Binary files /dev/null and b/data/images_noti_icons/Etc/noti_install_failed.png differ
diff --git a/data/images_noti_icons/Etc/noti_keyboard.png b/data/images_noti_icons/Etc/noti_keyboard.png
new file mode 100644 (file)
index 0000000..d527bec
Binary files /dev/null and b/data/images_noti_icons/Etc/noti_keyboard.png differ
diff --git a/data/images_noti_icons/Etc/noti_keyboard_connected.png b/data/images_noti_icons/Etc/noti_keyboard_connected.png
new file mode 100644 (file)
index 0000000..cbac392
Binary files /dev/null and b/data/images_noti_icons/Etc/noti_keyboard_connected.png differ
diff --git a/data/images_noti_icons/Etc/noti_mms_delivery_report.png b/data/images_noti_icons/Etc/noti_mms_delivery_report.png
new file mode 100644 (file)
index 0000000..ee4ddeb
Binary files /dev/null and b/data/images_noti_icons/Etc/noti_mms_delivery_report.png differ
diff --git a/data/images_noti_icons/Etc/noti_mms_failed.png b/data/images_noti_icons/Etc/noti_mms_failed.png
new file mode 100644 (file)
index 0000000..467a8ac
Binary files /dev/null and b/data/images_noti_icons/Etc/noti_mms_failed.png differ
diff --git a/data/images_noti_icons/Etc/noti_mms_problem.png b/data/images_noti_icons/Etc/noti_mms_problem.png
new file mode 100644 (file)
index 0000000..47cb544
Binary files /dev/null and b/data/images_noti_icons/Etc/noti_mms_problem.png differ
diff --git a/data/images_noti_icons/Etc/noti_multi_email.png b/data/images_noti_icons/Etc/noti_multi_email.png
new file mode 100644 (file)
index 0000000..55d4493
Binary files /dev/null and b/data/images_noti_icons/Etc/noti_multi_email.png differ
diff --git a/data/images_noti_icons/Etc/noti_multi_window.png b/data/images_noti_icons/Etc/noti_multi_window.png
new file mode 100644 (file)
index 0000000..0fa8b7d
Binary files /dev/null and b/data/images_noti_icons/Etc/noti_multi_window.png differ
diff --git a/data/images_noti_icons/Etc/noti_multiple_devices_connected.png b/data/images_noti_icons/Etc/noti_multiple_devices_connected.png
new file mode 100644 (file)
index 0000000..3536fc8
Binary files /dev/null and b/data/images_noti_icons/Etc/noti_multiple_devices_connected.png differ
diff --git a/data/images_noti_icons/Etc/noti_near_by_device.png b/data/images_noti_icons/Etc/noti_near_by_device.png
new file mode 100644 (file)
index 0000000..2a1d22b
Binary files /dev/null and b/data/images_noti_icons/Etc/noti_near_by_device.png differ
diff --git a/data/images_noti_icons/Etc/noti_no_sim_full.png b/data/images_noti_icons/Etc/noti_no_sim_full.png
new file mode 100644 (file)
index 0000000..a6278c2
Binary files /dev/null and b/data/images_noti_icons/Etc/noti_no_sim_full.png differ
diff --git a/data/images_noti_icons/Etc/noti_print.png b/data/images_noti_icons/Etc/noti_print.png
new file mode 100644 (file)
index 0000000..c78749a
Binary files /dev/null and b/data/images_noti_icons/Etc/noti_print.png differ
diff --git a/data/images_noti_icons/Etc/noti_print_waiting.png b/data/images_noti_icons/Etc/noti_print_waiting.png
new file mode 100644 (file)
index 0000000..db23666
Binary files /dev/null and b/data/images_noti_icons/Etc/noti_print_waiting.png differ
diff --git a/data/images_noti_icons/Etc/noti_rcs_chat.png b/data/images_noti_icons/Etc/noti_rcs_chat.png
new file mode 100644 (file)
index 0000000..502ca27
Binary files /dev/null and b/data/images_noti_icons/Etc/noti_rcs_chat.png differ
diff --git a/data/images_noti_icons/Etc/noti_rcs_file_transfer.png b/data/images_noti_icons/Etc/noti_rcs_file_transfer.png
new file mode 100644 (file)
index 0000000..db8dd12
Binary files /dev/null and b/data/images_noti_icons/Etc/noti_rcs_file_transfer.png differ
diff --git a/data/images_noti_icons/Etc/noti_safe_mode.png b/data/images_noti_icons/Etc/noti_safe_mode.png
new file mode 100644 (file)
index 0000000..5617cf2
Binary files /dev/null and b/data/images_noti_icons/Etc/noti_safe_mode.png differ
diff --git a/data/images_noti_icons/Etc/noti_screen_recorder.png b/data/images_noti_icons/Etc/noti_screen_recorder.png
new file mode 100644 (file)
index 0000000..2e641c7
Binary files /dev/null and b/data/images_noti_icons/Etc/noti_screen_recorder.png differ
diff --git a/data/images_noti_icons/Etc/noti_screen_recorder_dim.png b/data/images_noti_icons/Etc/noti_screen_recorder_dim.png
new file mode 100644 (file)
index 0000000..7fcc69f
Binary files /dev/null and b/data/images_noti_icons/Etc/noti_screen_recorder_dim.png differ
diff --git a/data/images_noti_icons/Etc/noti_sd_card.png b/data/images_noti_icons/Etc/noti_sd_card.png
new file mode 100644 (file)
index 0000000..5edbf0b
Binary files /dev/null and b/data/images_noti_icons/Etc/noti_sd_card.png differ
diff --git a/data/images_noti_icons/Etc/noti_sd_card_decryption.png b/data/images_noti_icons/Etc/noti_sd_card_decryption.png
new file mode 100644 (file)
index 0000000..5fc7cab
Binary files /dev/null and b/data/images_noti_icons/Etc/noti_sd_card_decryption.png differ
diff --git a/data/images_noti_icons/Etc/noti_sd_card_encryption.png b/data/images_noti_icons/Etc/noti_sd_card_encryption.png
new file mode 100644 (file)
index 0000000..f8ff9a5
Binary files /dev/null and b/data/images_noti_icons/Etc/noti_sd_card_encryption.png differ
diff --git a/data/images_noti_icons/Etc/noti_sd_card_encryption_error.png b/data/images_noti_icons/Etc/noti_sd_card_encryption_error.png
new file mode 100644 (file)
index 0000000..80f6e41
Binary files /dev/null and b/data/images_noti_icons/Etc/noti_sd_card_encryption_error.png differ
diff --git a/data/images_noti_icons/Etc/noti_sd_card_error.png b/data/images_noti_icons/Etc/noti_sd_card_error.png
new file mode 100644 (file)
index 0000000..9dafe97
Binary files /dev/null and b/data/images_noti_icons/Etc/noti_sd_card_error.png differ
diff --git a/data/images_noti_icons/Etc/noti_sd_card_prepare.png b/data/images_noti_icons/Etc/noti_sd_card_prepare.png
new file mode 100644 (file)
index 0000000..9ba26d0
Binary files /dev/null and b/data/images_noti_icons/Etc/noti_sd_card_prepare.png differ
diff --git a/data/images_noti_icons/Etc/noti_sd_card_removed.png b/data/images_noti_icons/Etc/noti_sd_card_removed.png
new file mode 100644 (file)
index 0000000..d0b15e1
Binary files /dev/null and b/data/images_noti_icons/Etc/noti_sd_card_removed.png differ
diff --git a/data/images_noti_icons/Etc/noti_shareshot_receive.png b/data/images_noti_icons/Etc/noti_shareshot_receive.png
new file mode 100644 (file)
index 0000000..fa36026
Binary files /dev/null and b/data/images_noti_icons/Etc/noti_shareshot_receive.png differ
diff --git a/data/images_noti_icons/Etc/noti_shareshot_receive_problem.png b/data/images_noti_icons/Etc/noti_shareshot_receive_problem.png
new file mode 100644 (file)
index 0000000..f8969de
Binary files /dev/null and b/data/images_noti_icons/Etc/noti_shareshot_receive_problem.png differ
diff --git a/data/images_noti_icons/Etc/noti_shareshot_send.png b/data/images_noti_icons/Etc/noti_shareshot_send.png
new file mode 100644 (file)
index 0000000..42bb2d4
Binary files /dev/null and b/data/images_noti_icons/Etc/noti_shareshot_send.png differ
diff --git a/data/images_noti_icons/Etc/noti_shareshot_send_problem.png b/data/images_noti_icons/Etc/noti_shareshot_send_problem.png
new file mode 100644 (file)
index 0000000..3908b91
Binary files /dev/null and b/data/images_noti_icons/Etc/noti_shareshot_send_problem.png differ
diff --git a/data/images_noti_icons/Etc/noti_side_sync.png b/data/images_noti_icons/Etc/noti_side_sync.png
new file mode 100644 (file)
index 0000000..d6d4116
Binary files /dev/null and b/data/images_noti_icons/Etc/noti_side_sync.png differ
diff --git a/data/images_noti_icons/Etc/noti_sim_toolkit.png b/data/images_noti_icons/Etc/noti_sim_toolkit.png
new file mode 100644 (file)
index 0000000..c1a22c3
Binary files /dev/null and b/data/images_noti_icons/Etc/noti_sim_toolkit.png differ
diff --git a/data/images_noti_icons/Etc/noti_smart_stay.png b/data/images_noti_icons/Etc/noti_smart_stay.png
new file mode 100644 (file)
index 0000000..772e92f
Binary files /dev/null and b/data/images_noti_icons/Etc/noti_smart_stay.png differ
diff --git a/data/images_noti_icons/Etc/noti_smemo_sync.png b/data/images_noti_icons/Etc/noti_smemo_sync.png
new file mode 100644 (file)
index 0000000..86f9cc8
Binary files /dev/null and b/data/images_noti_icons/Etc/noti_smemo_sync.png differ
diff --git a/data/images_noti_icons/Etc/noti_spen.png b/data/images_noti_icons/Etc/noti_spen.png
new file mode 100644 (file)
index 0000000..2714ad0
Binary files /dev/null and b/data/images_noti_icons/Etc/noti_spen.png differ
diff --git a/data/images_noti_icons/Etc/noti_sync_error.png b/data/images_noti_icons/Etc/noti_sync_error.png
new file mode 100644 (file)
index 0000000..7cfeb91
Binary files /dev/null and b/data/images_noti_icons/Etc/noti_sync_error.png differ
diff --git a/data/images_noti_icons/Etc/noti_tethering_usb_fail.png b/data/images_noti_icons/Etc/noti_tethering_usb_fail.png
new file mode 100644 (file)
index 0000000..ba88834
Binary files /dev/null and b/data/images_noti_icons/Etc/noti_tethering_usb_fail.png differ
diff --git a/data/images_noti_icons/Etc/noti_tty_mode.png b/data/images_noti_icons/Etc/noti_tty_mode.png
new file mode 100644 (file)
index 0000000..da3e17d
Binary files /dev/null and b/data/images_noti_icons/Etc/noti_tty_mode.png differ
diff --git a/data/images_noti_icons/Etc/noti_tv.png b/data/images_noti_icons/Etc/noti_tv.png
new file mode 100644 (file)
index 0000000..cfa595d
Binary files /dev/null and b/data/images_noti_icons/Etc/noti_tv.png differ
diff --git a/data/images_noti_icons/Etc/noti_updated_complete.png b/data/images_noti_icons/Etc/noti_updated_complete.png
new file mode 100644 (file)
index 0000000..18ebb06
Binary files /dev/null and b/data/images_noti_icons/Etc/noti_updated_complete.png differ
diff --git a/data/images_noti_icons/Etc/noti_updated_failed.png b/data/images_noti_icons/Etc/noti_updated_failed.png
new file mode 100644 (file)
index 0000000..4b20c1f
Binary files /dev/null and b/data/images_noti_icons/Etc/noti_updated_failed.png differ
diff --git a/data/images_noti_icons/Etc/noti_usb_connected.png b/data/images_noti_icons/Etc/noti_usb_connected.png
new file mode 100644 (file)
index 0000000..0bb3bf5
Binary files /dev/null and b/data/images_noti_icons/Etc/noti_usb_connected.png differ
diff --git a/data/images_noti_icons/Etc/noti_usb_fail.png b/data/images_noti_icons/Etc/noti_usb_fail.png
new file mode 100644 (file)
index 0000000..46e39e9
Binary files /dev/null and b/data/images_noti_icons/Etc/noti_usb_fail.png differ
diff --git a/data/images_noti_icons/Etc/noti_usb_mass_storage_connected.png b/data/images_noti_icons/Etc/noti_usb_mass_storage_connected.png
new file mode 100644 (file)
index 0000000..08c1259
Binary files /dev/null and b/data/images_noti_icons/Etc/noti_usb_mass_storage_connected.png differ
diff --git a/data/images_noti_icons/Etc/noti_usb_unknown_fail.png b/data/images_noti_icons/Etc/noti_usb_unknown_fail.png
new file mode 100644 (file)
index 0000000..49cff79
Binary files /dev/null and b/data/images_noti_icons/Etc/noti_usb_unknown_fail.png differ
diff --git a/data/images_noti_icons/Etc/noti_video.png b/data/images_noti_icons/Etc/noti_video.png
new file mode 100644 (file)
index 0000000..62ddfc0
Binary files /dev/null and b/data/images_noti_icons/Etc/noti_video.png differ
diff --git a/data/images_noti_icons/Etc/noti_voice_mail.png b/data/images_noti_icons/Etc/noti_voice_mail.png
new file mode 100644 (file)
index 0000000..b832e62
Binary files /dev/null and b/data/images_noti_icons/Etc/noti_voice_mail.png differ
diff --git a/data/images_noti_icons/Etc/noti_voice_mail_01.png b/data/images_noti_icons/Etc/noti_voice_mail_01.png
new file mode 100644 (file)
index 0000000..594b099
Binary files /dev/null and b/data/images_noti_icons/Etc/noti_voice_mail_01.png differ
diff --git a/data/images_noti_icons/Etc/noti_voice_mail_02.png b/data/images_noti_icons/Etc/noti_voice_mail_02.png
new file mode 100644 (file)
index 0000000..6ac61a1
Binary files /dev/null and b/data/images_noti_icons/Etc/noti_voice_mail_02.png differ
diff --git a/data/images_noti_icons/Etc/noti_voice_mail_03.png b/data/images_noti_icons/Etc/noti_voice_mail_03.png
new file mode 100644 (file)
index 0000000..fcd6ab9
Binary files /dev/null and b/data/images_noti_icons/Etc/noti_voice_mail_03.png differ
diff --git a/data/images_noti_icons/Etc/noti_voice_memo.png b/data/images_noti_icons/Etc/noti_voice_memo.png
new file mode 100644 (file)
index 0000000..26fad27
Binary files /dev/null and b/data/images_noti_icons/Etc/noti_voice_memo.png differ
diff --git a/data/images_noti_icons/Etc/noti_voice_recorder_paused.png b/data/images_noti_icons/Etc/noti_voice_recorder_paused.png
new file mode 100644 (file)
index 0000000..01429d8
Binary files /dev/null and b/data/images_noti_icons/Etc/noti_voice_recorder_paused.png differ
diff --git a/data/images_noti_icons/Etc/noti_voice_recorder_play.png b/data/images_noti_icons/Etc/noti_voice_recorder_play.png
new file mode 100644 (file)
index 0000000..8dc8d2d
Binary files /dev/null and b/data/images_noti_icons/Etc/noti_voice_recorder_play.png differ
diff --git a/data/images_noti_icons/Etc/noti_wifi_translate.png b/data/images_noti_icons/Etc/noti_wifi_translate.png
new file mode 100644 (file)
index 0000000..9939949
Binary files /dev/null and b/data/images_noti_icons/Etc/noti_wifi_translate.png differ
diff --git a/data/images_noti_icons/FOTA/noti_fota.png b/data/images_noti_icons/FOTA/noti_fota.png
new file mode 100644 (file)
index 0000000..ba7d556
Binary files /dev/null and b/data/images_noti_icons/FOTA/noti_fota.png differ
diff --git a/data/images_noti_icons/FOTA/noti_fota_completion.png b/data/images_noti_icons/FOTA/noti_fota_completion.png
new file mode 100644 (file)
index 0000000..4853018
Binary files /dev/null and b/data/images_noti_icons/FOTA/noti_fota_completion.png differ
diff --git a/data/images_noti_icons/FOTA/noti_fota_diagmon.png b/data/images_noti_icons/FOTA/noti_fota_diagmon.png
new file mode 100644 (file)
index 0000000..4744884
Binary files /dev/null and b/data/images_noti_icons/FOTA/noti_fota_diagmon.png differ
diff --git a/data/images_noti_icons/FOTA/noti_fota_diagmon_completion.png b/data/images_noti_icons/FOTA/noti_fota_diagmon_completion.png
new file mode 100644 (file)
index 0000000..57fe5d5
Binary files /dev/null and b/data/images_noti_icons/FOTA/noti_fota_diagmon_completion.png differ
diff --git a/data/images_noti_icons/FOTA/noti_fota_postpone.png b/data/images_noti_icons/FOTA/noti_fota_postpone.png
new file mode 100644 (file)
index 0000000..70e09f8
Binary files /dev/null and b/data/images_noti_icons/FOTA/noti_fota_postpone.png differ
diff --git a/data/images_noti_icons/Facebook/noti_facebook.png b/data/images_noti_icons/Facebook/noti_facebook.png
new file mode 100644 (file)
index 0000000..ab0a69a
Binary files /dev/null and b/data/images_noti_icons/Facebook/noti_facebook.png differ
diff --git a/data/images_noti_icons/Facebook/noti_facebook_female_default.png b/data/images_noti_icons/Facebook/noti_facebook_female_default.png
new file mode 100644 (file)
index 0000000..0c6328c
Binary files /dev/null and b/data/images_noti_icons/Facebook/noti_facebook_female_default.png differ
diff --git a/data/images_noti_icons/Facebook/noti_facebook_male_default.png b/data/images_noti_icons/Facebook/noti_facebook_male_default.png
new file mode 100644 (file)
index 0000000..9c5b794
Binary files /dev/null and b/data/images_noti_icons/Facebook/noti_facebook_male_default.png differ
diff --git a/data/images_noti_icons/Find my mobile/noti_FMM_call_log.png b/data/images_noti_icons/Find my mobile/noti_FMM_call_log.png
new file mode 100644 (file)
index 0000000..d7b7772
Binary files /dev/null and b/data/images_noti_icons/Find my mobile/noti_FMM_call_log.png differ
diff --git a/data/images_noti_icons/Find my mobile/noti_FMM_device_located.png b/data/images_noti_icons/Find my mobile/noti_FMM_device_located.png
new file mode 100644 (file)
index 0000000..0331427
Binary files /dev/null and b/data/images_noti_icons/Find my mobile/noti_FMM_device_located.png differ
diff --git a/data/images_noti_icons/Find my mobile/noti_FMM_device_unlocked.png b/data/images_noti_icons/Find my mobile/noti_FMM_device_unlocked.png
new file mode 100644 (file)
index 0000000..065a949
Binary files /dev/null and b/data/images_noti_icons/Find my mobile/noti_FMM_device_unlocked.png differ
diff --git a/data/images_noti_icons/Gallery/noti_gallery_image.png b/data/images_noti_icons/Gallery/noti_gallery_image.png
new file mode 100644 (file)
index 0000000..6dceae5
Binary files /dev/null and b/data/images_noti_icons/Gallery/noti_gallery_image.png differ
diff --git a/data/images_noti_icons/Gallery/noti_gallery_image_error.png b/data/images_noti_icons/Gallery/noti_gallery_image_error.png
new file mode 100644 (file)
index 0000000..3e5dffa
Binary files /dev/null and b/data/images_noti_icons/Gallery/noti_gallery_image_error.png differ
diff --git a/data/images_noti_icons/Internet/noti_internet_flightmode.png b/data/images_noti_icons/Internet/noti_internet_flightmode.png
new file mode 100644 (file)
index 0000000..bfd25ff
Binary files /dev/null and b/data/images_noti_icons/Internet/noti_internet_flightmode.png differ
diff --git a/data/images_noti_icons/Lock screen/noti_message.png b/data/images_noti_icons/Lock screen/noti_message.png
new file mode 100644 (file)
index 0000000..0fc91fa
Binary files /dev/null and b/data/images_noti_icons/Lock screen/noti_message.png differ
diff --git a/data/images_noti_icons/Lock screen/noti_missed_call.png b/data/images_noti_icons/Lock screen/noti_missed_call.png
new file mode 100644 (file)
index 0000000..383822c
Binary files /dev/null and b/data/images_noti_icons/Lock screen/noti_missed_call.png differ
diff --git a/data/images_noti_icons/Low battery&charge/noti_battery_fully_charging.png b/data/images_noti_icons/Low battery&charge/noti_battery_fully_charging.png
new file mode 100644 (file)
index 0000000..edaa168
Binary files /dev/null and b/data/images_noti_icons/Low battery&charge/noti_battery_fully_charging.png differ
diff --git a/data/images_noti_icons/Low battery&charge/noti_charging_battery_low.png b/data/images_noti_icons/Low battery&charge/noti_charging_battery_low.png
new file mode 100644 (file)
index 0000000..eb3bc8f
Binary files /dev/null and b/data/images_noti_icons/Low battery&charge/noti_charging_battery_low.png differ
diff --git a/data/images_noti_icons/Low battery&charge/noti_charging_cable_disconnected.png b/data/images_noti_icons/Low battery&charge/noti_charging_cable_disconnected.png
new file mode 100644 (file)
index 0000000..d9f22c8
Binary files /dev/null and b/data/images_noti_icons/Low battery&charge/noti_charging_cable_disconnected.png differ
diff --git a/data/images_noti_icons/Message/noti_message.png b/data/images_noti_icons/Message/noti_message.png
new file mode 100644 (file)
index 0000000..0fc91fa
Binary files /dev/null and b/data/images_noti_icons/Message/noti_message.png differ
diff --git a/data/images_noti_icons/Message/noti_message_OTA.png b/data/images_noti_icons/Message/noti_message_OTA.png
new file mode 100644 (file)
index 0000000..9b0c275
Binary files /dev/null and b/data/images_noti_icons/Message/noti_message_OTA.png differ
diff --git a/data/images_noti_icons/Message/noti_message_cb-msg.png b/data/images_noti_icons/Message/noti_message_cb-msg.png
new file mode 100644 (file)
index 0000000..8d3b273
Binary files /dev/null and b/data/images_noti_icons/Message/noti_message_cb-msg.png differ
diff --git a/data/images_noti_icons/Message/noti_message_delivery_report.png b/data/images_noti_icons/Message/noti_message_delivery_report.png
new file mode 100644 (file)
index 0000000..2ce76e5
Binary files /dev/null and b/data/images_noti_icons/Message/noti_message_delivery_report.png differ
diff --git a/data/images_noti_icons/Message/noti_message_failed.png b/data/images_noti_icons/Message/noti_message_failed.png
new file mode 100644 (file)
index 0000000..86e9dee
Binary files /dev/null and b/data/images_noti_icons/Message/noti_message_failed.png differ
diff --git a/data/images_noti_icons/Message/noti_message_mms_failed.png b/data/images_noti_icons/Message/noti_message_mms_failed.png
new file mode 100644 (file)
index 0000000..3ba33fb
Binary files /dev/null and b/data/images_noti_icons/Message/noti_message_mms_failed.png differ
diff --git a/data/images_noti_icons/Message/noti_message_mms_problem.png b/data/images_noti_icons/Message/noti_message_mms_problem.png
new file mode 100644 (file)
index 0000000..bc11c8b
Binary files /dev/null and b/data/images_noti_icons/Message/noti_message_mms_problem.png differ
diff --git a/data/images_noti_icons/Message/noti_message_read_report.png b/data/images_noti_icons/Message/noti_message_read_report.png
new file mode 100644 (file)
index 0000000..617e62f
Binary files /dev/null and b/data/images_noti_icons/Message/noti_message_read_report.png differ
diff --git a/data/images_noti_icons/Message/noti_message_reply.png b/data/images_noti_icons/Message/noti_message_reply.png
new file mode 100644 (file)
index 0000000..2cb0c28
Binary files /dev/null and b/data/images_noti_icons/Message/noti_message_reply.png differ
diff --git a/data/images_noti_icons/Message/noti_message_scheduled.png b/data/images_noti_icons/Message/noti_message_scheduled.png
new file mode 100644 (file)
index 0000000..b88d640
Binary files /dev/null and b/data/images_noti_icons/Message/noti_message_scheduled.png differ
diff --git a/data/images_noti_icons/Message/noti_message_sending.png b/data/images_noti_icons/Message/noti_message_sending.png
new file mode 100644 (file)
index 0000000..396c702
Binary files /dev/null and b/data/images_noti_icons/Message/noti_message_sending.png differ
diff --git a/data/images_noti_icons/Message/noti_message_sim-card.png b/data/images_noti_icons/Message/noti_message_sim-card.png
new file mode 100644 (file)
index 0000000..d87fe51
Binary files /dev/null and b/data/images_noti_icons/Message/noti_message_sim-card.png differ
diff --git a/data/images_noti_icons/Message/noti_mms.png b/data/images_noti_icons/Message/noti_mms.png
new file mode 100644 (file)
index 0000000..9227ae4
Binary files /dev/null and b/data/images_noti_icons/Message/noti_mms.png differ
diff --git a/data/images_noti_icons/Message/noti_voice_mail.png b/data/images_noti_icons/Message/noti_voice_mail.png
new file mode 100644 (file)
index 0000000..43640f7
Binary files /dev/null and b/data/images_noti_icons/Message/noti_voice_mail.png differ
diff --git a/data/images_noti_icons/Multi SIM/noti_no_sim.png b/data/images_noti_icons/Multi SIM/noti_no_sim.png
new file mode 100644 (file)
index 0000000..a058ab8
Binary files /dev/null and b/data/images_noti_icons/Multi SIM/noti_no_sim.png differ
diff --git a/data/images_noti_icons/Multi SIM/noti_sim_full.png b/data/images_noti_icons/Multi SIM/noti_sim_full.png
new file mode 100644 (file)
index 0000000..2484469
Binary files /dev/null and b/data/images_noti_icons/Multi SIM/noti_sim_full.png differ
diff --git a/data/images_noti_icons/Patterns/noti_cooling_down.png b/data/images_noti_icons/Patterns/noti_cooling_down.png
new file mode 100644 (file)
index 0000000..3337f0c
Binary files /dev/null and b/data/images_noti_icons/Patterns/noti_cooling_down.png differ
diff --git a/data/images_noti_icons/Patterns/noti_screen_captured.png b/data/images_noti_icons/Patterns/noti_screen_captured.png
new file mode 100644 (file)
index 0000000..df34e37
Binary files /dev/null and b/data/images_noti_icons/Patterns/noti_screen_captured.png differ
diff --git a/data/images_noti_icons/Private mode/noti_private_mode.png b/data/images_noti_icons/Private mode/noti_private_mode.png
new file mode 100644 (file)
index 0000000..d15c825
Binary files /dev/null and b/data/images_noti_icons/Private mode/noti_private_mode.png differ
diff --git a/data/images_noti_icons/Send help messages/noti_icon_emergency.png b/data/images_noti_icons/Send help messages/noti_icon_emergency.png
new file mode 100644 (file)
index 0000000..cfe6030
Binary files /dev/null and b/data/images_noti_icons/Send help messages/noti_icon_emergency.png differ
diff --git a/data/images_noti_icons/Send help messages/noti_send_emergency_msg.png b/data/images_noti_icons/Send help messages/noti_send_emergency_msg.png
new file mode 100644 (file)
index 0000000..286b266
Binary files /dev/null and b/data/images_noti_icons/Send help messages/noti_send_emergency_msg.png differ
diff --git a/data/images_noti_icons/Share with contents/noti_icon_Id_default.png b/data/images_noti_icons/Share with contents/noti_icon_Id_default.png
new file mode 100644 (file)
index 0000000..2733fff
Binary files /dev/null and b/data/images_noti_icons/Share with contents/noti_icon_Id_default.png differ
diff --git a/data/images_noti_icons/Tethering/noti_tethering.png b/data/images_noti_icons/Tethering/noti_tethering.png
new file mode 100644 (file)
index 0000000..8c1a266
Binary files /dev/null and b/data/images_noti_icons/Tethering/noti_tethering.png differ
diff --git a/data/images_noti_icons/Tethering/noti_tethering_all.png b/data/images_noti_icons/Tethering/noti_tethering_all.png
new file mode 100644 (file)
index 0000000..cdefd22
Binary files /dev/null and b/data/images_noti_icons/Tethering/noti_tethering_all.png differ
diff --git a/data/images_noti_icons/Tethering/noti_tethering_bt.png b/data/images_noti_icons/Tethering/noti_tethering_bt.png
new file mode 100644 (file)
index 0000000..0e7e87f
Binary files /dev/null and b/data/images_noti_icons/Tethering/noti_tethering_bt.png differ
diff --git a/data/images_noti_icons/Tethering/noti_tethering_usb.png b/data/images_noti_icons/Tethering/noti_tethering_usb.png
new file mode 100644 (file)
index 0000000..4c49de7
Binary files /dev/null and b/data/images_noti_icons/Tethering/noti_tethering_usb.png differ
diff --git a/data/images_noti_icons/Tethering/noti_tethering_wifi.png b/data/images_noti_icons/Tethering/noti_tethering_wifi.png
new file mode 100644 (file)
index 0000000..41f23b4
Binary files /dev/null and b/data/images_noti_icons/Tethering/noti_tethering_wifi.png differ
diff --git a/data/images_noti_icons/Tizen store/noti_tizen_store.png b/data/images_noti_icons/Tizen store/noti_tizen_store.png
new file mode 100644 (file)
index 0000000..9b65c0a
Binary files /dev/null and b/data/images_noti_icons/Tizen store/noti_tizen_store.png differ
diff --git a/data/images_noti_icons/Wi-Fi/noti_wifi.png b/data/images_noti_icons/Wi-Fi/noti_wifi.png
new file mode 100644 (file)
index 0000000..f480fd0
Binary files /dev/null and b/data/images_noti_icons/Wi-Fi/noti_wifi.png differ
diff --git a/data/images_noti_icons/Wi-Fi/noti_wifi_availablility_check1.png b/data/images_noti_icons/Wi-Fi/noti_wifi_availablility_check1.png
new file mode 100644 (file)
index 0000000..274cf15
Binary files /dev/null and b/data/images_noti_icons/Wi-Fi/noti_wifi_availablility_check1.png differ
diff --git a/data/images_noti_icons/Wi-Fi/noti_wifi_direct.png b/data/images_noti_icons/Wi-Fi/noti_wifi_direct.png
new file mode 100644 (file)
index 0000000..5c1b553
Binary files /dev/null and b/data/images_noti_icons/Wi-Fi/noti_wifi_direct.png differ
diff --git a/data/images_noti_icons/Wi-Fi/noti_wifi_direct_auto_off.png b/data/images_noti_icons/Wi-Fi/noti_wifi_direct_auto_off.png
new file mode 100644 (file)
index 0000000..5c1b553
Binary files /dev/null and b/data/images_noti_icons/Wi-Fi/noti_wifi_direct_auto_off.png differ
diff --git a/data/images_noti_icons/Wi-Fi/noti_wifi_in_range.png b/data/images_noti_icons/Wi-Fi/noti_wifi_in_range.png
new file mode 100644 (file)
index 0000000..1aac451
Binary files /dev/null and b/data/images_noti_icons/Wi-Fi/noti_wifi_in_range.png differ
diff --git a/data/images_noti_icons/Wi-Fi/noti_wifi_network_available.png b/data/images_noti_icons/Wi-Fi/noti_wifi_network_available.png
new file mode 100644 (file)
index 0000000..f480fd0
Binary files /dev/null and b/data/images_noti_icons/Wi-Fi/noti_wifi_network_available.png differ
diff --git a/data/images_noti_icons/Wi-Fi/noti_wifi_no_detected.png b/data/images_noti_icons/Wi-Fi/noti_wifi_no_detected.png
new file mode 100644 (file)
index 0000000..274cf15
Binary files /dev/null and b/data/images_noti_icons/Wi-Fi/noti_wifi_no_detected.png differ
diff --git a/data/images_noti_icons/Wi-Fi/noti_wifi_no_sign.png b/data/images_noti_icons/Wi-Fi/noti_wifi_no_sign.png
new file mode 100644 (file)
index 0000000..1aac451
Binary files /dev/null and b/data/images_noti_icons/Wi-Fi/noti_wifi_no_sign.png differ
diff --git a/data/images_noti_icons/Wi-Fi/noti_wifi_translate.png b/data/images_noti_icons/Wi-Fi/noti_wifi_translate.png
new file mode 100644 (file)
index 0000000..9939949
Binary files /dev/null and b/data/images_noti_icons/Wi-Fi/noti_wifi_translate.png differ
diff --git a/data/quickpanel b/data/quickpanel
new file mode 100644 (file)
index 0000000..9af4b47
--- /dev/null
@@ -0,0 +1 @@
+/usr/apps/org.tizen.quickpanel/bin/quickpanel &
index aba2b5a..72888f2 100755 (executable)
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ * Copyright (c) 2009-2015 Samsung Electronics Co., Ltd All Rights Reserved
  *
- * Licensed under the Flora License, Version 1.1 (the "License");
+ * 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 "quickpanel_def.h"
+#include "color_classes.edc"
 
-#define QP_SETTING_H 134
+#define QP_SETTING_H   221
 #define QP_SETTING_SEPERATOR_H 0
+#define QP_SETTING_SEPERATOR_COLOR "AO007"
+#define QP_HANDLER_COLOR "AO010"
+#define QP_HANDLER_PRESS_COLOR "AO010S"
+
+#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;\
+                               }\
+                       }\
 
-images {
-       image: "notification_bg.png" COMP;
-       image: "quick_handle_both.png" COMP;
+#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 {
-       group { name: "quickpanel/gl_base";
+       base_scale: 1.8;
+       group {
+               name: "quickpanel/root";
+
+               script {
+                       public g_is_portrait;
+
+                       public init_variables() {
+                               set_int(g_is_portrait, 1);
+                       }
+               }
+
                parts {
                        part {
-                               name: "background";
+                               name: "base";
                                type: RECT;
                                scale: 1;
                                mouse_events: 1;
                                description {
                                        state: "default" 0.0;
-                                       color: QP_BG_COLOR;
-                                       visible: QP_BG_VISIBILITY;
+                                       visible: 1;
                                }
                        }
-                       part{
-                               name: "background.wallpaper";
-                               type:IMAGE;
-                               scale:1;
+
+
+                       part {
+                               name: "background";
+                               type: IMAGE;
+                               scale: 1;
                                description {
                                        state: "default" 0.0;
+                                       fixed: 1 1;
+                                       align: 0.5 0.5;
                                        rel1 {
-                                               relative: 0.0 0.0;
+                                               to: "base";
                                        }
                                        rel2 {
-                                               relative: 1.0 1.0;
+                                               to: "base";
                                        }
                                        image {
-                                               normal:"notification_bg.png";
+                                               normal: "core_theme_bg_01.png";
                                        }
-                                       align:0 0;
-                                       visible: 1;
                                }
                        }
+
                        part{
-                               name: "qp.base.indicator";
-                               type:RECT;
-                               scale: 1;
+                               name: "qp.base.rect.datetime";
+                               type:SPACER;
+                               scale:1;
                                description {
                                        state: "default" 0.0;
                                        fixed: 0 1;
-                                       min: 0 QP_INDICATOR_H;
+                                       min: 0 QP_DATE_H;
                                        rel1 {
                                                relative: 0.0 0.0;
                                                to: "background";
@@ -74,89 +138,361 @@ collections {
                                                to: "background";
                                        }
                                        align: 0.0 0.0;
-                                       color: 0 0 0 0;
                                }
                        }
                        part{
-                               name: "qp.base.spn.swallow";
-                               type: SWALLOW;
+                               name: "qp.base.datetime.swallow";
+                               type:SWALLOW;
                                scale: 1;
-                               mouse_events: 1;
                                description {
                                        state: "default" 0.0;
-                                       fixed: 1 1;
-                                       min: 0 QP_SPN_H;
+                                       fixed: 0 1;
                                        rel1 {
-                                               to_y, "qp.base.indicator";
-                                               relative: 0.0 1.0;
+                                               to: "qp.base.rect.datetime";
                                        }
                                        rel2 {
-                                               to_y, "qp.base.indicator";
-                                               relative: 1.0 1.0;
+                                               to: "qp.base.rect.datetime";
                                        }
                                        align: 0.0 0.0;
                                }
                        }
-                       part {
-                               name: "qp.gl_base.gl.swallow";
-                               type: SWALLOW;
+                       part{
+                               name: "qp.root.swallow";
+                               type:SWALLOW;
                                scale: 1;
                                description {
                                        state: "default" 0.0;
-                                       fixed: 0 0;
                                        rel1 {
-                                               to_y:"qp.base.spn.swallow";
                                                relative: 0.0 1.0;
+                                               to_x: "background";
+                                               to_y: "qp.base.datetime.swallow";
                                        }
                                        rel2 {
-                                               to_y:"qp.base.handler";
                                                relative: 1.0 0.0;
+                                               to_x: "background";
+                                               to_y: "qp.handler.bg";
                                        }
                                        align: 0.0 0.0;
                                }
                        }
-                       part{
-                               name: "qp.base.handler.bg";
+                       part
+                       {
+                               name: "qp.handler.bg";
                                type:IMAGE;
                                scale:1;
                                description {
                                        state: "default" 0.0;
                                        fixed: 0 1;
-                                       min: 0 QP_HANDLE_TOTAL_H;
+                                       min: 0 QP_HANDLE_H;
                                        rel1 {
                                                relative: 0.0 1.0;
+                                               to: "background";
                                        }
                                        rel2 {
                                                relative: 1.0 1.0;
+                                               to: "background";
                                        }
                                        image {
-                                               normal:"quick_handle_both.png";
-                                               border: 1 1 1 1;
-                                               border_scale: 1;
+                                               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.base.handler";
-                               type:RECT;
+
+                       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 1.0;
-                                       color: 0 0 0 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" "";
@@ -166,11 +502,16 @@ collections {
                }
        }
 
-#include "quickpanel_spn.edc"
+#include "quickpanel_setting.edc"
+#include "quickpanel_page_edit.edc"
+#include "quickpanel_datetime.edc"
 #include "quickpanel_brightness.edc"
-
 #include "quickpanel_minictrl.edc"
 #include "quickpanel_noti_section.edc"
 #include "quickpanel_notibox.edc"
-#include "quickpanel_listbox.edc"
+#include "quickpanel_listitem_noti.edc"
+#include "quickpanel_listitem_noti_legacy.edc"
+#include "quickpanel_listitem_ongoing.edc"
+#include "quickpanel_animated_icon.edc"
+#include "quickpanel_images.edc"
 }
diff --git a/data/quickpanel.png b/data/quickpanel.png
deleted file mode 100644 (file)
index ef74fd1..0000000
Binary files a/data/quickpanel.png and /dev/null differ
diff --git a/data/quickpanel.sh.in b/data/quickpanel.sh.in
new file mode 100644 (file)
index 0000000..cf77090
--- /dev/null
@@ -0,0 +1 @@
+@BINDIR@/@PROJECT_NAME@ &
index cfd0958..f47607b 100755 (executable)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns="http://tizen.org/ns/packages" package="@PKGNAME@" version="0.3.38-1" install-location="internal-only">
-       <label>@PROJECT_NAME@</label>
+<manifest xmlns="http://tizen.org/ns/packages" package="@PKGNAME@" version="0.6.22" install-location="internal-only" api-version="2.3.1">
+       <label>Quickpanel</label>
        <author email="yjoo93.park@samsung.com" href="www.samsung.com">Youngjoo Park</author>
        <author email="seungtaek.chung@samsung.com" href="www.samsung.com">seungtaek chung</author>
        <author email="ys4610.ko@samsung.com" href="www.samsung.com">Youngsub Ko</author>
diff --git a/data/quickpanel_activenoti.edc b/data/quickpanel_activenoti.edc
new file mode 100644 (file)
index 0000000..ff7bf55
--- /dev/null
@@ -0,0 +1,630 @@
+/*
+ * 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 ACTIVENOTI_BG_COLOR "AO003"
+#define ACTIVENOTI_MAIN_TEXT_HEIGHT_INC 1
+
+images
+{
+       image: "handler_btn_02.png" COMP;
+       image: "core_theme_bg_01.png" COMP;
+       image: "core_list_button_bg.#.png" COMP;
+}
+
+#define NOTI_HEIGHT_NO_BUTTON 200
+#define NOTI_HEIGHT_WITH_BUTTON 300
+
+#define WIDTH_MIN 480
+#define WIDTH_MAX 960
+
+collections
+{
+       base_scale: 1.8;
+
+       group {
+               name: "headsup/base";
+
+               styles {
+                       style {
+                               name: "style_title_text";
+                               base: "font=Tizen:style=Bold font_size="42" color=#FFFFFFFF  text_class=tizen wrap=mixed";
+                       }
+               }
+
+               styles {
+                       style {
+                               name: "style_main_text";
+                               base: "font=Tizen:style=Regular font_size="38" color=#FFFFFFFF  text_class=tizen wrap=mixed";
+                       }
+               }
+
+               parts {
+                       part {
+                               name: "background";
+                               type: SWALLOW;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       align: 0.0 0.0;
+                                       min: WIDTH_MIN NOTI_HEIGHT_WITH_BUTTON;
+                                       max: WIDTH_MAX NOTI_HEIGHT_WITH_BUTTON;
+                               }
+                               description {
+                                       state: "btn_hide" 0.0;
+                                       inherit: "default" 0.0;
+                                       min: WIDTH_MIN NOTI_HEIGHT_NO_BUTTON;
+                                       max: WIDTH_MAX NOTI_HEIGHT_NO_BUTTON;
+                               }
+                               description {
+                                       state: "btn_show" 0.0;
+                                       inherit: "default" 0.0;
+                               }
+                       }
+
+                       part {
+                               name: "bg";
+                               type: IMAGE;
+                               description {
+                                       state: "default" 0.0;
+                                       align: 0.0 0.0;
+                                       rel1 {
+                                               to: "background";
+                                       }
+                                       rel2 {
+                                               to: "background";
+                                       }
+                                       image {
+                                               normal: "core_theme_bg_01.png";
+                                       }
+                               }
+                       }
+
+
+                       part {
+                               name: "bg_img";
+                               type: SWALLOW;
+                               description {
+                                       state: "default" 0.0;
+                                       align: 0.0 0.0;
+                                       rel1 {
+                                               to: "bg";
+                                       }
+                                       rel2 {
+                                               to: "bg";
+                                       }
+                               }
+                       }
+
+
+                       part {
+                               name: "rect_main";
+                               type: RECT;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1
+                                       {
+                                               relative: 0.0 0.1;
+                                               to: "bg";
+                                       }
+                                       rel2 {
+                                               relative: 1.0 0.6;
+                                               to: "bg";
+                                       }
+                                       align: 0.0 0.0;
+                                       visible: 0;
+                               }
+                               description {
+                                       state: "btn_hide" 0.0;
+                                       inherit: "default" 0.0;
+                                       rel1 {
+                                               relative: 0.0 0.1;
+                                               to: "bg";
+                                       }
+                                       rel2 {
+                                               relative: 1.0 0.9;
+                                               to: "bg";
+                                       }
+                               }
+                               description {
+                                       state: "btn_show" 0.0;
+                                       inherit: "default" 0.0;
+                               }
+                       }
+
+                       part{
+                               name: "button.space";
+                               type:SPACER;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 {
+                                               relative: 0.0 0.6;
+                                               to: "bg";
+                                       }
+                                       rel2 {
+                                               relative: 1.0 0.9;
+                                               to: "bg";
+                                       }
+                               }
+                               description {
+                                       state: "btn_hide" 0.0;
+                                       inherit: "default" 0.0;
+                                       fixed: 0 1;
+                                       rel1 {
+                                               relative: 0.0 1.0;
+                                               to: "bg";
+                                       }
+                                       rel2 {
+                                               relative: 1.0 1.0;
+                                               to: "bg";
+                                       }
+                               }
+                               description {
+                                       state: "btn_show" 0.0;
+                                       inherit: "default" 0.0;
+                               }
+                       }
+
+                       part{
+                               name: "button.swallow";
+                               type:SWALLOW;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 {
+                                               relative: 0.0 0.0;
+                                               to: "button.space";
+                                       }
+                                       rel2 {
+                                               relative: 1.0 1.0;
+                                               to: "button.space";
+                                       }
+                               }
+                       }
+
+
+                       part {
+                               name: "rect_handle";
+                               type: RECT;
+                               mouse_events: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       align: 0.0 1.0;
+                                       fixed: 0 1;
+                                       min: 0 40;
+                                       rel1 {
+                                               relative: 0.0 0.9;
+                                               to: "bg";
+                                       }
+                                       rel2 {
+                                               relative: 1.0 1.0;
+                                               to: "bg";
+                                       }
+                                       visible: 1;
+                                       color : 0 0 0 0;
+                               }
+                       }
+
+                       part {
+                               name: "handle_img";
+                               type: IMAGE;
+                               mouse_events: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       max: 40 40;
+                                       align: 0.5 0.5;
+                                       rel1 {
+                                               to: "rect_handle";
+                                       }
+                                       rel2 {
+                                               to: "rect_handle";
+                                       }
+                                       image {
+                                               normal: "handler_btn_02.png";
+                                       }
+                               }
+                       }
+
+
+                       // Icon
+                       part {
+                               name: "icon_space";
+                               mouse_events: 1;
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       align: 0.0 0.0;
+                                       rel1 {
+                                               relative: 0.0 0.0;
+                                               to: "rect_main";
+                                       }
+                                       rel2 {
+                                               relative: 0.2 0.5;
+                                               to: "rect_main";
+                                       }
+                                       visible: 0;
+                               }
+                       }
+
+                       part {
+                               name: "icon_big";
+                               type: SWALLOW;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       align: 0.0 0.0;
+                                       rel1 {
+                                               relative: 0.0 0.0;
+                                               to: "icon_space";
+                                       }
+                                       rel2 {
+                                               relative: 1.0 1.0;
+                                               to: "icon_space";
+                                       }
+                               }
+                       }
+
+                       part {
+                               name: "icon_badge";
+                               type: SWALLOW;
+                               description {
+                                       state: "default" 0.0;
+                                       align: 1.0 1.0;
+                                       rel1 {
+                                               relative: 0.5 0.5;
+                                               to: "icon_big";
+                                       }
+                                       rel2 {
+                                               relative: 1.0 1.0;
+                                               to: "icon_big";
+                                       }
+                               }
+                       }
+
+
+                       /*text*/
+                       part {
+                               name: "text_space";
+                               type: RECT;
+                               description {
+                                       state: "default" 0.0;
+                                       align: 0.0 0.5;
+                                       rel1 {
+                                               relative: 0.2 0.0;
+                                               to: "rect_main";
+                                       }
+                                       rel2 {
+                                               relative: 1.0 1.0;
+                                               to: "rect_main";
+                                       }
+                                       visible: 0;
+                               }
+                       }
+
+                       part {
+                               name: "subtitle_text";
+                               type: TEXTBLOCK;
+                               description {
+                                       state: "default" 0.0;
+                                       align: 0.0 0.0;
+                                       fixed: 1 1;
+                                       text {
+                                               style : "style_main_text";
+                                               align: 0.0 0.0;
+                                       }
+                                       rel1 {
+                                               relative: 0.0 0.0;
+                                               to: "text_space";
+                                       }
+                                       rel2 {
+                                               relative: 0.0 0.0;
+                                               to: "text_space";
+                                       }
+                               }
+                               description {
+                                       state: "sub_show" 0.0;
+                                       inherit: "default" 0.0;
+                                       fixed: 0 0;
+                                       rel1 {
+                                               relative: 0.0 0.0;
+                                               to: "text_space";
+                                       }
+                                       rel2 {
+                                               relative: 1.0 0.25;
+                                               to: "text_space";
+                                       }
+                               }
+                               description {
+                                       state: "sub_hide" 0.0;
+                                       inherit: "default" 0.0;
+                               }
+                       }
+
+                       part {
+                               name: "title_text";
+                               type: TEXTBLOCK;
+                               description {
+                                       state: "default" 0.0;
+                                       align: 0.0 0.0;
+                                       text {
+                                               style : "style_title_text";
+                                               align: 0.0 0.0;
+                                       }
+                                       rel1 {
+                                               relative: 0.0 0.0;
+                                               to: "text_space";
+                                       }
+                                       rel2 {
+                                               relative: 1.0 0.3;
+                                               to: "text_space";
+                                       }
+                               }
+                               description {
+                                       state: "sub_show" 0.0;
+                                       inherit: "default" 0.0;
+                                       rel1 {
+                                               relative: 0.0 0.25;
+                                               to: "text_space";
+                                       }
+                                       rel2 {
+                                               relative: 1.0 0.55;
+                                               to: "text_space";
+                                       }
+
+                               }
+                               description {
+                                       state: "sub_hide" 0.0;
+                                       inherit: "default" 0.0;
+                               }
+                       }
+
+                       part {
+                               name: "content_text";
+                               type: TEXTBLOCK;
+                               multiline: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       align: 0.0 0.0;
+                                       text {
+                                               style: "style_main_text";
+                                               align: 0.0 0.5;
+                                       }
+                                       rel1 {
+                                               relative: 0.0 0.35;
+                                               to: "text_space";
+                                       }
+                                       rel2 {
+                                               relative: 1.0 1.0;
+                                               to: "text_space";
+                                       }
+                               }
+                               description {
+                                       state: "sub_show" 0.0;
+                                       inherit: "default" 0.0;
+                                       rel1 {
+                                               relative: 0.0 0.55;
+                                               to: "text_space";
+                                       }
+                                       rel2 {
+                                               relative: 1.0 1.0;
+                                               to: "text_space";
+                                       }
+                               }
+                               description {
+                                       state: "sub_hide" 0.0;
+                                       inherit: "default" 0.0;
+                               }
+                       }
+
+                       part {
+                               name: "touch";
+                               mouse_events: 1;
+                               type: RECT;
+                               description {
+                                       state: "default" 0.0;
+                                       align: 0.0 0.0;
+                                       rel1 {
+                                               relative: 0.0 0.0;
+                                               to: "text_space";
+                                       }
+                                       rel2 {
+                                               relative: 1.0 1.0;
+                                               to: "text_space";
+                                       }
+                                       color : 0 0 0 0;
+                               }
+                       }
+               }
+
+
+               programs {
+                       program {
+                               name: "pressed_noti";
+                               signal: "mouse,clicked,1";
+                               source: "touch";
+                               action: SIGNAL_EMIT "noti_press" "";
+                       }
+
+                       program {
+                               name: "pressed_image";
+                               signal: "mouse,clicked,1";
+                               source: "icon_big";
+                               action: SIGNAL_EMIT "image_press" "";
+                       }
+
+                       program {
+                               name: "pressed_handle";
+                               signal: "mouse,clicked,1";
+                               source: "rect_handle";
+                               source: "handle_img";
+                               action: SIGNAL_EMIT "del" "";
+                       }
+
+                       program {
+                               name: "subtext_show";
+                               signal: "sub_show";
+                               source: "subtitle_text";
+                               action: STATE_SET "sub_show" 0.0;
+                               target: "subtitle_text";
+                               target: "title_text";
+                               target: "content_text";
+                       }
+
+                       program {
+                               name: "subtext_hide";
+                               signal: "sub_hide";
+                               source: "subtitle_text";
+                               action: STATE_SET "sub_hide" 0.0;
+                               target: "subtitle_text";
+                               target: "title_text";
+                               target: "content_text";
+                       }
+
+                       program {
+                               name: "btn_hide";
+                               signal: "btn_hide";
+                               source: "button.space";
+                               action: STATE_SET "btn_hide" 0.0;
+                               target: "button.space";
+                               target: "rect_main";
+                               target: "background";
+                       }
+
+                       program {
+                               name: "btn_show";
+                               signal: "btn_show";
+                               source: "button.space";
+                               action: STATE_SET "btn_show" 0.0;
+                               target: "button.space";
+                               target: "rect_main";
+                               target: "background";
+                       }
+               }
+       }
+
+
+       group {
+               name: "button_layout";
+
+               parts {
+                       part {
+                               name: "rect.button";
+                               type: RECT;
+                               description {
+                                       state: "default" 0.0;
+                                       color_class: "ATO006P";
+                                       align: 0.0 0.0;
+                                       visible: 0;
+                               }
+                       }
+
+                       part {
+                               name: "button.bg.img";
+                               type:IMAGE;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 {
+                                               relative: 0.1 0.1;
+                                               to: "rect.button";
+                                       }
+                                       rel2 {
+                                               relative: 0.9 0.9;
+                                               to: "rect.button";
+                                       }
+                                       color_class: "AO001L1";
+                                       image {
+                                               normal: "core_list_button_bg.#.png";
+                                       }
+                                       align: 0.5 0.5;
+                               }
+                               description {
+                                       state: "pressed" 0.0;
+                                       inherit: "default" 0.0;
+                                       color_class: "AO001L1P";
+                               }
+                       }
+
+                       part {
+                               name: "content.button.image";
+                               type: SWALLOW;
+                               description {
+                                       state: "default" 0.0;
+                                       align: 0.5 0.5;
+                                       rel1 {
+                                               to: "button.bg.img";
+                                       }
+                                       rel2 {
+                                               to: "button.bg.img";
+                                       }
+                               }
+                       }
+
+                       part {
+                               name: "content.button.text";
+                               type: TEXT;
+                               description {
+                                       state: "default" 0.0;
+                                       align: 0.5 0.5;
+                                       rel1 {
+                                               to: "button.bg.img";
+                                       }
+                                       rel2 {
+                                               to: "button.bg.img";
+                                       }
+                                       text {
+                                               font: "Tizen:style=Regular";
+                                               size: 30;
+                                               text_class: "tizen";
+                                               align: 0.5 0.5;
+                                       }
+                               }
+                       }
+
+                       part {
+                               name: "touch";
+                               mouse_events: 1;
+                               type: RECT;
+                               description {
+                                       state: "default" 0.0;
+                                       align: 0.0 0.0;
+                                       rel1 {
+                                               relative: 0.0 0.0;
+                                               to: "rect.button";
+                                       }
+                                       rel2 {
+                                               relative: 1.0 1.0;
+                                               to: "rect.button";
+                                       }
+                                       color : 0 0 0 0;
+                               }
+                       }
+
+                       programs {
+                               program {
+                                       name: "pressed_button";
+                                       signal: "mouse,clicked,1";
+                                       source: "touch";
+                                       action: SIGNAL_EMIT "button_clicked" "";
+                               }
+
+                       }
+
+               }
+       }
+}
diff --git a/data/quickpanel_animated_icon.edc b/data/quickpanel_animated_icon.edc
new file mode 100644 (file)
index 0000000..1abefd7
--- /dev/null
@@ -0,0 +1,515 @@
+/*
+ * 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;
+}
+
+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";
+               }
+       }
+}
\ No newline at end of file
index 420f03b..f65b58b 100755 (executable)
@@ -1,14 +1,93 @@
+/*
+ * 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 DEBUG
 //#define DEBUG_TEXT
 
+#define BRIGHTNESS_ICON_COLOR "AO004"
+#define BRIGHTNESS_TEXT_COLOR "AO014"
+
        styles {
                style {
                        name: "checkbox_text";
-                       base: "font=Tizen:style=Regular text_class=tizen font_size=26 color=#FFFFFFFF ellipsis=0.0 wrap=mixed";
+                       base: "font=Tizen:style=Regular text_class=tizen font_size=24 color=#FFFFFF color_class="BRIGHTNESS_TEXT_COLOR" ellipsis=0.0 wrap=mixed";
                }
        }
 
-       group { name: "quickpanel/brightness_controller/default";
+       group {
+               name: "quickpanel/brightness_controller/wrapper";
+               parts {
+                       part { name: "base";
+                               type: SPACER;
+                               repeat_events: 1;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 QP_THEME_LIST_ITEM_BRIGHTNESS_HEIGHT;
+                                       max: 9999 QP_THEME_LIST_ITEM_BRIGHTNESS_HEIGHT;
+                                       fixed: 1 1;
+                                       rel1 {
+                                               relative: 0.0 0.0;
+                                       }
+                                       rel2 {
+                                               relative: 1.0 0.0;
+                                       }
+                                       align: 0.0 0.0;
+                               }
+                       }
+                       part { name: "elm.swallow.controller";
+                               type: SWALLOW;
+                               mouse_events: 1;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       fixed: 1 1;
+                                       rel1 {
+                                               to: "base";
+                                       }
+                                       rel2 {
+                                               to: "base";
+                                       }
+                               }
+                       }
+               }
+       }
+
+       group {
+               name: "quickpanel/brightness_controller/default";
+
+               images {
+                       image: "quick_icon_brightness.png" COMP;
+                       image: "quick_icon_brightness_00.png" COMP;
+                       image: "quick_icon_brightness_01.png" COMP;
+                       image: "quick_icon_brightness_02.png" COMP;
+                       image: "quick_icon_brightness_03.png" COMP;
+                       image: "quick_icon_brightness_04.png" COMP;
+                       image: "quick_icon_brightness_05.png" COMP;
+                       image: "quick_icon_brightness_06.png" COMP;
+                       image: "quick_icon_brightness_07.png" COMP;
+                       image: "quick_icon_brightness_08.png" COMP;
+                       image: "quick_icon_brightness_09.png" COMP;
+                       image: "quick_icon_brightness_10.png" COMP;
+                       image: "quick_icon_brightness_11.png" COMP;
+                       image: "core_theme_bg_01.png" COMP;
+               }
 
                script {
                        public ctnt_shown;
                                        state: "default" 0.0;
                                        min: 0 QP_THEME_LIST_ITEM_BRIGHTNESS_HEIGHT;
                                        max: 9999 QP_THEME_LIST_ITEM_BRIGHTNESS_HEIGHT;
+                                       fixed: 1 1;
                                        rel1 {
                                                relative: 0.0 0.0;
                                        }
                                                relative: 1.0 0.0;
                                        }
                                        align: 0.0 0.0;
-                                       color: QP_THEME_BG_COLOR;
+                                       color_class: QP_BACKGROUND_COLOR;
                                        visible: QP_THEME_BG_VISIBILITY;
                                }
                        }
-                       part { name: "bg_image";
-                               mouse_events: 0;
+
+                       part {
+                               name: "background";
+                               type: IMAGE;
+                               scale: 1;
                                description {
                                        state: "default" 0.0;
-                                       rel1.to:"base";
-                                       rel2.to:"base";
-                                       color: QP_THEME_NOTI_BG_COLOR;
+                                       fixed: 1 1;
+                                       align: 0.5 0.5;
+                                       rel1 {
+                                               to: "base";
+                                       }
+                                       rel2 {
+                                               to: "base";
+                                       }
+                                       image {
+                                               normal: "core_theme_bg_01.png";
+                                       }
+                                       visible: 0;
                                }
                                description {
-                                       state: "selected" 0.0;
+                                       state: "show.bg" 0.0;
                                        inherit: "default" 0.0;
-                                       color: QP_THEME_NOTI_BG_COLOR;
+                                       visible: 1;
                                }
-                       }
-                       part { name: "elm.padding.top";
-                               type: RECT;
-                               scale: 1;
                                description {
-                                       state: "default" 0.0;
-                                       min: 0 37;
-                                       fixed: 0 1;
-                                       visible: 0;
-                                       rel1.to:"base";
-                                       rel2.to:"base";
-                                       rel2.relative: 1.0 0.0;
-                                       align: 0.0 0.0;
+                                       state: "hide.bg" 0.0;
+                                       inherit: "default" 0.0;
                                        visible: 0;
                                }
                        }
-                       part { name: "elm.padding.left.bg";
+
+                       part { name: "disabler";
                                type: RECT;
-                               scale: 1;
+                               mouse_events: 0;
                                description {
                                        state: "default" 0.0;
-                                       min: 14 0;
-                                       fixed: 1 0;
-                                       rel1.to:"base";
-                                       rel2.to:"base";
-                                       rel2.relative: 0.0 0.0;
-                                       rel2.relative: 0.0 1.0;
-                                       align: 0.0 0.0;
-                                       color: QP_THEME_BG_COLOR;
-                                       visible: QP_THEME_BG_VISIBILITY;
+                                       rel1 {
+                                               to: "base";
+                                       }
+                                       rel2 {
+                                               to: "base";
+                                       }
+                                       color_class: AO004;
+                               }
+                               description {
+                                       state: "disabled" 0.0;
+                                       inherit: "default" 0.0;
+                                       color_class: AO004D;
                                }
                        }
-                       part { name: "elm.padding.right.bg";
+                       part { name: "bg_image";
                                type: RECT;
-                               scale: 1;
+                               mouse_events: 0;
                                description {
                                        state: "default" 0.0;
-                                       min: 14 0;
-                                       fixed: 1 0;
                                        rel1.to:"base";
                                        rel2.to:"base";
-                                       rel1.relative: 1.0 0.0;
-                                       rel2.relative: 1.0 1.0;
-                                       align: 1.0 0.0;
-                                       color: QP_THEME_BG_COLOR;
+                                       color_class: QP_THEME_BRIGHTNESS_BG_COLOR;
                                        visible: QP_THEME_BG_VISIBILITY;
                                }
+                               description {
+                                       state: "selected" 0.0;
+                                       inherit: "default" 0.0;
+                                       color_class: QP_THEME_BRIGHTNESS_BG_COLOR;
+                               }
                        }
                        part { name: "elm.content.bg";
                                type: RECT;
                                scale: 1;
                                description {
                                        state: "default" 0.0;
-                                       min: 14 0;
+                                       min: 9 0;
                                        fixed: 1 0;
                                        rel1 {
-                                               to_x:"elm.padding.left.bg";
+                                               to_x:"base";
                                                to_y:"base";
                                                relative: 1.0 0.0;
                                        }
                                        rel2 {
-                                               to_x:"elm.padding.right.bg";
+                                               to_x:"base";
                                                to_y:"base";
                                                relative: 0.0 1.0;
                                        }
                                        align: 0.0 0.0;
-                                       visible: 1;
-                                       color: QP_THEME_NOTI_BG_COLOR;
+                                       visible: 0;
+                                       //color_class: QP_BACKGROUND_COLOR;
                                }
                        }
+                       QUICKPANEL_FOCUS_OBJECT("focus", "elm.content.bg", "elm.content.bg")
                        part { name: "elm.padding.left";
                                type: RECT;
                                scale: 1;
                                description {
                                        state: "default" 0.0;
-                                       min: 28 0;
+                                       min: 15 0;
+                                       max: 15 0;
                                        fixed: 1 0;
                                        rel1.to:"base";
                                        rel2.to:"base";
                                        visible: 0;
                                }
                        }
-                       part { name: "elm.padding.right";
-                               type: RECT;
-                               scale: 1;
-                               description {
-                                       state: "default" 0.0;
-                                       min: 28 0;
-                                       fixed: 1 0;
-                                       rel1.to:"base";
-                                       rel2.to:"base";
-                                       rel1.relative: 1.0 0.0;
-                                       rel2.relative: 1.0 1.0;
-                                       align: 1.0 0.0;
-                                       visible: 0;
-                               }
-                       }
-                       part { name: "elm.padding.bottom.check.text";
-                               type: RECT;
-                               scale: 1;
-                               description { state: "default" 0.0;
-                                       min: 0 39;
-                                       fixed: 0 1;
-                                       rel1.to:"base";
-                                       rel2.to:"base";
-                                       rel1.relative: 0.0 1.0;
-                                       rel2.relative: 1.0 1.0;
-                                       align: 0.0 1.0;
-                                       visible: 0;
-                               }
-                       }
-                       part { name: "elm.padding.bottom";
-                               type: RECT;
-                               scale: 1;
-                               description { state: "default" 0.0;
-                                       min: 0 39;
-                                       fixed: 0 1;
-                                       rel1.to:"base";
-                                       rel2.to:"base";
-                                       rel1.relative: 0.0 1.0;
-                                       rel2.relative: 1.0 1.0;
-                                       align: 0.0 1.0;
-                                       color: QP_THEME_BG_COLOR;
-                                       visible: QP_THEME_BG_VISIBILITY;
-                               }
-                       }
                        part { name: "elm.rect.thumbnail";
                                type: RECT;
                                mouse_events: 0;
                                scale: 1;
-                               description { state: "default" 0.0;
-                                       min: 52 52;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 42 42;
+                                       max: 42 42;
                                        fixed: 1 1;
                                        rel1 {
                                                to_x:"elm.padding.left";
-                                               to_y:"elm.padding.top";
-                                               relative: 1.0 1.0;
+                                               to_y:"base";
+                                               relative: 1.0 0.0;
                                        }
                                        rel2 {
                                                to_x:"elm.padding.left";
-                                               to_y:"elm.padding.top";
+                                               to_y:"base";
                                                relative: 1.0 1.0;
                                        }
-                                       align: 0.0 0.0;
+                                       align: 0.0 0.5;
                                        visible:0;
                                }
                        }
-                       part { name: "elm.swallow.thumbnail";
-                               type: SWALLOW;
-                               mouse_events: 0;
-                               scale: 1;
-                               description { state: "default" 0.0;
+                       part { name: "elm.image.thumbnail";
+                               type:IMAGE;
+                               clip_to: "disabler";
+                               scale:1;
+                               description {
+                                       state: "default" 0.0;
+                                       fixed: 0 0;
                                        rel1 {
                                                to: "elm.rect.thumbnail";
                                        }
                                        rel2 {
                                                to: "elm.rect.thumbnail";
                                        }
+                                       image {
+                                               normal:"quick_icon_brightness_00.png";
+                                       }
+                               }
+                               description {
+                                       state: "state.0" 0.0;
+                                       inherit: "default" 0.0;
+                                       image {
+                                               normal:"quick_icon_brightness_00.png";
+                                       }
+                               }
+                               description {
+                                       state: "state.1" 0.0;
+                                       inherit: "default" 0.0;
+                                       image {
+                                               normal:"quick_icon_brightness_01.png";
+                                       }
+                               }
+                               description {
+                                       state: "state.2" 0.0;
+                                       inherit: "default" 0.0;
+                                       image {
+                                               normal:"quick_icon_brightness_02.png";
+                                       }
+                               }
+                               description {
+                                       state: "state.3" 0.0;
+                                       inherit: "default" 0.0;
+                                       image {
+                                               normal:"quick_icon_brightness_03.png";
+                                       }
+                               }
+                               description {
+                                       state: "state.4" 0.0;
+                                       inherit: "default" 0.0;
+                                       image {
+                                               normal:"quick_icon_brightness_04.png";
+                                       }
+                               }
+                               description {
+                                       state: "state.5" 0.0;
+                                       inherit: "default" 0.0;
+                                       image {
+                                               normal:"quick_icon_brightness_05.png";
+                                       }
+                               }
+                               description {
+                                       state: "state.6" 0.0;
+                                       inherit: "default" 0.0;
+                                       image {
+                                               normal:"quick_icon_brightness_06.png";
+                                       }
+                               }
+                               description {
+                                       state: "state.7" 0.0;
+                                       inherit: "default" 0.0;
+                                       image {
+                                               normal:"quick_icon_brightness_07.png";
+                                       }
+                               }
+                               description {
+                                       state: "state.8" 0.0;
+                                       inherit: "default" 0.0;
+                                       image {
+                                               normal:"quick_icon_brightness_08.png";
+                                       }
+                               }
+                               description {
+                                       state: "state.9" 0.0;
+                                       inherit: "default" 0.0;
+                                       image {
+                                               normal:"quick_icon_brightness_09.png";
+                                       }
+                               }
+                               description {
+                                       state: "state.10" 0.0;
+                                       inherit: "default" 0.0;
+                                       image {
+                                               normal:"quick_icon_brightness_10.png";
+                                       }
+                               }
+                               description {
+                                       state: "state.11" 0.0;
+                                       inherit: "default" 0.0;
+                                       image {
+                                               normal:"quick_icon_brightness_11.png";
+                                       }
+                               }
+                               description {
+                                       state: "state.auto" 0.0;
+                                       inherit: "default" 0.0;
+                                       image {
+                                               normal:"quick_icon_brightness.png";
+                                       }
                                }
                        }
                        part { name: "elm.padding.thumbnail.x";
                                type: RECT;
                                mouse_events: 0;
                                scale: 1;
-                               description { state: "default" 0.0;
-                                       min: 6 0;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 0;
                                        fixed: 1 0;
                                        rel1 {
                                                to:"elm.rect.thumbnail";
                                        visible: 0;
                                }
                        }
-                       part { name: "elm.rect.slider";
-                               type: RECT;
-                               mouse_events: 0;
-                               scale: 1;
-                               description { state: "default" 0.0;
-                                       min: 0 20;
-                                       fixed: 0 1;
-                                       rel1 {
-                                               relative: 1.0 0.0;
-                                               to_x: "elm.padding.thumbnail.x";
-                                               to_y: "elm.rect.thumbnail";
-                                       }
-                                       rel2 {
-                                               relative: 0.0 1.0;
-                                               to_x: "elm.slider.padding.x";
-                                               to_y: "elm.rect.thumbnail";
-                                       }
-                                       align: 0.0 0.5;
-                                       visible:0;
-                               }
-                       }
                        part { name: "elm.swallow.slider";
                                type: SWALLOW;
+                               //clip_to: "disabler";
                                mouse_events: 1;
                                scale: 1;
                                description {
                                        state: "default" 0.0;
                                        fixed: 1 1;
                                        rel1 {
-                                               to: "elm.rect.slider";
+                                               relative: 1.0 0.0;
+                                               to: "elm.padding.thumbnail.x";
                                        }
                                        rel2 {
-                                               to: "elm.rect.slider";
+                                               relative: 0.0 1.0;
+                                               to: "elm.padding.bf.check";
                                        }
                                }
                        }
-                       part { name: "elm.slider.padding.x";
+                       part { name: "elm.rect.slider";
                                type: RECT;
+                               mouse_events: 1;
                                scale: 1;
-                               description { state: "default" 0.0;
-                                       min: 22 0;
-                                       fixed: 1 0;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 48;
+                                       fixed: 0 1;
                                        rel1 {
-                                               relative: 0.0 0.0;
-                                               to: "elm.check.rect";
+                                               relative: 1.0 0.0;
+                                               to_x: "elm.padding.thumbnail.x";
+                                               to_y: "base";
                                        }
                                        rel2 {
                                                relative: 0.0 1.0;
-                                               to: "elm.check.rect";
+                                               to_x: "elm.padding.bf.check";
+                                               to_y: "base";
                                        }
-                                       align: 1.0 0.0;
+                                       align: 0.0 0.5;
+                                       color: 0 0 0 0;
                                        visible: 0;
                                }
+                               description {
+                                       state: "disabled" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                               }
                        }
-                       part { name: "elm.check.rect";
-                               type: RECT;
+                       part { name: "elm.padding.bf.check";
+                               type: SPACER;
                                scale: 1;
-                               description { state: "default" 0.0;
-                                       min: 48 48;
-                                       fixed: 1 1;
+                               description {
+                                       state: "default" 0.0;
                                        rel1 {
                                                relative: 0.0 0.0;
-                                               to_x: "elm.check.text.padding.x";
-                                               to_y: "elm.padding.bottom.check.text";
+                                               to: "elm.check.swallow";
                                        }
                                        rel2 {
-                                               relative: 0.0 0.0;
-                                               to_x: "elm.check.text.padding.x";
-                                               to_y: "elm.padding.bottom.check.text";
+                                               relative: 0.0 1.0;
+                                               to: "elm.check.swallow";
                                        }
-                                       align: 1.0 1.0;
-                                       visible: 0;
+                                       align: 1.0 0.5;
                                }
                        }
+
                        part { name: "elm.check.swallow";
                                type: SWALLOW;
-                               mouse_events: 1;
                                scale: 1;
-                               description { state: "default" 0.0;
-                                       fixed: 1 1;
+                               description {
+                                       state: "default" 0.0;
                                        rel1 {
-                                               to: "elm.check.rect";
+                                               relative: 0.0 0.0;
+                                               to: "elm.padding.bf.auto";
                                        }
                                        rel2 {
-                                               to: "elm.check.rect";
+                                               relative: 0.0 1.0;
+                                               to: "elm.padding.bf.auto";
                                        }
+                                       align: 1.0 0.5;
+                                       min: 0 40;
+                                       fixed: 1 1;
                                }
                        }
-                       part { name: "elm.check.text.padding.x";
-                               type: RECT;
+
+                       part { name: "elm.padding.bf.auto";
+                               type: SPACER;
                                scale: 1;
-                               description { state: "default" 0.0;
-                                       min: 8 0;
-                                       fixed: 1 0;
+                               description {
+                                       state: "default" 0.0;
                                        rel1 {
                                                relative: 0.0 0.0;
-                                               to_x: "elm.check.text.rect";
+                                               to: "elm.rect.auto";
                                        }
                                        rel2 {
                                                relative: 0.0 1.0;
-                                               to_x: "elm.check.text.rect";
+                                               to: "elm.rect.auto";
                                        }
-                                       align: 1.0 0.0;
-                                       visible:0;
+                                       align: 1.0 0.5;
+                                       min: 0 0;
+                                       fixed: 1 0;
                                }
                        }
-                       part { name: "elm.check.text.rect";
-                               type: RECT;
+                       part { name: "elm.rect.auto";
+                               type: SPACER;
                                scale: 1;
-                               description { state: "default" 0.0;
-                                       fixed: 1 1;
-                                       min: 90 96;
-                                       max: 90 96;
+                               description {
+                                       state: "default" 0.0;
                                        rel1 {
-                                               relative: 0.0 0.5;
-                                               to_x:"elm.padding.right.bg";
-                                               to_y:"elm.check.rect";
+                                               relative : 0.0 0.0;
+                                               to : "elm.check.text";
                                        }
                                        rel2 {
-                                               relative: 0.0 0.5;
-                                               to_x:"elm.padding.right.bg";
-                                               to_y:"elm.check.rect";
+                                               relative : 1.0 1.0;
+                                               to : "elm.check.text";
                                        }
-                                       align: 1.0 0.5;
-                                       visible:0;
                                }
                        }
                        part { name: "elm.check.text";
-                               type: TEXTBLOCK;
-                               multiline: 1;
-                               mouse_events: 0;
+                               type: TEXT;
                                scale: 1;
-                               description { state: "default" 0.0;
+                               description {
+                                       state: "default" 0.0;
+                                       align : 1.0 0.5;
+                                       fixed : 1 1;
                                        rel1 {
-                                               to: "elm.check.text.rect";
+                                               relative : 0.0 0.5;
+                                               to : "elm.padding.right";
                                        }
                                        rel2 {
-                                               to: "elm.check.text.rect";
+                                               relative : 0.0 0.5;
+                                               to : "elm.padding.right";
                                        }
                                        text {
-                                               style: "checkbox_text";
-                                               align: 0.0 0.5;
+                                               font : "Tizen:style=Regular";
+                                               size : 22;
+                                               text_class : "Tizen";
+                                               align : 1.0 0.5;
+                                               min : 1 1;
                                        }
+                                       color_class: ATO019;
                                }
                        }
-                       part {
-                               name: "accessibility.check.label";
-                               type: RECT;
-                               mouse_events: 1;
-                               repeat_events: 1;
+                       
+                       part { name: "elm.padding.right";
+                               type: SPACER;
                                scale: 1;
                                description {
                                        state: "default" 0.0;
                                        rel1 {
-                                               to: "elm.check.text.rect";
+                                               relative: 1.0 0.0;
+                                               to: "base";
                                        }
                                        rel2 {
-                                               to: "elm.check.text.rect";
+                                               relative: 1.0 1.0;
+                                               to: "base";
                                        }
-                                       color: QP_ACCESSIBILITY_TEST_COLOR;
-                                       visible: 1;
+                                       align: 1.0 0.5;
+                                       min: 15 0;
+                                       fixed: 1 0;
                                }
                        }
                }
                                source: "elm";
                                script {
                                        set_state(PART:"bg_image", "selected", 0.0);
-                                       set_state(PART:"elm.check.text", "selected", 0.0);
                                        if (get_int(ctnt_shown) == 1)
                                        set_state(PART:"elm.swallow.slider", "selected", 0.0);
                                }
                                source: "elm";
                                script {
                                        set_state(PART:"bg_image", "default", 0.0);
-                                       set_state(PART:"elm.check.text", "default", 0.0);
                                        if (get_int(ctnt_shown) == 1)
                                        set_state(PART:"elm.swallow.slider", "show", 0.0);
                                }
                        }
+                       program{
+                               name: "show.bg";
+                               signal: "show.bg";
+                               source: "prog.bg";
+                               action: STATE_SET "show.bg" 0.0;
+                               target: "background";
+                       }
+                       program{
+                               name: "hide.bg";
+                               signal: "hide.bg";
+                               source: "prog.bg";
+                               action: STATE_SET "hide.bg" 0.0;
+                               target: "background";
+                       }
+                       program{
+                               name: "icon.state.0";
+                               signal: "icon.state.0";
+                               source: "prog";
+                               action: STATE_SET "state.0" 0.0;
+                               target: "elm.image.thumbnail";
+                       }
+                       program{
+                               name: "icon.state.1";
+                               signal: "icon.state.1";
+                               source: "prog";
+                               action: STATE_SET "state.1" 0.0;
+                               target: "elm.image.thumbnail";
+                       }
+                       program{
+                               name: "icon.state.2";
+                               signal: "icon.state.2";
+                               source: "prog";
+                               action: STATE_SET "state.2" 0.0;
+                               target: "elm.image.thumbnail";
+                       }
+                       program{
+                               name: "icon.state.3";
+                               signal: "icon.state.3";
+                               source: "prog";
+                               action: STATE_SET "state.3" 0.0;
+                               target: "elm.image.thumbnail";
+                       }
+                       program{
+                               name: "icon.state.4";
+                               signal: "icon.state.4";
+                               source: "prog";
+                               action: STATE_SET "state.4" 0.0;
+                               target: "elm.image.thumbnail";
+                       }
+                       program{
+                               name: "icon.state.5";
+                               signal: "icon.state.5";
+                               source: "prog";
+                               action: STATE_SET "state.5" 0.0;
+                               target: "elm.image.thumbnail";
+                       }
+                       program{
+                               name: "icon.state.6";
+                               signal: "icon.state.6";
+                               source: "prog";
+                               action: STATE_SET "state.6" 0.0;
+                               target: "elm.image.thumbnail";
+                       }
+                       program{
+                               name: "icon.state.7";
+                               signal: "icon.state.7";
+                               source: "prog";
+                               action: STATE_SET "state.7" 0.0;
+                               target: "elm.image.thumbnail";
+                       }
+                       program{
+                               name: "icon.state.8";
+                               signal: "icon.state.8";
+                               source: "prog";
+                               action: STATE_SET "state.8" 0.0;
+                               target: "elm.image.thumbnail";
+                       }
+                       program{
+                               name: "icon.state.9";
+                               signal: "icon.state.9";
+                               source: "prog";
+                               action: STATE_SET "state.9" 0.0;
+                               target: "elm.image.thumbnail";
+                       }
+                       program{
+                               name: "icon.state.10";
+                               signal: "icon.state.10";
+                               source: "prog";
+                               action: STATE_SET "state.10" 0.0;
+                               target: "elm.image.thumbnail";
+                       }
+                       program{
+                               name: "icon.state.11";
+                               signal: "icon.state.11";
+                               source: "prog";
+                               action: STATE_SET "state.11" 0.0;
+                               target: "elm.image.thumbnail";
+                       }
+                       program{
+                               name: "icon.state.auto";
+                               signal: "icon.state.auto";
+                               source: "prog";
+                               action: STATE_SET "state.auto" 0.0;
+                               target: "elm.image.thumbnail";
+                       }
+                       program{
+                               signal: "disable";
+                               source: "disabler";
+                               action: STATE_SET "default" 0.0;
+                               target: "disabler";
+                               target: "elm.rect.slider";
+                       }
+                       program{
+                               signal: "enable";
+                               source: "disabler";
+                               action: STATE_SET "disabled" 0.0;
+                               target: "disabler";
+                               target: "elm.rect.slider";
+                       }
                }
-       }
\ No newline at end of file
+       }
diff --git a/data/quickpanel_datetime.edc b/data/quickpanel_datetime.edc
new file mode 100644 (file)
index 0000000..f4e6086
--- /dev/null
@@ -0,0 +1,391 @@
+/*
+ * 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.
+ *
+ */
+
+
+
+images {
+       image: "icon_indicator_setting.png" COMP;
+       image: "line_indicator_divider.png" COMP;
+       image: "bg_press.#.png" COMP;
+}
+
+styles {
+       style {
+               name: "font_time_am_pm_style";
+               base: "font=Tizen:style=Regular  font_size=26 valign=middle  ellipsis=1.0 wrap=none";
+               tag: "time" "+ color=#FFFFFF ";
+               tag: "ampm" "+ color=#FFFFFF ";
+       }
+
+       style {
+               name: "font_date_style";
+               base: "font=Tizen:style=Regular  font_size=22 color=#FFFFFF valign=middle color_class=ATO009  ellipsis=1.0 wrap=none";
+       }
+}
+
+group {
+       name: "quickpanel/datetime";
+
+       script {
+               public g_is_timedate_clickable;
+       }
+
+       parts {
+               part { name: "base";
+                       type: RECT;
+                       repeat_events: 1;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               color_class: QP_BACKGROUND_COLOR;
+                               visible: 0;
+                       }
+               }
+               QUICKPANEL_FOCUS_OBJECT("focus", "base", "base")
+
+               part { name: "space.button.setting";
+                       type: SPACER;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 60 0;
+                               fixed: 1 0;
+                               align: 1.0 0.5;
+                               rel1 {
+                                       relative : 1.0 0.0;
+                                       to: "base";
+                               }
+                               rel2 {
+                                       relative : 1.0 1.0;
+                                       to: "base";
+                               }
+                       }
+               }
+               QUICKPANEL_FOCUS_OBJECT("focus.setting", "space.button.setting", "space.button.setting")
+
+               part { name: "space.divider";
+                       type: SPACER;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 1 0;
+                               fixed: 1 0;
+                               align: 1.0 0.5;
+                               rel1 {
+                                       relative : 0.0 0.0;
+                                       to: "space.button.setting";
+                               }
+                               rel2 {
+                                       relative : 0.0 1.0;
+                                       to: "space.button.setting";
+                               }
+                       }
+               }
+
+               part {
+                       name: "space.datetime";
+                       type: SPACER;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               rel1 {
+                                       relative : 0.0 0.0;
+                                       to: "base";
+                               }
+                               rel2 {
+                                       relative : 0.0 1.0;
+                                       to: "space.divider";
+                               }
+                       }
+               }
+               QUICKPANEL_FOCUS_OBJECT("focus.datetime", "space.datetime", "space.datetime")
+
+               part { name: "image.button.setting.bg";
+                       type: IMAGE;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 36;
+                               fixed: 0 1;
+                               align: 0.0 0.5;
+                               rel1 {
+                                       relative: 0.0 0.5;
+                                       to: "space.button.setting";
+                               }
+                               rel2 {
+                                       relative: 1.0 0.5;
+                                       to: "space.button.setting";
+                               }
+                               image {
+                                       normal: "bg_press.#.png";
+                               }
+                               color_class: "F043P";
+                               visible: 0;
+                       }
+                       description {
+                               state: "pressed" 0.0;
+                               inherit: "default";
+                               visible: 1;
+                       }
+               }
+
+               part { name: "image.datetime.bg";
+                       type: IMAGE;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 36;
+                               fixed: 0 1;
+                               align: 0.0 0.5;
+                               rel1 {
+                                       relative : 0.0 0.5;
+                                       to: "space.datetime";
+                               }
+                               rel2 {
+                                       relative : 1.0 0.5;
+                                       to: "space.datetime";
+                               }
+                               image {
+                                       normal: "bg_press.#.png";
+                               }
+                               color_class: "F043P";
+                               visible: 0;
+                       }
+                       description {
+                               state: "pressed" 0.0;
+                               inherit: "default";
+                               visible: 1;
+                       }
+               }
+
+               part { name: "image.button.setting";
+                       type: IMAGE;
+                       mouse_events: 0;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 30 30;
+                               fixed: 1 1;
+                               align: 0.5 0.5;
+                               rel1 {
+                                       relative: 0.5 0.5;
+                                       to: "space.button.setting";
+                               }
+                               rel2 {
+                                       relative: 0.5 0.5;
+                                       to: "space.button.setting";
+                               }
+                               image {
+                                       normal:"icon_indicator_setting.png";
+                               }
+                               color_class: "AO025";
+                       }
+               }
+
+               part { name: "image.divider";
+                       type: IMAGE;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 1 24;
+                               fixed: 1 1;
+                               align: 0.5 0.5;
+                               rel1 {
+                                       relative: 0.0 0.5;
+                                       to: "space.divider";
+                               }
+                               rel2 {
+                                       relative: 1.0 0.5;
+                                       to: "space.divider";
+                               }
+                               image {
+                                       normal: "line_indicator_divider.png";
+                               }
+                               color_class: "AO027";
+                       }
+               }
+
+               part { name: "divider.padding.left";
+                       type: SPACER;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 15 0;
+                               fixed: 1 0;
+                               align: 1.0 0.5;
+                               rel1 {
+                                       relative: 0.0 0.0;
+                                       to: "space.divider";
+                               }
+                               rel2 {
+                                       relative: 0.0 1.0;
+                                       to: "space.divider";
+                               }
+                       }
+               }
+
+               part { name: "text.time";
+                       type: TEXTBLOCK;
+                       mouse_events: 0;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 (3 + 30 + 3);
+                               fixed: 0 1;
+                               align: 1.0 0.5;
+                               rel1 {
+                                       relative : 0.0 0.5;
+                                       to: "divider.padding.left";
+                               }
+                               rel2 {
+                                       relative : 0.0 0.5;
+                                       to: "divider.padding.left";
+                               }
+                               text {
+                                       style: "font_time_am_pm_style";
+                                       min: 1 0;
+                                       max: 1 0;
+                                       align: 1.0 0.5;
+                               }
+                       }
+               }
+
+               part { name: "date.left.padding";
+                       type: SPACER;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 15 0;
+                               fixed: 1 0;
+                               align: 0.0 0.0;
+                               rel1 {
+                                       relative : 0.0 0.0;
+                                       to: "space.datetime";
+                               }
+                               rel2 {
+                                       relative : 0.0 1.0;
+                                       to: "space.datetime";
+                               }
+                       }
+               }
+               part {
+                       name: "date.top.padding";
+                       type: SPACER;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 0;
+                               fixed: 0 1;
+                               align: 0.0 0.0;
+                               rel1 {
+                                       relative: 0.0 0.0;
+                                       to: "space.datetime";
+                               }
+                               rel2 {
+                                       relative: 1.0 0.0;
+                                       to: "space.datetime";
+                               }
+                       }
+               }
+
+               part { name: "text.date";
+                       type: TEXTBLOCK;
+                       mouse_events: 0;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 (8 + 20 + 8);
+                               fixed: 0 1;
+                               align: 0.0 0.5;
+                               rel1 {
+                                       relative : 1.0 1.0;
+                                       to_x: "date.left.padding";
+                                       to_y: "date.top.padding";
+                               }
+                               rel2 {
+                                       relative : 0.0 1.0;
+                                       to_x: "text.time";
+                                       to_y: "space.datetime";
+                               }
+                               text {
+                                       style: "font_date_style";
+                                       min: 1 0;
+                                       max: 1 0;
+                                       align: 0.0 0.5;
+                               }
+                       }
+               }
+       }
+
+       programs {
+               program {
+                       name: "timedate.init";
+                       signal: "load";
+                       script{
+                               set_int(g_is_timedate_clickable, 1);
+                       }
+               }
+               program{
+                       name: "button.setting.down";
+                       signal: "mouse,down,*";
+                       source: "focus.setting";
+                       action: STATE_SET "pressed" 0.0;
+                       target: "image.button.setting.bg";
+               }
+               program{
+                       name: "button.setting.up";
+                       signal: "mouse,up,*";
+                       source: "focus.setting";
+                       action: STATE_SET "default" 0.0;
+                       target: "image.button.setting.bg";
+               }
+               program {
+                       name: "timendate.click.enable";
+                       signal: "timendate.click.enable";
+                       source: "prog";
+                       script {
+                               set_int(g_is_timedate_clickable, 1);
+                       }
+               }
+               program {
+                       name: "timendate.click.disable";
+                       signal: "timendate.click.disable";
+                       source: "prog";
+                       script {
+                               set_int(g_is_timedate_clickable, 0);
+                       }
+               }
+               program{
+                       name: "date_time.down";
+                       signal: "mouse,down,*";
+                       source: "focus.datetime";
+                       script {
+                               if (get_int(g_is_timedate_clickable) == 1) {
+                                       set_state(PART:"image.datetime.bg", "pressed", 0.0);
+                               }
+                       }
+               }
+               program{
+                       name: "date_time.up";
+                       signal: "mouse,up,*";
+                       source: "focus.datetime";
+                       action: STATE_SET "default" 0.0;
+                       target: "image.datetime.bg";
+               }
+       }
+}
+
index bf74ddb..4ecd398 100755 (executable)
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ * Copyright (c) 2009-2015 Samsung Electronics Co., Ltd All Rights Reserved
  *
- * Licensed under the Flora License, Version 1.1 (the License);
+ * 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,
+ * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
+ *
  */
 
+
 #ifndef __QUICKPANEL_EDC_DEF_H__
 #define __QUICKPANEL_EDC_DEF_H__
 
+#define QP_BACKGROUND_COLOR "B011"
+
+#define QP_WIN_W 480
+#define QP_WIN_H 800
+
+#define QP_BG_VISIBILITY       1
+#define QP_BG_COLOR    "AO001"
+
 #define QP_INDICATOR_H 0
-#define QP_INDICATOR_COMPENSATE_H      50
-
-#define QP_HANDLE_H     64
-#define QP_HANDLE_TOTAL_H       80
-#define QP_SPN_H 80
-#define QP_SPN_TEXT_W 520
-
-#define QP_BG_VISIBILITY       0
-#define QP_BG_COLOR    255 255 255 255
-#define QP_SETTING_BG_COLOR 255 255 255 255
-#define QP_SETTING_ICON_BG_COLOR 26 26 26 255
-#define QP_ACCESSIBILITY_TEST_COLOR 0 0 0 0;
+#define QP_HANDLE_H    50
+
+#define QP_SPN_H 41 //66
+#define QP_SPN_TEXT_W 343 //520
+
+#define QP_DATE_H      50
+
+#define QP_COLOR_BLACK 0 0 0 255
+
+#define QP_SETTING_NUM_PORTRAIT_ICONS 5
+#define QP_SETTING_NUM_MINIMUM_ICON 8
+#define QP_SETTING_NUM_TOTAL_ICON 8
+
+#define QP_SETTING_MARGIN_L_W_P 0
+#define QP_SETTING_MARGIN_L_W_L 0
+#define QP_SETTING_MARGIN_R_W_P 0
+#define QP_SETTING_MARGIN_R_W_L 0
+
+#define QP_SETTING_DIVIDER_W_P 0
+#define QP_SETTING_DIVIDER_W_L 0
+#define QP_SETTING_ICON_MIN_H 66//154
+
+#define QP_SETTING_BG_H        151
+#define QP_SETTING_ICON_DRAGGING_BG_CORRECTION_W_P 0
+#define QP_SETTING_ICON_DRAGGING_BG_CORRECTION_W_L 0
+#define QP_SETTING_ICON_DRAGGING_BG_MIN_H 72
+#define QP_SETTING_ICON_DRAGGING_MARGIN 0
+       
+// WVGA
+#define QP_SETTING_ICON_MIN_WH_WVGA 66
+#define QP_SETTING_ICON_BG_MIN_W_P_WVGA 96
+#define QP_SETTING_ICON_BG_MIN_W_P_TEXT_OFFSET_WVGA 7
+#define QP_SETTING_ICON_BG_MIN_W_L_WVGA 100
+#define QP_SETTING_ICON_BG_MIN_W_L_TEXT_OFFSET_WVGA 4
+#define QP_SETTING_ICON_DRAGGING_BG_MIN_W_WVGA 66
+
+// HD
+#define QP_SETTING_ICON_MIN_WH_HD 72
+#define QP_SETTING_ICON_BG_MIN_W_P_HD 109
+#define QP_SETTING_ICON_BG_MIN_W_P_TEXT_OFFSET_HD 0
+#define QP_SETTING_ICON_BG_MIN_W_L_HD 107
+#define QP_SETTING_ICON_BG_MIN_W_L_TEXT_OFFSET_HD 0
+#define QP_SETTING_ICON_DRAGGING_BG_MIN_W_HD 72
+
+#define QP_THEME_BRIGHTNESS_BG_COLOR "B011"
+
 #define QP_THEME_BG_VISIBILITY                         0
-#define QP_THEME_BG_COLOR                              255 255 255 255
-#define QP_THEME_NOTI_BG_COLOR                         28 29 30 255
-#define QP_THEME_LIST_ITEM_GROUP_HEIGHT 80
-#define QP_THEME_LIST_ITEM_MINICONTRL_HEIGHT 178
-#define QP_THEME_LIST_ITEM_MINICONTR_SEPERATOR_HEIGHT 12
-#define QP_THEME_LIST_ITEM_ONGOING_HEIGHT 180
-#define QP_THEME_LIST_ITEM_ONGOING_SEPERATOR_HEIGHT 12
-#define QP_THEME_LIST_ITEM_BRIGHTNESS_HEIGHT 126
-#define QP_THEME_LIST_ITEM_MULTIWINDOW_HEIGHT 180
-#define QP_THEME_LIST_TITLE_FONT_NAME                  "Tizen:style=Medium"
-#define QP_THEME_LIST_TITLE_FONT_COLOR                 149 148 148 255
-#define QP_THEME_LIST_TITLE_FONT_SIZE                  36
+#define QP_THEME_BG_COLOR                              "B011"
+#define QP_THEME_BANDED_COLOR  "B0211"
+#define QP_THEME_ITEM_BG_COLOR "B041"
+#define QP_THEME_ITEM_BG_PRESS_COLOR "B041P"
+#define QP_THEME_ITEM_BG_PRESS_DIM_COLOR "AO013DP"
+#define QP_THEME_SECTION_ICON_DIVIDER_COLOR "AO003"
+
+#define QP_THEME_LIST_ITEM_SEPERATOR_HEIGHT 0
+#define QP_THEME_LIST_ITEM_BRIGHTNESS_HEIGHT   76
+#define QP_THEME_LIST_ITEM_MULTIWINDOW_HEIGHT 96 //135
+#define QP_THEME_LIST_ITEM_SHORCUT_SOUND_HEIGHT 96 //135
+#define QP_THEME_LIST_ITEM_SHORCUT_FEATURED_HEIGHT 96 //84
+#define QP_THEME_LIST_ITEM_MINICONTRL_HEIGHT 140 //180
+#define QP_THEME_LIST_ITEM_ONGOING_PROGRESS_HEIGHT 96//135
+#define QP_THEME_LIST_ITEM_ONGOING_EVENT_HEIGHT 96 //135
+#define QP_THEME_LIST_ITEM_ONGOING_EVENT_LINE3_HEIGHT 96
+#define QP_THEME_LIST_ITEM_NOTI_SECTION_HEIGHT 51 //80
+#define QP_THEME_LIST_ITEM_NOTIFICATION_LISTTYPE_HEIGHT 96
+#define QP_THEME_LIST_ITEM_NOTIFICATION_LEGACY_SINGLE_MULTI_HEIGHT 96 //246
+
+#define QP_THEME_LIST_ITEM_ICON_COLOR  "W0661"
 
 #define BOX_PART_ICON "object.icon"
 #define BOX_PART_ICON_SUB "object.icon.sub"
-#define BOX_ICON_SIZE_W 124
-#define BOX_ICON_SIZE_H 124
-#define BOX_ICON_SUB_SIZE_W 56
-#define BOX_ICON_SUB_SIZE_H 56
-
-#define BOX_COLOR_BG 28 29 30 255
-#define BOX_WIDTH_P 340
-#define BOX_HEIGHT_P 322
-#define BOX_WIDTH_L 406
-#define BOX_HEIGHT_L 322
-
-#define BOX_MARGIN_L_TEXT_H 14
-#define BOX_MARGIN_R_TEXT_H 11
-#define BOX_TEXT_CONTENTS_HEIGHT 36
-#define BOX_TEXT_INFO_HEIGHT 35
-#define BOX_TEXT_SUB_WIDTH 90
-#define BOX_TEXT_SUB_PADDING_WIDTH 12
+#define BOX_ICON_BG_SIZE_W 46
+#define BOX_ICON_BG_SIZE_H 46
+#define BOX_ICON_SIZE_W 46
+#define BOX_ICON_SIZE_H 46
+#define BOX_ICON_SUB_SIZE_W 29 //44
+#define BOX_ICON_SUB_SIZE_H 29 //44
+
+#define BOX_COLOR_BG QP_THEME_ITEM_BG_COLOR
+#define BOX_COLOR_BG_HIGHLIGHT QP_THEME_ITEM_BG_PRESS_COLOR
+#define BOX_COLOR_BG_HIGHLIGHT_DIM QP_THEME_ITEM_BG_PRESS_DIM_COLOR
+#define BOX_WIDTH_P 224 //340
+#define BOX_HEIGHT_P 183 //278
+#define BOX_WIDTH_L 269 //408
+#define BOX_HEIGHT_L 183 //278
+
+#define BOX_MARGIN_L_TEXT_H 10 //16
+#define BOX_MARGIN_R_TEXT_H 6 //10
+#define BOX_TEXT_CONTENTS_HEIGHT 25 //38
+#define BOX_TEXT_INFO_HEIGHT 25 //38
+#define BOX_TEXT_SUB_PADDING_WIDTH -2 //-3
 
 #endif /*__QUICKPANEL_EDC_DEF_H__*/
diff --git a/data/quickpanel_images.edc b/data/quickpanel_images.edc
new file mode 100644 (file)
index 0000000..8fcd36d
--- /dev/null
@@ -0,0 +1,77 @@
+/*
+ * 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 RESOURCE_IMAGE( FILE_NAME ) \
+   group { \
+      name: FILE_NAME; \
+      images.image: FILE_NAME COMP; \
+      parts { \
+         part { name: "image"; \
+            description { \
+               state: "default" 0.0; \
+               image.normal: FILE_NAME; \
+               aspect: 1 1; \
+               aspect_preference: BOTH; \
+            } \
+         } \
+      } \
+   }
+
+#define RESOURCE_IMAGE_LOSSY( FILE_NAME ) \
+   group { \
+      name: FILE_NAME; \
+      images.image: FILE_NAME LOSSY 85; \
+      parts { \
+         part { name: "image"; \
+            description { \
+               state: "default" 0.0; \
+               image.normal: FILE_NAME; \
+               aspect: 1 1; \
+               aspect_preference: BOTH; \
+            } \
+         } \
+      } \
+   }
+
+       RESOURCE_IMAGE("Q02_Notification_update.png");
+       RESOURCE_IMAGE("quick_icon_torch.png");
+       RESOURCE_IMAGE("quick_icon_allshare.png");
+       RESOURCE_IMAGE("quick_icon_blocking_mode.png");
+       RESOURCE_IMAGE("quick_icon_bluetooth.png");
+       RESOURCE_IMAGE("quick_icon_command.png");
+       RESOURCE_IMAGE("quick_icon_driving.png");
+       RESOURCE_IMAGE("quick_icon_flightmode.png");
+       RESOURCE_IMAGE("quick_icon_location.png");
+       RESOURCE_IMAGE("quick_icon_mirroring.png");
+       RESOURCE_IMAGE("quick_icon_multi_window.png");
+       RESOURCE_IMAGE("quick_icon_nfc.png");
+       RESOURCE_IMAGE("quick_icon_private_mode.png");
+       RESOURCE_IMAGE("quick_icon_power_saving.png");
+       RESOURCE_IMAGE("quick_icon_ultra_power_saving.png");
+       RESOURCE_IMAGE("quick_icon_ready_to_share.png");
+       RESOURCE_IMAGE("quick_icon_auto_rotate.png");
+       RESOURCE_IMAGE("quick_icon_sbeam.png");
+       RESOURCE_IMAGE("quick_icon_sf_vf.png");
+       RESOURCE_IMAGE("quick_icon_smart_stay.png");
+       RESOURCE_IMAGE("quick_icon_sn_vf.png");
+       RESOURCE_IMAGE("quick_icon_sf_vn.png");
+       RESOURCE_IMAGE("quick_icon_sync.png");
+       RESOURCE_IMAGE("quick_icon_wifi_tethering.png");
+       RESOURCE_IMAGE("quick_icon_mobile_data.png");
+       RESOURCE_IMAGE("quick_icon_wifi.png");
+       RESOURCE_IMAGE("quick_icon_downloadbooster_off.png");
\ No newline at end of file
index 49da046..f7c09b3 100755 (executable)
@@ -1,3 +1,20 @@
+/*
+ * 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 DEBUG
 //#define DEBUG_TEXT
 
                        part { name: "elm.padding.bottom.mutiline.content";
                                type: RECT;
                                scale: 1;
-                               description { state: "default" 0.0;
+                               description {
+                                       state: "default" 0.0;
                                        min: 0 0;
                                        fixed: 0 1;
                                        visible: 0;
                        part { name: "elm.padding.bottom.time";
                                type: RECT;
                                scale: 1;
-                               description { state: "default" 0.0;
+                               description {
+                                       state: "default" 0.0;
                                        min: 0 82;
                                        fixed: 0 1;
 #ifdef DEBUG
                        part { name: "elm.padding.bottom.icon";
                                type: RECT;
                                scale: 1;
-                               description { state: "default" 0.0;
+                               description {
+                                       state: "default" 0.0;
                                        min: 0 31;
                                        fixed: 0 1;
                                        rel1.to:"base";
                        part { name: "elm.padding.top.bg";
                                type: RECT;
                                scale: 1;
-                               description { state: "default" 0.0;
+                               description {
+                                       state: "default" 0.0;
                                        min: 0 QP_THEME_LIST_ITEM_ONGOING_SEPERATOR_HEIGHT;
                                        fixed: 0 1;
                                        rel1.to:"base";
                                type: RECT;
                                mouse_events: 0;
                                scale: 1;
-                               description { state: "default" 0.0;
+                               description {
+                                       state: "default" 0.0;
                                        min: 124 124;
                                        fixed: 1 1;
                                        rel1 {
                                type: SWALLOW;
                                mouse_events: 0;
                                scale: 1;
-                               description { state: "default" 0.0;
+                               description {
+                                       state: "default" 0.0;
                                        fixed: 1 1;
                                        rel1 {
                                                to: "elm.rect.thumbnail";
                                type: SWALLOW;
                                mouse_events: 0;
                                scale: 1;
-                               description { state: "default" 0.0;
+                               description {
+                                       state: "default" 0.0;
                                        min: 40 40;
                                        fixed: 1 1;
                                        rel1 {
                        part { name: "elm.padding.right.slider.bounder";
                                type: RECT;
                                scale: 1;
-                               description { state: "default" 0.0;
+                               description {
+                                       state: "default" 0.0;
                                        min: 202 0;
                                        fixed: 1 0;
                                        rel1 {
                        part { name: "elm.padding.right.text.bounder";
                                type: RECT;
                                scale: 1;
-                               description { state: "default" 0.0;
+                               description {
+                                       state: "default" 0.0;
                                        min: 144 0;
                                        fixed: 1 0;
                                        rel1 {
                                type: TEXT;
                                mouse_events: 0;
                                scale: 1;
-                               description { state: "default" 0.0;
+                               description {
+                                       state: "default" 0.0;
                                        min: 0 36;
                                        align: 0.0 0.0;
                                        fixed: 0 1;
                                                size_range: 34 44;
                                        }
                                }
-                               description { state: "selected" 0.0;
+                               description {
+                                       state: "selected" 0.0;
                                        inherit: "default" 0.0;
                                        color: 248 246 239 255;
                                }
                                type: TEXT;
                                mouse_events: 0;
                                scale: 1;
-                               description { state: "default" 0.0;
+                               description {
+                                       state: "default" 0.0;
                                        fixed: 0 1;
                                        min: 0 28;
                                        align: 0.0 1.0;
                                                align: 1.0 0.0;
                                        }
                                }
-                               description { state: "selected" 0.0;
+                               description {
+                                       state: "selected" 0.0;
                                        inherit: "default" 0.0;
                                        color: 255 255 255 255;
                                }
                        }
-                       part { name: "elm.rect.content";
+                       part {
+                               name: "elm.rect.content";
                                type: RECT;
                                mouse_events: 0;
                                scale: 1;
-                               description { state: "default" 0.0;
+                               description {
+                                       state: "default" 0.0;
                                        align: 0.0 0.0;
                                        min: 0 28;
                                        fixed: 0 1;
                                        visible: 0;
                                }
                        }
-                       part { name: "elm.text.content";
+                       part {
+                               name: "elm.text.content";
                                type: TEXT;
                                mouse_events: 0;
                                scale: 1;
-                               description { state: "default" 0.0;
+                               description {
+                                       state: "default" 0.0;
                                        align: 0.0 0.0;
                                        fixed: 0 1;
                                        rel1 {
                                        }
                                        visible: 0;
                                }
-                               description { state: "show" 0.0;
+                               description {
+                                       state: "show" 0.0;
                                        inherit: "default" 0.0;
                                        visible: 1;
                                }
-                               description { state: "selected" 0.0;
+                               description {
+                                       state: "selected" 0.0;
                                        inherit: "default" 0.0;
                                        color: 130 131 132 255;
                                        visible: 1;
                                }
                        }
-                       part { name: "elm.rect.content.multiline";
+                       part {
+                               name: "elm.rect.content.multiline";
                                type: RECT;
                                mouse_events: 0;
                                scale: 1;
-                               description { state: "default" 0.0;
+                               description {
+                                       state: "default" 0.0;
                                        align: 0.0 0.0;
                                        min: 0 0;
                                        fixed: 1 1;
                                        visible: 0;
                                }
                        }
-                       part { name: "elm.text.content.multiline";
+                       part {
+                               name: "elm.text.content.multiline";
                                type: TEXTBLOCK;
                                mouse_events: 0;
                                scale: 1;
-                               description { state: "default" 0.0;
+                               description {
+                                       state: "default" 0.0;
                                        align: 0.0 0.0;
                                        fixed: 1 1;
                                        rel1 {
                                        }
                                        visible:0;
                                }
-                               description { state: "show" 0.0;
+                               description {
+                                       state: "show" 0.0;
                                        inherit: "default" 0.0;
                                        visible:1;
                                }
-                               description { state: "selected" 0.0;
+                               description {
+                                       state: "selected" 0.0;
                                        inherit: "default" 0.0;
                                        color: 130 131 132 255;
                                        visible: 1;
                                }
                        }
-                       part { name: "elm.box.progress";
+                       part {
+                               name: "elm.box.progress";
                                type: BOX;
                                mouse_events: 0;
                                scale: 1;
-                               description { state: "default" 0.0;
+                               description {
+                                       state: "default" 0.0;
                                        min: 0 20;
                                        fixed: 0 1;
                                        align: 0.0 1.0;
 #endif
                                }
                        }
-                       part { name: "elm.swallow.progress";
+                       part {
+                               name: "elm.swallow.progress";
                                type: SWALLOW;
                                mouse_events: 0;
                                scale: 1;
-                               description { state: "default" 0.0;
+                               description {
+                                       state: "default" 0.0;
                                        rel1 {
                                                to: "elm.box.progress";
                                        }
diff --git a/data/quickpanel_listitem_noti.edc b/data/quickpanel_listitem_noti.edc
new file mode 100644 (file)
index 0000000..308a16d
--- /dev/null
@@ -0,0 +1,680 @@
+/*
+ * 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 DEBUG
+//#define DEBUG_TEXT
+
+
+#define QP_NOTI_LISTTYPE_TITLE_COLOR "T023"
+#define QP_NOTI_LISTTYPE_TITLE_PRESS_COLOR "T023P"
+#define QP_NOTI_LISTTYPE_CONTENTS_COLOR "T024"
+#define QP_NOTI_LISTTYPE_COUNT_COLOR "T112"
+#define QP_NOTI_LISTTYPE_COUNT_BG_COLOR "B0517"
+#define QP_NOTI_LISTTYPE_TIME_COLOR "T024"
+
+#define QP_NOTI_LISTTYPE_TITLE_FONT_SIZE 30
+#define QP_NOTI_LISTTYPE_CONTENTS_FONT_SIZE 24
+#define QP_NOTI_LISTTYPE_COUNT_FONT_SIZE 21
+#define QP_NOTI_LISTTYPE_TIME_FONT_SIZE 24
+
+       styles {
+               style {
+                       name: "noti_content_text";
+                       base: "font=Tizen:style=Regular text_class=tizen align=left valign=0.5 font_size="QP_NOTI_LISTTYPE_CONTENTS_FONT_SIZE" ellipsis=1.0 color=#2B2B2BFF color_class="QP_NOTI_LISTTYPE_CONTENTS_COLOR" wrap=none";
+               }
+       }
+
+       images {
+               image: "core_icon_badge_container.#.png" COMP;
+       }
+
+       group {
+               name: "quickpanel/listitem/notification";
+               data.item: "bgcolor" QP_THEME_BANDED_COLOR;
+
+               parts {
+                       part {
+                               name: "base";
+                               type: SPACER;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 QP_THEME_LIST_ITEM_NOTIFICATION_LISTTYPE_HEIGHT;
+                                       max: -1 QP_THEME_LIST_ITEM_NOTIFICATION_LISTTYPE_HEIGHT;
+                               }
+                       }
+                       part {
+                               name: "bgcolor";
+                               type: "RECT";
+                               mouse_events: 0;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1.to:"base";
+                                       rel2.to:"base";
+                                       color_class: QP_THEME_BANDED_COLOR;
+                                       visible: 1;
+                               }
+                               description {
+                                       state: "effect" 0.0;
+                                       inherit: "default" 0.0;
+                                       color_class: QP_THEME_BG_COLOR;
+                                       color: 255 255 255 128;
+                               }
+                       }
+
+                       part {
+                               name: "elm.padding.right";
+                               type: SPACER;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 15 0;
+                                       fixed: 1 0;
+                                       rel1.to:"base";
+                                       rel2.to:"base";
+                                       rel1.relative: 1.0 0.0;
+                                       rel2.relative: 1.0 1.0;
+                                       align: 1.0 0.0;
+                               }
+                       }
+                       part {
+                               name: "elm.padding.top.icon";
+                               type: SPACER;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 25;
+                                       fixed: 0 1;
+                                       rel1.to:"base";
+                                       rel2.to:"base";
+                                       rel1.relative: 0.0 0.0;
+                                       rel2.relative: 1.0 0.0;
+                                       align: 0.0 0.0;
+                               }
+                       }
+                       part {
+                               name: "elm.padding.left.icon";
+                               type: SPACER;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 15 0;
+                                       fixed: 1 0;
+                                       rel1.to:"base";
+                                       rel2.to:"base";
+                                       rel1.relative: 0.0 0.0;
+                                       rel2.relative: 0.0 1.0;
+                                       align: 0.0 0.0;
+                               }
+                       }
+                       part {
+                               name: "elm.padding.top.text";
+                               type: SPACER;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 13;
+                                       fixed: 0 1;
+                                       rel1.to:"base";
+                                       rel2.to:"base";
+                                       rel1.relative: 0.0 0.0;
+                                       rel2.relative: 1.0 0.0;
+                                       align: 0.0 0.0;
+                               }
+                       }
+                       part {
+                               name: "elm.padding.bottom.text";
+                               type: SPACER;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 13;
+                                       fixed: 0 1;
+                                       rel1.to:"base";
+                                       rel2.to:"base";
+                                       rel1.relative: 0.0 1.0;
+                                       rel2.relative: 1.0 1.0;
+                                       align: 0.0 1.0;
+                               }
+                       }
+                       part {
+                               name: "elm.padding.left.text";
+                               type: SPACER;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: (15 + 46 + 15) 0;
+                                       fixed: 1 0;
+                                       rel1.to:"base";
+                                       rel2.to:"base";
+                                       rel1.relative: 0.0 0.0;
+                                       rel2.relative: 0.0 1.0;
+                                       align: 0.0 0.0;
+                               }
+                       }
+                       part {
+                               name: "elm.rect.thumbnail";
+                               type: SPACER;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 46 46;
+                                       fixed: 1 1;
+                                       rel1 {
+                                               relative: 1.0 1.0;
+                                               to_x: "elm.padding.left.icon";
+                                               to_y: "elm.padding.top.icon";
+                                       }
+                                       rel2 {
+                                               relative: 1.0 1.0;
+                                               to_x: "elm.padding.left.icon";
+                                               to_y: "elm.padding.top.icon";
+                                       }
+                                       align: 0.0 0.0;
+                               }
+                       }
+                       part {
+                               name: "elm.rect.icon";
+                               type: SPACER;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 36 36;
+                                       fixed: 1 1;
+                                       rel1 {
+                                               relative: 0.5 0.5;
+                                               to: "elm.rect.thumbnail";
+                                       }
+                                       rel2 {
+                                               relative: 0.5 0.5;
+                                               to: "elm.rect.thumbnail";
+                                       }
+                                       align: 0.0 0.0;
+                               }
+                       }
+                       part {
+                               name: "elm.rect.text";
+                               type: SPACER;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 38;
+                                       fixed: 0 1;
+                                       rel1 {
+                                               relative: 1.0 1.0;
+                                               to_x: "elm.padding.left.text";
+                                               to_y: "elm.padding.top.text";
+                                       }
+                                       rel2 {
+                                               relative: 0.0 1.0;
+                                               to_x: "elm.padding.right";
+                                               to_y: "elm.padding.top.text";
+                                       }
+                                       align: 0.0 0.0;
+                               }
+                       }
+                       part {
+                               name: "elm.rect.text.title";
+                               type: SPACER;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 38;
+                                       fixed: 0 1;
+                                       rel1 {
+                                               relative: 0.0 0.0;
+                                               to: "elm.rect.text";
+                                       }
+                                       rel2 {
+                                               relative: 1.0 1.0;
+                                               to: "elm.rect.text";
+                                       }
+                                       align: 0.0 0.0;
+                               }
+                               description {
+                                       state: "move.center" 0.0;
+                                       inherit: "default" 0.0;
+                                       rel1 {
+                                               relative: 0.0 0.0;
+                                               to_x: "elm.rect.text";
+                                               to_y: "base";
+                                       }
+                                       rel2 {
+                                               relative: 1.0 1.0;
+                                               to_x: "elm.rect.text";
+                                               to_y: "base";
+                                       }
+                                       align: 0.0 0.5;
+                               }
+                       }
+                       part {
+                               name: "elm.rect.text.content";
+                               type: SPACER;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 32;
+                                       fixed: 0 1;
+                                       rel1 {
+                                               relative: 0.0 1.0;
+                                               to: "elm.rect.text";
+                                       }
+                                       rel2 {
+                                               relative: 1.0 0.0;
+                                               to_x: "elm.rect.text";
+                                               to_y: "elm.padding.bottom.text";
+                                       }
+                                       align: 0.0 0.0;
+                               }
+                       }
+                       part {
+                               name: "elm.swallow.thumbnail";
+                               type: SWALLOW;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: BOX_ICON_SIZE_W BOX_ICON_SIZE_H;
+                                       max: BOX_ICON_BG_SIZE_W BOX_ICON_BG_SIZE_H;
+                                       fixed: 1 1;
+                                       rel1 {
+                                               to: "elm.rect.thumbnail";
+                                       }
+                                       rel2 {
+                                               to: "elm.rect.thumbnail";
+                                       }
+                                       align: 0.5 0.5;
+                               }
+                       }
+                       part {
+                               name: "elm.swallow.icon";
+                               type: SWALLOW;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 30 30;
+                                       fixed: 1 1;
+                                       rel1 {
+                                               relative: 0.5 0.5;
+                                               to: "elm.rect.icon";
+                                       }
+                                       rel2 {
+                                               relative: 0.5 0.5;
+                                               to: "elm.rect.icon";
+                                       }
+                                       align: 0.5 0.5;
+                               }
+                       }
+                       part {
+                               name: "elm.text.title";
+                               type: TEXT;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       align: 0.0 0.0;
+                                       //fixed: 0 1;
+                                       rel1 {
+                                               relative: 0.0 0.0;
+                                               to:"elm.rect.text.title";
+                                       }
+                                       rel2 {
+                                               relative: 1.0 1.0;
+                                               to:"elm.rect.text.title";
+                                       }
+                                       color_class: QP_NOTI_LISTTYPE_TITLE_COLOR;
+                                       text {
+                                               font: "Tizen:style=Regular";
+                                               text_class: "tizen";
+                                               size: QP_NOTI_LISTTYPE_TITLE_FONT_SIZE;
+                                               ellipsis: 0.0;
+                                               align: 0.0 0.5;
+                                       }
+                               }
+                               description {
+                                       state: "short" 0.0;
+                                       inherit: "default" 0.0;
+                                       rel1 {
+                                               relative: 0.0 0.0;
+                                               to: "elm.rect.text.title";
+                                       }
+                                       rel2 {
+                                               relative: 0.0 1.0;
+                                               to_x: "elm.image.count.bg";
+                                               to_y: "elm.rect.text.title";
+                                               offset: -15 0;
+                                       }
+                               }
+                               description {
+                                       state: "short.center" 0.0;
+                                       inherit: "default" 0.0;
+                                       rel1 {
+                                               relative: 0.0 0.0;
+                                               to: "elm.rect.text.title";
+                                       }
+                                       rel2 {
+                                               relative: 0.0 1.0;
+                                               to_x: "elm.text.time";
+                                               to_y: "elm.rect.text.title";
+                                               offset: -15 0;
+                                       }
+                               }
+                       }
+                       part{
+                               name: "elm.image.count.bg";
+                               type:IMAGE;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       align: 1.0 0.5;
+                                       fixed: 1 1;
+                                       min: 32 32;
+                                       max: 68 32;
+                                       rel1 {
+                                               relative: 0.0 0.5;
+                                               to_x: "elm.padding.left.count";
+                                               to_y: "elm.rect.text";
+                                       }
+                                       rel2 {
+                                               relative: 1.0 0.5;
+                                               to_x: "elm.padding.right.count";
+                                               to_y: "elm.rect.text";
+                                       }
+                                       image {
+                                               normal:"core_icon_badge_container.#.png";
+                                       }
+                                       color_class: QP_NOTI_LISTTYPE_COUNT_BG_COLOR;
+                                       visible:0;
+                               }
+                               description {
+                                       state: "show" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible:1;
+                               }
+                               description {
+                                       state: "hide" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible:0;
+                               }
+                       }
+                       part {
+                               name: "elm.padding.left.count";
+                               type: SPACER;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       fixed: 1 0;
+                                       min: 10 0;
+                                       rel1 {
+                                               relative: 0.0 1.0;
+                                               to_x: "elm.text.count";
+                                               to_y: "elm.padding.top.text";
+                                       }
+                                       rel2 {
+                                               relative: 0.0 1.0;
+                                               to_x: "elm.text.count";
+                                               to_y: "elm.padding.top.text";
+                                       }
+                                       align: 1.0 0.0;
+                               }
+                       }
+                       part {
+                               name: "elm.padding.right.count";
+                               type: SPACER;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       fixed: 1 0;
+                                       min: 10 0;
+                                       rel1 {
+                                               relative: 0.0 1.0;
+                                               to_x: "elm.padding.right";
+                                               to_y: "elm.padding.top.text";
+                                       }
+                                       rel2 {
+                                               relative: 0.0 1.0;
+                                               to_x: "elm.padding.right";
+                                               to_y: "elm.padding.top.text";
+                                       }
+                                       align: 1.0 0.0;
+                               }
+                       }
+                       part {
+                               name: "elm.text.count";
+                               type: TEXT;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       align: 1.0 0.5;
+                                       fixed: 1 1;
+                                       min: 0 38;
+                                       rel1 {
+                                               relative: 0.0 0.5;
+                                               to_x: "elm.padding.right.count";
+                                               to_y: "elm.rect.text";
+                                       }
+                                       rel2 {
+                                               relative: 0.0 0.5;
+                                               to_x: "elm.padding.right.count";
+                                               to_y: "elm.rect.text";
+                                       }
+                                       color_class: QP_NOTI_LISTTYPE_COUNT_COLOR;
+                                       text {
+                                               font: "Tizen:style=Regular";
+                                               text_class: "tizen";
+                                               size: QP_NOTI_LISTTYPE_COUNT_FONT_SIZE;
+                                               ellipsis: 0.0;
+                                               align: 0.0 0.5;
+                                               min: 1 0;
+                                       }
+                               }
+                       }
+                       part {
+                               name: "elm.text.content";
+                               type: TEXT;
+                               mouse_events: 0;
+                               multiline: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       align: 0.0 0.0;
+                                       fixed: 1 1;
+                                       min: 0 34;
+                                       max: -1 30;
+                                       rel1 {
+                                               to: "elm.rect.text.content";
+                                       }
+                                       rel2 {
+                                               to: "elm.rect.text.content";
+                                       }
+                                       color_class: QP_NOTI_LISTTYPE_CONTENTS_COLOR;
+                                       text {
+                                               //style: "noti_content_text";
+                                               font: "Tizen:style=Regular";
+                                               text_class: "tizen";
+                                               size: QP_NOTI_LISTTYPE_CONTENTS_FONT_SIZE;
+                                               ellipsis: 0.0;
+                                               align: 0.0 0.5;
+                                               min: 0 1;
+                                       }
+                               }
+                               description {
+                                       state: "short" 0.0;
+                                       inherit: "default" 0.0;
+                                       rel1 {
+                                               relative: 0.0 0.0;
+                                               to: "elm.rect.text.content";
+                                       }
+                                       rel2 {
+                                               relative: 0.0 1.0;
+                                               to_x: "elm.text.time";
+                                               to_y: "elm.rect.text.content";
+                                               offset: -15 0;
+                                       }
+                               }
+                       }
+                       part {
+                               name: "elm.text.time";
+                               type: TEXT;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       align: 1.0 0.0;
+                                       fixed: 1 1;
+                                       min: 0 32;
+                                       rel1 {
+                                               relative: 0.0 1.0;
+                                               to_x: "elm.padding.right";
+                                               to_y: "elm.rect.text";
+                                       }
+                                       rel2 {
+                                               relative: 0.0 0.0;
+                                               to_x: "elm.padding.right";
+                                               to_y: "elm.padding.bottom.text";
+                                       }
+                                       color_class: QP_NOTI_LISTTYPE_TIME_COLOR;
+                                       text {
+                                               font: "Tizen:style=Regular";
+                                               text_class: "tizen";
+                                               size: QP_NOTI_LISTTYPE_TIME_FONT_SIZE;
+                                               ellipsis: 0.0;
+                                               align: 0.0 0.5;
+                                               min: 1 0;
+                                       }
+                               }
+                       }
+                       part {
+                               name: "object.layer.touch.background";
+                               mouse_events: 1;
+                               repeat_events: 1;
+                               scale: 1;
+                               type: RECT;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 {to: "base";}
+                                       rel2 {to: "base";}
+                                       color: 0 0 0 0;
+                               }
+                       }
+                       QUICKPANEL_FOCUS_OBJECT("focus", "base", "base")
+               }
+
+               programs {
+                       program{
+                               name: "listbox.touch.down";
+                               signal: "mouse,clicked,1";
+                               source: "object.layer.touch.background";
+                               action: SIGNAL_EMIT "selected" "edje";
+                       }
+                       program{
+                               name: "effect,mouse,down";
+                               signal: "mouse,down,1";
+                               source: "object.layer.touch.background";
+                               script {
+                                       set_state(PART:"bgcolor", "effect", 0.0);
+                               }
+                       }
+                       program{
+                               name: "effect,mouse,up";
+                               signal: "mouse,up,1";
+                               source: "object.layer.touch.background";
+                               action: STATE_SET "default" 0.0;
+                               transition: ACCELERATE 0.20;
+                               target: "bgcolor";
+                       }
+                       program{
+                               name: "title.long";
+                               signal: "title.long";
+                               source: "prog";
+                               action: STATE_SET "default" 0.0;
+                               target: "elm.text.title";
+                       }
+                       program{
+                               name: "title.short";
+                               signal: "title.short";
+                               source: "prog";
+                               action: STATE_SET "short" 0.0;
+                               target: "elm.text.title";
+                       }
+                       program{
+                               name: "title.short.center";
+                               signal: "title.short.center";
+                               source: "prog";
+                               action: STATE_SET "short.center" 0.0;
+                               target: "elm.text.title";
+                       }
+                       program{
+                               name: "title.text.default";
+                               signal: "title.text.default";
+                               source: "prog";
+                               action: STATE_SET "default" 0.0;
+                               target: "elm.text.title";
+                       }
+                       program{
+                               name: "content.long";
+                               signal: "content.long";
+                               source: "prog";
+                               action: STATE_SET "default" 0.0;
+                               target: "elm.text.content";
+                       }
+                       program{
+                               name: "content.short";
+                               signal: "content.short";
+                               source: "prog";
+                               action: STATE_SET "short" 0.0;
+                               target: "elm.text.content";
+                       }
+                       program{
+                               name: "count.show";
+                               signal: "count.show";
+                               source: "prog";
+                               action: STATE_SET "show" 0.0;
+                               target: "elm.image.count.bg";
+                       }
+                       program{
+                               name: "count.hide";
+                               signal: "count.hide";
+                               source: "prog";
+                               action: STATE_SET "hide" 0.0;
+                               target: "elm.image.count.bg";
+                       }
+                       program {
+                               name: "title.move.center";
+                               signal: "title.move.center";
+                               source: "prog";
+                               action: STATE_SET "move.center" 0.0;
+                               target: "elm.rect.text.title";
+                       }
+                       program {
+                               name: "title.move.default";
+                               signal: "title.move.default";
+                               source: "prog";
+                               action: STATE_SET "default" 0.0;
+                               target: "elm.rect.text.title";
+                       }
+               }
+       }
diff --git a/data/quickpanel_listitem_noti_legacy.edc b/data/quickpanel_listitem_noti_legacy.edc
new file mode 100644 (file)
index 0000000..12eb4fe
--- /dev/null
@@ -0,0 +1,2814 @@
+/*
+ * 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 DEBUG
+//#define DEBUG_TEXT
+
+#define MAKE_PART_SHOW_PROGRAM(PARTNAME)\
+               program{\
+                       name: PARTNAME".object.show";\
+                       signal: "object.show";\
+                       source: PARTNAME;\
+                       action: STATE_SET "show" 0.0;\
+                       target: PARTNAME;\
+               }\
+
+#define MAKE_PART_SHOW_TEXT_PROGRAM(PARTNAME)\
+               program{\
+                       name: PARTNAME".text.show";\
+                       signal: "object.show";\
+                       source: PARTNAME;\
+                       action: STATE_SET "show" 0.0;\
+                       target: PARTNAME;\
+               }\
+               program{\
+                       name: PARTNAME".text.show.efect";\
+                       signal: "object.show.effect";\
+                       source: PARTNAME;\
+                       action: STATE_SET "show.effect" 0.0;\
+                       target: PARTNAME;\
+               }\
+
+images {
+       image: "quick_image_dimmed_port.png" COMP;
+       image: "quick_image_dimmed_land.png" COMP;
+       image: "icon_press.png" COMP;
+}
+
+#define BOX_FONT_SHADOW_COLOR 0 0 0 191
+#define BOX_FONT_OUTLINE_COLOR 0 0 0 191
+#define BOX_FONT_NO_SHADOW_COLOR 0 0 0 0
+#define BOX_FONT_NO_OUTLINE_COLOR 0 0 0 0
+
+#define BOX_CONTENTS_FONT "Tizen:style=Bold"
+#define BOX_CONTENTS_FONT_SIZE 30
+
+#define BOX_INFO_FONT "Tizen:style=Bold"
+#define BOX_INFO_FONT_SIZE 28
+
+#define BOX_INFO_SHORT_FONT "Tizen:style=Bold"
+#define BOX_INFO_SHORT_FONT_SIZE 28
+
+#define BOX_INFO_SUB_FONT "Tizen:style=Regular"
+#define BOX_INFO_SUB_FONT_SIZE 24
+
+#define TEXT_CLASS_TIZEN "tizen"
+#define TEXT_EFFECT "OUTLINE_SHADOW"
+
+#define QP_NOTI_LEGACY_TITLE_COLOR "T023"
+#define QP_NOTI_LEGACY_CONTENTS_COLOR "T024"
+#define QP_NOTI_LEGACY_COUNT_COLOR "ATO017"
+#define QP_NOTI_LEGACY_TIME_COLOR "T024L1"
+#define QP_NOTI_LEGACY_INFO_COLOR "ATO019"
+#define QP_NOTI_LEGACY_INFO_SUB_COLOR "T024"
+
+#define QP_NOTI_LEGACY_TITLE_FONT_SIZE 30
+#define QP_NOTI_LEGACY_CONTENTS_FONT_SIZE 24
+#define QP_NOTI_LEGACY_COUNT_FONT_SIZE 30
+#define QP_NOTI_LEGACY_TIME_FONT_SIZE 22
+#define QP_NOTI_LEGACY_INFO_FONT_SIZE 26
+#define QP_NOTI_LEGACY_INFO_SUB_FONT_SIZE 26
+
+styles {
+       style {
+               name: "noti_list_title";
+               base: "font=Tizen:style=Regular text_class=tizen font_size="QP_NOTI_LEGACY_TITLE_FONT_SIZE" color=#FFFFFF color_class="QP_NOTI_LEGACY_TITLE_COLOR" ellipsis=1.0 wrap=mixed";
+       }
+       style {
+               name: "noti_list_title_effect";
+               base: "font=Tizen:style=Regular text_class=tizen font_size="QP_NOTI_LEGACY_TITLE_FONT_SIZE" color=#FFFFFF color_class="QP_NOTI_LEGACY_TITLE_COLOR" ellipsis=1.0 wrap=mixed";
+       }
+
+       style {
+               name: "noti_list_contents";
+               base: "font=Tizen:style=Regular text_class=tizen font_size="QP_NOTI_LEGACY_CONTENTS_FONT_SIZE" color=#FFFFFF color_class="QP_NOTI_LEGACY_CONTENTS_COLOR" ellipsis=1.0 wrap=mixed";
+       }
+       style {
+               name: "noti_list_contents_effect";
+               base: "font=Tizen:style=Regular text_class=tizen font_size="QP_NOTI_LEGACY_CONTENTS_FONT_SIZE" color=#FFFFFF color_class="QP_NOTI_LEGACY_CONTENTS_COLOR" ellipsis=1.0 wrap=mixed";
+       }
+
+       style {
+               name: "noti_list_count";
+               base: "font=Tizen:style=Regular text_class=tizen font_size="QP_NOTI_LEGACY_COUNT_FONT_SIZE" color=#FFFFFF color_class="QP_NOTI_LEGACY_COUNT_COLOR" ellipsis=1.0 wrap=mixed";
+       }
+       style {
+               name: "noti_list_count_effect";
+               base: "font=Tizen:style=Regular text_class=tizen font_size="QP_NOTI_LEGACY_COUNT_FONT_SIZE" color=#FFFFFF color_class="QP_NOTI_LEGACY_COUNT_COLOR" ellipsis=1.0 wrap=mixed";
+       }
+
+       style {
+               name: "noti_list_time";
+               base: "font=Tizen:style=Regular text_class=tizen font_size="QP_NOTI_LEGACY_TIME_FONT_SIZE" color=#FFFFFF color_class="QP_NOTI_LEGACY_TIME_COLOR" ellipsis=1.0 wrap=mixed";
+       }
+       style {
+               name: "noti_list_time_effect";
+               base: "font=Tizen:style=Regular text_class=tizen font_size="QP_NOTI_LEGACY_TIME_FONT_SIZE" color=#FFFFFF color_class="QP_NOTI_LEGACY_TIME_COLOR" ellipsis=1.0 wrap=mixed";
+       }
+
+       style {
+               name: "noti_list_info";
+               base: "font=Tizen:style=Regular text_class=tizen font_size="QP_NOTI_LEGACY_INFO_FONT_SIZE" color=#FFFFFF color_class="QP_NOTI_LEGACY_INFO_COLOR" ellipsis=1.0 wrap=mixed";
+       }
+       style {
+               name: "noti_list_info_effect";
+               base: "font=Tizen:style=Regular text_class=tizen font_size="QP_NOTI_LEGACY_INFO_FONT_SIZE" color=#FFFFFF color_class="QP_NOTI_LEGACY_INFO_COLOR" ellipsis=1.0 wrap=mixed";
+       }
+
+       style {
+               name: "noti_list_info_sub";
+               base: "font=Tizen:style=Regular text_class=tizen font_size="QP_NOTI_LEGACY_INFO_SUB_FONT_SIZE" color=#FFFFFF color_class="QP_NOTI_LEGACY_INFO_SUB_COLOR" ellipsis=1.0 wrap=mixed";
+       }
+       style {
+               name: "noti_list_info_sub_effect";
+               base: "font=Tizen:style=Regular text_class=tizen font_size="QP_NOTI_LEGACY_INFO_SUB_FONT_SIZE" color=#FFFFFF color_class="QP_NOTI_LEGACY_INFO_SUB_COLOR" ellipsis=1.0 wrap=mixed";
+       }
+}
+
+group {
+       name: "quickpanel/listitem_legacy/single_multi";
+
+       script {
+               public g_is_show_dim_bg;
+
+               public init_variables() {
+                       set_int(g_is_show_dim_bg, 0);
+               }
+       }
+
+       parts {
+               part {
+                       name: "background";
+                       type: SPACER;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 (QP_THEME_LIST_ITEM_NOTIFICATION_LEGACY_SINGLE_MULTI_HEIGHT + QP_THEME_LIST_ITEM_SEPERATOR_HEIGHT);
+                               max: -1 (QP_THEME_LIST_ITEM_NOTIFICATION_LEGACY_SINGLE_MULTI_HEIGHT + QP_THEME_LIST_ITEM_SEPERATOR_HEIGHT);
+                       }
+               }
+               part {
+                       name: "seperator.top";
+                       type: SPACER;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 QP_THEME_LIST_ITEM_SEPERATOR_HEIGHT;
+                               fixed: 0 1;
+                               rel1 {
+                                       to: "background";
+                                       relative: 0.0 0.0;
+                               }
+                               rel2 {
+                                       to: "background";
+                                       relative: 1.0 0.0;
+                               }
+                               align: 0.0 0.0;
+                       }
+               }
+               part {
+                       name: "seperator.left";
+                       type: SPACER;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 0;
+                               fixed: 1 0;
+                               rel1 {
+                                       to: "background";
+                                       relative: 0.0 0.0;
+                               }
+                               rel2 {
+                                       to: "background";
+                                       relative: 0.0 1.0;
+                               }
+                               align: 0.0 0.0;
+                       }
+               }
+               part {
+                       name: "seperator.right";
+                       type: SPACER;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 0;
+                               fixed: 1 0;
+                               rel1 {
+                                       to: "background";
+                                       relative: 1.0 0.0;
+                               }
+                               rel2 {
+                                       to: "background";
+                                       relative: 1.0 1.0;
+                               }
+                               align: 1.0 0.0;
+                       }
+               }
+               part{
+                       name: "clip.background";
+                       type:RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               fixed: 0 0;
+                               rel1 {to: "base";}
+                               rel2 {to: "base";}
+                               visible:1;
+                       }
+               }
+               part {
+                       name: "base";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               fixed: 0 1;
+                               min: 0 QP_THEME_LIST_ITEM_NOTIFICATION_LEGACY_SINGLE_MULTI_HEIGHT;
+                               max: -1 QP_THEME_LIST_ITEM_NOTIFICATION_LEGACY_SINGLE_MULTI_HEIGHT;
+                               rel1 {
+                                       relative: 1.0 1.0;
+                                       to_x: "seperator.left";
+                                       to_y: "seperator.top";
+                                       //offset: -5 -5;
+                               }
+                               rel2 {
+                                       relative: 0.0 1.0;
+                                       to_x: "seperator.right";
+                                       to_y: "seperator.top";
+                                       //offset: 5 5;
+                               }
+                               align: 0.0 0.0;
+                               color_class: QP_THEME_ITEM_BG_COLOR;
+                               color: 255 255 255 235;
+                       }
+                       description {
+                               state: "portrait" 0.0;
+                               inherit: "default" 0.0;
+                       }
+                       description {
+                               state: "landscape" 0.0;
+                               inherit: "default" 0.0;
+                       }
+               }
+
+               //section layout for margin
+
+               part {
+                       name: "margin.left";
+                       type: SPACER;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 9 0;
+                               fixed: 1 0;
+                               rel1 {
+                                       to: "base";
+                                       relative: 0.0 0.0;
+                               }
+                               rel2 {
+                                       to: "base";
+                                       relative: 0.0 1.0;
+                               }
+                               align: 0.0 0.0;
+                       }
+               }
+               part {
+                       name: "margin.right";
+                       type: SPACER;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 8 0;
+                               fixed: 1 0;
+                               rel1 {
+                                       to: "base";
+                                       relative: 1.0 0.0;
+                               }
+                               rel2 {
+                                       to: "base";
+                                       relative: 1.0 1.0;
+                               }
+                               align: 1.0 0.0;
+                       }
+               }
+               part {
+                       name: "margin.left.icon";
+                       type: SPACER;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 9 0;
+                               fixed: 1 0;
+                               rel1 {
+                                       to: "base";
+                                       relative: 0.0 0.0;
+                               }
+                               rel2 {
+                                       to: "base";
+                                       relative: 0.0 1.0;
+                               }
+                               align: 0.0 0.0;
+                       }
+               }
+               part {
+                       name: "margin.top.icon";
+                       type: SPACER;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 21;
+                               fixed: 0 1;
+                               rel1 {
+                                       to: "base";
+                                       relative: 0.0 0.0;
+                               }
+                               rel2 {
+                                       to: "base";
+                                       relative: 1.0 0.0;
+                               }
+                               align: 0.0 0.0;
+                       }
+               }
+               part {
+                       name: "margin.top.text";
+                       type: SPACER;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 12;
+                               fixed: 0 1;
+                               rel1 {
+                                       to: "base";
+                                       relative: 0.0 0.0;
+                               }
+                               rel2 {
+                                       to: "base";
+                                       relative: 1.0 0.0;
+                               }
+                               align: 0.0 0.0;
+                       }
+               }
+               part {
+                       name: "margin.bottom";
+                       type: SPACER;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 14;
+                               fixed: 0 1;
+                               rel1 {
+                                       to: "base";
+                                       relative: 0.0 1.0;
+                               }
+                               rel2 {
+                                       to: "base";
+                                       relative: 1.0 1.0;
+                               }
+                               align: 0.0 1.0;
+                       }
+               }
+               part {
+                       name: "margin.bottom.thin";
+                       type: SPACER;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 2;
+                               fixed: 0 1;
+                               rel1 {
+                                       to: "base";
+                                       relative: 0.0 1.0;
+                               }
+                               rel2 {
+                                       to: "base";
+                                       relative: 1.0 1.0;
+                               }
+                               align: 0.0 1.0;
+                       }
+               }
+
+               //section layout for elements
+               //section layout for icon
+               part {
+                       name: "rect.icon.bg";
+                       type: SPACER;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 46 46;
+                               max: 46 46;
+                               fixed: 1 1;
+                               rel1 {
+                                       to_x:"margin.left.icon";
+                                       to_y:"margin.top.icon";
+                                       relative: 1.0 1.0;
+                               }
+                               rel2 {
+                                       to_x:"margin.left.icon";
+                                       to_y:"margin.top.icon";
+                                       relative: 1.0 1.0;
+                               }
+                               align: 0.0 0.0;
+                       }
+               }
+               part {
+                       name: "rect.icon";
+                       type: SPACER;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               fixed: 1 1;
+                               min: 46 46;
+                               max: 46 46;
+                               rel1 {
+                                       to:"rect.icon.bg";
+                                       relative: 0.5 0.5;
+                               }
+                               rel2 {
+                                       to:"rect.icon.bg";
+                                       relative: 0.5 0.5;
+                               }
+                               align: 0.5 0.5;
+                       }
+               }
+               part {
+                       name: "rect.icon.sub.padding";
+                       type: SPACER;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 10;
+                               fixed: 0 1;
+                               rel1 {
+                                       to:"rect.icon.bg";
+                                       relative: 0.0 1.0;
+                               }
+                               rel2 {
+                                       to:"rect.icon.bg";
+                                       relative: 1.0 1.0;
+                               }
+                               align: 0.0 0.0;
+                       }
+               }
+               part {
+                       name: "rect.icon.sub";
+                       type: SPACER;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 29 29;
+                               max: 29 29;
+                               fixed: 1 1;
+                               rel1 {
+                                       to:"rect.icon.sub.padding";
+                                       relative: 1.0 1.0;
+                               }
+                               rel2 {
+                                       to:"rect.icon.sub.padding";
+                                       relative: 1.0 1.0;
+                               }
+                               align: 1.0 1.0;
+                       }
+               }
+
+               //section layout for texts
+               part {
+                       name: "rect.text.title";
+                       type: SPACER;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 36;
+                               max: 9999 36;
+                               fixed: 1 1;
+                               rel1 {
+                                       to_x:"rect.icon.bg";
+                                       to_y:"margin.top.text";
+                                       relative: 1.0 1.0;
+                                       offset: +17 0;
+                               }
+                               rel2 {
+                                       to_x:"margin.right";
+                                       to_y:"margin.top.text";
+                                       relative: 0.0 1.0;
+                               }
+                               align: 0.0 0.0;
+                       }
+                       description {
+                               state: "short" 0.0;
+                               inherit: "default" 0.0;
+                               rel1 {
+                                       to_x:"rect.icon.bg";
+                                       to_y:"margin.top.text";
+                                       relative: 1.0 1.0;
+                                       offset: +17 0;
+                               }
+                               rel2 {
+                                       to_x:"object.text.count";
+                                       to_y:"margin.top.text";
+                                       relative: 0.0 1.0;
+                                       offset: -13 0;
+                               }
+                               align: 0.0 0.0;
+                       }
+               }
+               part {
+                       name: "rect.text.contents";
+                       type: SPACER;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 27;
+                               max: 9999 36;
+                               fixed: 1 1;
+                               rel1 {
+                                       to:"rect.text.title";
+                                       relative: 0.0 1.0;
+                               }
+                               rel2 {
+                                       to_x:"object.text.time";
+                                       to_y:"rect.text.title";
+                                       relative: 0.0 1.0;
+                               }
+                               align: 0.0 0.0;
+                       }
+               }
+               part {
+                       name: "rect.text.info.2";
+                       type: SPACER;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 27;
+                               fixed: 0 1;
+                               rel1 {
+                                       to_x:"margin.left";
+                                       to_y:"margin.bottom";
+                                       relative: 1.0 0.0;
+                               }
+                               rel2 {
+                                       to_x:"margin.right";
+                                       to_y:"margin.bottom";
+                                       relative: 0.0 0.0;
+                               }
+                               align: 0.0 1.0;
+                       }
+               }
+               part {
+                       name: "rect.text.info.sub.2";
+                       type: SPACER;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 27;
+                               max: 0 27;
+                               fixed: 1 1;
+                               rel1 {
+                                       to_x:"margin.right";
+                                       to_y:"margin.bottom";
+                                       relative: 0.0 0.0;
+                               }
+                               rel2 {
+                                       to_x:"margin.right";
+                                       to_y:"margin.bottom";
+                                       relative: 0.0 0.0;
+                               }
+                               align: 1.0 1.0;
+                       }
+               }
+               part {
+                       name: "rect.text.info.2.short";
+                       type: SPACER;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               rel1 {
+                                       to_x:"margin.left";
+                                       to_y:"rect.text.info.2";
+                                       relative: 1.0 0.0;
+                               }
+                               rel2 {
+                                       to_x:"object.text.info.sub.2";
+                                       to_y:"rect.text.info.2";
+                                       relative: 0.0 1.0;
+                                       offset: -20 0;
+                               }
+                               align: 0.0 1.0;
+                       }
+               }
+               part {
+                       name: "rect.text.info.1";
+                       type: SPACER;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 27;
+                               fixed: 0 1;
+                               rel1 {
+                                       to_x:"margin.left";
+                                       to_y:"rect.text.info.2";
+                                       relative: 1.0 0.0;
+                               }
+                               rel2 {
+                                       to_x:"margin.right";
+                                       to_y:"rect.text.info.2";
+                                       relative: 0.0 0.0;
+                               }
+                               align: 0.0 1.0;
+                       }
+               }
+               part {
+                       name: "rect.text.info.1.multiline";
+                       type: SPACER;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               fixed: 1 1;
+                               rel1 {
+                                       to_x:"margin.left";
+                                       to_y:"rect.text.info.1";
+                                       relative: 1.0 0.0;
+                               }
+                               rel2 {
+                                       to_x:"margin.right";
+                                       to_y:"margin.bottom.thin";
+                                       relative: 0.0 0.0;
+                               }
+                               align: 0.0 0.0;
+                       }
+               }
+               part {
+                       name: "rect.text.info.sub.1";
+                       type: SPACER;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 27;
+                               max: 0 27;
+                               fixed: 1 1;
+                               rel1 {
+                                       to_x:"margin.right";
+                                       to_y:"rect.text.info.2";
+                                       relative: 0.0 0.0;
+                               }
+                               rel2 {
+                                       to_x:"margin.right";
+                                       to_y:"rect.text.info.2";
+                                       relative: 0.0 0.0;
+                               }
+                               align: 1.0 1.0;
+                       }
+               }
+               part {
+                       name: "rect.text.info.1.short";
+                       type: SPACER;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               rel1 {
+                                       to_x:"margin.left";
+                                       to_y:"rect.text.info.1";
+                                       relative: 1.0 0.0;
+                               }
+                               rel2 {
+                                       to_x:"object.text.info.sub.1";
+                                       to_y:"rect.text.info.1";
+                                       relative: 0.0 1.0;
+                                       offset: -13 0;
+                               }
+                               align: 0.0 1.0;
+                       }
+               }
+
+               //section objects
+               part{
+                       name: "object.icon.background";
+                       type:SWALLOW;
+                       scale: 1;
+                       clip_to: "clip.background";
+                       description {
+                               state: "default" 0.0;
+                               fixed: 0 0;
+                               rel1 {to: "base";}
+                               rel2 {to: "base";}
+                               visible:0;
+                       }
+                       description {
+                               state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               visible:0;
+                       }
+               }
+               part {
+                       name: "object.touch.effect";
+                       type: RECT;
+                       mouse_events: 0;
+                       description {
+                               state: "default" 0.0;
+                               rel1.to:"base";
+                               rel2.to:"base";
+                               color: 0 0 0 0;
+                               visible: 0;
+                       }
+                       description {
+                               state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               color: 255 255 255 255;
+                               color_class: BOX_COLOR_BG_HIGHLIGHT;
+                               visible:0;
+                       }
+                       description {
+                               state: "show.dim" 0.0;
+                               inherit: "default" 0.0;
+                               color: 255 255 255 255;
+                               color_class: BOX_COLOR_BG_HIGHLIGHT_DIM;
+                               visible:0;
+                       }
+               }
+               part{
+                       name: "object.icon.bg.dim";
+                       type:IMAGE;
+                       scale:1;
+                       description {
+                               state: "default" 0.0;
+                               fixed: 0 0;
+                               rel1 {to: "base";}
+                               rel2 {to: "base";}
+                               image {
+                                       normal:"quick_image_dimmed_port.png";
+                                       border: 0 0 0 0;
+                                       border_scale: 1;
+                               }
+                               visible:0;
+                       }
+                       description {
+                               state: "portrait" 0.0;
+                               inherit: "default" 0.0;
+                               image {
+                                       normal:"quick_image_dimmed_port.png";
+                                       border: 0 0 0 0;
+                                       border_scale: 1;
+                               }
+                               visible:0;
+                       }
+                       description {
+                               state: "landscape" 0.0;
+                               inherit: "default" 0.0;
+                               image {
+                                       normal:"quick_image_dimmed_land.png";
+                                       border: 0 0 0 0;
+                                       border_scale: 1;
+                               }
+                               visible:1;
+                       }
+               }
+               part{
+                       name: BOX_PART_ICON;
+                       type:SWALLOW;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               fixed: 1 1;
+                               min: BOX_ICON_BG_SIZE_W BOX_ICON_BG_SIZE_H;
+                               max: BOX_ICON_BG_SIZE_W BOX_ICON_BG_SIZE_H;
+                               rel1 {to: "rect.icon";}
+                               rel2 {to: "rect.icon";}
+                               visible:0;
+                       }
+                       description {
+                               state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               visible:1;
+                       }
+               }
+               part{
+                       name: "object.icon.press";
+                       type:IMAGE;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               fixed: 1 1;
+                               min: BOX_ICON_BG_SIZE_W BOX_ICON_BG_SIZE_H;
+                               max: BOX_ICON_BG_SIZE_W BOX_ICON_BG_SIZE_H;
+                               rel1 {to: "rect.icon.bg";}
+                               rel2 {to: "rect.icon.bg";}
+                               image {
+                                       normal:"icon_press.png";
+                                       border: 0 0 0 0;
+                                       border_scale: 1;
+                               }
+                               visible:0;
+                       }
+                       description {
+                               state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               visible:1;
+                       }
+                       description {
+                               state: "hide" 0.0;
+                               inherit: "default" 0.0;
+                               visible:0;
+                       }
+               }
+               part{
+                       name: BOX_PART_ICON_SUB;
+                       type:SWALLOW;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               fixed: 1 1;
+                               min: BOX_ICON_SUB_SIZE_W BOX_ICON_SUB_SIZE_H;
+                               max: BOX_ICON_SUB_SIZE_W BOX_ICON_SUB_SIZE_H;
+                               rel1 {to: "rect.icon.sub";}
+                               rel2 {to: "rect.icon.sub";}
+                               visible:0;
+                       }
+                       description {
+                               state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               visible:1;
+                       }
+               }
+
+               part {
+                       name: "object.text.title";
+                       scale: 1;
+                       type: TEXTBLOCK;
+                       multiline: 1;
+                       description {
+                               state: "default" 0.0;
+                               rel1 {to: "rect.text.title";}
+                               rel2 {to: "rect.text.title";}
+                               text {
+                                       style: "noti_list_title";
+                                       align: 0.0 0.5;
+                               }
+                               visible:0;
+                       }
+                       description {
+                               state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               visible:1;
+                       }
+                       description {
+                               state: "show.effect" 0.0;
+                               inherit: "default" 0.0;
+                               text {
+                                       style: "noti_list_title_effect";
+                               }
+                               visible:1;
+                       }
+               }
+
+               part {
+                       name: "object.text.contents";
+                       scale: 1;
+                       type: TEXTBLOCK;
+                       description {
+                               state: "default" 0.0;
+                               rel1 {to: "rect.text.contents";}
+                               rel2 {to: "rect.text.contents";}
+                               text {
+                                       style: "noti_list_contents";
+                               }
+                               visible:0;
+                       }
+                       description {
+                               state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               visible:1;
+                       }
+                       description {
+                               state: "show.effect" 0.0;
+                               inherit: "default" 0.0;
+                               text {
+                                       style: "noti_list_contents_effect";
+                               }
+                               visible:1;
+                       }
+               }
+               part {
+                       name: "object.text.count";
+                       scale: 1;
+                       type: TEXTBLOCK;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 36;
+                               max: 79 36;
+                               rel1 {
+                                       to_x:"margin.right";
+                                       to_y:"rect.text.title";
+                                       relative: 0.0 0.0;
+                               }
+                               rel2 {
+                                       to_x:"margin.right";
+                                       to_y:"rect.text.title";
+                                       relative: 0.0 0.0;
+                               }
+                               text {
+                                       style: "noti_list_count";
+                                       align: 1.0 0.5;
+                                       min: 1 0;
+                               }
+                               visible:0;
+                               align: 1.0 0.0;
+                       }
+                       description {
+                               state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               visible:1;
+                       }
+                       description {
+                               state: "show.effect" 0.0;
+                               inherit: "default" 0.0;
+                               text {
+                                       style: "noti_list_count_effect";
+                                       align: 1.0 0.5;
+                                       min: 1 0;
+                               }
+                               visible:1;
+                       }
+               }
+               part {
+                       name: "object.text.time";
+                       type: TEXTBLOCK;
+                       mouse_events: 0;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 27;
+                               max: 100 36;
+                               rel1 {
+                                       to_x:"margin.right";
+                                       to_y:"rect.text.title";
+                                       relative: 0.0 1.0;
+                               }
+                               rel2 {
+                                       to_x:"margin.right";
+                                       to_y:"rect.text.title";
+                                       relative: 0.0 1.0;
+                               }
+                               text {
+                                       style: "noti_list_time";
+                                       align: 1.0 0.5;
+                                       min: 1 0;
+                               }
+                               visible:0;
+                               align: 1.0 0.0;
+                       }
+                       description {
+                               state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               visible:1;
+                       }
+                       description {
+                               state: "show.effect" 0.0;
+                               inherit: "default" 0.0;
+                               text {
+                                       style: "noti_list_time_effect";
+                                       align: 1.0 0.5;
+                                       min: 1 0;
+                               }
+                               visible:1;
+                       }
+               }
+               part {
+                       name: "object.text.info.1";
+                       scale: 1;
+                       type: TEXTBLOCK;
+                       description {
+                               state: "default" 0.0;
+                               rel1 {to: "rect.text.info.1";}
+                               rel2 {to: "rect.text.info.1";}
+                               text {
+                                       style: "noti_list_info";
+                                       align: 0.0 0.5;
+                               }
+                               visible:0;
+                       }
+                       description {
+                               state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               visible:0;
+                       }
+                       description {
+                               state: "show.effect" 0.0;
+                               inherit: "default" 0.0;
+                               text {
+                                       style: "noti_list_info_effect";
+                                       align: 0.0 0.5;
+                               }
+                               visible:0;
+                       }
+               }
+               part {
+                       name: "object.text.info.1.short";
+                       scale: 1;
+                       type: TEXTBLOCK;
+                       description {
+                               state: "default" 0.0;
+                               rel1 {to: "rect.text.info.1.short";}
+                               rel2 {to: "rect.text.info.1.short";}
+                               text {
+                                       style: "noti_list_info";
+                                       align: 0.0 0.5;
+                               }
+                               visible:0;
+                       }
+                       description {
+                               state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               visible:0;
+                       }
+                       description {
+                               state: "show.effect" 0.0;
+                               inherit: "default" 0.0;
+                               text {
+                                       style: "noti_list_info_effect";
+                                       align: 0.0 0.5;
+                               }
+                               visible:0;
+                       }
+               }
+               part {
+                       name: "object.text.info.1.multiline";
+                       scale: 1;
+                       type: TEXTBLOCK;
+                       multiline: 1;
+                       description {
+                               state: "default" 0.0;
+                               align: 0.0 0.0;
+                               fixed: 1 1;
+                               rel1 {
+                                       to: "rect.text.info.1.multiline";
+                               }
+                               rel2 {
+                                       to: "rect.text.info.1.multiline";
+                               }
+                               text {
+                                       style: "noti_list_info";
+                                       align: 0.0 0.0;
+                               }
+                               visible:0;
+                       }
+                       description {
+                               state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               visible:0;
+                       }
+                       description {
+                               state: "show.effect" 0.0;
+                               inherit: "default" 0.0;
+                               text {
+                                       style: "noti_list_info_effect";
+                               }
+                               visible:0;
+                       }
+               }
+               part {
+                       name: "object.text.info.sub.1";
+                       scale: 1;
+                       type: TEXTBLOCK;
+                       description {
+                               state: "default" 0.0;
+                               rel1 {
+                                       to: "rect.text.info.sub.1";
+                                       relative: 1.0 0.0;
+                               }
+                               rel2 {
+                                       to: "rect.text.info.sub.1";
+                                       relative: 1.0 1.0;
+                               }
+                               text {
+                                       style: "noti_list_info_sub";
+                                       align: 1.0 0.5;
+                                       min: 1 0;
+                               }
+                               visible:0;
+                               align:1.0 0.0;
+                       }
+                       description {
+                               state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               visible:0;
+                       }
+                       description {
+                               state: "show.effect" 0.0;
+                               inherit: "default" 0.0;
+                               text {
+                                       style: "noti_list_info_sub_effect";
+                                       align: 1.0 0.5;
+                                       min: 1 0;
+                               }
+                               visible:0;
+                       }
+               }
+
+               part {
+                       name: "object.text.info.2";
+                       scale: 1;
+                       type: TEXTBLOCK;
+                       description {
+                               state: "default" 0.0;
+                               rel1 {to: "rect.text.info.2";}
+                               rel2 {to: "rect.text.info.2";}
+                               text {
+                                       style: "noti_list_info";
+                                       align: 0.0 0.5;
+                               }
+                               visible:0;
+                       }
+                       description {
+                               state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               visible:0;
+                       }
+                       description {
+                               state: "show.effect" 0.0;
+                               inherit: "default" 0.0;
+                               text {
+                                       style: "noti_list_info_effect";
+                                       align: 0.0 0.5;
+                               }
+                               visible:0;
+                       }
+               }
+               part {
+                       name: "object.text.info.2.short";
+                       scale: 1;
+                       type: TEXTBLOCK;
+                       description {
+                               state: "default" 0.0;
+                               rel1 {to: "rect.text.info.2.short";}
+                               rel2 {to: "rect.text.info.2.short";}
+                               text {
+                                       style: "noti_list_info";
+                                       align: 0.0 0.5;
+                               }
+                               visible:0;
+                       }
+                       description {
+                               state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               visible:0;
+                       }
+                       description {
+                               state: "show.effect" 0.0;
+                               inherit: "default" 0.0;
+                               text {
+                                       style: "noti_list_info_effect";
+                                       align: 0.0 0.5;
+                               }
+                               visible:0;
+                       }
+               }
+               part {
+                       name: "object.text.info.sub.2";
+                       scale: 1;
+                       type: TEXTBLOCK;
+                       description {
+                               state: "default" 0.0;
+                               rel1 {
+                                       to: "rect.text.info.sub.2";
+                                       relative: 1.0 0.0;
+                               }
+                               rel2 {
+                                       to: "rect.text.info.sub.2";
+                                       relative: 1.0 1.0;
+                               }
+                               text {
+                                       style: "noti_list_info_sub";
+                                       align: 1.0 0.5;
+                                       min: 1 0;
+                               }
+                               visible:0;
+                               align:1.0 0.0;
+                       }
+                       description {
+                               state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               visible:0;
+                       }
+                       description {
+                               state: "show.effect" 0.0;
+                               inherit: "default" 0.0;
+                               text {
+                                       style: "noti_list_info_sub_effect";
+                                       align: 1.0 0.5;
+                                       min: 1 0;
+                               }
+                               visible:0;
+                       }
+               }
+               part {
+                       name: "object.layer.touch.background";
+                       mouse_events: 1;
+                       repeat_events: 1;
+                       scale: 1;
+                       type: RECT;
+                       description {
+                               state: "default" 0.0;
+                               rel1 {to: "base";}
+                               rel2 {to: "base";}
+                               color: 0 0 0 0;
+                       }
+               }
+               QUICKPANEL_FOCUS_OBJECT("focus", "base", "base")
+               part {
+                       name: "object.layer.touch.button.1";
+                       mouse_events: 1;
+                       repeat_events: 0;
+                       scale: 1;
+                       type: RECT;
+                       description {
+                               state: "default" 0.0;
+                               rel1 {
+                                       to: "rect.icon";
+                               }
+                               rel2 {to: "rect.icon";}
+                               color: 0 0 0 0;
+                       }
+                       description {
+                               state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               visible:1;
+                       }
+                       description {
+                               state: "hide" 0.0;
+                               inherit: "default" 0.0;
+                               visible: 0;
+                       }
+               }
+       }
+
+       programs {
+               program {
+                       name: "init.layout";
+                       signal: "load";
+                       source: "";
+                       in: 0.0 0.0;
+                       script{
+                               init_variables();
+                       }
+               }
+               program{
+                       name: "box.show.dim";
+                       signal: "box.show.dim";
+                       source: "box.prog";
+                       script {
+                               set_int(g_is_show_dim_bg, 1);
+                       }
+               }
+               program{
+                       name: "box.hide.dim";
+                       signal: "box.hide.dim";
+                       source: "box.prog";
+                       script {
+                               set_int(g_is_show_dim_bg, 0);
+                       }
+               }
+               program{
+                       name: "box.portrait";
+                       signal: "box.portrait";
+                       source: "box.prog";
+                       action: STATE_SET "portrait" 0.0;
+                       target: "base";
+                       after: "box.portrait.custom";
+               }
+               program{
+                       name: "box.landscape";
+                       signal: "box.landscape";
+                       source: "box.prog";
+                       action: STATE_SET "landscape" 0.0;
+                       target: "base";
+                       after: "box.landscape.custom";
+               }
+               program{
+                       name: "box.portrait.custom";
+                       source: "box.prog";
+                       script {
+                               if (get_int(g_is_show_dim_bg) == 1) {
+                                       set_state(PART:"object.icon.bg.dim", "portrait", 0.0);
+                               }
+                       }
+               }
+               program{
+                       name: "box.landscape.custom";
+                       source: "box.prog";
+                       script {
+                               if (get_int(g_is_show_dim_bg) == 1) {
+                                       set_state(PART:"object.icon.bg.dim", "landscape", 0.0);
+                               }
+                       }
+               }
+#ifdef TBD
+               program{
+                       name: "box.touch.down";
+                       signal: "mouse,clicked,1";
+                       source: "object.layer.touch.background";
+                       action: SIGNAL_EMIT "selected" "edje";
+               }
+#endif
+               program{
+                       name: "effect,mouse,down";
+                       signal: "mouse,down,1";
+                       source: "object.layer.touch.background";
+                       script {
+                               if (get_int(g_is_show_dim_bg) == 1) {
+                                       set_state(PART:"object.touch.effect", "show.dim", 0.0);
+                               } else {
+                                       set_state(PART:"object.touch.effect", "show", 0.0);
+                               }
+                       }
+               }
+               program{
+                       name: "effect,mouse,up";
+                       signal: "mouse,up,1";
+                       source: "object.layer.touch.background";
+                       action: STATE_SET "default" 0.0;
+                       transition: ACCELERATE 0.20;
+                       target: "object.touch.effect";
+               }
+               program{
+                       name: "box.button.1.touch.clicked";
+                       signal: "mouse,clicked,1";
+                       source: "object.layer.touch.button.1";
+                       action: SIGNAL_EMIT "button_1" "edje";
+               }
+               program{
+                       name: "box.button.1.touch.down";
+                       signal: "mouse,down,1";
+                       source: "object.layer.touch.button.1";
+                       action: STATE_SET "show" 0.0;
+                       target: "object.icon.press";
+               }
+               program{
+                       name: "box.button.1.touch.up";
+                       signal: "mouse,up,1";
+                       source: "object.layer.touch.button.1";
+                       action: STATE_SET "hide" 0.0;
+                       target: "object.icon.press";
+               }
+               program{
+                       name: "box.show.icon.bg";
+                       signal: "box.show.icon.bg";
+                       source: "box.prog";
+                       action: STATE_SET "show" 0.0;
+                       target: "object.layer.touch.button.1";
+               }
+               program{
+                       name: "box.hide.icon.bg";
+                       signal: "box.hide.icon.bg";
+                       source: "box.prog";
+                       action: STATE_SET "hide" 0.0;
+                       target: "object.layer.touch.button.1";
+               }
+               program{
+                       name: "box.title.with.icon";
+                       signal: "box.title.with.icon";
+                       source: "box.prog";
+                       action: STATE_SET "default" 0.0;
+                       target: "rect.text.title";
+               }
+               program{
+                       name: "box.title.without.icon";
+                       signal: "box.title.without.icon";
+                       source: "box.prog";
+                       action: STATE_SET "without_icon" 0.0;
+                       target: "rect.text.title";
+               }
+               program{
+                       name: "title.long";
+                       signal: "title.long";
+                       source: "prog";
+                       action: STATE_SET "default" 0.0;
+                       target: "rect.text.title";
+               }
+               program{
+                       name: "title.short";
+                       signal: "title.short";
+                       source: "prog";
+                       action: STATE_SET "short" 0.0;
+                       target: "rect.text.title";
+               }
+               MAKE_PART_SHOW_PROGRAM("object.icon.background")
+               MAKE_PART_SHOW_PROGRAM("object.icon")
+               MAKE_PART_SHOW_PROGRAM("object.icon.sub")
+               MAKE_PART_SHOW_TEXT_PROGRAM("object.text.title")
+               MAKE_PART_SHOW_TEXT_PROGRAM("object.text.contents")
+               MAKE_PART_SHOW_TEXT_PROGRAM("object.text.count")
+               MAKE_PART_SHOW_TEXT_PROGRAM("object.text.time")
+               MAKE_PART_SHOW_TEXT_PROGRAM("object.text.info.1")
+               MAKE_PART_SHOW_TEXT_PROGRAM("object.text.info.1.short")
+               MAKE_PART_SHOW_TEXT_PROGRAM("object.text.info.1.multiline")
+               MAKE_PART_SHOW_TEXT_PROGRAM("object.text.info.sub.1")
+               MAKE_PART_SHOW_TEXT_PROGRAM("object.text.info.2")
+               MAKE_PART_SHOW_TEXT_PROGRAM("object.text.info.2.short")
+               MAKE_PART_SHOW_TEXT_PROGRAM("object.text.info.sub.2")
+       }
+}
+
+
+group {
+       name: "quickpanel/listitem_legacy/thumbnail";
+
+       script {
+               public g_is_show_dim_bg;
+
+               public init_variables() {
+                       set_int(g_is_show_dim_bg, 0);
+               }
+       }
+
+       parts {
+               part {
+                       name: "background";
+                       type: SPACER;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 (QP_THEME_LIST_ITEM_NOTIFICATION_LEGACY_SINGLE_MULTI_HEIGHT + QP_THEME_LIST_ITEM_SEPERATOR_HEIGHT);
+                               max: -1 (QP_THEME_LIST_ITEM_NOTIFICATION_LEGACY_SINGLE_MULTI_HEIGHT + QP_THEME_LIST_ITEM_SEPERATOR_HEIGHT);
+                       }
+               }
+               part {
+                       name: "seperator.top";
+                       type: SPACER;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 QP_THEME_LIST_ITEM_SEPERATOR_HEIGHT;
+                               fixed: 0 1;
+                               rel1 {
+                                       to: "background";
+                                       relative: 0.0 0.0;
+                               }
+                               rel2 {
+                                       to: "background";
+                                       relative: 1.0 0.0;
+                               }
+                               align: 0.0 0.0;
+                       }
+               }
+               part {
+                       name: "seperator.left";
+                       type: SPACER;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 0;
+                               fixed: 1 0;
+                               rel1 {
+                                       to: "background";
+                                       relative: 0.0 0.0;
+                               }
+                               rel2 {
+                                       to: "background";
+                                       relative: 0.0 1.0;
+                               }
+                               align: 0.0 0.0;
+                       }
+               }
+               part {
+                       name: "seperator.right";
+                       type: SPACER;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 0;
+                               fixed: 1 0;
+                               rel1 {
+                                       to: "background";
+                                       relative: 1.0 0.0;
+                               }
+                               rel2 {
+                                       to: "background";
+                                       relative: 1.0 1.0;
+                               }
+                               align: 1.0 0.0;
+                       }
+               }
+               part{
+                       name: "clip.background";
+                       type:RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               fixed: 0 0;
+                               rel1 {to: "base";}
+                               rel2 {to: "base";}
+                               visible:1;
+                       }
+               }
+               part {
+                       name: "base";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               fixed: 0 1;
+                               min: 0 QP_THEME_LIST_ITEM_NOTIFICATION_LEGACY_SINGLE_MULTI_HEIGHT;
+                               max: -1 QP_THEME_LIST_ITEM_NOTIFICATION_LEGACY_SINGLE_MULTI_HEIGHT;
+                               rel1 {
+                                       relative: 1.0 1.0;
+                                       to_x: "seperator.left";
+                                       to_y: "seperator.top";
+                               }
+                               rel2 {
+                                       relative: 0.0 1.0;
+                                       to_x: "seperator.right";
+                                       to_y: "seperator.top";
+                               }
+                               align: 0.0 0.0;
+                               color_class: QP_THEME_ITEM_BG_COLOR;
+                               color: 255 255 255 235;
+                       }
+                       description {
+                               state: "portrait" 0.0;
+                               inherit: "default" 0.0;
+                       }
+                       description {
+                               state: "landscape" 0.0;
+                               inherit: "default" 0.0;
+                       }
+               }
+
+               //section layout for margin
+
+               part {
+                       name: "margin.left";
+                       type: SPACER;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 10 0;
+                               fixed: 1 0;
+                               rel1 {
+                                       to: "base";
+                                       relative: 0.0 0.0;
+                               }
+                               rel2 {
+                                       to: "base";
+                                       relative: 0.0 1.0;
+                               }
+                               align: 0.0 0.0;
+                       }
+               }
+               part {
+                       name: "margin.right";
+                       type: SPACER;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 8 0;
+                               fixed: 1 0;
+                               rel1 {
+                                       to: "base";
+                                       relative: 1.0 0.0;
+                               }
+                               rel2 {
+                                       to: "base";
+                                       relative: 1.0 1.0;
+                               }
+                               align: 1.0 0.0;
+                       }
+               }
+               part {
+                       name: "margin.left.icon";
+                       type: SPACER;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 10 0;
+                               fixed: 1 0;
+                               rel1 {
+                                       to: "base";
+                                       relative: 0.0 0.0;
+                               }
+                               rel2 {
+                                       to: "base";
+                                       relative: 0.0 1.0;
+                               }
+                               align: 0.0 0.0;
+                       }
+               }
+               part {
+                       name: "margin.top.icon";
+                       type: SPACER;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 21;
+                               fixed: 0 1;
+                               rel1 {
+                                       to: "base";
+                                       relative: 0.0 0.0;
+                               }
+                               rel2 {
+                                       to: "base";
+                                       relative: 1.0 0.0;
+                               }
+                               align: 0.0 0.0;
+                       }
+               }
+               part {
+                       name: "margin.top.text";
+                       type: SPACER;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 12;
+                               fixed: 0 1;
+                               rel1 {
+                                       to: "base";
+                                       relative: 0.0 0.0;
+                               }
+                               rel2 {
+                                       to: "base";
+                                       relative: 1.0 0.0;
+                               }
+                               align: 0.0 0.0;
+                       }
+               }
+               part {
+                       name: "margin.bottom";
+                       type: SPACER;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 10;
+                               fixed: 0 1;
+                               rel1 {
+                                       to: "base";
+                                       relative: 0.0 1.0;
+                               }
+                               rel2 {
+                                       to: "base";
+                                       relative: 1.0 1.0;
+                               }
+                               align: 0.0 1.0;
+                       }
+               }
+               part {
+                       name: "margin.bottom.thin";
+                       type: SPACER;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 2;
+                               fixed: 0 1;
+                               rel1 {
+                                       to: "base";
+                                       relative: 0.0 1.0;
+                               }
+                               rel2 {
+                                       to: "base";
+                                       relative: 1.0 1.0;
+                               }
+                               align: 0.0 1.0;
+                       }
+               }
+
+               //section layout for elements
+               //section layout for icon
+               part {
+                       name: "rect.icon.bg";
+                       type: SPACER;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 46 46;
+                               max: 46 46;
+                               fixed: 1 1;
+                               rel1 {
+                                       to_x:"margin.left.icon";
+                                       to_y:"margin.top.icon";
+                                       relative: 1.0 1.0;
+                               }
+                               rel2 {
+                                       to_x:"margin.left.icon";
+                                       to_y:"margin.top.icon";
+                                       relative: 1.0 1.0;
+                               }
+                               align: 0.0 0.0;
+                       }
+               }
+               part {
+                       name: "rect.icon";
+                       type: SPACER;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               fixed: 1 1;
+                               min: 46 46;
+                               max: 46 46;
+                               rel1 {
+                                       to:"rect.icon.bg";
+                                       relative: 0.5 0.5;
+                               }
+                               rel2 {
+                                       to:"rect.icon.bg";
+                                       relative: 0.5 0.5;
+                               }
+                               align: 0.5 0.5;
+                       }
+               }
+               part {
+                       name: "rect.icon.sub.padding";
+                       type: SPACER;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 10;
+                               fixed: 0 1;
+                               rel1 {
+                                       to:"rect.icon.bg";
+                                       relative: 0.0 1.0;
+                               }
+                               rel2 {
+                                       to:"rect.icon.bg";
+                                       relative: 1.0 1.0;
+                               }
+                               align: 0.0 0.0;
+                       }
+               }
+               part {
+                       name: "rect.icon.sub";
+                       type: SPACER;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 29 29;
+                               max: 29 29;
+                               fixed: 1 1;
+                               rel1 {
+                                       to:"rect.icon.sub.padding";
+                                       relative: 1.0 1.0;
+                               }
+                               rel2 {
+                                       to:"rect.icon.sub.padding";
+                                       relative: 1.0 1.0;
+                               }
+                               align: 1.0 1.0;
+                       }
+               }
+
+               //section layout for texts
+               part {
+                       name: "rect.text.title";
+                       type: SPACER;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 36;
+                               max: 9999 36;
+                               fixed: 1 1;
+                               rel1 {
+                                       to_x:"rect.icon.bg";
+                                       to_y:"margin.top.text";
+                                       relative: 1.0 1.0;
+                                       offset: +17 0;
+                               }
+                               rel2 {
+                                       to_x:"margin.right";
+                                       to_y:"margin.top.text";
+                                       relative: 0.0 1.0;
+                               }
+                               align: 0.0 0.0;
+                       }
+                       description {
+                               state: "short" 0.0;
+                               inherit: "default" 0.0;
+                               rel1 {
+                                       to_x:"rect.icon.bg";
+                                       to_y:"margin.top.text";
+                                       relative: 1.0 1.0;
+                                       offset: +17 0;
+                               }
+                               rel2 {
+                                       to_x:"object.text.count";
+                                       to_y:"margin.top.text";
+                                       relative: 0.0 1.0;
+                                       offset: -13 0;
+                               }
+                               align: 0.0 0.0;
+                       }
+               }
+               part {
+                       name: "rect.text.contents";
+                       type: SPACER;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 27;
+                               max: 9999 36;
+                               fixed: 1 1;
+                               rel1 {
+                                       to_x:"rect.icon.bg";
+                                       to_y:"rect.text.title";
+                                       relative: 1.0 1.0;
+                               }
+                               rel2 {
+                                       to_x:"object.text.time";
+                                       to_y:"rect.text.title";
+                                       relative: 0.0 1.0;
+                               }
+                               align: 0.0 0.0;
+                       }
+               }
+               part {
+                       name: "rect.text.info.2";
+                       type: SPACER;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 27;
+                               fixed: 0 1;
+                               rel1 {
+                                       to_x:"rect.thumbnail.list.1.padding";
+                                       to_y:"margin.bottom";
+                                       relative: 1.0 0.0;
+                               }
+                               rel2 {
+                                       to_x:"margin.right";
+                                       to_y:"margin.bottom";
+                                       relative: 0.0 0.0;
+                               }
+                               align: 0.0 1.0;
+                       }
+               }
+               part {
+                       name: "rect.text.info.1";
+                       type: SPACER;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 27;
+                               fixed: 0 1;
+                               rel1 {
+                                       to_x:"rect.thumbnail.list.1.padding";
+                                       to_y:"rect.text.info.2";
+                                       relative: 1.0 0.0;
+                               }
+                               rel2 {
+                                       to_x:"margin.right";
+                                       to_y:"rect.text.info.2";
+                                       relative: 0.0 0.0;
+                               }
+                               align: 0.0 1.0;
+                       }
+               }
+               part {
+                       name: "rect.text.info.1.multiline";
+                       type: SPACER;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               fixed: 1 1;
+                               rel1 {
+                                       to_x:"rect.thumbnail.list.1.padding";
+                                       to_y:"rect.text.info.1";
+                                       relative: 1.0 0.0;
+                               }
+                               rel2 {
+                                       to_x:"margin.right";
+                                       to_y:"margin.bottom.thin";
+                                       relative: 0.0 0.0;
+                               }
+                               align: 0.0 0.0;
+                       }
+               }
+
+               //section layout for thumbnail
+               part {
+                       name: "rect.thumbnail.list.1";
+                       type: SPACER;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 64 64;
+                               rel1 {
+                                       to_x:"margin.left.icon";
+                                       to_y:"margin.bottom";
+                                       relative: 1.0 0.0;
+                               }
+                               rel2 {
+                                       to_x:"margin.left.icon";
+                                       to_y:"margin.bottom";
+                                       relative: 1.0 0.0;
+                               }
+                               align: 0.0 1.0;
+                       }
+               }
+               part {
+                       name: "rect.thumbnail.list.1.padding";
+                       type: SPACER;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 8 0;
+                               rel1 {
+                                       to:"rect.thumbnail.list.1";
+                                       relative: 1.0 0.0;
+                               }
+                               rel2 {
+                                       to:"rect.thumbnail.list.1";
+                                       relative: 1.0 1.0;
+                               }
+                               align: 0.0 0.0;
+                       }
+                       description {
+                               state: "portrait" 0.0;
+                               inherit: "default" 0.0;
+                       }
+                       description {
+                               state: "landscape" 0.0;
+                               inherit: "default" 0.0;
+                               min: 0 0;
+                       }
+               }
+               part {
+                       name: "rect.thumbnail.list.2";
+                       type: SPACER;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 64 64;
+                               rel1 {
+                                       to_x:"rect.thumbnail.list.1.padding";
+                                       to_y:"margin.bottom";
+                                       relative: 1.0 0.0;
+                               }
+                               rel2 {
+                                       to_x:"rect.thumbnail.list.1.padding";
+                                       to_y:"margin.bottom";
+                                       relative: 1.0 0.0;
+                               }
+                               align: 0.0 1.0;
+                       }
+               }
+               part {
+                       name: "rect.thumbnail.list.2.padding";
+                       type: SPACER;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 8 0;
+                               rel1 {
+                                       to:"rect.thumbnail.list.2";
+                                       relative: 1.0 0.0;
+                               }
+                               rel2 {
+                                       to:"rect.thumbnail.list.2";
+                                       relative: 1.0 1.0;
+                               }
+                               align: 0.0 0.0;
+                       }
+                       description {
+                               state: "portrait" 0.0;
+                               inherit: "default" 0.0;
+                       }
+                       description {
+                               state: "landscape" 0.0;
+                               inherit: "default" 0.0;
+                               min: 0 0;
+                       }
+               }
+               part {
+                       name: "rect.thumbnail.list.3";
+                       type: SPACER;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 64 64;
+                               rel1 {
+                                       to_x:"rect.thumbnail.list.2.padding";
+                                       to_y:"margin.bottom";
+                                       relative: 1.0 0.0;
+                               }
+                               rel2 {
+                                       to_x:"rect.thumbnail.list.2.padding";
+                                       to_y:"margin.bottom";
+                                       relative: 1.0 0.0;
+                               }
+                               align: 0.0 1.0;
+                       }
+               }
+               part {
+                       name: "rect.thumbnail.list.3.padding";
+                       type: SPACER;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 8 0;
+                               rel1 {
+                                       to:"rect.thumbnail.list.3";
+                                       relative: 1.0 0.0;
+                               }
+                               rel2 {
+                                       to:"rect.thumbnail.list.3";
+                                       relative: 1.0 1.0;
+                               }
+                               align: 0.0 0.0;
+                       }
+                       description {
+                               state: "portrait" 0.0;
+                               inherit: "default" 0.0;
+                       }
+                       description {
+                               state: "landscape" 0.0;
+                               inherit: "default" 0.0;
+                               min: 0 0;
+                       }
+               }
+               part {
+                       name: "rect.thumbnail.list.4";
+                       type: SPACER;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 64 64;
+                               rel1 {
+                                       to_x:"rect.thumbnail.list.3.padding";
+                                       to_y:"margin.bottom";
+                                       relative: 1.0 0.0;
+                               }
+                               rel2 {
+                                       to_x:"rect.thumbnail.list.3.padding";
+                                       to_y:"margin.bottom";
+                                       relative: 1.0 0.0;
+                               }
+                               align: 0.0 1.0;
+                       }
+               }
+               part {
+                       name: "rect.thumbnail.list.4.padding";
+                       type: SPACER;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 8 0;
+                               rel1 {
+                                       to:"rect.thumbnail.list.4";
+                                       relative: 1.0 0.0;
+                               }
+                               rel2 {
+                                       to:"rect.thumbnail.list.4";
+                                       relative: 1.0 1.0;
+                               }
+                               align: 0.0 0.0;
+                       }
+                       description {
+                               state: "portrait" 0.0;
+                               inherit: "default" 0.0;
+                       }
+                       description {
+                               state: "landscape" 0.0;
+                               inherit: "default" 0.0;
+                               min: 0 0;
+                       }
+               }
+               part {
+                       name: "rect.thumbnail.list.5";
+                       type: SPACER;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 64 64;
+                               rel1 {
+                                       to_x:"rect.thumbnail.list.4.padding";
+                                       to_y:"margin.bottom";
+                                       relative: 1.0 0.0;
+                               }
+                               rel2 {
+                                       to_x:"rect.thumbnail.list.4.padding";
+                                       to_y:"margin.bottom";
+                                       relative: 1.0 0.0;
+                               }
+                               align: 0.0 1.0;
+                       }
+                       description {
+                               state: "portrait" 0.0;
+                               inherit: "default" 0.0;
+                       }
+                       description {
+                               state: "landscape" 0.0;
+                               inherit: "default" 0.0;
+                       }
+               }
+
+               part{
+                       name: "object.icon.background";
+                       type:SWALLOW;
+                       scale: 1;
+                       clip_to: "clip.background";
+                       description {
+                               state: "default" 0.0;
+                               fixed: 0 0;
+                               rel1 {to: "base";}
+                               rel2 {to: "base";}
+                               visible:0;
+                       }
+                       description {
+                               state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               visible:1;
+                       }
+               }
+               part { name: "object.touch.effect";
+                       type: RECT;
+                       mouse_events: 0;
+                       description {
+                               state: "default" 0.0;
+                               rel1.to:"base";
+                               rel2.to:"base";
+                               color: 0 0 0 0;
+                               visible: 0;
+                       }
+                       description {
+                               state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               color: 255 255 255 255;
+                               color_class: BOX_COLOR_BG_HIGHLIGHT;
+                               visible:1;
+                       }
+                       description {
+                               state: "show.dim" 0.0;
+                               inherit: "default" 0.0;
+                               color: 255 255 255 255;
+                               color_class: BOX_COLOR_BG_HIGHLIGHT_DIM;
+                               visible:1;
+                       }
+               }               
+               part{
+                       name: "object.icon.bg.dim";
+                       type:IMAGE;
+                       scale:1;
+                       description {
+                               state: "default" 0.0;
+                               fixed: 0 0;
+                               rel1 {to: "base";}
+                               rel2 {to: "base";}
+                               image {
+                                       normal:"quick_image_dimmed_port.png";
+                                       border: 0 0 0 0;
+                                       border_scale: 1;
+                               }
+                               visible:0;
+                       }
+                       description {
+                               state: "portrait" 0.0;
+                               inherit: "default" 0.0;
+                               image {
+                                       normal:"quick_image_dimmed_port.png";
+                                       border: 0 0 0 0;
+                                       border_scale: 1;
+                               }
+                               visible:1;
+                       }
+                       description {
+                               state: "landscape" 0.0;
+                               inherit: "default" 0.0;
+                               image {
+                                       normal:"quick_image_dimmed_land.png";
+                                       border: 0 0 0 0;
+                                       border_scale: 1;
+                               }
+                               visible:1;
+                       }
+               }
+               part{
+                       name: BOX_PART_ICON;
+                       type:SWALLOW;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               fixed: 1 1;
+                               min: BOX_ICON_BG_SIZE_W BOX_ICON_BG_SIZE_H;
+                               max: BOX_ICON_BG_SIZE_W BOX_ICON_BG_SIZE_H;
+                               rel1 {to: "rect.icon";}
+                               rel2 {to: "rect.icon";}
+                               visible:0;
+                       }
+                       description {
+                               state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               visible:1;
+                       }
+               }
+               part{
+                       name: "object.icon.press";
+                       type:IMAGE;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               fixed: 1 1;
+                               min: BOX_ICON_BG_SIZE_W BOX_ICON_BG_SIZE_H;
+                               max: BOX_ICON_BG_SIZE_W BOX_ICON_BG_SIZE_H;
+                               rel1 {to: "rect.icon.bg";}
+                               rel2 {to: "rect.icon.bg";}
+                               image {
+                                       normal:"icon_press.png";
+                                       border: 0 0 0 0;
+                                       border_scale: 1;
+                               }
+                               visible:0;
+                       }
+                       description {
+                               state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               visible:1;
+                       }
+                       description {
+                               state: "hide" 0.0;
+                               inherit: "default" 0.0;
+                               visible:0;
+                       }
+               }
+               part{
+                       name: BOX_PART_ICON_SUB;
+                       type:SWALLOW;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               fixed: 1 1;
+                               min: BOX_ICON_SUB_SIZE_W BOX_ICON_SUB_SIZE_H;
+                               max: BOX_ICON_SUB_SIZE_W BOX_ICON_SUB_SIZE_H;
+                               rel1 {to: "rect.icon.sub";}
+                               rel2 {to: "rect.icon.sub";}
+                               visible:0;
+                       }
+                       description {
+                               state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               visible:1;
+                       }
+               }
+
+               //section thumbnail
+               part{
+                       name: "object.thumbnail.list.1";
+                       type:SWALLOW;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               fixed: 0 0;
+                               rel1 {to: "rect.thumbnail.list.1";}
+                               rel2 {to: "rect.thumbnail.list.1";}
+                               visible:0;
+                       }
+                       description {
+                               state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               visible:1;
+                       }
+               }
+               part{
+                       name: "object.thumbnail.list.2";
+                       type:SWALLOW;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               fixed: 0 0;
+                               rel1 {to: "rect.thumbnail.list.2";}
+                               rel2 {to: "rect.thumbnail.list.2";}
+                               visible:0;
+                       }
+                       description {
+                               state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               visible:1;
+                       }
+               }
+               part{
+                       name: "object.thumbnail.list.3";
+                       type:SWALLOW;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               fixed: 0 0;
+                               rel1 {to: "rect.thumbnail.list.3";}
+                               rel2 {to: "rect.thumbnail.list.3";}
+                               visible:0;
+                       }
+                       description {
+                               state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               visible:1;
+                       }
+               }
+               part{
+                       name: "object.thumbnail.list.4";
+                       type:SWALLOW;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               fixed: 0 0;
+                               rel1 {to: "rect.thumbnail.list.4";}
+                               rel2 {to: "rect.thumbnail.list.4";}
+                               visible:0;
+                       }
+                       description {
+                               state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               visible:1;
+                       }
+               }
+               part{
+                       name: "object.thumbnail.list.5";
+                       type:SWALLOW;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               fixed: 0 0;
+                               rel1 {to: "rect.thumbnail.list.5";}
+                               rel2 {to: "rect.thumbnail.list.5";}
+                               visible: 1;
+                       }
+                       description {
+                               state: "portrait" 0.0;
+                               inherit: "default" 0.0;
+                       }
+                       description {
+                               state: "landscape" 0.0;
+                               inherit: "default" 0.0;
+                               visible: 1;
+                       }
+               }
+
+               part {
+                       name: "object.text.title";
+                       scale: 1;
+                       type: TEXTBLOCK;
+                       multiline: 1;
+                       description {
+                               state: "default" 0.0;
+                               rel1 {to: "rect.text.title";}
+                               rel2 {to: "rect.text.title";}
+                               text {
+                                       style: "noti_list_title";
+                                       align: 0.0 0.5;
+                               }
+                               visible:0;
+                       }
+                       description {
+                               state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               visible:1;
+                       }
+                       description {
+                               state: "show.effect" 0.0;
+                               inherit: "default" 0.0;
+                               text {
+                                       style: "noti_list_title_effect";
+                               }
+                               visible:1;
+                       }
+               }
+
+               part {
+                       name: "object.text.contents";
+                       scale: 1;
+                       type: TEXTBLOCK;
+                       description {
+                               state: "default" 0.0;
+                               rel1 {to: "rect.text.contents";}
+                               rel2 {to: "rect.text.contents";}
+                               text {
+                                       style: "noti_list_contents";
+                               }
+                               visible:0;
+                       }
+                       description {
+                               state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               visible:1;
+                       }
+                       description {
+                               state: "show.effect" 0.0;
+                               inherit: "default" 0.0;
+                               text {
+                                       style: "noti_list_contents_effect";
+                               }
+                               visible:1;
+                       }
+               }
+               part {
+                       name: "object.text.count";
+                       scale: 1;
+                       type: TEXTBLOCK;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 36;
+                               max: 79 36;
+                               rel1 {
+                                       to_x:"margin.right";
+                                       to_y:"rect.text.title";
+                                       relative: 0.0 0.0;
+                               }
+                               rel2 {
+                                       to_x:"margin.right";
+                                       to_y:"rect.text.title";
+                                       relative: 0.0 0.0;
+                               }
+                               text {
+                                       style: "noti_list_count";
+                                       align: 1.0 0.5;
+                                       min: 1 0;
+                               }
+                               visible:0;
+                               align: 1.0 0.0;
+                       }
+                       description {
+                               state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               visible:1;
+                       }
+                       description {
+                               state: "show.effect" 0.0;
+                               inherit: "default" 0.0;
+                               text {
+                                       style: "noti_list_count_effect";
+                                       align: 1.0 0.5;
+                                       min: 1 0;
+                               }
+                               visible:1;
+                       }
+               }
+               part {
+                       name: "object.text.time";
+                       type: TEXTBLOCK;
+                       mouse_events: 0;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 42;
+                               max: 100 36;
+                               rel1 {
+                                       to_x:"margin.right";
+                                       to_y:"rect.text.title";
+                                       relative: 0.0 1.0;
+                               }
+                               rel2 {
+                                       to_x:"margin.right";
+                                       to_y:"rect.text.title";
+                                       relative: 0.0 1.0;
+                               }
+                               text {
+                                       style: "noti_list_time";
+                                       align: 1.0 0.5;
+                                       min: 1 0;
+                               }
+                               visible:0;
+                               align: 1.0 0.0;
+                       }
+                       description {
+                               state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               visible:1;
+                       }
+                       description {
+                               state: "show.effect" 0.0;
+                               inherit: "default" 0.0;
+                               text {
+                                       style: "noti_list_time_effect";
+                                       align: 1.0 0.5;
+                                       min: 1 0;
+                               }
+                               visible:1;
+                       }
+               }
+               part {
+                       name: "object.text.info.1";
+                       scale: 1;
+                       type: TEXTBLOCK;
+                       description {
+                               state: "default" 0.0;
+                               rel1 {to: "rect.text.info.1";}
+                               rel2 {to: "rect.text.info.1";}
+                               text {
+                                       style: "noti_list_info";
+                                       align: 0.0 0.5;
+                               }
+                               visible:0;
+                       }
+                       description {
+                               state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               visible:0;
+                       }
+                       description {
+                               state: "show.effect" 0.0;
+                               inherit: "default" 0.0;
+                               text {
+                                       style: "noti_list_info_effect";
+                                       align: 0.0 0.5;
+                               }
+                               visible:0;
+                       }
+               }
+
+               part {
+                       name: "object.text.info.1.multiline";
+                       scale: 1;
+                       type: TEXTBLOCK;
+                       multiline: 1;
+                       description {
+                               state: "default" 0.0;
+                               align: 0.0 0.0;
+                               fixed: 1 1;
+                               rel1 {
+                                       to: "rect.text.info.1.multiline";
+                               }
+                               rel2 {
+                                       to: "rect.text.info.1.multiline";
+                               }
+                               text {
+                                       style: "noti_list_info";
+                                       align: 0.0 0.0;
+                               }
+                               visible:0;
+                       }
+                       description {
+                               state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               visible:0;
+                       }
+                       description {
+                               state: "show.effect" 0.0;
+                               inherit: "default" 0.0;
+                               text {
+                                       style: "noti_list_info_effect";
+                               }
+                               visible:0;
+                       }
+               }
+
+               part {
+                       name: "object.text.info.2";
+                       scale: 1;
+                       type: TEXTBLOCK;
+                       description {
+                               state: "default" 0.0;
+                               rel1 {to: "rect.text.info.2";}
+                               rel2 {to: "rect.text.info.2";}
+                               text {
+                                       style: "noti_list_info";
+                                       align: 0.0 0.5;
+
+                               }
+                               visible:0;
+                       }
+                       description {
+                               state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               visible:0;
+                       }
+                       description {
+                               state: "show.effect" 0.0;
+                               inherit: "default" 0.0;
+                               text {
+                                       style: "noti_list_info_effect";
+                                       align: 0.0 0.5;
+                               }
+                               visible:0;
+                       }
+               }
+
+               part {
+                       name: "object.layer.touch.background";
+                       mouse_events: 1;
+                       repeat_events: 1;
+                       scale: 1;
+                       type: RECT;
+                       description {
+                               state: "default" 0.0;
+                               rel1 {to: "base";}
+                               rel2 {to: "base";}
+                               color: 0 0 0 0;
+                       }
+               }
+               QUICKPANEL_FOCUS_OBJECT("focus", "base", "base")
+               part {
+                       name: "object.layer.touch.button.1";
+                       mouse_events: 1;
+                       repeat_events: 0;
+                       scale: 1;
+                       type: RECT;
+                       description {
+                               state: "default" 0.0;
+                               rel1 {
+                                       to: "rect.icon";
+                               }
+                               rel2 {to: "rect.icon";}
+                               color: 0 0 0 0;
+                       }
+                       description {
+                               state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               visible:1;
+                       }
+                       description {
+                               state: "hide" 0.0;
+                               inherit: "default" 0.0;
+                               visible: 0;
+                       }
+               }
+       }
+
+       programs {
+               program {
+                       name: "init.layout";
+                       signal: "load";
+                       source: "";
+                       in: 0.0 0.0;
+                       script{
+                               init_variables();
+                       }
+               }
+               program{
+                       name: "box.show.dim";
+                       signal: "box.show.dim";
+                       source: "box.prog";
+                       script {
+                               set_int(g_is_show_dim_bg, 1);
+                       }
+               }
+               program{
+                       name: "box.hide.dim";
+                       signal: "box.hide.dim";
+                       source: "box.prog";
+                       script {
+                               set_int(g_is_show_dim_bg, 0);
+                       }
+               }
+               program{
+                       name: "box.portrait";
+                       signal: "box.portrait";
+                       source: "box.prog";
+                       action: STATE_SET "portrait" 0.0;
+                       target: "base";
+
+                       target: "rect.thumbnail.list.1.padding";
+                       target: "rect.thumbnail.list.2.padding";
+                       target: "rect.thumbnail.list.3.padding";
+                       target: "rect.thumbnail.list.4.padding";
+                       target: "rect.thumbnail.list.5";
+
+                       target: "object.thumbnail.list.5";
+                       after: "box.portrait.custom";
+               }
+               program{
+                       name: "box.landscape";
+                       signal: "box.landscape";
+                       source: "box.prog";
+                       action: STATE_SET "landscape" 0.0;
+                       target: "base";
+
+                       target: "rect.thumbnail.list.1.padding";
+                       target: "rect.thumbnail.list.2.padding";
+                       target: "rect.thumbnail.list.3.padding";
+                       target: "rect.thumbnail.list.4.padding";
+                       target: "rect.thumbnail.list.5";
+                       target: "object.thumbnail.list.5";
+                       after: "box.landscape.custom";
+               }
+               program{
+                       name: "box.portrait.custom";
+                       source: "box.prog";
+                       script {
+                               if (get_int(g_is_show_dim_bg) == 1) {
+                                       set_state(PART:"object.icon.bg.dim", "portrait", 0.0);
+                               }
+                       }
+               }
+               program{
+                       name: "box.landscape.custom";
+                       source: "box.prog";
+                       script {
+                               if (get_int(g_is_show_dim_bg) == 1) {
+                                       set_state(PART:"object.icon.bg.dim", "landscape", 0.0);
+                               }
+                       }
+               }
+#ifdef TBD
+               program{
+                       name: "box.touch.down";
+                       signal: "mouse,clicked,1";
+                       source: "object.layer.touch.background";
+                       action: SIGNAL_EMIT "selected" "edje";
+               }
+#endif
+               program{
+                       name: "effect,mouse,down";
+                       signal: "mouse,down,1";
+                       source: "object.layer.touch.background";
+                       script {
+                               if (get_int(g_is_show_dim_bg) == 1) {
+                                       set_state(PART:"object.touch.effect", "show.dim", 0.0);
+                               } else {
+                                       set_state(PART:"object.touch.effect", "show", 0.0);
+                               }
+                       }
+               }
+               program{
+                       name: "effect,mouse,up";
+                       signal: "mouse,up,1";
+                       source: "object.layer.touch.background";
+                       action: STATE_SET "default" 0.0;
+                       transition: ACCELERATE 0.20;
+                       target: "object.touch.effect";
+               }
+               program{
+                       name: "box.button.1.touch.clicked";
+                       signal: "mouse,clicked,1";
+                       source: "object.layer.touch.button.1";
+                       action: SIGNAL_EMIT "button_1" "edje";
+               }
+               program{
+                       name: "box.button.1.touch.down";
+                       signal: "mouse,down,1";
+                       source: "object.layer.touch.button.1";
+                       action: STATE_SET "show" 0.0;
+                       target: "object.icon.press";
+               }
+               program{
+                       name: "box.button.1.touch.up";
+                       signal: "mouse,up,1";
+                       source: "object.layer.touch.button.1";
+                       action: STATE_SET "hide" 0.0;
+                       target: "object.icon.press";
+               }
+               program{
+                       name: "box.show.icon.bg";
+                       signal: "box.show.icon.bg";
+                       source: "box.prog";
+                       action: STATE_SET "show" 0.0;
+
+                       target: "object.layer.touch.button.1";
+               }
+               program{
+                       name: "box.hide.icon.bg";
+                       signal: "box.hide.icon.bg";
+                       source: "box.prog";
+                       action: STATE_SET "hide" 0.0;
+                       target: "object.layer.touch.button.1";
+               }
+               program{
+                       name: "box.title.with.icon";
+                       signal: "box.title.with.icon";
+                       source: "box.prog";
+                       action: STATE_SET "default" 0.0;
+                       target: "rect.text.title";
+               }
+               program{
+                       name: "box.title.without.icon";
+                       signal: "box.title.without.icon";
+                       source: "box.prog";
+                       action: STATE_SET "without_icon" 0.0;
+                       target: "rect.text.title";
+               }
+               program{
+                       name: "title.long";
+                       signal: "title.long";
+                       source: "prog";
+                       action: STATE_SET "default" 0.0;
+                       target: "rect.text.title";
+               }
+               program{
+                       name: "title.short";
+                       signal: "title.short";
+                       source: "prog";
+                       action: STATE_SET "short" 0.0;
+                       target: "rect.text.title";
+               }
+               MAKE_PART_SHOW_PROGRAM("object.icon.background")
+               MAKE_PART_SHOW_PROGRAM("object.icon")
+               MAKE_PART_SHOW_PROGRAM("object.icon.sub")
+               MAKE_PART_SHOW_TEXT_PROGRAM("object.text.title")
+               MAKE_PART_SHOW_TEXT_PROGRAM("object.text.contents")
+               MAKE_PART_SHOW_TEXT_PROGRAM("object.text.count")
+               MAKE_PART_SHOW_TEXT_PROGRAM("object.text.time")
+               MAKE_PART_SHOW_TEXT_PROGRAM("object.text.info.1")
+               MAKE_PART_SHOW_TEXT_PROGRAM("object.text.info.1.multiline")
+               MAKE_PART_SHOW_TEXT_PROGRAM("object.text.info.2")
+               MAKE_PART_SHOW_PROGRAM("object.thumbnail.list.1")
+               MAKE_PART_SHOW_PROGRAM("object.thumbnail.list.2")
+               MAKE_PART_SHOW_PROGRAM("object.thumbnail.list.3")
+               MAKE_PART_SHOW_PROGRAM("object.thumbnail.list.4")
+       }
+}
\ No newline at end of file
diff --git a/data/quickpanel_listitem_ongoing.edc b/data/quickpanel_listitem_ongoing.edc
new file mode 100644 (file)
index 0000000..e053f8e
--- /dev/null
@@ -0,0 +1,1208 @@
+/*
+ * 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 DEBUG
+//#define DEBUG_TEXT
+
+#define QP_ONGOING_PROGRESS_TITLE_COLOR "T023"
+#define QP_ONGOING_PROGRESS_TITLE_PRESS_COLOR "T023P"
+#define QP_ONGOING_PROGRESS_CONTENTS_COLOR "T024"
+#define QP_ONGOING_PROGRESS_RATE_COLOR "T024L1"
+
+#define QP_ONGOING_PROGRESS_TITLE_FONT_SIZE 30
+#define QP_ONGOING_PROGRESS_CONTENTS_FONT_SIZE 24
+#define QP_ONGOING_PROGRESS_RATE_FONT_SIZE 24
+
+       group {
+               name: "quickpanel/listitem/progress";
+               data.item: "bgcolor" QP_THEME_BANDED_COLOR;
+
+               parts {
+                       part {
+                               name: "background";
+                               type: SPACER;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 (QP_THEME_LIST_ITEM_ONGOING_PROGRESS_HEIGHT + QP_THEME_LIST_ITEM_SEPERATOR_HEIGHT);
+                                       max: -1 (QP_THEME_LIST_ITEM_ONGOING_PROGRESS_HEIGHT + QP_THEME_LIST_ITEM_SEPERATOR_HEIGHT);
+                               }
+                       }
+                       part {
+                               name: "seperator.top";
+                               type: SPACER;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 QP_THEME_LIST_ITEM_SEPERATOR_HEIGHT;
+                                       fixed: 0 1;
+                                       rel1 {
+                                               to: "background";
+                                               relative: 0.0 0.0;
+                                       }
+                                       rel2 {
+                                               to: "background";
+                                               relative: 1.0 0.0;
+                                       }
+                                       align: 0.0 0.0;
+                               }
+                       }
+                       part {
+                               name: "seperator.left";
+                               type: SPACER;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 0;
+                                       fixed: 1 0;
+                                       rel1 {
+                                               to: "background";
+                                               relative: 0.0 0.0;
+                                       }
+                                       rel2 {
+                                               to: "background";
+                                               relative: 0.0 1.0;
+                                       }
+                                       align: 0.0 0.0;
+                               }
+                       }
+                       part {
+                               name: "seperator.right";
+                               type: SPACER;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 0;
+                                       fixed: 1 0;
+                                       rel1 {
+                                               to: "background";
+                                               relative: 1.0 0.0;
+                                       }
+                                       rel2 {
+                                               to: "background";
+                                               relative: 1.0 1.0;
+                                       }
+                                       align: 1.0 0.0;
+                               }
+                       }
+                       part {
+                               name: "base";
+                               type: SPACER;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       fixed: 0 1;
+                                       min: 0 QP_THEME_LIST_ITEM_ONGOING_PROGRESS_HEIGHT;
+                                       max: 9999 QP_THEME_LIST_ITEM_ONGOING_PROGRESS_HEIGHT;
+                                       rel1 {
+                                               relative: 1.0 1.0;
+                                               to_x: "seperator.left";
+                                               to_y: "seperator.top";
+                                       }
+                                       rel2 {
+                                               relative: 0.0 1.0;
+                                               to_x: "seperator.right";
+                                               to_y: "seperator.top";
+                                       }
+                                       align: 0.0 0.0;
+                               }
+                       }
+                       part {
+                               name: "bgcolor";
+                               type: "RECT";
+                               mouse_events: 0;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1.to:"base";
+                                       rel2.to:"base";
+                                       color_class: QP_THEME_BANDED_COLOR;
+                                       visible: 1;
+                               }
+                               description {
+                                       state: "effect" 0.0;
+                                       inherit: "default" 0.0;
+                                       color_class: QP_THEME_BG_COLOR;
+                                       color: 255 255 255 128;
+                                       visible:1;
+                               }
+                       }
+
+                       part {
+                               name: "elm.padding.right";
+                               type: SPACER;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 15 0;
+                                       fixed: 1 0;
+                                       rel1.to:"base";
+                                       rel2.to:"base";
+                                       rel1.relative: 1.0 0.0;
+                                       rel2.relative: 1.0 1.0;
+                                       align: 1.0 0.0;
+                               }
+                       }
+                       part {
+                               name: "elm.padding.right.content";
+                               type: SPACER;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 15 0;
+                                       fixed: 1 0;
+                                       rel1.to:"base";
+                                       rel2.to:"base";
+                                       rel1.relative: 1.0 0.0;
+                                       rel2.relative: 1.0 1.0;
+                                       align: 1.0 0.0;
+                               }
+                       }
+                       part {
+                               name: "elm.padding.top.icon";
+                               type: SPACER;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 25;
+                                       fixed: 0 1;
+                                       rel1.to:"base";
+                                       rel2.to:"base";
+                                       rel1.relative: 0.0 0.0;
+                                       rel2.relative: 1.0 0.0;
+                                       align: 0.0 0.0;
+                               }
+                       }
+                       part {
+                               name: "elm.padding.left.icon";
+                               type: SPACER;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 15 0;
+                                       fixed: 1 0;
+                                       rel1.to:"base";
+                                       rel2.to:"base";
+                                       rel1.relative: 0.0 0.0;
+                                       rel2.relative: 0.0 1.0;
+                                       align: 0.0 0.0;
+                               }
+                       }
+                       part {
+                               name: "elm.padding.top.text";
+                               type: SPACER;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 9;
+                                       fixed: 0 1;
+                                       rel1.to:"base";
+                                       rel2.to:"base";
+                                       rel1.relative: 0.0 0.0;
+                                       rel2.relative: 1.0 0.0;
+                                       align: 0.0 0.0;
+                               }
+                       }
+                       part {
+                               name: "elm.padding.bottom.text";
+                               type: SPACER;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 9;
+                                       fixed: 0 1;
+                                       rel1.to:"base";
+                                       rel2.to:"base";
+                                       rel1.relative: 0.0 1.0;
+                                       rel2.relative: 1.0 1.0;
+                                       align: 0.0 1.0;
+                               }
+                       }
+                       part {
+                               name: "elm.padding.left.title";
+                               type: SPACER;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: (15 + 46 + 15) 0;
+                                       fixed: 1 0;
+                                       rel1.to:"base";
+                                       rel2.to:"base";
+                                       rel1.relative: 0.0 0.0;
+                                       rel2.relative: 0.0 1.0;
+                                       align: 0.0 0.0;
+                               }
+                       }
+                       part {
+                               name: "elm.padding.left.progress.text";
+                               type: SPACER;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: (15 + 46 + 15) 0;
+                                       fixed: 1 0;
+                                       rel1.to:"base";
+                                       rel2.to:"base";
+                                       rel1.relative: 0.0 0.0;
+                                       rel2.relative: 0.0 1.0;
+                                       align: 0.0 0.0;
+                               }
+                       }
+                       part {
+                               name: "elm.padding.left.progress";
+                               type: SPACER;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: (15 + 46 + 15) 0;
+                                       fixed: 1 0;
+                                       rel1.to:"base";
+                                       rel2.to:"base";
+                                       rel1.relative: 0.0 0.0;
+                                       rel2.relative: 0.0 1.0;
+                                       align: 0.0 0.0;
+                               }
+                       }
+                       part {
+                               name: "elm.padding.top.progress";
+                               type: SPACER;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 (9 + 33 + 3);
+                                       fixed: 0 1;
+                                       rel1.to:"base";
+                                       rel2.to:"base";
+                                       rel1.relative: 0.0 0.0;
+                                       rel2.relative: 1.0 0.0;
+                                       align: 0.0 0.0;
+                               }
+                       }
+                       part {
+                               name: "elm.rect.thumbnail";
+                               type: SPACER;
+                               mouse_events: 0;
+                               scale: 1;
+                               description { state: "default" 0.0;
+                                       min: 46 46;
+                                       fixed: 1 1;
+                                       rel1 {
+                                               relative: 1.0 1.0;
+                                               to_x: "elm.padding.left.icon";
+                                               to_y: "elm.padding.top.icon";
+                                       }
+                                       rel2 {
+                                               relative: 1.0 1.0;
+                                               to_x: "elm.padding.left.icon";
+                                               to_y: "elm.padding.top.icon";
+                                       }
+                                       align: 0.0 0.0;
+                               }
+                       }
+                       part {
+                               name: "elm.rect.icon";
+                               type: SPACER;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 29 29;
+                                       fixed: 1 1;
+                                       rel1 {
+                                               relative: 0.5 0.5;
+                                               to: "elm.rect.thumbnail";
+                                       }
+                                       rel2 {
+                                               relative: 0.5 0.5;
+                                               to: "elm.rect.thumbnail";
+                                       }
+                                       align: 0.0 0.0;
+                               }
+                       }
+                       part {
+                               name: "elm.rect.text.title";
+                               type: SPACER;
+                               mouse_events: 0;
+                               scale: 1;
+                               description { state: "default" 0.0;
+                                       min: 0 33;
+                                       fixed: 0 1;
+                                       rel1 {
+                                               relative: 1.0 1.0;
+                                               to_x: "elm.padding.left.title";
+                                               to_y: "elm.padding.top.text";
+                                       }
+                                       rel2 {
+                                               relative: 0.0 1.0;
+                                               to_x: "elm.padding.right";
+                                               to_y: "elm.padding.top.text";
+                                       }
+                                       align: 0.0 0.0;
+                               }
+                       }
+                       part {
+                               name: "elm.rect.text.progress";
+                               type: SPACER;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 99 33;
+                                       fixed: 1 1;
+                                       rel1 {
+                                               relative: 0.0 0.0;
+                                               to_x: "elm.padding.right";
+                                               to_y: "elm.padding.bottom.text";
+                                       }
+                                       rel2 {
+                                               relative: 0.0 0.0;
+                                               to_x: "elm.padding.right";
+                                               to_y: "elm.padding.bottom.text";
+                                       }
+                                       align: 1.0 1.0;
+                               }
+                       }
+                       part {
+                               name: "elm.rect.text.content";
+                               type: SPACER;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 33;
+                                       fixed: 0 1;
+                                       rel1 {
+                                               relative: 1.0 0.0;
+                                               to_x: "elm.padding.left.title";
+                                               to_y: "elm.padding.bottom.text";
+                                       }
+                                       rel2 {
+                                               relative: 0.0 0.0;
+                                               to_x: "elm.rect.text.progress";
+                                               to_y: "elm.padding.bottom.text";
+                                       }
+                                       align: 0.0 1.0;
+                               }
+                       }
+                       part {
+                               name: "elm.rect.progress";
+                               type: SPACER;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       align: 0.0 0.0;
+                                       min: 0 6;
+                                       max: 9999 6;
+                                       fixed: 0 1;
+                                       rel1 {
+                                               relative: 1.0 1.0;
+                                               to_x: "elm.padding.left.progress";
+                                               to_y: "elm.padding.top.progress";
+                                       }
+                                       rel2 {
+                                               relative: 0.0 1.0;
+                                               to_x: "elm.padding.right";
+                                               to_y: "elm.padding.top.progress";
+                                       }
+                               }
+                       }
+                       part {
+                               name: "elm.swallow.thumbnail";
+                               type: SWALLOW;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       fixed: 1 1;
+                                       min: BOX_ICON_SIZE_W BOX_ICON_SIZE_H;
+                                       max: BOX_ICON_BG_SIZE_W BOX_ICON_BG_SIZE_H;
+                                       rel1 {
+                                               to: "elm.rect.thumbnail";
+                                       }
+                                       rel2 {
+                                               to: "elm.rect.thumbnail";
+                                       }
+                                       align: 0.5 0.5;
+                               }
+                       }
+                       part {
+                               name: "elm.swallow.icon";
+                               type: SWALLOW;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 45 45;
+                                       fixed: 1 1;
+                                       rel1 {
+                                               relative: 0.5 0.5;
+                                               to: "elm.rect.icon";
+                                       }
+                                       rel2 {
+                                               relative: 0.5 0.5;
+                                               to: "elm.rect.icon";
+                                       }
+                                       align: 0.5 0.5;
+                               }
+                       }
+                       part {
+                               name: "elm.text.title";
+                               type: TEXT;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       align: 0.0 0.5;
+                                       fixed: 0 1;
+                                       rel1 {
+                                               to:"elm.rect.text.title";
+                                       }
+                                       rel2 {
+                                               to:"elm.rect.text.title";
+                                       }
+                                       color_class: QP_ONGOING_PROGRESS_TITLE_COLOR;
+                                       text {
+                                               font: "Tizen:style=Regular";
+                                               text_class: "tizen";
+                                               size: QP_ONGOING_PROGRESS_TITLE_FONT_SIZE;
+                                               ellipsis: 0.0;
+                                               align: 0.0 0.5;
+                                       }
+                               }
+                               description {
+                                       state: "selected" 0.0;
+                                       inherit: "default" 0.0;
+                               }
+                       }
+                       part {
+                               name: "elm.text.time";
+                               type: TEXT;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       align: 1.0 0.5;
+                                       rel1 {
+                                               to:"elm.rect.text.progress";
+                                       }
+                                       rel2 {
+                                               to:"elm.rect.text.progress";
+                                       }
+                                       color_class: QP_ONGOING_PROGRESS_RATE_COLOR;
+                                       text {
+                                               font: "Tizen:style=Regular";
+                                               text_class: "tizen";
+                                               size: QP_ONGOING_PROGRESS_RATE_FONT_SIZE;
+                                               align: 1.0 0.5;
+                                       }
+                               }
+                               description {
+                                       state: "selected" 0.0;
+                                       inherit: "default" 0.0;
+                               }
+                       }
+                       part {
+                               name: "elm.text.content";
+                               type: TEXT;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       align: 0.0 0.5;
+                                       fixed: 0 1;
+                                       rel1 {
+                                               to: "elm.rect.text.content";
+                                       }
+                                       rel2 {
+                                               to: "elm.rect.text.content";
+                                       }
+                                       color_class: QP_ONGOING_PROGRESS_CONTENTS_COLOR;
+                                       text {
+                                               font: "Tizen:style=Regular";
+                                               text_class: "tizen";
+                                               size: QP_ONGOING_PROGRESS_CONTENTS_FONT_SIZE;
+                                               align: 0.0 0.5;
+                                       }
+                                       visible: 1;
+                               }
+                       }
+                       part {
+                               name: "elm.swallow.progress";
+                               type: SWALLOW;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 {
+                                               to: "elm.rect.progress";
+                                       }
+                                       rel2 {
+                                               to: "elm.rect.progress";
+                                       }
+                               }
+                       }
+                       part {
+                               name: "object.layer.touch.background";
+                               mouse_events: 1;
+                               repeat_events: 1;
+                               scale: 1;
+                               type: RECT;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 {to: "base";}
+                                       rel2 {to: "base";}
+                                       color: 0 0 0 0;
+                               }
+                       }
+                       QUICKPANEL_FOCUS_OBJECT("focus", "base", "base")
+               }
+
+               programs {
+                       program{
+                               name: "effect,mouse,down";
+                               signal: "mouse,down,1";
+                               source: "object.layer.touch.background";
+                               script {
+                                       set_state(PART:"bgcolor", "effect", 0.0);
+                               }
+                       }
+                       program{
+                               name: "effect,mouse,up";
+                               signal: "mouse,up,1";
+                               source: "object.layer.touch.background";
+                               action: STATE_SET "default" 0.0;
+                               transition: ACCELERATE 0.20;
+                               target: "bgcolor";
+                       }
+#ifdef TBD
+                       program{
+                               name: "listbox.touch.down";
+                               signal: "mouse,clicked,1";
+                               source: "object.layer.touch.background";
+                               action: SIGNAL_EMIT "selected" "edje";
+                       }
+#endif
+               }
+       }
+
+#define QP_ONGOING_EVENT_TITLE_COLOR "T023"
+#define QP_ONGOING_EVENT_CONTENTS_COLOR "T024"
+
+#define QP_ONGOING_EVENT_TITLE_FONT_SIZE 30
+#define QP_ONGOING_EVENT_CONTENTS_FONT_SIZE 24
+
+       group {
+               name: "quickpanel/listitem/event";
+               data.item: "bgcolor" QP_THEME_BANDED_COLOR;
+
+               styles {
+                       style {
+                               name: "ongoing_event_content_text";
+                               base: "font=Tizen:style=Regular text_class=tizen align=left valign=0.5 font_size="QP_ONGOING_EVENT_CONTENTS_FONT_SIZE" ellipsis=1.0 color=#2B2B2BFF color_class="QP_ONGOING_EVENT_CONTENTS_COLOR" wrap=none";
+                       }
+               }
+               parts {
+                       part {
+                               name: "background";
+                               type: SPACER;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 (QP_THEME_LIST_ITEM_ONGOING_EVENT_HEIGHT + QP_THEME_LIST_ITEM_SEPERATOR_HEIGHT);
+                                       max: -1 (QP_THEME_LIST_ITEM_ONGOING_EVENT_HEIGHT + QP_THEME_LIST_ITEM_SEPERATOR_HEIGHT);
+                               }
+                               description {
+                                       state: "line1" 0.0;
+                                       inherit: "default" 0.0;
+                                       min: 0 (QP_THEME_LIST_ITEM_ONGOING_EVENT_HEIGHT + QP_THEME_LIST_ITEM_SEPERATOR_HEIGHT);
+                                       max: -1 (QP_THEME_LIST_ITEM_ONGOING_EVENT_HEIGHT + QP_THEME_LIST_ITEM_SEPERATOR_HEIGHT);
+                               }
+                               description {
+                                       state: "line2" 0.0;
+                                       inherit: "default" 0.0;
+                                       min: 0 (QP_THEME_LIST_ITEM_ONGOING_EVENT_HEIGHT + QP_THEME_LIST_ITEM_SEPERATOR_HEIGHT);
+                                       max: -1 (QP_THEME_LIST_ITEM_ONGOING_EVENT_HEIGHT + QP_THEME_LIST_ITEM_SEPERATOR_HEIGHT);
+                               }
+                               description {
+                                       state: "line3" 0.0;
+                                       inherit: "default" 0.0;
+                                       min: 0 (QP_THEME_LIST_ITEM_ONGOING_EVENT_LINE3_HEIGHT + QP_THEME_LIST_ITEM_SEPERATOR_HEIGHT);
+                                       max: -1 (QP_THEME_LIST_ITEM_ONGOING_EVENT_LINE3_HEIGHT + QP_THEME_LIST_ITEM_SEPERATOR_HEIGHT);
+                               }
+                       }
+
+                       part {
+                               name: "seperator.top";
+                               type: SPACER;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 QP_THEME_LIST_ITEM_SEPERATOR_HEIGHT;
+                                       fixed: 0 1;
+                                       rel1 {
+                                               to: "background";
+                                               relative: 0.0 0.0;
+                                       }
+                                       rel2 {
+                                               to: "background";
+                                               relative: 1.0 0.0;
+                                       }
+                                       align: 0.0 0.0;
+                               }
+                       }
+                       part {
+                               name: "seperator.left";
+                               type: SPACER;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 0;
+                                       fixed: 1 0;
+                                       rel1 {
+                                               to: "background";
+                                               relative: 0.0 0.0;
+                                       }
+                                       rel2 {
+                                               to: "background";
+                                               relative: 0.0 1.0;
+                                       }
+                                       align: 0.0 0.0;
+                               }
+                       }
+                       part {
+                               name: "seperator.right";
+                               type: SPACER;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 0;
+                                       fixed: 1 0;
+                                       rel1 {
+                                               to: "background";
+                                               relative: 1.0 0.0;
+                                       }
+                                       rel2 {
+                                               to: "background";
+                                               relative: 1.0 1.0;
+                                       }
+                                       align: 1.0 0.0;
+                               }
+                       }
+                       part {
+                               name: "base";
+                               type: SPACER;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       fixed: 0 1;
+                                       min: 0 QP_THEME_LIST_ITEM_ONGOING_EVENT_HEIGHT;
+                                       max: -1 QP_THEME_LIST_ITEM_ONGOING_EVENT_HEIGHT;
+                                       rel1 {
+                                               relative: 1.0 1.0;
+                                               to_x: "seperator.left";
+                                               to_y: "seperator.top";
+                                       }
+                                       rel2 {
+                                               relative: 0.0 1.0;
+                                               to_x: "seperator.right";
+                                               to_y: "seperator.top";
+                                       }
+                                       align: 0.0 0.0;
+                               }
+                               description {
+                                       state: "line1" 0.0;
+                                       inherit: "default" 0.0;
+                                       min: 0 QP_THEME_LIST_ITEM_ONGOING_EVENT_HEIGHT;
+                                       max: -1 QP_THEME_LIST_ITEM_ONGOING_EVENT_HEIGHT;
+                               }
+                               description {
+                                       state: "line2" 0.0;
+                                       inherit: "default" 0.0;
+                                       min: 0 QP_THEME_LIST_ITEM_ONGOING_EVENT_HEIGHT;
+                                       max: -1 QP_THEME_LIST_ITEM_ONGOING_EVENT_HEIGHT;
+                               }
+                               description {
+                                       state: "line3" 0.0;
+                                       inherit: "default" 0.0;
+                                       min: 0 QP_THEME_LIST_ITEM_ONGOING_EVENT_LINE3_HEIGHT;
+                                       max: -1 QP_THEME_LIST_ITEM_ONGOING_EVENT_LINE3_HEIGHT;
+                               }
+                       }
+
+                       part {
+                               name: "bgcolor";
+                               type: "RECT";
+                               mouse_events: 0;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1.to:"base";
+                                       rel2.to:"base";
+                                       color_class: QP_THEME_BANDED_COLOR;
+                                       visible: 1;
+                               }
+                               description {
+                                       state: "effect" 0.0;
+                                       inherit: "default" 0.0;
+                                       color_class: QP_THEME_BG_COLOR;
+                                       color: 255 255 255 128;
+                               }
+                       }
+
+                       part {
+                               name: "elm.padding.right";
+                               type: SPACER;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 8 0;
+                                       fixed: 1 0;
+                                       rel1.to:"base";
+                                       rel2.to:"base";
+                                       rel1.relative: 1.0 0.0;
+                                       rel2.relative: 1.0 1.0;
+                                       align: 1.0 0.0;
+                               }
+                       }
+                       part {
+                               name: "elm.padding.top.icon";
+                               type: SPACER;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 25;
+                                       fixed: 0 1;
+                                       rel1.to:"base";
+                                       rel2.to:"base";
+                                       rel1.relative: 0.0 0.0;
+                                       rel2.relative: 1.0 0.0;
+                                       align: 0.0 0.0;
+                               }
+                               description {
+                                       state: "line1" 0.0;
+                                       inherit: "default" 0.0;
+                                       min: 0 25;
+                               }
+                               description {
+                                       state: "line2" 0.0;
+                                       inherit: "default" 0.0;
+                                       min: 0 25;
+                               }
+                               description {
+                                       state: "line3" 0.0;
+                                       inherit: "default" 0.0;
+                                       min: 0 35;
+                               }
+                       }
+                       part {
+                               name: "elm.padding.left.icon";
+                               type: SPACER;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 15 0;
+                                       fixed: 1 0;
+                                       rel1.to:"base";
+                                       rel2.to:"base";
+                                       rel1.relative: 0.0 0.0;
+                                       rel2.relative: 0.0 1.0;
+                                       align: 0.0 0.0;
+                               }
+                       }
+                       part {
+                               name: "elm.padding.top.text";
+                               type: SPACER;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 13;
+                                       fixed: 0 1;
+                                       rel1.to:"base";
+                                       rel2.to:"base";
+                                       rel1.relative: 0.0 0.0;
+                                       rel2.relative: 1.0 0.0;
+                                       align: 0.0 0.0;
+                               }
+                               description {
+                                       state: "line1" 0.0;
+                                       inherit: "default" 0.0;
+                                       min: 0 13;
+                               }
+                               description {
+                                       state: "line2" 0.0;
+                                       inherit: "default" 0.0;
+                                       min: 0 9;
+                               }
+                               description {
+                                       state: "line3" 0.0;
+                                       inherit: "default" 0.0;
+                                       min: 0 12;
+                               }
+                       }
+                       part {
+                               name: "elm.padding.bottom.text";
+                               type: SPACER;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 13;
+                                       fixed: 0 1;
+                                       rel1.to:"base";
+                                       rel2.to:"base";
+                                       rel1.relative: 0.0 1.0;
+                                       rel2.relative: 1.0 1.0;
+                                       align: 0.0 1.0;
+                               }
+                               description {
+                                       state: "line1" 0.0;
+                                       inherit: "default" 0.0;
+                                       min: 0 13;
+                               }
+                               description {
+                                       state: "line2" 0.0;
+                                       inherit: "default" 0.0;
+                                       min: 0 0; //13.5
+                               }
+                               description {
+                                       state: "line3" 0.0;
+                                       inherit: "default" 0.0;
+                                       min: 0 0; //19
+                               }
+                       }
+                       part {
+                               name: "elm.padding.left.title";
+                               type: SPACER;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: (15 + 46 + 15) 0;
+                                       fixed: 1 0;
+                                       rel1.to:"base";
+                                       rel2.to:"base";
+                                       rel1.relative: 0.0 0.0;
+                                       rel2.relative: 0.0 1.0;
+                                       align: 0.0 0.0;
+                               }
+                       }
+                       part { name: "elm.padding.left.contents";
+                               type: SPACER;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: (15 + 46 + 15) 0;
+                                       fixed: 1 0;
+                                       rel1.to:"base";
+                                       rel2.to:"base";
+                                       rel1.relative: 0.0 0.0;
+                                       rel2.relative: 0.0 1.0;
+                                       align: 0.0 0.0;
+                               }
+                       }
+                       part {
+                               name: "elm.rect.thumbnail";
+                               type: SPACER;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 46 46;
+                                       fixed: 1 1;
+                                       rel1 {
+                                               relative: 1.0 1.0;
+                                               to_x: "elm.padding.left.icon";
+                                               to_y: "elm.padding.top.icon";
+                                       }
+                                       rel2 {
+                                               relative: 1.0 1.0;
+                                               to_x: "elm.padding.left.icon";
+                                               to_y: "elm.padding.top.icon";
+                                       }
+                                       align: 0.0 0.0;
+                               }
+                       }
+                       part {
+                               name: "elm.rect.icon";
+                               type: SPACER;
+                               mouse_events: 0;
+                               scale: 1;
+                               description { state: "default" 0.0;
+                                       min: 35 35;
+                                       fixed: 1 1;
+                                       rel1 {
+                                               relative: 0.5 0.5;
+                                               to: "elm.rect.thumbnail";
+                                       }
+                                       rel2 {
+                                               relative: 0.5 0.5;
+                                               to: "elm.rect.thumbnail";
+                                       }
+                                       align: 0.0 0.0;
+                               }
+                       }
+                       part {
+                               name: "elm.rect.text.title";
+                               type: SPACER;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 38;
+                                       fixed: 0 1;
+                                       rel1 {
+                                               relative: 1.0 1.0;
+                                               to_x: "elm.padding.left.title";
+                                               to_y: "elm.padding.top.text";
+                                       }
+                                       rel2 {
+                                               relative: 0.0 1.0;
+                                               to_x: "elm.padding.right";
+                                               to_y: "elm.padding.top.text";
+                                       }
+                                       align: 0.0 0.0;
+                               }
+                               description {
+                                       state: "move.center" 0.0;
+                                       inherit: "default" 0.0;
+                                       rel1 {
+                                               relative: 1.0 0.0;
+                                               to_x: "elm.padding.left.title";
+                                               to_y: "base";
+                                       }
+                                       rel2 {
+                                               relative: 1.0 1.0;
+                                               to_x: "elm.padding.right";
+                                               to_y: "base";
+                                       }
+                                       align: 0.0 0.5;
+                               }
+                       }
+                       part {
+                               name: "elm.rect.text.content";
+                               type: SPACER;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 35 35;
+                                       fixed: 0 1;
+                                       rel1 {
+                                               relative: 1.0 1.0;
+                                               to_x: "elm.padding.left.contents";
+                                               to_y: "elm.rect.text.title";
+                                       }
+                                       rel2 {
+                                               relative: 0.0 0.0;
+                                               to_x: "elm.padding.right";
+                                               to_y: "elm.padding.bottom.text";
+                                       }
+                                       align: 0.0 0.0;
+                               }
+                       }
+                       part {
+                               name: "elm.swallow.thumbnail";
+                               type: SWALLOW;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: BOX_ICON_SIZE_W BOX_ICON_SIZE_W;
+                                       max: BOX_ICON_BG_SIZE_W BOX_ICON_BG_SIZE_W;
+                                       fixed: 1 1;
+                                       rel1 {
+                                               to: "elm.rect.thumbnail";
+                                       }
+                                       rel2 {
+                                               to: "elm.rect.thumbnail";
+                                       }
+                                       align: 0.5 0.5;
+                               }
+                       }
+                       part {
+                               name: "elm.swallow.icon";
+                               type: SWALLOW;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 46 46;
+                                       fixed: 1 1;
+                                       rel1 {
+                                               relative: 0.5 0.5;
+                                               to: "elm.rect.icon";
+                                       }
+                                       rel2 {
+                                               relative: 0.5 0.5;
+                                               to: "elm.rect.icon";
+                                       }
+                                       align: 0.5 0.5;
+                               }
+                       }
+                       part {
+                               name: "elm.text.title";
+                               type: TEXT;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       align: 0.0 0.0;
+                                       fixed: 0 1;
+                                       rel1 {
+                                               to:"elm.rect.text.title";
+                                       }
+                                       rel2 {
+                                               to:"elm.rect.text.title";
+                                       }
+                                       color_class: QP_ONGOING_EVENT_TITLE_COLOR;
+                                       text {
+                                               font: "Tizen:style=Regular";
+                                               text_class: "tizen";
+                                               size: QP_ONGOING_EVENT_TITLE_FONT_SIZE;
+                                               ellipsis: 0.0;
+                                               align: 0.0 0.5;
+                                       }
+                               }
+                               description {
+                                       state: "selected" 0.0;
+                                       inherit: "default" 0.0;
+                               }
+                       }
+                       part {
+                               name: "elm.text.content";
+                               type: TEXTBLOCK;
+                               mouse_events: 0;
+                               multiline: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       align: 0.0 0.0;
+                                       fixed: 1 1;
+                                       min: 34 34;
+                                       max: -1 30;
+                                       rel1 {
+                                               to: "elm.rect.text.content";
+                                       }
+                                       rel2 {
+                                               to: "elm.rect.text.content";
+                                       }
+                                       text {
+                                               style: "ongoing_event_content_text";
+                                               align: 0.0 0.0;
+                                       }
+                               }
+                               description {
+                                       state: "line1" 0.0;
+                                       inherit: "default" 0.0;
+                                       min: 0 34;
+                                       max: -1 34;
+                               }
+                               description {
+                                       state: "line2" 0.0;
+                                       inherit: "default" 0.0;
+                                       min: 0 68; //68
+                                       max: -1 68;
+                               }
+                               description {
+                                       state: "line3" 0.0;
+                                       inherit: "default" 0.0;
+                                       min: 0 102; //102
+                                       max: -1 102;
+                               }
+                       }
+                       part {
+                               name: "object.layer.touch.background";
+                               mouse_events: 1;
+                               repeat_events: 1;
+                               scale: 1;
+                               type: RECT;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 {to: "base";}
+                                       rel2 {to: "base";}
+                                       color: 0 0 0 0;
+                               }
+                       }
+                       QUICKPANEL_FOCUS_OBJECT("focus", "base", "base")
+               }
+
+               programs {
+                       program{
+                               name: "listbox.touch.down";
+                               signal: "mouse,clicked,1";
+                               source: "object.layer.touch.background";
+                               action: SIGNAL_EMIT "selected" "edje";
+                       }
+                       program{
+                               name: "effect,mouse,down";
+                               signal: "mouse,down,1";
+                               source: "object.layer.touch.background";
+                               script {
+                                       set_state(PART:"bgcolor", "effect", 0.0);
+                               }
+                       }
+                       program{
+                               name: "effect,mouse,up";
+                               signal: "mouse,up,1";
+                               source: "object.layer.touch.background";
+                               action: STATE_SET "default" 0.0;
+                               transition: ACCELERATE 0.20;
+                               target: "bgcolor";
+                       }
+                       program{
+                               name: "line1.set";
+                               signal: "line1.set";
+                               source: "prog";
+                               action: STATE_SET "line1" 0.0;
+                               target: "background";
+                               target: "base";
+                               target: "elm.padding.top.icon";
+                               target: "elm.padding.top.text";
+                               target: "elm.padding.bottom.text";
+                               target: "elm.text.content";
+                       }
+                       program{
+                               name: "line2.set";
+                               signal: "line2.set";
+                               source: "prog";
+                               action: STATE_SET "line2" 0.0;
+                               target: "background";
+                               target: "base";
+                               target: "elm.padding.top.icon";
+                               target: "elm.padding.top.text";
+                               target: "elm.padding.bottom.text";
+                               target: "elm.text.content";
+                       }
+                       program{
+                               name: "line3.set";
+                               signal: "line3.set";
+                               source: "prog";
+                               action: STATE_SET "line3" 0.0;
+                               target: "background";
+                               target: "base";
+                               target: "elm.padding.top.icon";
+                               target: "elm.padding.top.text";
+                               target: "elm.padding.bottom.text";
+                               target: "elm.text.content";
+                       }
+                       program {
+                               name: "title.move.center";
+                               signal: "title.move.center";
+                               source: "prog";
+                               action: STATE_SET "move.center" 0.0;
+                               target: "elm.rect.text.title";
+                       }
+               }
+       }
index ecfcf3f..e55fb0c 100755 (executable)
@@ -1,48 +1,54 @@
+/*
+ * 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 DEBUG
 //#define DEBUG_TEXT
 
-       group { name: "quickpanel/minictrl/default";
+       group {
+               name: "quickpanel/minictrl/default";
+               data.item: "bgcolor" QP_THEME_BANDED_COLOR;
                parts {
-                       part { name: "base";
-                               type: RECT;
+                       part {
+                               name: "base";
+                               type: SPACER;
                                repeat_events: 1;
                                scale: 1;
                                description {
                                        state: "default" 0.0;
-                                       min: 0 QP_THEME_LIST_ITEM_MINICONTRL_HEIGHT + QP_THEME_LIST_ITEM_MINICONTR_SEPERATOR_HEIGHT;
+                                       min: 480 QP_THEME_LIST_ITEM_MINICONTRL_HEIGHT + QP_THEME_LIST_ITEM_SEPERATOR_HEIGHT;
+                                       max: 800 QP_THEME_LIST_ITEM_MINICONTRL_HEIGHT + QP_THEME_LIST_ITEM_SEPERATOR_HEIGHT;
+                                       fixed: 0 1;
                                        rel1 {
                                                relative: 0.0 0.0;
                                        }
                                        rel2 {
-                                               relative: 1.0 0.0;
+                                               relative: 1.0 1.0;
                                        }
                                        align: 0.0 0.0;
-                                       color: QP_THEME_BG_COLOR;
-                                       visible: QP_THEME_BG_VISIBILITY;
                                }
                        }
-                       part { name: "bg_image";
-                               mouse_events: 0;
-                               description {
-                                       state: "default" 0.0;
-                                       rel1.to:"base";
-                                       rel2.to:"base";
-                                       color: QP_THEME_NOTI_BG_COLOR;
-                               }
-                               description {
-                                       state: "selected" 0.0;
-                                       inherit: "default" 0.0;
-                                       color: QP_THEME_NOTI_BG_COLOR;
-                               }
-                       }
-                       part { name: "elm.padding.top";
-                               type: RECT;
+                       part {
+                               name: "elm.padding.top";
+                               type: SPACER;
                                scale: 1;
                                description {
                                        state: "default" 0.0;
-                                       min: 0 20 + QP_THEME_LIST_ITEM_ONGOING_SEPERATOR_HEIGHT;
+                                       min: 0 20 + QP_THEME_LIST_ITEM_SEPERATOR_HEIGHT;
                                        fixed: 0 1;
-                                       visible: 0;
                                        rel1.to:"base";
                                        rel2.to:"base";
                                        rel1.relative: 0.0 0.0;
                                        align: 0.0 0.0;
                                }
                        }
-                       part { name: "elm.padding.left.bg";
-                               type: RECT;
+                       part {
+                               name: "elm.padding.left.bg";
+                               type: SPACER;
                                scale: 1;
                                description {
                                        state: "default" 0.0;
-                                       min: 14 0;
+                                       min: 0 0;
                                        fixed: 1 0;
                                        rel1.to:"base";
                                        rel2.to:"base";
                                        rel1.relative: 0.0 0.0;
                                        rel2.relative: 0.0 1.0;
                                        align: 0.0 0.0;
-                                       color: QP_THEME_BG_COLOR;
-                                       visible: QP_THEME_BG_VISIBILITY;
                                }
                        }
-                       part { name: "elm.padding.right.bg";
-                               type: RECT;
+                       part {
+                               name: "elm.padding.right.bg";
+                               type: SPACER;
                                scale: 1;
                                description {
                                        state: "default" 0.0;
-                                       min: 14 0;
+                                       min: 0 0;
                                        fixed: 1 0;
                                        rel1.to:"base";
                                        rel2.to:"base";
                                        rel1.relative: 1.0 0.0;
                                        rel2.relative: 1.0 1.0;
                                        align: 1.0 0.0;
-                                       color: QP_THEME_BG_COLOR;
-                                       visible: QP_THEME_BG_VISIBILITY;
                                }
                        }
-                       part { name: "elm.padding.top.bg";
-                               type: RECT;
+                       part {
+                               name: "elm.padding.top.bg";
+                               type: SPACER;
                                scale: 1;
-                               description { state: "default" 0.0;
-                                       min: 0 QP_THEME_LIST_ITEM_MINICONTR_SEPERATOR_HEIGHT;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 QP_THEME_LIST_ITEM_SEPERATOR_HEIGHT;
                                        fixed: 0 1;
                                        rel1.to:"base";
                                        rel2.to:"base";
                                        rel1.relative: 0.0 0.0;
                                        rel2.relative: 1.0 0.0;
                                        align: 0.0 0.0;
-                                       color: QP_THEME_BG_COLOR;
-                                       visible: QP_THEME_BG_VISIBILITY;
                                }
                        }
-                       part { name: "elm.content.bg";
+                       part {
+                               name: "elm.content.bg";
                                type: RECT;
                                scale: 1;
                                description {
                                        }
                                        align: 0.0 0.0;
                                        visible: 1;
-                                       color: QP_THEME_NOTI_BG_COLOR;
+                                       color: 255 255 255 235;
+                                       color_class: QP_THEME_ITEM_BG_COLOR;
+                               }
+                               description {
+                                       state: "show" 0.0;
+                                       inherit: "default" 0.0;
+                               }
+                               description {
+                                       state: "hide" 0.0;
+                                       inherit: "default" 0.0;
+                                       color: 0 0 0 0;
+                               }
+                       }
+                       part {
+                               name: "bgcolor";
+                               type: "RECT";
+                               mouse_events: 0;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1.to:"base";
+                                       rel2.to:"base";
+                                       color_class: QP_THEME_BANDED_COLOR;
+                                       visible: 1;
                                }
                        }
+                       QUICKPANEL_FOCUS_OBJECT("focus", "elm.content.bg", "elm.content.bg")
                        part { name: "elm.padding.left";
-                               type: RECT;
+                               type: SPACER;
                                scale: 1;
                                description {
                                        state: "default" 0.0;
-                                       min: 28 0;
+                                       min: 18 0;
                                        fixed: 1 0;
                                        rel1.to:"base";
                                        rel2.to:"base";
                                        rel1.relative: 0.0 0.0;
                                        rel2.relative: 0.0 1.0;
                                        align: 0.0 0.0;
-                                       visible: 0;
                                }
                        }
-                       part { name: "elm.padding.right";
-                               type: RECT;
+                       part {
+                               name: "elm.padding.right";
+                               type: SPACER;
                                scale: 1;
                                description {
                                        state: "default" 0.0;
-                                       min: 18 0;
+                                       min: 12 0;
                                        fixed: 1 0;
                                        rel1.to:"base";
                                        rel2.to:"base";
                                        rel1.relative: 1.0 0.0;
                                        rel2.relative: 1.0 1.0;
                                        align: 1.0 0.0;
-                                       visible: 0;
                                }
                        }
-                       part { name: "elm.icon";
+                       part {
+                               name: "elm.icon";
                                type: SWALLOW;
                                mouse_events: 1;
                                scale: 1;
                                description {
                                        state: "default" 0.0;
                                        align: 0.0 0.0;
+                                       min: 480 135;
+                                       max: 800 135;
                                        rel1 {
                                                to: "elm.content.bg";
                                        }
                                        }
                                }
                        }
-                       part { name: "elm.padding.bottom";
-                               type: RECT;
+                       part {
+                               name: "elm.padding.bottom";
+                               type: SPACER;
                                scale: 1;
                                description {
                                        state: "default" 0.0;
                                        rel1.relative: 0.0 1.0;
                                        rel2.relative: 1.0 1.0;
                                        align: 0.0 1.0;
-                                       visible: 0;
                                }
                        }
                }
+               programs {
+                       program{
+                               name: "bg.show";
+                               signal: "bg.show";
+                               source: "prog";
+                               action: STATE_SET "show" 0.0;
+                               target: "elm.content.bg";
+                       }
+                       program{
+                               name: "bg.hide";
+                               signal: "bg.hide";
+                               source: "prog";
+                               action: STATE_SET "hide" 0.0;
+                               target: "elm.content.bg";
+                       }
+               }
        }
\ No newline at end of file
index 26a31d4..c12ba52 100755 (executable)
@@ -1,36 +1,96 @@
+/*
+ * 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 DEBUG
 //#define DEBUG_TEXT
 
-       group { name: "quickpanel/notisection/default";
+//Default part description. It is not changed by us
+#define QP_THEME_LIST_TITLE_FONT_NAME                  "Tizen:style=Bold"
+#define QP_THEME_LIST_TITLE_FONT_COLOR                 "ATO005"
+#define QP_THEME_LIST_TITLE_FONT_SIZE                  27
+
+#define QP_THEME_LIST_OPTION_FONT_COLOR                        "ATO006"
+#define QP_THEME_LIST_OPTION_PRESS_FONT_COLOR                  "ATO006P"
+#define QP_THEME_LIST_OPTION_FONT_SIZE                 27
+#define QP_THEME_LIST_OPTION_ICON_PRESS_COLOR "AO005"
+
+//size of clear all item
+#define QP_CLEAR_ALL_ITEM_H    51
+#define QP_CLEAR_ALL_ITEM_W    480
+
+//Properties of "notifications (x) label in clear all notifications item"
+#define QP_CLEAR_ALL_NOTIFICATIONS_LABEL_FONT_NAME             "Tizen:style=Regular"
+#define QP_CLEAR_ALL_NOTIFICATIONS_LABEL_FONT_COLOR    "T023"
+#define QP_CLEAR_ALL_NOTIFICATIONS_LABEL_FONT_SIZE             27
+#define QP_CLEAR_ALL_NOTIFICATIONS_STR_X_OFFSET 17 //x offset of "notifications(x)" string
 
+//Properties of clear all button
+#define QP_CLEAR_ALL_CLEAR_ALL_BTN_TEXT_FONT_NAME              "Tizen:style=Regular"
+#define QP_CLEAR_ALL_CLEAR_ALL_BTN_FONT_COLOR                  "T023"
+#define QP_CLEAR_ALL_CLEAR_ALL_BTN_FONT_COLOR_PRESSED          "ATO006P"
+#define QP_CLEAR_ALL_CLEAR_ALL_BTN_FONT_COLOR_DIM              "ATO006D"
+#define QP_CLEAR_ALL_CLEAR_ALL_BTN_FONT_SIZE                   27
+#define QP_CLEAR_ALL_CLEAR_ALL_BTN_BG_COLOR                    "W021L1"
+#define QP_CLEAR_ALL_CLEAR_ALL_BTN_BG_COLOR_PRESSED            "AO021P"
+
+//Properties of separator betwen notifiactions label and clear all button
+#define QP_NOTIFICATIONS_SEP_X_OFFSET -235 //separator between "notification(x) | Clear all" button
+#define QP_NOTIFICATIONS_SEP_Y_OFFSET 17
+#define QP_NOTIFICATIONS_SEP_COLOR_CLASS "W021L2"
+
+       images {
+               image: "icon_arrow_up.png" COMP;
+               image: "icon_arrow_down.png" COMP;
+       }
+
+       group {
+               name: "quickpanel/notisection/default";
                parts {
-                       part { name: "base";
+                       part {
+                               name: "base";
                                type: RECT;
                                repeat_events: 1;
                                scale: 1;
                                description {
                                        state: "default" 0.0;
-                                       min: 0 QP_THEME_LIST_ITEM_GROUP_HEIGHT;
-                                       max: 9999 QP_THEME_LIST_ITEM_GROUP_HEIGHT;
+                                       min: 0 QP_THEME_LIST_ITEM_NOTI_SECTION_HEIGHT;
+                                       max: 9999 QP_THEME_LIST_ITEM_NOTI_SECTION_HEIGHT;
                                        rel1 {
                                                relative: 0.0 0.0;
                                        }
                                        rel2 {
-                                               relative: 1.0 0.0;
+                                               relative: 1.0 1.0;
                                        }
                                        align: 0.0 0.0;
-                                       color: QP_THEME_BG_COLOR;
+                                       color_class: QP_THEME_BG_COLOR;
                                        visible: QP_THEME_BG_VISIBILITY;
                                }
                        }
-                       part { name: "elm.padding.left";
-                               type: RECT;
+
+                       QUICKPANEL_FOCUS_OBJECT("focus.label", "base", "base")
+                       part {
+                               name: "elm.padding.left";
+                               type: SPACER;
                                scale: 1;
                                description {
                                        state: "default" 0.0;
-                                       min: 26 0;
+                                       min: 17 0;
                                        fixed: 1 0;
-                                       visible: 0;
                                        rel1.to:"base";
                                        rel2.to:"base";
                                        rel1.relative: 0.0 0.0;
                                        align: 0.0 0.0;
                                }
                        }
-                       part { name: "elm.padding.right";
-                               type: RECT;
+                       part {
+                               name: "elm.padding.right";
+                               type: SPACER;
                                scale: 1;
                                description {
                                        state: "default" 0.0;
-                                       min: 14 0;
+                                       min: 8 0;
                                        fixed: 1 0;
-                                       visible: 0;
                                        rel1.to:"base";
                                        rel2.to:"base";
                                        rel1.relative: 1.0 0.0;
                                        align: 1.0 0.0;
                                }
                        }
-                       part { name: "elm.padding.top";
-                               type: RECT;
+                       part {
+                               name: "elm.padding.top";
+                               type: SPACER;
                                scale: 1;
                                description {
                                        state: "default" 0.0;
-                                       min: 0 11;
+                                       min: 0 22;
                                        fixed: 0 1;
-                                       visible: 0;
                                        rel1.to:"base";
                                        rel2.to:"base";
                                        rel1.relative: 0.0 0.0;
                                        align: 0.0 0.0;
                                }
                        }
-                       part { name: "elm.padding.bottom";
-                               type: RECT;
+                       part {
+                               name: "elm.padding.bottom";
+                               type: SPACER;
                                scale: 1;
                                description {
                                        state: "default" 0.0;
-                                       min: 0 11;
+                                       min: 0 5;
                                        fixed: 0 1;
-                                       visible: 0;
                                        rel1.to:"base";
                                        rel2.to:"base";
                                        rel1.relative: 0.0 1.0;
                                        align: 0.0 1.0;
                                }
                        }
-
-                       part { name: "elm.rect.text";
-                               type: RECT;
+                       part {
+                               name: "elm.padding.top.button";
+                               type: SPACER;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 14;
+                                       fixed: 0 1;
+                                       rel1.relative: 0.0 0.0;
+                                       rel2.relative: 1.0 0.0;
+                                       align: 0.0 0.0;
+                               }
+                       }
+                       part {
+                               name: "elm.padding.bottom.button";
+                               type: SPACER;
                                scale: 1;
                                description {
                                        state: "default" 0.0;
-                                       min: 500 0;
+                                       min: 0 3;
+                                       fixed: 0 1;
+                                       rel1.relative: 0.0 1.0;
+                                       rel2.relative: 1.0 1.0;
+                                       align: 0.0 1.0;
+                               }
+                       }
+                       part {
+                               name: "elm.rect.text";
+                               type: SPACER;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 343 32;
                                        fixed: 1 0;
                                        rel1 {
                                                to_x: "elm.padding.left";
+                                               to_y: "elm.padding.bottom";
                                                relative: 1.0 0.0;
                                        }
                                        rel2 {
                                                to_x: "elm.padding.left";
-                                               relative: 1.0 1.0;
+                                               to_y: "elm.padding.bottom";
+                                               relative: 1.0 0.0;
                                        }
-                                       align: 0.0 0.0;
-                                       visible:0;
+                                       align: 0.0 1.0;
                                }
                        }
-                       part { name: "elm.text.text";
+                       part {
+                               name: "elm.text.text";
                                type: TEXT;
                                scale: 1;
                                description {
                                        state: "default" 0.0;
+                                       min: 343 35;
                                        rel1 {
                                                to: "elm.rect.text";
                                        }
                                        rel2 {
                                                to: "elm.rect.text";
                                        }
-                                       color: QP_THEME_LIST_TITLE_FONT_COLOR;
+                                       color: 0 0 0 255;
                                        text {
                                                font: QP_THEME_LIST_TITLE_FONT_NAME;
                                                text_class: "tizen";
                                                size: QP_THEME_LIST_TITLE_FONT_SIZE;
                                                align: 0.0 0.5;
-                                               ellipsis: 0.0;
+                                               min: 1 0;
                                        }
                                }
                        }
-
-                       part { name: "elm.rect.icon";
+                       part {
+                               name: "elm.text.text.debug";
                                type: RECT;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1.relative: 0.0 0.0;
+                                       rel2.relative: 1.0 1.0;
+                                       rel1.to: "elm.text.text";
+                                       rel2.to: "elm.text.text";
+                                       color: 255 0 0 150;
+                               }
+               }
+
+                       part {
+                               name: "elm.rect.icon";
+                               type: SPACER;
                                scale: 1;
                                description {
                                        state: "default" 0.0;
-                                       min: 158 58;
+                                       min: 106 36;
                                        fixed: 1 1;
                                        rel1 {
                                                to_x: "elm.padding.right";
-                                               to_y: "elm.padding.top";
-                                               relative: 0.0 1.0;
+                                               to_y: "base";
+                                               relative: 0.0 0.5;
                                        }
                                        rel2 {
                                                to_x: "elm.padding.right";
-                                               to_y: "elm.padding.bottom";
+                                               to_y: "base";
+                                               relative: 0.0 0.5;
+                                       }
+                                       align: 1.0 0.0;
+                               }
+                       }
+                       part {
+                               name: "text.clear.right.padding";
+                               type: SPACER;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: (18) 0;
+                                       rel1 {
+                                               relative : 1.0 0.0;
+                                               to: "base";
+                                       }
+                                       rel2 {
+                                               relative : 1.0 1.0;
+                                               to: "base";
+                                       }
+                                       align: 1.0 0.0;
+                               }
+                       }
+                       part {
+                               name: "text.clear";
+                               type: TEXT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 30;
+                                       rel1 {
+                                               to_x: "text.clear.right.padding";
+                                               to_y: "elm.text.text";
+                                               relative : 0.0 0.5;
+                                       }
+                                       rel2 {
+                                               to_x: "text.clear.right.padding";
+                                               to_y: "elm.text.text";
+                                               relative: 0.0 0.5;
+                                       }
+                                       color_class: QP_THEME_LIST_OPTION_FONT_COLOR;
+                                       text {
+                                               font: QP_THEME_LIST_TITLE_FONT_NAME;
+                                               text_class: "tizen";
+                                               size: QP_THEME_LIST_OPTION_FONT_SIZE;
+                                               align: 0.0 0.5;
+                                               min: 1 0;
+                                       }
+                                       align: 1.0 0.5;
+                               }
+                               description {
+                                       state: "pressed" 0.0;
+                                       inherit: "default" 0.0;
+                                       color_class: QP_THEME_LIST_OPTION_PRESS_FONT_COLOR;
+                               }
+                       }
+                       part {
+                               name: "divider.right.padding";
+                               type: SPACER;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: (13) 0;
+                                       rel1 {
+                                               relative : 0.0 0.0;
+                                               to: "text.clear";
+                                       }
+                                       rel2 {
+                                               relative : 0.0 1.0;
+                                               to: "text.clear";
+                                       }
+                                       align: 1.0 0.0;
+                               }
+                       }
+                       part {
+                               name: "obj.divider";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 2 30;
+                                       rel1 {
+                                               relative : 0.0 0.5;
+                                               to_x: "divider.right.padding";
+                                               to_y: "text.clear";
+                                       }
+                                       rel2 {
+                                               relative : 0.0 0.5;
+                                               to_x: "divider.right.padding";
+                                               to_y: "text.clear";
+                                       }
+                                       align: 1.0 0.5;
+                                       color_class: QP_THEME_SECTION_ICON_DIVIDER_COLOR;
+                                       visible: 1;
+                               }
+                       }
+                       part {
+                               name: "rect.text.touch";
+                               type: RECT;
+                               scale: 1;
+                               mouse_events: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       fixed: 1 1;
+                                       rel1 {
+                                               to: "text.clear";
+                                               offset: -10 -20;
+                                       }
+                                       rel2 {
+                                               to: "text.clear";
+                                               offset: +10 +20;
+                                       }
+                                       align: 0.0 0.0;
+                                       visible: 1;
+                                       color: 0 0 0 0;
+                               }
+                       }
+               }
+
+               programs {
+                       program{
+                               name: "button.down";
+                               signal: "mouse,down,1";
+                               source: "rect.text.touch";
+                               action: STATE_SET "pressed" 0.0;
+                               target: "text.clear";
+                       }
+                       program{
+                               name: "button.up";
+                               signal: "mouse,up,1";
+                               source: "rect.text.touch";
+                               action: STATE_SET "default" 0.0;
+                               target: "text.clear";
+                       }
+                       program{
+                               name: "button.clicked";
+                               signal: "mouse,clicked,1";
+                               source: "rect.text.touch";
+                               action: SIGNAL_EMIT "button.clicked" "prog";
+                       }
+               }
+       }
+
+       group {
+
+               /**
+                * GROUP STRUCTURE
+                * base - it is the background rectangle. This part is a relative for all other parts and define background color.
+                * noti.clear.all.separator - is the line between "notification(X)" and clear all button
+                */
+
+               name: "quickpanel/notisection/clear_all";
+               parts {
+                       part {
+                               name: "base";
+                               type: RECT;
+                               repeat_events: 1;
+                               scale: 1;
+                               description
+                               {
+                                       state: "default" 0.0;
+                                       min: 0 QP_CLEAR_ALL_ITEM_H;
+                                       rel1 {
+                                               relative: 0.0 0.0;
+                                       }
+                                       rel2 {
+                                               relative: 1.0 1.0;
+                                       }
+                                       align: 0.0 0.0;
+                                       color_class: QP_CLEAR_ALL_CLEAR_ALL_BTN_BG_COLOR;
+                                       visible: 1;
+                               }
+                       }
+
+                       QUICKPANEL_FOCUS_OBJECT("focus.label", "base", "base")
+
+                       part {
+                               name: "notisection.padding.left";
+                               type: SPACER;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 17 0;
+                                       fixed: 1 0;
+                                       align: 0.0 0.0;
+                                       rel1 {
+                                               to: "base";
                                                relative: 0.0 0.0;
                                        }
+                                       rel2 {
+                                               to: "base";
+                                               relative: 0.0 1.0;
+                                       }
+                               }
+                       }
+                       part {
+                               name: "notisection.padding.right";
+                               type: SPACER;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 23 0;
+                                       fixed: 1 0;
+                                       align: 1.0 0.0;
+                                       rel1 {
+                                               to: "base";
+                                               relative: 1.0 0.0;
+                                       }
+                                       rel2 {
+                                               to: "base";
+                                               relative: 1.0 1.0;
+                                       }
+                               }
+                       }
+
+                       part {
+                               name: "underline";
+                               type: RECT;
+                               repeat_events: 1;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 1;
+                                       fixed: 0 1;
+                                       rel1 {
+                                               to: "base";
+                                               relative: 0.0 1.0;
+                                       }
+                                       rel2 {
+                                               to: "base";
+                                               relative: 1.0 1.0;
+                                       }
+                                       align: 0.0 1.0;
+                                       color_class: QP_NOTIFICATIONS_SEP_COLOR_CLASS;
+                               }
+                       }
+
+                       part {
+                               name: "noti.clear.all.separator";
+                               type: RECT;
+                               repeat_events: 1;
+                               scale: 1;
+                               description {
+                                       state: "default";
+                                       min: 1 36;
+                                       max: 1 36;
+                                       fixed: 1 1;
+                                       color_class: QP_NOTIFICATIONS_SEP_COLOR_CLASS;
+                                       rel1 {
+                                               relative: 0.0 0.0;
+                                               to_x: "clear_all.padding.left";
+                                               to_y: "base";
+                                       }
+                                       rel2 {
+                                               relative: 0.0 1.0;
+                                               to_x: "clear_all.padding.left";
+                                               to_y: "base";
+                                       }
+
                                        align: 1.0 0.5;
+                                       visible: 1;
+                               }
+                               description
+                               {
+                                       state: "hide" 0.0;
+                                       inherit: "default";
                                        visible: 0;
                                }
+
                        }
-                       part { name: "elm.swallow.icon";
-                               type: SWALLOW;
+                       part {
+                               name: "separator.padding.left";
+                               type: SPACER;
                                scale: 1;
                                description {
                                        state: "default" 0.0;
+                                       min: 14 0;
+                                       fixed: 1 0;
+                                       align: 1.0 0.0;
                                        rel1 {
-                                               to: "elm.rect.icon";
+                                               to: "noti.clear.all.separator";
+                                               relative: 0.0 0.0;
                                        }
                                        rel2 {
-                                               to: "elm.rect.icon";
+                                               to: "noti.clear.all.separator";
+                                               relative: 0.0 1.0;
+                                       }
+                               }
+                       }
+
+                       part {
+                               name: "elm.text.notifications_number";
+                               type: TEXT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 36;
+                                       align: 0.0 0.5;
+                                       rel1 {
+                                               to: "notisection.padding.left";
+                                               relative: 1.0 0.0;
+                                       }
+                                       rel2
+                                       {
+                                               relative: 0.0 1.0;
+                                               to_x: "separator.padding.left";
+                                               to_y: "base";
+                                       }
+
+                                       color_class: QP_CLEAR_ALL_NOTIFICATIONS_LABEL_FONT_COLOR;
+                                       text {
+                                               font: QP_CLEAR_ALL_NOTIFICATIONS_LABEL_FONT_NAME;
+                                               size: QP_CLEAR_ALL_NOTIFICATIONS_LABEL_FONT_SIZE;
+                                               text_class: "tizen";
+                                               align: 0.0 0.5;
+                                               ellipsis: 0.0;
                                        }
                                }
                        }
                        part {
-                               name: "accessibility.label";
+                               name: "rect.button.clear_all";
                                type: RECT;
+                               scale: 1;
                                mouse_events: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 {
+                                               to: "clear_all.padding.left";
+                                               relative: 0.0 0.0;
+                                       }
+                                       rel2 {
+                                               to_x: "notisection.padding.right";
+                                               to_y: "underline";
+                                               relative: 1.0 0.0;
+                                       }
+
+                                       color_class: QP_CLEAR_ALL_CLEAR_ALL_BTN_BG_COLOR;
+
+                                       align: 0.5 0.5;
+                                       visible: 1;
+                               }
+                               description
+                               {
+                                       state: "pressed" 0.0;
+                                       inherit: "default" 0.0;
+                                       color_class: QP_CLEAR_ALL_CLEAR_ALL_BTN_BG_COLOR_PRESSED;
+                               }
+
+                               description
+                               {
+                                       state: "hide" 0.0;
+                                       inherit: "default";
+                                       visible: 0;
+                               }
+                       }
+                       part {
+                               name: "text.button.clear_all";
+                               type: TEXT;
                                repeat_events: 1;
                                scale: 1;
-                               description {
+                               description
+                               {
                                        state: "default" 0.0;
+                                       min: 98 36;
+                                       max: 160 36;
+                                       fixed: 0 1;
+                                       align: 1.0 0.5;
                                        rel1 {
-                                               to: "elm.rect.text";
+                                               to_x: "base";
+                                               to_y: "notisection.padding.right";
+                                               relative: 0.5 0.5;
                                        }
                                        rel2 {
-                                               to: "elm.rect.text";
+                                               to: "notisection.padding.right";
+                                               relative: 0.0 0.5;
+                                       }
+                                       color_class: QP_CLEAR_ALL_CLEAR_ALL_BTN_FONT_COLOR;
+                                       text {
+                                               font: QP_CLEAR_ALL_CLEAR_ALL_BTN_TEXT_FONT_NAME;
+                                               size: QP_CLEAR_ALL_CLEAR_ALL_BTN_FONT_SIZE;
+                                               text_class: "tizen";
+                                               align: 0.5 0.5;
+                                               max: 1 0;
                                        }
-                                       color: QP_ACCESSIBILITY_TEST_COLOR;
                                        visible: 1;
                                }
+                               description
+                               {
+                                       state: "pressed";
+                                       inherit: "default";
+                                       color_class: QP_CLEAR_ALL_CLEAR_ALL_BTN_FONT_COLOR_PRESSED;
+                               }
+                               description
+                               {
+                                       state: "dim";
+                                       inherit: "default";
+                                       color_class: QP_CLEAR_ALL_CLEAR_ALL_BTN_FONT_COLOR_DIM;
+                               }
+
+                               description
+                               {
+                                       state: "hide" 0.0;
+                                       inherit: "default";
+                                       visible: 0;
+                               }
+                       }
+                       part {
+                               name: "clear_all.padding.left";
+                               type: SPACER;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 14 0;
+                                       fixed: 1 0;
+                                       align: 1.0 0.0;
+                                       rel1 {
+                                               to_x: "text.button.clear_all";
+                                               to_y: "base";
+                                               relative: 0.0 0.0;
+                                       }
+                                       rel2 {
+                                               to_x: "text.button.clear_all";
+                                               to_y: "base";
+                                               relative: 0.0 1.0;
+                                       }
+                               }
+                       }
+                       
+                       QUICKPANEL_FOCUS_OBJECT("focus", "rect.button.clear_all", "rect.button.clear_all")
+               }
+               programs
+               {
+
+                       program
+                       {
+                               name: "clear_all.button.pressed";
+                               signal: "mouse,down,1";
+                               source: "focus";
+
+                               action: STATE_SET "pressed" 0.0;
+                               target: "rect.button.clear_all";
+                               target: "text.button.clear_all";
+                       }
+                       program
+                       {
+                               name: "clear_all.button.released";
+                               signal: "mouse,up,1";
+                               source: "focus";
+
+                               action: STATE_SET "default" 0.0;
+                               target: "rect.button.clear_all";
+                               target: "text.button.clear_all";
+                       }
+                       program
+                       {
+                               name: "clear_all,show";
+                               signal: "notifaction,section,clear_all,show";
+                               source: "base";
+
+                               action: STATE_SET "default" 0.0;
+                               target: "rect.button.clear_all";
+                               target: "text.button.clear_all";
+                               target: "noti.clear.all.separator";
+                               target: "focus";
+                       }
+
+                       program
+                       {
+                               name: "clear_all,hide";
+                               signal: "notifaction,section,clear_all,hide";
+                               source: "base";
+
+                               action: STATE_SET "hide" 0.0;
+                               target: "rect.button.clear_all";
+                               target: "text.button.clear_all";
+                               target: "noti.clear.all.separator";
+                               target: "focus";
                        }
                }
        }
 
-       group { name: "quickpanel/seperator/default";
+       group {
+               name: "quickpanel/seperator/default";
                parts {
                        part { name: "base";
                                type: RECT;
index d14f120..783d6b3 100755 (executable)
@@ -1,3 +1,21 @@
+/*
+ * 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 DEBUG
 //#define DEBUG_TEXT
 
                }\
 
 images {
-       image: "quick_icon_bg_01.png" COMP;
-       image: "quick_btn_close_press.png" COMP;
-       image: "quick_btn_close_dim.png" COMP;
-       image: "quick_btn_close_nor.png" COMP;
        image: "quick_image_dimmed_port.png" COMP;
        image: "quick_image_dimmed_land.png" COMP;
-       image: "quick_icon_bg_small.png" COMP;
        image: "icon_press.png" COMP;
 }
 
-#define BOX_FONT_SHADOW_COLOR 0 0 0 191
-#define BOX_FONT_OUTLINE_COLOR 0 0 0 191
-#define BOX_FONT_NO_SHADOW_COLOR 0 0 0 0
-#define BOX_FONT_NO_OUTLINE_COLOR 0 0 0 0
+#define NOTIBOX_FONT_SHADOW_COLOR 0 0 0 191
+#define NOTIBOX_FONT_OUTLINE_COLOR 0 0 0 191
+#define NOTIBOX_FONT_NO_SHADOW_COLOR 0 0 0 0
+#define NOTIBOX_FONT_NO_OUTLINE_COLOR 0 0 0 0
 
-#define BOX_CONTENTS_FONT "Tizen:style=Medium"
-#define BOX_CONTENTS_FONT_SIZE 32
-#define BOX_CONTENTS_FONT_COLOR 248 246 239 255
+#define NOTIBOX_CONTENTS_FONT "Tizen:style=Bold"
+#define NOTIBOX_CONTENTS_FONT_SIZE 20
+#define NOTIBOX_CONTENTS_FONT_COLOR 248 246 239 255
 
-#define BOX_INFO_FONT "Tizen:style=Regular"
-#define BOX_INFO_FONT_SIZE 28
-#define BOX_INFO_FONT_COLOR 248 246 239 127
+#define NOTIBOX_INFO_FONT "Tizen:style=Bold"
+#define NOTIBOX_INFO_FONT_SIZE 18
+#define NOTIBOX_INFO_FONT_COLOR 180 180 180 255
 
-#define BOX_INFO_SHORT_FONT "Tizen:style=Medium"
-#define BOX_INFO_SHORT_FONT_SIZE 28
-#define BOX_INFO_SHORT_FONT_COLOR 248 246 239 127
+#define NOTIBOX_INFO_SHORT_FONT "Tizen:style=Bold"
+#define NOTIBOX_INFO_SHORT_FONT_SIZE 18
+#define NOTIBOX_INFO_SHORT_FONT_COLOR 180 180 180 255
 
-#define BOX_INFO_SUB_FONT "Tizen:style=Regular"
-#define BOX_INFO_SUB_FONT_SIZE 20
-#define BOX_INFO_SUB_FONT_COLOR 248 246 239 127
-
-#define BOX_INFO_COUNT_FONT "Tizen:style=Medium"
-#define BOX_INFO_COUNT_FONT_SIZE 46
-#define BOX_INFO_COUNT_FONT_COLOR 248 246 239 255
+#define NOTIBOX_INFO_SUB_FONT "Tizen:style=Regular"
+#define NOTIBOX_INFO_SUB_FONT_SIZE 16
+#define NOTIBOX_INFO_SUB_FONT_COLOR 180 180 180 255
 
 #define TEXT_CLASS_TIZEN "tizen"
 #define TEXT_EFFECT "OUTLINE_SHADOW"
@@ -68,52 +77,52 @@ images {
 styles {
        style {
                name: "notibox_title";
-               base: "font=Tizen:style=Regular text_class=tizen font_size=38 color=#F8F6EF ellipsis=1.0 wrap=mixed";
+               base: "font=Tizen:style=Regular text_class=tizen font_size=22 color=#F8F6EF ellipsis=1.0 linegap=-6 wrap=mixed";
        }
 
        style {
                name: "notibox_title_effect";
-               base: "font=Tizen:style=Regular text_class=tizen font_size=38 color=#F8F6EF ellipsis=1.0 wrap=mixed style=outline_shadow outline_color=#000000BF shadow_color=#000000BF";
+               base: "font=Tizen:style=Regular text_class=tizen font_size=22 color=#F8F6EF ellipsis=1.0 linegap=-6 wrap=mixed style=outline_shadow outline_color=#000000BF shadow_color=#000000BF";
        }
 
        style {
                name: "notibox_contents";
-               base: "font=Tizen:style=Medium text_class=tizen font_size=32 color=#F8F6EF ellipsis=1.0 linegap=-6 wrap=mixed";
+               base: "font=Tizen:style=Bold text_class=tizen font_size=20 color=#F8F6EF ellipsis=1.0 linegap=-6 wrap=mixed";
        }
 
        style {
                name: "notibox_contents_effect";
-               base: "font=Tizen:style=Medium text_class=tizen font_size=32 color=#F8F6EF ellipsis=1.0 linegap=-6 wrap=mixed style=outline_shadow outline_color=#000000BF shadow_color=#000000BF";
+               base: "font=Tizen:style=Bold text_class=tizen font_size=20 color=#F8F6EF ellipsis=1.0 linegap=-6 wrap=mixed style=outline_shadow outline_color=#000000BF shadow_color=#000000BF";
        }
 
        style {
                name: "notibox_info";
-               base: "font=Tizen:style=Regular text_class=tizen font_size=28 color=#F8F6EF7F ellipsis=1.0 linegap=-6 wrap=mixed";
+               base: "font=Tizen:style=Bold text_class=tizen font_size=18 color=#BFBFBFFF ellipsis=1.0 linegap=-6 wrap=mixed";
        }
 
        style {
                name: "notibox_info_effect";
-               base: "font=Tizen:style=Regular text_class=tizen font_size=28 color=#F8F6EF7F ellipsis=1.0 linegap=-6 wrap=mixed style=outline_shadow outline_color=#000000BF shadow_color=#000000BF";
+               base: "font=Tizen:style=Bold text_class=tizen font_size=18 color=#BFBFBFFF ellipsis=1.0 linegap=-6 wrap=mixed style=outline_shadow outline_color=#000000BF shadow_color=#000000BF";
        }
 
        style {
                name: "notibox_info_short";
-               base: "font=Tizen:style=Regular text_class=tizen font_size=28 color=#F8F6EF7F ellipsis=1.0 linegap=-6 wrap=mixed";
+               base: "font=Tizen:style=Bold text_class=tizen font_size=18 color=#BFBFBFFF ellipsis=1.0 linegap=-6 wrap=mixed";
        }
 
        style {
                name: "notibox_info_short_effect";
-               base: "font=Tizen:style=Regular text_class=tizen font_size=28 color=#F8F6EF7F ellipsis=1.0 linegap=-6 wrap=mixed style=outline_shadow outline_color=#000000BF shadow_color=#000000BF";
+               base: "font=Tizen:style=Regular text_class=tizen font_size=18 color=#BFBFBFFF ellipsis=1.0 linegap=-6 wrap=mixed style=outline_shadow outline_color=#000000BF shadow_color=#000000BF";
        }
 
        style {
                name: "notibox_info_sub";
-               base: "font=Tizen:style=Regular text_class=tizen font_size=20 color=#F8F6EF7F ellipsis=1.0 linegap=-6 wrap=mixed";
+               base: "font=Tizen:style=Regular text_class=tizen font_size=12 color=#BFBFBFFF ellipsis=1.0 linegap=-6 wrap=mixed";
        }
 
        style {
                name: "notibox_info_sub_effect";
-               base: "font=Tizen:style=Regular text_class=tizen font_size=20 color=#F8F6EF7F ellipsis=1.0 linegap=-6 wrap=mixed style=outline_shadow outline_color=#000000BF shadow_color=#000000BF";
+               base: "font=Tizen:style=Regular text_class=tizen font_size=12 color=#BFBFBFFF ellipsis=1.0 linegap=-6 wrap=mixed style=outline_shadow outline_color=#000000BF shadow_color=#000000BF";
        }
 }
 
@@ -121,16 +130,26 @@ group {
        name: "quickpanel/notibox/single_multi";
 
        script {
-               public g_is_close_button_disabled;
                public g_is_show_dim_bg;
 
                public init_variables() {
-                       set_int(g_is_close_button_disabled, 0);
                        set_int(g_is_show_dim_bg, 0);
                }
        }
 
        parts {
+               part{
+                       name: "clip.background";
+                       type:RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               fixed: 0 0;
+                               rel1 {to: "background";}
+                               rel2 {to: "background";}
+                               visible:1;
+                       }
+               }
                part {
                        name: "background";
                        type: RECT;
@@ -138,8 +157,8 @@ group {
                        description {
                                state: "default" 0.0;
                                fixed: 0 0;
-                               color: BOX_COLOR_BG;
                                align: 0.0 0.0;
+                               color_class: BOX_COLOR_BG;
                        }
                        description {
                                state: "portrait" 0.0;
@@ -198,20 +217,20 @@ group {
                        }
                }
                part {
-                       name: "margin.right.icon";
+                       name: "margin.left.icon";
                        type: RECT;
                        scale: 1;
                        description {
                                state: "default" 0.0;
-                               min: 8 0;
+                               min: 10 0;
                                fixed: 1 0;
                                rel1 {
-                                       relative: 1.0 0.0;
+                                       relative: 0.0 0.0;
                                }
                                rel2 {
-                                       relative: 1.0 1.0;
+                                       relative: 0.0 1.0;
                                }
-                               align: 1.0 0.0;
+                               align: 0.0 0.0;
 #ifdef DEBUG
                                color: 0 255 255 255;
 #else
@@ -225,7 +244,7 @@ group {
                        scale: 1;
                        description {
                                state: "default" 0.0;
-                               min: 0 44;
+                               min: 0 10;
                                fixed: 0 1;
                                rel1 {
                                        relative: 0.0 0.0;
@@ -247,7 +266,7 @@ group {
                        scale: 1;
                        description {
                                state: "default" 0.0;
-                               min: 0 20;
+                               min: 0 10;
                                fixed: 0 1;
                                rel1 {
                                        relative: 0.0 0.0;
@@ -269,7 +288,7 @@ group {
                        scale: 1;
                        description {
                                state: "default" 0.0;
-                               min: 0 14;
+                               min: 0 8;
                                fixed: 0 1;
                                rel1 {
                                        relative: 0.0 1.0;
@@ -316,20 +335,20 @@ group {
                        scale: 1;
                        description {
                                state: "default" 0.0;
-                               min: BOX_ICON_SIZE_W BOX_ICON_SIZE_H;
-                               max: BOX_ICON_SIZE_W BOX_ICON_SIZE_H;
+                               min: BOX_ICON_BG_SIZE_W BOX_ICON_BG_SIZE_H;
+                               max: BOX_ICON_BG_SIZE_W BOX_ICON_BG_SIZE_H;
                                fixed: 1 1;
                                rel1 {
-                                       to_x:"margin.right.icon";
+                                       to_x:"margin.left.icon";
                                        to_y:"margin.top.icon";
-                                       relative: 0.0 1.0;
+                                       relative: 1.0 1.0;
                                }
                                rel2 {
-                                       to_x:"margin.right.icon";
+                                       to_x:"margin.left.icon";
                                        to_y:"margin.top.icon";
-                                       relative: 0.0 1.0;
+                                       relative: 1.0 1.0;
                                }
-                               align: 1.0 0.0;
+                               align: 0.0 0.0;
 #ifdef DEBUG
                                color: 255 0 0 255;
 #else
@@ -343,9 +362,9 @@ group {
                        scale: 1;
                        description {
                                state: "default" 0.0;
-                               min: BOX_ICON_SIZE_W BOX_ICON_SIZE_H;
-                               max: BOX_ICON_SIZE_W BOX_ICON_SIZE_H;
                                fixed: 1 1;
+                               min: BOX_ICON_BG_SIZE_W BOX_ICON_BG_SIZE_H;
+                               max: BOX_ICON_BG_SIZE_W BOX_ICON_BG_SIZE_H;
                                rel1 {
                                        to:"rect.icon.bg";
                                        relative: 0.5 0.5;
@@ -368,7 +387,7 @@ group {
                        scale: 1;
                        description {
                                state: "default" 0.0;
-                               min: 0 15;
+                               min: 0 10;
                                fixed: 0 1;
                                rel1 {
                                        to:"rect.icon.bg";
@@ -412,68 +431,56 @@ group {
                        }
                }
 
-               //section layout for close button
+               //section layout for texts
                part {
-                       name: "rect.button.close";
+                       name: "rect.text.title";
                        type: RECT;
                        scale: 1;
                        description {
                                state: "default" 0.0;
-                               min: 38 38;
-                               max: 38 38;
+                               min: 125 81;
+                               max: 9999 81;
                                fixed: 1 1;
                                rel1 {
-                                       relative: 1.0 0.0;
+                                       to_x:"rect.icon.bg";
+                                       to_y:"rect.icon.bg";
+                                       relative: 1.0 0.5;
+                                       offset: +6 0;
                                }
                                rel2 {
-                                       relative: 1.0 0.0;
+                                       to_x:"margin.right";
+                                       to_y:"rect.icon";
+                                       relative: 0.0 0.5;
                                }
-                               align: 1.0 0.0;
+                               align: 0.0 0.5;
 #ifdef DEBUG
-                               color: 255 255 255 255;
+                               color: 100 100 100 255;
 #else
                                visible:0;
 #endif
                        }
-               }
-
-               //section layout for texts
-               part {
-                       name: "rect.text.title";
-                       type: RECT;
-                       scale: 1;
                        description {
-                               state: "default" 0.0;
-                               min: 190 150;
-                               max: 190 150;
+                               state: "without_icon" 0.0;
+                               min: 125 81;
+                               max: 9999 81;
                                fixed: 1 1;
                                rel1 {
                                        to_x:"margin.left";
-                                       to_y:"margin.top.text";
-                                       relative: 1.0 1.0;
+                                       to_y:"rect.icon.bg";
+                                       relative: 1.0 0.5;
                                }
                                rel2 {
-                                       to_x:"rect.icon.bg";
-                                       to_y:"margin.top.text";
-                                       relative: 0.0 1.0;
+                                       to_x:"margin.right";
+                                       to_y:"rect.icon.bg";
+                                       relative: 0.0 0.5;
                                }
-                               align: 0.0 0.0;
+                               align: 0.0 0.5;
 #ifdef DEBUG
                                color: 100 100 100 255;
 #else
                                visible:0;
 #endif
                        }
-                       description {
-                               state: "portrait" 0.0;
-                               inherit: "default" 0.0;
-                       }
-                       description {
-                               state: "landscape" 0.0;
-                               inherit: "default" 0.0;
-                               min: 260 132;
-                               max: 260 132;
-                       }
                }
 
                part {
@@ -508,8 +515,8 @@ group {
                        scale: 1;
                        description {
                                state: "default" 0.0;
-                               min: BOX_TEXT_SUB_WIDTH BOX_TEXT_INFO_HEIGHT;
-                               max: BOX_TEXT_SUB_WIDTH BOX_TEXT_INFO_HEIGHT;
+                               min: 0 BOX_TEXT_INFO_HEIGHT;
+                               max: 0 BOX_TEXT_INFO_HEIGHT;
                                fixed: 1 1;
                                rel1 {
                                        to_x:"margin.right";
@@ -530,30 +537,6 @@ group {
                        }
                }
                part {
-                       name: "rect.text.info.sub.2.padding";
-                       type: RECT;
-                       scale: 1;
-                       description {
-                               state: "default" 0.0;
-                               min: BOX_TEXT_SUB_PADDING_WIDTH 0;
-                               fixed: 1 0;
-                               rel1 {
-                                       to:"rect.text.info.sub.2";
-                                       relative: 0.0 0.0;
-                               }
-                               rel2 {
-                                       to:"rect.text.info.sub.2";
-                                       relative: 0.0 1.0;
-                               }
-                               align: 1.0 1.0;
-#ifdef DEBUG
-                               color: 90 90 90 255;
-#else
-                               visible:0;
-#endif
-                       }
-               }
-               part {
                        name: "rect.text.info.2.short";
                        type: RECT;
                        scale: 1;
@@ -565,9 +548,10 @@ group {
                                        relative: 1.0 0.0;
                                }
                                rel2 {
-                                       to_x:"rect.text.info.sub.2.padding";
+                                       to_x:"object.text.info.sub.2";
                                        to_y:"rect.text.info.2";
                                        relative: 0.0 1.0;
+                                       offset: BOX_TEXT_SUB_PADDING_WIDTH 0;
                                }
                                align: 0.0 1.0;
 #ifdef DEBUG
@@ -634,8 +618,8 @@ group {
                        scale: 1;
                        description {
                                state: "default" 0.0;
-                               min: BOX_TEXT_SUB_WIDTH BOX_TEXT_INFO_HEIGHT;
-                               max: BOX_TEXT_SUB_WIDTH BOX_TEXT_INFO_HEIGHT;
+                               min: 0 BOX_TEXT_INFO_HEIGHT;
+                               max: 0 BOX_TEXT_INFO_HEIGHT;
                                fixed: 1 1;
                                rel1 {
                                        to_x:"margin.right";
@@ -656,30 +640,6 @@ group {
                        }
                }
                part {
-                       name: "rect.text.info.sub.1.padding";
-                       type: RECT;
-                       scale: 1;
-                       description {
-                               state: "default" 0.0;
-                               min: BOX_TEXT_SUB_PADDING_WIDTH 0;
-                               fixed: 1 0;
-                               rel1 {
-                                       to:"rect.text.info.sub.1";
-                                       relative: 0.0 0.0;
-                               }
-                               rel2 {
-                                       to:"rect.text.info.sub.1";
-                                       relative: 0.0 1.0;
-                               }
-                               align: 1.0 1.0;
-#ifdef DEBUG
-                               color: 90 90 90 255;
-#else
-                               visible:0;
-#endif
-                       }
-               }
-               part {
                        name: "rect.text.info.1.short";
                        type: RECT;
                        scale: 1;
@@ -691,9 +651,10 @@ group {
                                        relative: 1.0 0.0;
                                }
                                rel2 {
-                                       to_x:"rect.text.info.sub.1.padding";
+                                       to_x:"object.text.info.sub.1";
                                        to_y:"rect.text.info.1";
                                        relative: 0.0 1.0;
+                                       offset: BOX_TEXT_SUB_PADDING_WIDTH 0;
                                }
                                align: 0.0 1.0;
 #ifdef DEBUG
@@ -704,38 +665,12 @@ group {
                        }
                }
                part {
-                       name: "rect.text.margin.contents";
-                       type: RECT;
-                       scale: 1;
-                       description {
-                               state: "default" 0.0;
-                               min: 0 14;
-                               fixed: 0 1;
-                               rel1 {
-                                       to_x:"margin.left";
-                                       to_y:"rect.text.info.1";
-                                       relative: 1.0 0.0;
-                               }
-                               rel2 {
-                                       to_x:"margin.right";
-                                       to_y:"rect.text.info.1";
-                                       relative: 0.0 0.0;
-                               }
-                               align: 0.0 1.0;
-#ifdef DEBUG
-                               color: 255 255 255 255;
-#else
-                               visible:0;
-#endif
-                       }
-               }
-               part {
-                       name: "rect.text.margin.count";
+                       name: "rect.text.contents";
                        type: RECT;
                        scale: 1;
                        description {
                                state: "default" 0.0;
-                               min: 0 5;
+                               min: 0 BOX_TEXT_CONTENTS_HEIGHT;
                                fixed: 0 1;
                                rel1 {
                                        to_x:"margin.left";
@@ -743,34 +678,34 @@ group {
                                        relative: 1.0 0.0;
                                }
                                rel2 {
-                                       to_x:"margin.right";
+                                       to_x:"object.text.count";
                                        to_y:"rect.text.info.1";
                                        relative: 0.0 0.0;
+                                       offset: -8 0;
                                }
                                align: 0.0 1.0;
 #ifdef DEBUG
-                               color: 255 255 255 255;
+                               color: 100 150 100 255;
 #else
                                visible:0;
 #endif
                        }
                }
                part {
-                       name: "rect.text.contents";
+                       name: "rect.text.contents.multiline.short";
                        type: RECT;
                        scale: 1;
                        description {
                                state: "default" 0.0;
-                               min: 0 BOX_TEXT_CONTENTS_HEIGHT;
-                               fixed: 0 1;
+                               fixed: 1 1;
                                rel1 {
                                        to_x:"margin.left";
-                                       to_y:"rect.text.margin.contents";
+                                       to_y:"rect.text.contents";
                                        relative: 1.0 0.0;
                                }
                                rel2 {
                                        to_x:"margin.right";
-                                       to_y:"rect.text.margin.contents";
+                                       to_y:"rect.text.info.2";
                                        relative: 0.0 0.0;
                                }
                                align: 0.0 1.0;
@@ -806,112 +741,12 @@ group {
 #endif
                        }
                }
-               part {
-                       name: "rect.text.count";
-                       type: RECT;
-                       scale: 1;
-                       description {
-                               state: "default" 0.0;
-                               min: 30 50;
-                               max: 30 50;
-                               fixed: 1 1;
-                               rel1 {
-                                       to_x:"margin.left";
-                                       to_y:"rect.text.margin.count";
-                                       relative: 1.0 0.0;
-                               }
-                               rel2 {
-                                       to_x:"margin.left";
-                                       to_y:"rect.text.margin.count";
-                                       relative: 1.0 0.0;
-                               }
-                               align: 0.0 1.0;
-#ifdef DEBUG
-                               color: 190 190 190 255;
-#else
-                               visible:0;
-#endif
-                       }
-                       description {
-                               state: "count1" 0.0;
-                               inherit: "default" 0.0;
-                       }
-                       description {
-                               state: "count2" 0.0;
-                               inherit: "default" 0.0;
-                               min: 60 50;
-                       }
-                       description {
-                               state: "count3" 0.0;
-                               inherit: "default" 0.0;
-                               min: 90 50;
-                       }
-                       description {
-                               state: "count4" 0.0;
-                               inherit: "default" 0.0;
-                               min: 120 50;
-                       }
-                       description {
-                               state: "count5" 0.0;
-                               inherit: "default" 0.0;
-                               min: 150 50;
-                       }
-               }
-               part {
-                       name: "rect.text.count.padding";
-                       type: RECT;
-                       scale: 1;
-                       description {
-                               state: "default" 0.0;
-                               min: 10 58;
-                               rel1 {
-                                       to:"rect.text.count";
-                                       relative: 1.0 0.0;
-                               }
-                               rel2 {
-                                       to:"rect.text.count";
-                                       relative: 1.0 1.0;
-                               }
-                               align: 0.0 0.0;
-#ifdef DEBUG
-                               color: 0 0 0 255;
-#else
-                               visible:0;
-#endif
-                       }
-               }
-               part {
-                       name: "rect.text.contents.short";
-                       type: RECT;
-                       scale: 1;
-                       description {
-                               state: "default" 0.0;
-                               min: 0 BOX_TEXT_CONTENTS_HEIGHT;
-                               fixed: 0 1;
-                               rel1 {
-                                       to_x:"rect.text.count.padding";
-                                       to_y:"rect.text.margin.contents";
-                                       relative: 1.0 0.0;
-                               }
-                               rel2 {
-                                       to_x:"margin.right";
-                                       to_y:"rect.text.margin.contents";
-                                       relative: 0.0 0.0;
-                               }
-                               align: 0.0 1.0;
-#ifdef DEBUG
-                               color: 40 255 100 255;
-#else
-                               visible:0;
-#endif
-                       }
-               }
-
                //section objects
                part{
                        name: "object.icon.background";
                        type:SWALLOW;
                        scale: 1;
+                       clip_to: "clip.background";
                        description {
                                state: "default" 0.0;
                                fixed: 0 0;
@@ -926,29 +761,28 @@ group {
                        }
                }
                part{
-                       name: "object.icon.bg";
-                       type:IMAGE;
-                       scale:1;
+                       name: "object.touch.effect";
+                       type:RECT;
+                       scale: 1;
                        description {
                                state: "default" 0.0;
                                fixed: 0 0;
-                               rel1 {to: "rect.icon.bg";}
-                               rel2 {to: "rect.icon.bg";}
-                               image {
-                                       normal:"quick_icon_bg_01.png";
-                                       border: 0 0 0 0;
-                                       border_scale: 1;
-                               }
+                               rel1 {to: "background";}
+                               rel2 {to: "background";}
+                               color: 0 0 0 0;
+                               visible:0;
                        }
                        description {
                                state: "show" 0.0;
                                inherit: "default" 0.0;
+                               color_class: BOX_COLOR_BG_HIGHLIGHT;
                                visible:1;
                        }
                        description {
-                               state: "hide" 0.0;
+                               state: "show.dim" 0.0;
                                inherit: "default" 0.0;
-                               visible:0;
+                               color_class: BOX_COLOR_BG_HIGHLIGHT_DIM;
+                               visible:1;
                        }
                }
                part{
@@ -995,8 +829,8 @@ group {
                        description {
                                state: "default" 0.0;
                                fixed: 1 1;
-                               min: BOX_ICON_SIZE_W BOX_ICON_SIZE_H;
-                               max: BOX_ICON_SIZE_W BOX_ICON_SIZE_H;
+                               min: BOX_ICON_BG_SIZE_W BOX_ICON_BG_SIZE_H;
+                               max: BOX_ICON_BG_SIZE_W BOX_ICON_BG_SIZE_H;
                                rel1 {to: "rect.icon";}
                                rel2 {to: "rect.icon";}
                                visible:0;
@@ -1014,10 +848,10 @@ group {
                        description {
                                state: "default" 0.0;
                                fixed: 1 1;
-                               min: BOX_ICON_SIZE_W BOX_ICON_SIZE_H;
-                               max: BOX_ICON_SIZE_W BOX_ICON_SIZE_H;
-                               rel1 {to: "rect.icon";}
-                               rel2 {to: "rect.icon";}
+                               min: BOX_ICON_BG_SIZE_W BOX_ICON_BG_SIZE_H;
+                               max: BOX_ICON_BG_SIZE_W BOX_ICON_BG_SIZE_H;
+                               rel1 {to: "rect.icon.bg";}
+                               rel2 {to: "rect.icon.bg";}
                                image {
                                        normal:"icon_press.png";
                                        border: 0 0 0 0;
@@ -1037,33 +871,6 @@ group {
                        }
                }
                part{
-                       name: "object.icon.sub.bg";
-                       type:IMAGE;
-                       scale:1;
-                       description {
-                               state: "default" 0.0;
-                               fixed: 0 0;
-                               rel1 {to: "rect.icon.sub";}
-                               rel2 {to: "rect.icon.sub";}
-                               image {
-                                       normal:"quick_icon_bg_small.png";
-                                       border: 0 0 0 0;
-                                       border_scale: 1;
-                               }
-                               visible:0;
-                       }
-                       description {
-                               state: "show" 0.0;
-                               inherit: "default" 0.0;
-                               visible:1;
-                       }
-                       description {
-                               state: "hide" 0.0;
-                               inherit: "default" 0.0;
-                               visible:0;
-                       }
-               }
-               part{
                        name: BOX_PART_ICON_SUB;
                        type:SWALLOW;
                        scale: 1;
@@ -1094,7 +901,8 @@ group {
                                rel2 {to: "rect.text.title";}
                                text {
                                        style: "notibox_title";
-                                       align: 0.0 0.0;
+                                       size: 34;
+                                       align: 0.0 0.5;
 #ifdef DEBUG_TEXT
                                        text: "some string of text to display";
 #endif
@@ -1125,11 +933,11 @@ group {
                                state: "default" 0.0;
                                rel1 {to: "rect.text.contents";}
                                rel2 {to: "rect.text.contents";}
-                               color: BOX_CONTENTS_FONT_COLOR;
+                               color: NOTIBOX_CONTENTS_FONT_COLOR;
                                text {
-                                       font: BOX_CONTENTS_FONT;
+                                       font: NOTIBOX_CONTENTS_FONT;
                                        text_class: TEXT_CLASS_TIZEN;
-                                       size: BOX_CONTENTS_FONT_SIZE;
+                                       size: NOTIBOX_CONTENTS_FONT_SIZE;
                                        align: 0.0 0.5;
 #ifdef DEBUG_TEXT
                                        text: "some string of text to display";
@@ -1145,26 +953,29 @@ group {
                        description {
                                state: "show.effect" 0.0;
                                inherit: "default" 0.0;
-                               color2: BOX_FONT_SHADOW_COLOR;
-                               color3: BOX_FONT_OUTLINE_COLOR;
+                               color2: NOTIBOX_FONT_SHADOW_COLOR;
+                               color3: NOTIBOX_FONT_OUTLINE_COLOR;
                                visible:1;
                        }
                }
                part {
-                       name: "object.text.contents.short";
+                       name: "object.text.contents.multiline.short";
                        scale: 1;
-                       type: TEXT;
-                       effect: TEXT_EFFECT;
+                       type: TEXTBLOCK;
+                       multiline: 1;
                        description {
                                state: "default" 0.0;
-                               rel1 {to: "rect.text.contents.short";}
-                               rel2 {to: "rect.text.contents.short";}
-                               color: BOX_CONTENTS_FONT_COLOR;
+                               align: 0.0 0.0;
+                               fixed: 1 1;
+                               rel1 {
+                                       to: "rect.text.contents.multiline.short";
+                               }
+                               rel2 {
+                                       to: "rect.text.contents.multiline.short";
+                               }
                                text {
-                                       font: BOX_CONTENTS_FONT;
-                                       text_class: TEXT_CLASS_TIZEN;
-                                       size: BOX_CONTENTS_FONT_SIZE;
-                                       align: 0.0 0.5;
+                                               style: "notibox_contents";
+                                               align: 0.0 0.0;
                                }
                                visible:0;
                        }
@@ -1176,8 +987,9 @@ group {
                        description {
                                state: "show.effect" 0.0;
                                inherit: "default" 0.0;
-                               color2: BOX_FONT_SHADOW_COLOR;
-                               color3: BOX_FONT_OUTLINE_COLOR;
+                               text {
+                                       style: "notibox_contents_effect";
+                               }
                                visible:1;
                        }
                }
@@ -1199,7 +1011,6 @@ group {
                                text {
                                                style: "notibox_contents";
                                                align: 0.0 0.0;
-                                               fit: 0 0;
                                }
                                visible:0;
                        }
@@ -1224,19 +1035,31 @@ group {
                        effect: TEXT_EFFECT;
                        description {
                                state: "default" 0.0;
-                               rel1 {to: "rect.text.count";}
-                               rel2 {to: "rect.text.count";}
-                               color: BOX_INFO_COUNT_FONT_COLOR;
+                               min: 0 BOX_TEXT_CONTENTS_HEIGHT;
+                               max: 79 BOX_TEXT_CONTENTS_HEIGHT;
+                               rel1 {
+                                       to_x:"margin.right";
+                                       to_y:"rect.text.info.1";
+                                       relative: 0.0 0.0;
+                               }
+                               rel2 {
+                                       to_x:"margin.right";
+                                       to_y:"rect.text.info.1";
+                                       relative: 0.0 0.0;
+                               }
+                               color: NOTIBOX_CONTENTS_FONT_COLOR;
                                text {
-                                       font: BOX_INFO_COUNT_FONT;
+                                       font: NOTIBOX_CONTENTS_FONT;
                                        text_class: TEXT_CLASS_TIZEN;
-                                       size: BOX_INFO_COUNT_FONT_SIZE;
-                                       align: 0.0 1.0;
+                                       size: NOTIBOX_CONTENTS_FONT_SIZE;
+                                       align: 1.0 0.5;
+                                       min: 1 0;
 #ifdef DEBUG_TEXT
-                                       text: "3";
+                                       text: "some string of text to display";
 #endif
                                }
                                visible:0;
+                               align: 1.0 1.0;
                        }
                        description {
                                state: "show" 0.0;
@@ -1246,12 +1069,11 @@ group {
                        description {
                                state: "show.effect" 0.0;
                                inherit: "default" 0.0;
-                               color2: BOX_FONT_SHADOW_COLOR;
-                               color3: BOX_FONT_OUTLINE_COLOR;
+                               color2: NOTIBOX_FONT_SHADOW_COLOR;
+                               color3: NOTIBOX_FONT_OUTLINE_COLOR;
                                visible:1;
                        }
                }
-
                part {
                        name: "object.text.info.1";
                        scale: 1;
@@ -1261,11 +1083,11 @@ group {
                                state: "default" 0.0;
                                rel1 {to: "rect.text.info.1";}
                                rel2 {to: "rect.text.info.1";}
-                               color: BOX_INFO_FONT_COLOR;
+                               color: NOTIBOX_INFO_FONT_COLOR;
                                text {
-                                       font: BOX_INFO_FONT;
+                                       font: NOTIBOX_INFO_FONT;
                                        text_class: TEXT_CLASS_TIZEN;
-                                       size: BOX_INFO_FONT_SIZE;
+                                       size: NOTIBOX_INFO_FONT_SIZE;
                                        align: 0.0 0.5;
 #ifdef DEBUG_TEXT
                                        text: "some string of text to display";
@@ -1281,8 +1103,8 @@ group {
                        description {
                                state: "show.effect" 0.0;
                                inherit: "default" 0.0;
-                               color2: BOX_FONT_SHADOW_COLOR;
-                               color3: BOX_FONT_OUTLINE_COLOR;
+                               color2: NOTIBOX_FONT_SHADOW_COLOR;
+                               color3: NOTIBOX_FONT_OUTLINE_COLOR;
                                visible:1;
                        }
                }
@@ -1295,11 +1117,11 @@ group {
                                state: "default" 0.0;
                                rel1 {to: "rect.text.info.1.short";}
                                rel2 {to: "rect.text.info.1.short";}
-                               color: BOX_INFO_SHORT_FONT_COLOR;
+                               color: NOTIBOX_INFO_SHORT_FONT_COLOR;
                                text {
-                                       font: BOX_INFO_SHORT_FONT;
+                                       font: NOTIBOX_INFO_SHORT_FONT;
                                        text_class: TEXT_CLASS_TIZEN;
-                                       size: BOX_INFO_SHORT_FONT_SIZE;
+                                       size: NOTIBOX_INFO_SHORT_FONT_SIZE;
                                        align: 0.0 0.5;
                                }
                                visible:0;
@@ -1312,8 +1134,8 @@ group {
                        description {
                                state: "show.effect" 0.0;
                                inherit: "default" 0.0;
-                               color2: BOX_FONT_SHADOW_COLOR;
-                               color3: BOX_FONT_OUTLINE_COLOR;
+                               color2: NOTIBOX_FONT_SHADOW_COLOR;
+                               color3: NOTIBOX_FONT_OUTLINE_COLOR;
                                visible:1;
                        }
                }
@@ -1335,7 +1157,6 @@ group {
                                text {
                                                style: "notibox_info";
                                                align: 0.0 0.0;
-                                               fit: 0 0;
                                }
                                visible:0;
                        }
@@ -1360,19 +1181,27 @@ group {
                        effect: TEXT_EFFECT;
                        description {
                                state: "default" 0.0;
-                               rel1 {to: "rect.text.info.sub.1";}
-                               rel2 {to: "rect.text.info.sub.1";}
-                               color: BOX_INFO_SUB_FONT_COLOR;
+                               rel1 {
+                                       to: "rect.text.info.sub.1";
+                                       relative: 1.0 0.0;
+                               }
+                               rel2 {
+                                       to: "rect.text.info.sub.1";
+                                       relative: 1.0 1.0;
+                               }
+                               color: NOTIBOX_INFO_SUB_FONT_COLOR;
                                text {
-                                       font: BOX_INFO_SUB_FONT;
+                                       font: NOTIBOX_INFO_SUB_FONT;
                                        text_class: TEXT_CLASS_TIZEN;
-                                       size: BOX_INFO_SUB_FONT_SIZE;
+                                       size: NOTIBOX_INFO_SUB_FONT_SIZE;
                                        align: 1.0 0.5;
+                                       min: 1 0;
 #ifdef DEBUG_TEXT
                                        text: "some string of text to display";
 #endif
                                }
                                visible:0;
+                               align:1.0 0.0;
                        }
                        description {
                                state: "show" 0.0;
@@ -1382,8 +1211,8 @@ group {
                        description {
                                state: "show.effect" 0.0;
                                inherit: "default" 0.0;
-                               color2: BOX_FONT_SHADOW_COLOR;
-                               color3: BOX_FONT_OUTLINE_COLOR;
+                               color2: NOTIBOX_FONT_SHADOW_COLOR;
+                               color3: NOTIBOX_FONT_OUTLINE_COLOR;
                                visible:1;
                        }
                }
@@ -1397,11 +1226,11 @@ group {
                                state: "default" 0.0;
                                rel1 {to: "rect.text.info.2";}
                                rel2 {to: "rect.text.info.2";}
-                               color: BOX_INFO_FONT_COLOR;
+                               color: NOTIBOX_INFO_FONT_COLOR;
                                text {
-                                       font: BOX_INFO_FONT;
+                                       font: NOTIBOX_INFO_FONT;
                                        text_class: TEXT_CLASS_TIZEN;
-                                       size: BOX_INFO_FONT_SIZE;
+                                       size: NOTIBOX_INFO_FONT_SIZE;
                                        align: 0.0 0.5;
 #ifdef DEBUG_TEXT
                                        text: "some string of text to display";
@@ -1417,8 +1246,8 @@ group {
                        description {
                                state: "show.effect" 0.0;
                                inherit: "default" 0.0;
-                               color2: BOX_FONT_SHADOW_COLOR;
-                               color3: BOX_FONT_OUTLINE_COLOR;
+                               color2: NOTIBOX_FONT_SHADOW_COLOR;
+                               color3: NOTIBOX_FONT_OUTLINE_COLOR;
                                visible:1;
                        }
                }
@@ -1431,11 +1260,11 @@ group {
                                state: "default" 0.0;
                                rel1 {to: "rect.text.info.2.short";}
                                rel2 {to: "rect.text.info.2.short";}
-                               color: BOX_INFO_SHORT_FONT_COLOR;
+                               color: NOTIBOX_INFO_SHORT_FONT_COLOR;
                                text {
-                                       font: BOX_INFO_SHORT_FONT;
+                                       font: NOTIBOX_INFO_SHORT_FONT;
                                        text_class: TEXT_CLASS_TIZEN;
-                                       size: BOX_INFO_SHORT_FONT_SIZE;
+                                       size: NOTIBOX_INFO_SHORT_FONT_SIZE;
                                        align: 0.0 0.5;
                                }
                                visible:0;
@@ -1448,8 +1277,8 @@ group {
                        description {
                                state: "show.effect" 0.0;
                                inherit: "default" 0.0;
-                               color2: BOX_FONT_SHADOW_COLOR;
-                               color3: BOX_FONT_OUTLINE_COLOR;
+                               color2: NOTIBOX_FONT_SHADOW_COLOR;
+                               color3: NOTIBOX_FONT_OUTLINE_COLOR;
                                visible:1;
                        }
                }
@@ -1460,19 +1289,27 @@ group {
                        effect: TEXT_EFFECT;
                        description {
                                state: "default" 0.0;
-                               rel1 {to: "rect.text.info.sub.2";}
-                               rel2 {to: "rect.text.info.sub.2";}
-                               color: BOX_INFO_SUB_FONT_COLOR;
+                               rel1 {
+                                       to: "rect.text.info.sub.2";
+                                       relative: 1.0 0.0;
+                               }
+                               rel2 {
+                                       to: "rect.text.info.sub.2";
+                                       relative: 1.0 1.0;
+                               }
+                               color: NOTIBOX_INFO_SUB_FONT_COLOR;
                                text {
-                                       font: BOX_INFO_SUB_FONT;
+                                       font: NOTIBOX_INFO_SUB_FONT;
                                        text_class: TEXT_CLASS_TIZEN;
-                                       size: BOX_INFO_SUB_FONT_SIZE;
+                                       size: NOTIBOX_INFO_SUB_FONT_SIZE;
                                        align: 1.0 0.5;
+                                       min: 1 0;
 #ifdef DEBUG_TEXT
                                        text: "some string of text to display";
 #endif
                                }
                                visible:0;
+                               align:1.0 0.0;
                        }
                        description {
                                state: "show" 0.0;
@@ -1482,8 +1319,8 @@ group {
                        description {
                                state: "show.effect" 0.0;
                                inherit: "default" 0.0;
-                               color2: BOX_FONT_SHADOW_COLOR;
-                               color3: BOX_FONT_OUTLINE_COLOR;
+                               color2: NOTIBOX_FONT_SHADOW_COLOR;
+                               color3: NOTIBOX_FONT_OUTLINE_COLOR;
                                visible:1;
                        }
                }
@@ -1500,6 +1337,7 @@ group {
                                color: 0 0 0 0;
                        }
                }
+               QUICKPANEL_FOCUS_OBJECT("focus", "background", "background")
                part {
                        name: "object.layer.touch.button.1";
                        mouse_events: 1;
@@ -1509,9 +1347,7 @@ group {
                        description {
                                state: "default" 0.0;
                                rel1 {
-                                       to_x: "rect.icon";
-                                       to_y: "object.button.close";
-                                       relative: 0.0 1.0;
+                                       to: "rect.icon";
                                }
                                rel2 {to: "rect.icon";}
                                color: 0 0 0 0;
@@ -1527,102 +1363,6 @@ group {
                                visible: 0;
                        }
                }
-               part{
-                       name: "object.button.close";
-                       type:RECT;
-                       scale:1;
-                       description {
-                               state: "default" 0.0;
-                               min:100 64;
-                               rel1 {
-                                       to: "rect.button.close";
-                                       relative: 1.0 0.0;
-                               }
-                               rel2 {
-                                       to: "rect.button.close";
-                                       relative: 1.0 0.0;
-                               }
-                               color: 0 0 0 0;
-                               align: 1.0 0.0;
-                       }
-               }
-               part{
-                       name: "object.image.button.close";
-                       type:IMAGE;
-                       scale:1;
-                       repeat_events: 1;
-                       description {
-                               state: "default" 0.0;
-                               rel1 {to: "rect.button.close";}
-                               rel2 {to: "rect.button.close";}
-                               image {
-                                       normal:"quick_btn_close_nor.png";
-                                       border: 0 0 0 0;
-                                       border_scale: 1;
-                               }
-                               align: 0.0 1.0;
-                       }
-                       description {
-                               state: "normal" 0.0;
-                               inherit: "default" 0.0;
-                       }
-                       description {
-                               state: "pressed" 0.0;
-                               inherit: "default" 0.0;
-                               image {
-                                       normal:"quick_btn_close_press.png";
-                                       border: 0 0 0 0;
-                                       border_scale: 1;
-                               }
-                               align: 0.0 1.0;
-                       }
-                       description {
-                               state: "disabled" 0.0;
-                               inherit: "default" 0.0;
-                               image {
-                                       normal:"quick_btn_close_dim.png";
-                                       border: 0 0 0 0;
-                                       border_scale: 1;
-                               }
-                               align: 0.0 1.0;
-                       }
-               }
-               part {
-                       name: "accessibility";
-                       type: RECT;
-                       mouse_events: 1;
-                       repeat_events: 1;
-                       scale: 1;
-                       description {
-                               state: "default" 0.0;
-                               rel1 {
-                                       to: "background";
-                               }
-                               rel2 {
-                                       to: "background";
-                               }
-                               color: QP_ACCESSIBILITY_TEST_COLOR;
-                               visible: 1;
-                       }
-               }
-               part {
-                       name: "accessibility.closebutton";
-                       type: RECT;
-                       mouse_events: 1;
-                       repeat_events: 1;
-                       scale: 1;
-                       description {
-                               state: "default" 0.0;
-                               rel1 {
-                                       to: "rect.button.close";
-                               }
-                               rel2 {
-                                       to: "rect.button.close";
-                               }
-                               color: QP_ACCESSIBILITY_TEST_COLOR;
-                               visible: 1;
-                       }
-               }
        }
 
        programs {
@@ -1657,7 +1397,6 @@ group {
                        source: "box.prog";
                        action: STATE_SET "portrait" 0.0;
                        target: "background";
-                       target: "rect.text.title";
                        after: "box.portrait.custom";
                }
                program{
@@ -1666,7 +1405,6 @@ group {
                        source: "box.prog";
                        action: STATE_SET "landscape" 0.0;
                        target: "background";
-                       target: "rect.text.title";
                        after: "box.landscape.custom";
                }
                program{
@@ -1687,12 +1425,34 @@ group {
                                }
                        }
                }
+#ifdef TBD
                program{
                        name: "box.touch.down";
                        signal: "mouse,clicked,1";
                        source: "object.layer.touch.background";
                        action: SIGNAL_EMIT "selected" "edje";
                }
+#endif
+               program{
+                       name: "effect,mouse,down";
+                       signal: "mouse,down,1";
+                       source: "object.layer.touch.background";
+                       script {
+                               if (get_int(g_is_show_dim_bg) == 1) {
+                                       set_state(PART:"object.touch.effect", "show.dim", 0.0);
+                               } else {
+                                       set_state(PART:"object.touch.effect", "show", 0.0);
+                               }
+                       }
+               }
+               program{
+                       name: "effect,mouse,up";
+                       signal: "mouse,up,1";
+                       source: "object.layer.touch.background";
+                       action: STATE_SET "default" 0.0;
+                       transition: ACCELERATE 0.20;
+                       target: "object.touch.effect";
+               }
                program{
                        name: "box.button.1.touch.clicked";
                        signal: "mouse,clicked,1";
@@ -1714,49 +1474,10 @@ group {
                        target: "object.icon.press";
                }
                program{
-                       name: "box.button.close.1";
-                       signal: "mouse,down,1";
-                       source: "object.button.close";
-                       script {
-                               if (get_int(g_is_close_button_disabled) == 0) {
-                                       set_state(PART:"object.image.button.close", "pressed", 0.0);
-                               }
-                       }
-               }
-               program{
-                       name: "box.button.close.2";
-                       signal: "mouse,up,1";
-                       source: "object.button.close";
-                       script {
-                               set_state(PART:"object.image.button.close", "normal", 0.0);
-                       }
-               }
-               program{
-                       name: "box.button.close.3";
-                       signal: "mouse,clicked,1";
-                       source: "object.button.close";
-                       script {
-                               if (get_int(g_is_close_button_disabled) == 0) {
-                                       set_state(PART:"object.image.button.close", "normal", 0.0);
-                                       emit("deleted", "edje");
-                               }
-                       }
-               }
-               program{
-                       name: "box.button.close.4";
-                       signal: "disabled";
-                       source: "object.button.close";
-                       script {
-                               set_state(PART:"object.image.button.close", "disabled", 0.0);
-                               set_int(g_is_close_button_disabled, 1);
-                       }
-               }
-               program{
                        name: "box.show.icon.bg";
                        signal: "box.show.icon.bg";
                        source: "box.prog";
                        action: STATE_SET "show" 0.0;
-                       target: "object.icon.bg";
                        target: "object.layer.touch.button.1";
                }
                program{
@@ -1764,64 +1485,28 @@ group {
                        signal: "box.hide.icon.bg";
                        source: "box.prog";
                        action: STATE_SET "hide" 0.0;
-                       target: "object.icon.bg";
                        target: "object.layer.touch.button.1";
                }
                program{
-                       name: "box.show.icon.sub.bg";
-                       signal: "box.show.sub.bg";
-                       source: "box.prog";
-                       action: STATE_SET "show" 0.0;
-                       target: "object.icon.sub.bg";
-               }
-               program{
-                       name: "box.hide.icon.sub.bg";
-                       signal: "box.hide.sub.bg";
+                       name: "box.title.with.icon";
+                       signal: "box.title.with.icon";
                        source: "box.prog";
-                       action: STATE_SET "hide" 0.0;
-                       target: "object.icon.sub.bg";
-               }
-               program{
-                       name: "box.count.1";
-                       signal: "box.count.1";
-                       source: "box.prog";
-                       action: STATE_SET "count1" 0.0;
-                       target: "rect.text.count";
-               }
-               program{
-                       name: "box.count.2";
-                       signal: "box.count.2";
-                       source: "box.prog";
-                       action: STATE_SET "count2" 0.0;
-                       target: "rect.text.count";
-               }
-               program{
-                       name: "box.count.3";
-                       signal: "box.count.3";
-                       source: "box.prog";
-                       action: STATE_SET "count3" 0.0;
-                       target: "rect.text.count";
-               }
-               program{
-                       name: "box.count.4";
-                       signal: "box.count.4";
-                       source: "box.prog";
-                       action: STATE_SET "count4" 0.0;
-                       target: "rect.text.count";
+                       action: STATE_SET "default" 0.0;
+                       target: "rect.text.title";
                }
                program{
-                       name: "box.count.5";
-                       signal: "box.count.5";
+                       name: "box.title.without.icon";
+                       signal: "box.title.without.icon";
                        source: "box.prog";
-                       action: STATE_SET "count5" 0.0;
-                       target: "rect.text.count";
+                       action: STATE_SET "without_icon" 0.0;
+                       target: "rect.text.title";
                }
                MAKE_PART_SHOW_PROGRAM("object.icon.background")
                MAKE_PART_SHOW_PROGRAM("object.icon")
                MAKE_PART_SHOW_PROGRAM("object.icon.sub")
                MAKE_PART_SHOW_TEXT_PROGRAM("object.text.title")
                MAKE_PART_SHOW_TEXT_PROGRAM("object.text.contents")
-               MAKE_PART_SHOW_TEXT_PROGRAM("object.text.contents.short")
+               MAKE_PART_SHOW_TEXT_PROGRAM("object.text.contents.multiline.short")
                MAKE_PART_SHOW_TEXT_PROGRAM("object.text.contents.multiline")
                MAKE_PART_SHOW_TEXT_PROGRAM("object.text.count")
                MAKE_PART_SHOW_TEXT_PROGRAM("object.text.info.1")
@@ -1839,24 +1524,34 @@ group {
        name: "quickpanel/notibox/thumbnail";
 
        script {
-               public g_is_close_button_disabled;
                public g_is_show_dim_bg;
 
                public init_variables() {
-                       set_int(g_is_close_button_disabled, 0);
                        set_int(g_is_show_dim_bg, 0);
                }
        }
 
        parts {
+               part{
+                       name: "clip.background";
+                       type:RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               fixed: 0 0;
+                               rel1 {to: "background";}
+                               rel2 {to: "background";}
+                               visible:1;
+                       }
+               }
                part {
                        name: "background";
                        type: RECT;
                        scale: 1;
                        description {
                                state: "default" 0.0;
-                               min: BOX_WIDTH_P BOX_HEIGHT_P;
-                               color: BOX_COLOR_BG;
+                               fixed: 0 0;
+                               color_class: BOX_COLOR_BG;
                                align: 0.0 0.0;
                        }
                        description {
@@ -1866,7 +1561,6 @@ group {
                        description {
                                state: "landscape" 0.0;
                                inherit: "default" 0.0;
-                               min: BOX_WIDTH_L BOX_HEIGHT_L;
                        }
                }
 
@@ -1879,6 +1573,7 @@ group {
                        description {
                                state: "default" 0.0;
                                min: BOX_MARGIN_L_TEXT_H 0;
+                               fixed: 1 0;
                                rel1 {
                                        relative: 0.0 0.0;
                                }
@@ -1900,6 +1595,7 @@ group {
                        description {
                                state: "default" 0.0;
                                min: BOX_MARGIN_R_TEXT_H 0;
+                               fixed: 1 0;
                                rel1 {
                                        relative: 1.0 0.0;
                                }
@@ -1915,12 +1611,13 @@ group {
                        }
                }
                part {
-                       name: "margin.left.thumnail";
+                       name: "margin.left.icon";
                        type: RECT;
                        scale: 1;
                        description {
                                state: "default" 0.0;
-                               min: 12 0;
+                               min: 10 0;
+                               fixed: 1 0;
                                rel1 {
                                        relative: 0.0 0.0;
                                }
@@ -1929,79 +1626,42 @@ group {
                                }
                                align: 0.0 0.0;
 #ifdef DEBUG
-                               color: 25 0 60 255;
+                               color: 0 255 255 255;
 #else
                                visible:0;
 #endif
                        }
-                       description {
-                               state: "portrait" 0.0;
-                               inherit: "default" 0.0;
-                       }
-                       description {
-                               state: "landscape" 0.0;
-                               inherit: "default" 0.0;
-                               min: 14 0;
-                       }
                }
                part {
-                       name: "margin.right.thumnail";
+                       name: "margin.top.icon";
                        type: RECT;
                        scale: 1;
                        description {
                                state: "default" 0.0;
-                               min: 12 0;
+                               min: 0 10;
+                               fixed: 0 1;
                                rel1 {
-                                       relative: 1.0 0.0;
+                                       relative: 0.0 0.0;
                                }
                                rel2 {
-                                       relative: 1.0 1.0;
-                               }
-                               align: 1.0 0.0;
-#ifdef DEBUG
-                               color: 25 0 60 255;
-#else
-                               visible:0;
-#endif
-                       }
-                       description {
-                               state: "portrait" 0.0;
-                               inherit: "default" 0.0;
-                       }
-                       description {
-                               state: "landscape" 0.0;
-                               inherit: "default" 0.0;
-                               min: 14 0;
-                       }
-               }
-               part {
-                       name: "margin.right.icon";
-                       type: RECT;
-                       scale: 1;
-                       description {
-                               state: "default" 0.0;
-                               min: 8 0;
-                               rel1 {
                                        relative: 1.0 0.0;
                                }
-                               rel2 {
-                                       relative: 1.0 1.0;
-                               }
-                               align: 1.0 0.0;
+                               align: 0.0 0.0;
 #ifdef DEBUG
-                               color: 0 255 255 255;
+                               color: 255 0 255 255;
 #else
                                visible:0;
 #endif
                        }
                }
                part {
-                       name: "margin.top.icon";
+                       name: "margin.top.text";
                        type: RECT;
                        scale: 1;
                        description {
                                state: "default" 0.0;
-                               min: 0 44;
+                               min: 0 10;
+                               fixed: 0 1;
                                rel1 {
                                        relative: 0.0 0.0;
                                }
@@ -2010,26 +1670,27 @@ group {
                                }
                                align: 0.0 0.0;
 #ifdef DEBUG
-                               color: 255 0 255 255;
+                               color: 0 0 255 255;
 #else
                                visible:0;
 #endif
                        }
                }
                part {
-                       name: "margin.top.text";
+                       name: "margin.bottom";
                        type: RECT;
                        scale: 1;
                        description {
                                state: "default" 0.0;
-                               min: 0 20;
+                               min: 0 8;
+                               fixed: 0 1;
                                rel1 {
-                                       relative: 0.0 0.0;
+                                       relative: 0.0 1.0;
                                }
                                rel2 {
-                                       relative: 1.0 0.0;
+                                       relative: 1.0 1.0;
                                }
-                               align: 0.0 0.0;
+                               align: 0.0 1.0;
 #ifdef DEBUG
                                color: 0 0 255 255;
 #else
@@ -2038,12 +1699,13 @@ group {
                        }
                }
                part {
-                       name: "margin.bottom";
+                       name: "margin.bottom.thin";
                        type: RECT;
                        scale: 1;
                        description {
                                state: "default" 0.0;
-                               min: 0 14;
+                               min: 0 2;
+                               fixed: 0 1;
                                rel1 {
                                        relative: 0.0 1.0;
                                }
@@ -2067,19 +1729,20 @@ group {
                        scale: 1;
                        description {
                                state: "default" 0.0;
-                               min: BOX_ICON_SIZE_W BOX_ICON_SIZE_H;
-                               max: BOX_ICON_SIZE_W BOX_ICON_SIZE_H;
+                               min: BOX_ICON_BG_SIZE_W BOX_ICON_BG_SIZE_H;
+                               max: BOX_ICON_BG_SIZE_W BOX_ICON_BG_SIZE_H;
+                               fixed: 1 1;
                                rel1 {
-                                       to_x:"margin.right.icon";
+                                       to_x:"margin.left.icon";
                                        to_y:"margin.top.icon";
-                                       relative: 0.0 1.0;
+                                       relative: 1.0 1.0;
                                }
                                rel2 {
-                                       to_x:"margin.right.icon";
+                                       to_x:"margin.left.icon";
                                        to_y:"margin.top.icon";
-                                       relative: 0.0 1.0;
+                                       relative: 1.0 1.0;
                                }
-                               align: 1.0 0.0;
+                               align: 0.0 0.0;
 #ifdef DEBUG
                                color: 255 0 0 255;
 #else
@@ -2093,8 +1756,9 @@ group {
                        scale: 1;
                        description {
                                state: "default" 0.0;
-                               min: BOX_ICON_SIZE_W BOX_ICON_SIZE_H;
-                               max: BOX_ICON_SIZE_W BOX_ICON_SIZE_H;
+                               fixed: 1 1;
+                               min: BOX_ICON_BG_SIZE_W BOX_ICON_BG_SIZE_H;
+                               max: BOX_ICON_BG_SIZE_W BOX_ICON_BG_SIZE_H;
                                rel1 {
                                        to:"rect.icon.bg";
                                        relative: 0.5 0.5;
@@ -2117,7 +1781,8 @@ group {
                        scale: 1;
                        description {
                                state: "default" 0.0;
-                               min: 0 15;
+                               min: 0 9;
+                               fixed: 0 1;
                                rel1 {
                                        to:"rect.icon.bg";
                                        relative: 0.0 1.0;
@@ -2142,6 +1807,7 @@ group {
                                state: "default" 0.0;
                                min: BOX_ICON_SUB_SIZE_W BOX_ICON_SUB_SIZE_H;
                                max: BOX_ICON_SUB_SIZE_W BOX_ICON_SUB_SIZE_H;
+                               fixed: 1 1;
                                rel1 {
                                        to:"rect.icon.sub.padding";
                                        relative: 1.0 1.0;
@@ -2159,109 +1825,100 @@ group {
                        }
                }
 
-               //section layout for close button
+               //section layout for texts
                part {
-                       name: "rect.button.close";
+                       name: "rect.text.title";
                        type: RECT;
                        scale: 1;
                        description {
                                state: "default" 0.0;
-                               min: 38 38;
+                               min: 125 81;
+                               max: 9999 81;
+                               fixed: 1 1;
                                rel1 {
-                                       relative: 1.0 0.0;
+                                       to_x:"rect.icon.bg";
+                                       to_y:"rect.icon.bg";
+                                       relative: 1.0 0.5;
+                                       offset: +10 0;
                                }
                                rel2 {
-                                       relative: 1.0 0.0;
+                                       to_x:"margin.right";
+                                       to_y:"rect.icon.bg";
+                                       relative: 0.0 0.5;
                                }
-                               align: 1.0 0.0;
+                               align: 0.0 0.5;
 #ifdef DEBUG
-                               color: 255 255 255 255;
+                               color: 100 100 100 255;
 #else
                                visible:0;
 #endif
                        }
-               }
-
-               //section layout for texts
-               part {
-                       name: "rect.text.title";
-                       type: RECT;
-                       scale: 1;
                        description {
-                               state: "default" 0.0;
-                               min: 190 150;
-                               max: 190 150;
+                               state: "without_icon" 0.0;
+                               min: 125 81;
+                               max: 9999 81;
                                fixed: 1 1;
                                rel1 {
                                        to_x:"margin.left";
-                                       to_y:"margin.top.text";
-                                       relative: 1.0 1.0;
+                                       to_y:"rect.icon.bg";
+                                       relative: 1.0 0.5;
                                }
                                rel2 {
-                                       to_x:"rect.icon.bg";
-                                       to_y:"margin.top.text";
-                                       relative: 0.0 1.0;
+                                       to_x:"margin.right";
+                                       to_y:"rect.icon.bg";
+                                       relative: 0.0 0.5;
                                }
-                               align: 0.0 0.0;
+                               align: 0.0 0.5;
 #ifdef DEBUG
                                color: 100 100 100 255;
 #else
                                visible:0;
 #endif
                        }
-                       description {
-                               state: "portrait" 0.0;
-                               inherit: "default" 0.0;
-                       }
-                       description {
-                               state: "landscape" 0.0;
-                               inherit: "default" 0.0;
-                               min: 260 189;
-                               max: 260 189;
-                       }
                }
 
-
                part {
-                       name: "rect.text.margin.contents";
+                       name: "rect.text.info.2";
                        type: RECT;
                        scale: 1;
                        description {
                                state: "default" 0.0;
-                               min: 0 14;
+                               min: 0 BOX_TEXT_INFO_HEIGHT;
+                               fixed: 0 1;
                                rel1 {
-                                       to_x:"margin.left";
-                                       to_y:"rect.thumbnail.list.1";
+                                       to_x:"rect.thumbnail.list.1.padding";
+                                       to_y:"margin.bottom";
                                        relative: 1.0 0.0;
                                }
                                rel2 {
                                        to_x:"margin.right";
-                                       to_y:"rect.thumbnail.list.1";
+                                       to_y:"margin.bottom";
                                        relative: 0.0 0.0;
                                }
                                align: 0.0 1.0;
 #ifdef DEBUG
-                               color: 255 255 255 255;
+                               color: 100 100 100 255;
 #else
                                visible:0;
 #endif
                        }
                }
                part {
-                       name: "rect.text.contents";
+                       name: "rect.text.info.1";
                        type: RECT;
                        scale: 1;
                        description {
                                state: "default" 0.0;
-                               min: 0 BOX_TEXT_CONTENTS_HEIGHT;
+                               min: 0 BOX_TEXT_INFO_HEIGHT;
+                               fixed: 0 1;
                                rel1 {
-                                       to_x:"margin.left";
-                                       to_y:"rect.text.margin.contents";
+                                       to_x:"rect.thumbnail.list.1.padding";
+                                       to_y:"rect.text.info.2";
                                        relative: 1.0 0.0;
                                }
                                rel2 {
                                        to_x:"margin.right";
-                                       to_y:"rect.text.margin.contents";
+                                       to_y:"rect.text.info.2";
                                        relative: 0.0 0.0;
                                }
                                align: 0.0 1.0;
@@ -2273,79 +1930,57 @@ group {
                        }
                }
                part {
-                       name: "rect.text.count";
-                       type: RECT;
-                       scale: 1;
-                       description {
-                               state: "default" 0.0;
-                               min: 58 58;
-                               rel1 {
-                                       to_x:"margin.left";
-                                       to_y:"rect.text.margin.contents";
-                                       relative: 1.0 0.0;
-                               }
-                               rel2 {
-                                       to_x:"margin.left";
-                                       to_y:"rect.text.margin.contents";
-                                       relative: 1.0 0.0;
-                               }
-                               align: 0.0 1.0;
-#ifdef DEBUG
-                               color: 190 190 190 255;
-#else
-                               visible:0;
-#endif
-                       }
-               }
-               part {
-                       name: "rect.text.count.padding";
+                       name: "rect.text.info.1.multiline";
                        type: RECT;
                        scale: 1;
                        description {
                                state: "default" 0.0;
-                               min: 10 58;
+                               fixed: 1 1;
                                rel1 {
-                                       to:"rect.text.count";
+                                       to_x:"rect.thumbnail.list.1.padding";
+                                       to_y:"rect.text.info.1";
                                        relative: 1.0 0.0;
                                }
                                rel2 {
-                                       to:"rect.text.count";
-                                       relative: 1.0 1.0;
+                                       to_x:"margin.right";
+                                       to_y:"margin.bottom.thin";
+                                       relative: 0.0 0.0;
                                }
                                align: 0.0 0.0;
 #ifdef DEBUG
-                               color: 0 0 0 255;
+                               color: 255 150 100 255;
 #else
                                visible:0;
 #endif
                        }
                }
+
                part {
-                       name: "rect.text.contents.short";
+                       name: "rect.text.contents";
                        type: RECT;
                        scale: 1;
                        description {
                                state: "default" 0.0;
                                min: 0 BOX_TEXT_CONTENTS_HEIGHT;
                                rel1 {
-                                       to_x:"rect.text.count.padding";
-                                       to_y:"rect.text.margin.contents";
+                                       to_x:"margin.left";
+                                       to_y:"rect.thumbnail.list.1";
                                        relative: 1.0 0.0;
                                }
                                rel2 {
-                                       to_x:"margin.right";
-                                       to_y:"rect.text.margin.contents";
+                                       to_x:"object.text.count";
+                                       to_y:"rect.thumbnail.list.1";
                                        relative: 0.0 0.0;
+                                       offset: -8 0;
                                }
                                align: 0.0 1.0;
 #ifdef DEBUG
-                               color: 40 255 100 255;
+                               color: 100 150 100 255;
 #else
                                visible:0;
 #endif
                        }
                }
-
                //section layout for thumbnail
                part {
                        name: "rect.thumbnail.list.1";
@@ -2353,14 +1988,14 @@ group {
                        scale: 1;
                        description {
                                state: "default" 0.0;
-                               min: 70 70;
+                               min: 50 50;
                                rel1 {
-                                       to_x:"margin.left.thumnail";
+                                       to_x:"margin.left.icon";
                                        to_y:"margin.bottom";
                                        relative: 1.0 0.0;
                                }
                                rel2 {
-                                       to_x:"margin.left.thumnail";
+                                       to_x:"margin.left.icon";
                                        to_y:"margin.bottom";
                                        relative: 1.0 0.0;
                                }
@@ -2378,7 +2013,7 @@ group {
                        scale: 1;
                        description {
                                state: "default" 0.0;
-                               min: 12 0;
+                               min: 3 0;
                                rel1 {
                                        to:"rect.thumbnail.list.1";
                                        relative: 1.0 0.0;
@@ -2401,7 +2036,7 @@ group {
                        description {
                                state: "landscape" 0.0;
                                inherit: "default" 0.0;
-                               min: 8 0;
+                               min: 0 0;
                        }
                }
                part {
@@ -2410,7 +2045,7 @@ group {
                        scale: 1;
                        description {
                                state: "default" 0.0;
-                               min: 70 70;
+                               min: 50 50;
                                rel1 {
                                        to_x:"rect.thumbnail.list.1.padding";
                                        to_y:"margin.bottom";
@@ -2435,7 +2070,7 @@ group {
                        scale: 1;
                        description {
                                state: "default" 0.0;
-                               min: 12 0;
+                               min: 2 0;
                                rel1 {
                                        to:"rect.thumbnail.list.2";
                                        relative: 1.0 0.0;
@@ -2458,7 +2093,7 @@ group {
                        description {
                                state: "landscape" 0.0;
                                inherit: "default" 0.0;
-                               min: 8 0;
+                               min: 0 0;
                        }
                }
                part {
@@ -2467,7 +2102,7 @@ group {
                        scale: 1;
                        description {
                                state: "default" 0.0;
-                               min: 70 70;
+                               min: 50 50;
                                rel1 {
                                        to_x:"rect.thumbnail.list.2.padding";
                                        to_y:"margin.bottom";
@@ -2492,7 +2127,7 @@ group {
                        scale: 1;
                        description {
                                state: "default" 0.0;
-                               min: 12 0;
+                               min: 2 0;
                                rel1 {
                                        to:"rect.thumbnail.list.3";
                                        relative: 1.0 0.0;
@@ -2515,7 +2150,7 @@ group {
                        description {
                                state: "landscape" 0.0;
                                inherit: "default" 0.0;
-                               min: 8 0;
+                               min: 0 0;
                        }
                }
                part {
@@ -2524,7 +2159,7 @@ group {
                        scale: 1;
                        description {
                                state: "default" 0.0;
-                               min: 70 70;
+                               min: 50 50;
                                rel1 {
                                        to_x:"rect.thumbnail.list.3.padding";
                                        to_y:"margin.bottom";
@@ -2549,7 +2184,7 @@ group {
                        scale: 1;
                        description {
                                state: "default" 0.0;
-                               min: 12 0;
+                               min: 2 0;
                                rel1 {
                                        to:"rect.thumbnail.list.4";
                                        relative: 1.0 0.0;
@@ -2572,7 +2207,7 @@ group {
                        description {
                                state: "landscape" 0.0;
                                inherit: "default" 0.0;
-                               min: 8 0;
+                               min: 0 0;
                        }
                }
                part {
@@ -2581,7 +2216,7 @@ group {
                        scale: 1;
                        description {
                                state: "default" 0.0;
-                               min: 70 70;
+                               min: 50 50;
                                rel1 {
                                        to_x:"rect.thumbnail.list.4.padding";
                                        to_y:"margin.bottom";
@@ -2607,7 +2242,6 @@ group {
                        description {
                                state: "landscape" 0.0;
                                inherit: "default" 0.0;
-                               visible:1;
                        }
                }
 
@@ -2615,6 +2249,7 @@ group {
                        name: "object.icon.background";
                        type:SWALLOW;
                        scale: 1;
+                       clip_to: "clip.background";
                        description {
                                state: "default" 0.0;
                                fixed: 0 0;
@@ -2629,29 +2264,28 @@ group {
                        }
                }
                part{
-                       name: "object.icon.bg";
-                       type:IMAGE;
-                       scale:1;
+                       name: "object.touch.effect";
+                       type:RECT;
+                       scale: 1;
                        description {
                                state: "default" 0.0;
                                fixed: 0 0;
-                               rel1 {to: "rect.icon.bg";}
-                               rel2 {to: "rect.icon.bg";}
-                               image {
-                                       normal:"quick_icon_bg_01.png";
-                                       border: 0 0 0 0;
-                                       border_scale: 1;
-                               }
+                               rel1 {to: "background";}
+                               rel2 {to: "background";}
+                               color: 0 0 0 0;
+                               visible:0;
                        }
                        description {
                                state: "show" 0.0;
                                inherit: "default" 0.0;
+                               color_class: BOX_COLOR_BG_HIGHLIGHT;
                                visible:1;
                        }
                        description {
-                               state: "hide" 0.0;
+                               state: "show.dim" 0.0;
                                inherit: "default" 0.0;
-                               visible:0;
+                               color_class: BOX_COLOR_BG_HIGHLIGHT_DIM;
+                               visible:1;
                        }
                }
                part{
@@ -2697,9 +2331,9 @@ group {
                        scale: 1;
                        description {
                                state: "default" 0.0;
-                               fixed: 0 0;
-                               min: BOX_ICON_SIZE_W BOX_ICON_SIZE_H;
-                               max: BOX_ICON_SIZE_W BOX_ICON_SIZE_H;
+                               fixed: 1 1;
+                               min: BOX_ICON_BG_SIZE_W BOX_ICON_BG_SIZE_H;
+                               max: BOX_ICON_BG_SIZE_W BOX_ICON_BG_SIZE_H;
                                rel1 {to: "rect.icon";}
                                rel2 {to: "rect.icon";}
                                visible:0;
@@ -2717,10 +2351,10 @@ group {
                        description {
                                state: "default" 0.0;
                                fixed: 1 1;
-                               min: BOX_ICON_SIZE_W BOX_ICON_SIZE_H;
-                               max: BOX_ICON_SIZE_W BOX_ICON_SIZE_H;
-                               rel1 {to: "rect.icon";}
-                               rel2 {to: "rect.icon";}
+                               min: BOX_ICON_BG_SIZE_W BOX_ICON_BG_SIZE_H;
+                               max: BOX_ICON_BG_SIZE_W BOX_ICON_BG_SIZE_H;
+                               rel1 {to: "rect.icon.bg";}
+                               rel2 {to: "rect.icon.bg";}
                                image {
                                        normal:"icon_press.png";
                                        border: 0 0 0 0;
@@ -2740,39 +2374,12 @@ group {
                        }
                }
                part{
-                       name: "object.icon.sub.bg";
-                       type:IMAGE;
-                       scale:1;
-                       description {
-                               state: "default" 0.0;
-                               fixed: 0 0;
-                               rel1 {to: "rect.icon.sub";}
-                               rel2 {to: "rect.icon.sub";}
-                               image {
-                                       normal:"quick_icon_bg_small.png";
-                                       border: 0 0 0 0;
-                                       border_scale: 1;
-                               }
-                               visible:0;
-                       }
-                       description {
-                               state: "show" 0.0;
-                               inherit: "default" 0.0;
-                               visible:1;
-                       }
-                       description {
-                               state: "hide" 0.0;
-                               inherit: "default" 0.0;
-                               visible:0;
-                       }
-               }
-               part{
                        name: BOX_PART_ICON_SUB;
                        type:SWALLOW;
                        scale: 1;
                        description {
                                state: "default" 0.0;
-                               fixed: 0 0;
+                               fixed: 1 1;
                                min: BOX_ICON_SUB_SIZE_W BOX_ICON_SUB_SIZE_H;
                                max: BOX_ICON_SUB_SIZE_W BOX_ICON_SUB_SIZE_H;
                                rel1 {to: "rect.icon.sub";}
@@ -2888,7 +2495,8 @@ group {
                                rel2 {to: "rect.text.title";}
                                text {
                                        style: "notibox_title";
-                                       align: 0.0 0.0;
+                                       size: 34;
+                                       align: 0.0 0.5;
 #ifdef DEBUG_TEXT
                                        text: "some string of text to display";
 #endif
@@ -2919,11 +2527,11 @@ group {
                                state: "default" 0.0;
                                rel1 {to: "rect.text.contents";}
                                rel2 {to: "rect.text.contents";}
-                               color: BOX_CONTENTS_FONT_COLOR;
+                               color: NOTIBOX_CONTENTS_FONT_COLOR;
                                text {
-                                       font: BOX_CONTENTS_FONT;
+                                       font: NOTIBOX_CONTENTS_FONT;
                                        text_class: TEXT_CLASS_TIZEN;
-                                       size: BOX_CONTENTS_FONT_SIZE;
+                                       size: NOTIBOX_CONTENTS_FONT_SIZE;
                                        align: 0.0 0.5;
 #ifdef DEBUG_TEXT
                                        text: "some string of text to display";
@@ -2939,28 +2547,43 @@ group {
                        description {
                                state: "show.effect" 0.0;
                                inherit: "default" 0.0;
-                               color2: BOX_FONT_SHADOW_COLOR;
-                               color3: BOX_FONT_OUTLINE_COLOR;
+                               color2: NOTIBOX_FONT_SHADOW_COLOR;
+                               color3: NOTIBOX_FONT_OUTLINE_COLOR;
                                visible:1;
                        }
                }
                part {
-                       name: "object.text.contents.short";
+                       name: "object.text.count";
                        scale: 1;
                        type: TEXT;
                        effect: TEXT_EFFECT;
                        description {
                                state: "default" 0.0;
-                               rel1 {to: "rect.text.contents.short";}
-                               rel2 {to: "rect.text.contents.short";}
-                               color: BOX_CONTENTS_FONT_COLOR;
+                               min: 0 BOX_TEXT_CONTENTS_HEIGHT;
+                               max: 790 BOX_TEXT_CONTENTS_HEIGHT;
+                               rel1 {
+                                       to_x:"margin.right";
+                                       to_y:"rect.thumbnail.list.1";
+                                       relative: 0.0 0.0;
+                               }
+                               rel2 {
+                                       to_x:"margin.right";
+                                       to_y:"rect.thumbnail.list.1";
+                                       relative: 0.0 0.0;
+                               }
+                               color: NOTIBOX_CONTENTS_FONT_COLOR;
                                text {
-                                       font: BOX_CONTENTS_FONT;
+                                       font: NOTIBOX_CONTENTS_FONT;
                                        text_class: TEXT_CLASS_TIZEN;
-                                       size: BOX_CONTENTS_FONT_SIZE;
-                                       align: 0.0 0.5;
+                                       size: NOTIBOX_CONTENTS_FONT_SIZE;
+                                       align: 1.0 0.5;
+                                       min: 1 0;
+#ifdef DEBUG_TEXT
+                                       text: "some string of text to display";
+#endif
                                }
                                visible:0;
+                               align: 1.0 1.0;
                        }
                        description {
                                state: "show" 0.0;
@@ -2970,29 +2593,28 @@ group {
                        description {
                                state: "show.effect" 0.0;
                                inherit: "default" 0.0;
-                               color2: BOX_FONT_SHADOW_COLOR;
-                               color3: BOX_FONT_OUTLINE_COLOR;
+                               color2: NOTIBOX_FONT_SHADOW_COLOR;
+                               color3: NOTIBOX_FONT_OUTLINE_COLOR;
                                visible:1;
                        }
                }
-
                part {
-                       name: "object.text.count";
+                       name: "object.text.info.1";
                        scale: 1;
                        type: TEXT;
                        effect: TEXT_EFFECT;
                        description {
                                state: "default" 0.0;
-                               rel1 {to: "rect.text.count";}
-                               rel2 {to: "rect.text.count";}
-                               color: BOX_INFO_COUNT_FONT_COLOR;
+                               rel1 {to: "rect.text.info.1";}
+                               rel2 {to: "rect.text.info.1";}
+                               color: NOTIBOX_INFO_FONT_COLOR;
                                text {
-                                       font: BOX_INFO_COUNT_FONT;
+                                       font: NOTIBOX_INFO_FONT;
                                        text_class: TEXT_CLASS_TIZEN;
-                                       size: BOX_INFO_COUNT_FONT_SIZE;
+                                       size: NOTIBOX_INFO_FONT_SIZE;
                                        align: 0.0 0.5;
 #ifdef DEBUG_TEXT
-                                       text: "3";
+                                       text: "some string of text to display";
 #endif
                                }
                                visible:0;
@@ -3005,39 +2627,32 @@ group {
                        description {
                                state: "show.effect" 0.0;
                                inherit: "default" 0.0;
-                               color2: BOX_FONT_SHADOW_COLOR;
-                               color3: BOX_FONT_OUTLINE_COLOR;
+                               color2: NOTIBOX_FONT_SHADOW_COLOR;
+                               color3: NOTIBOX_FONT_OUTLINE_COLOR;
                                visible:1;
                        }
                }
+
                part {
-                       name: "object.layer.touch.background";
-                       mouse_events: 1;
-                       repeat_events: 1;
-                       scale: 1;
-                       type: RECT;
-                       description {
-                               state: "default" 0.0;
-                               rel1 {to: "background";}
-                               rel2 {to: "background";}
-                               color: 0 0 0 0;
-                       }
-               }
-               part {
-                       name: "object.layer.touch.button.1";
-                       mouse_events: 1;
-                       repeat_events: 0;
+                       name: "object.text.info.1.multiline";
                        scale: 1;
-                       type: RECT;
+                       type: TEXTBLOCK;
+                       multiline: 1;
                        description {
                                state: "default" 0.0;
+                               align: 0.0 0.0;
+                               fixed: 1 1;
                                rel1 {
-                                       to_x: "rect.icon";
-                                       to_y: "object.button.close";
-                                       relative: 0.0 1.0;
+                                       to: "rect.text.info.1.multiline";
                                }
-                               rel2 {to: "rect.icon";}
-                               color: 0 0 0 0;
+                               rel2 {
+                                       to: "rect.text.info.1.multiline";
+                               }
+                               text {
+                                               style: "notibox_info";
+                                               align: 0.0 0.0;
+                               }
+                               visible:0;
                        }
                        description {
                                state: "show" 0.0;
@@ -3045,105 +2660,87 @@ group {
                                visible:1;
                        }
                        description {
-                               state: "hide" 0.0;
+                               state: "show.effect" 0.0;
                                inherit: "default" 0.0;
-                               visible: 0;
-                       }
-               }
-               part{
-                       name: "object.button.close";
-                       type:RECT;
-                       scale:1;
-                       description {
-                               state: "default" 0.0;
-                               min:100 64;
-                               rel1 {
-                                       to: "rect.button.close";
-                                       relative: 1.0 0.0;
-                               }
-                               rel2 {
-                                       to: "rect.button.close";
-                                       relative: 1.0 0.0;
+                               text {
+                                       style: "notibox_info_effect";
                                }
-                               align: 1.0 0.0;
-                               color: 0 0 0 0;
+                               visible:1;
                        }
                }
-               part{
-                       name: "object.image.button.close";
-                       type:IMAGE;
-                       scale:1;
-                       repeat_events: 1;
+
+               part {
+                       name: "object.text.info.2";
+                       scale: 1;
+                       type: TEXT;
+                       effect: TEXT_EFFECT;
                        description {
                                state: "default" 0.0;
-                               rel1 {to: "rect.button.close";}
-                               rel2 {to: "rect.button.close";}
-                               image {
-                                       normal:"quick_btn_close_nor.png";
-                                       border: 0 0 0 0;
-                                       border_scale: 1;
+                               rel1 {to: "rect.text.info.2";}
+                               rel2 {to: "rect.text.info.2";}
+                               color: NOTIBOX_INFO_FONT_COLOR;
+                               text {
+                                       font: NOTIBOX_INFO_FONT;
+                                       text_class: TEXT_CLASS_TIZEN;
+                                       size: NOTIBOX_INFO_FONT_SIZE;
+                                       align: 0.0 0.5;
+#ifdef DEBUG_TEXT
+                                       text: "some string of text to display";
+#endif
                                }
-                               align: 0.0 1.0;
-                       }
-                       description {
-                               state: "normal" 0.0;
-                               inherit: "default" 0.0;
+                               visible:0;
                        }
                        description {
-                               state: "pressed" 0.0;
+                               state: "show" 0.0;
                                inherit: "default" 0.0;
-                               image {
-                                       normal:"quick_btn_close_press.png";
-                                       border: 0 0 0 0;
-                                       border_scale: 1;
-                               }
-                               align: 0.0 1.0;
+                               visible:1;
                        }
                        description {
-                               state: "disabled" 0.0;
+                               state: "show.effect" 0.0;
                                inherit: "default" 0.0;
-                               image {
-                                       normal:"quick_btn_close_dim.png";
-                                       border: 0 0 0 0;
-                                       border_scale: 1;
-                               }
-                               align: 0.0 1.0;
+                               color2: NOTIBOX_FONT_SHADOW_COLOR;
+                               color3: NOTIBOX_FONT_OUTLINE_COLOR;
+                               visible:1;
                        }
                }
+
                part {
-                       name: "accessibility";
-                       type: RECT;
+                       name: "object.layer.touch.background";
                        mouse_events: 1;
                        repeat_events: 1;
                        scale: 1;
+                       type: RECT;
                        description {
                                state: "default" 0.0;
-                               rel1 {
-                                       to: "background";
-                               }
-                               rel2 {
-                                       to: "background";
-                               }
-                               color: QP_ACCESSIBILITY_TEST_COLOR;
-                               visible: 1;
+                               rel1 {to: "background";}
+                               rel2 {to: "background";}
+                               color: 0 0 0 0;
                        }
                }
+               QUICKPANEL_FOCUS_OBJECT("focus", "background", "background")
                part {
-                       name: "accessibility.closebutton";
-                       type: RECT;
+                       name: "object.layer.touch.button.1";
                        mouse_events: 1;
-                       repeat_events: 1;
+                       repeat_events: 0;
                        scale: 1;
+                       type: RECT;
                        description {
                                state: "default" 0.0;
                                rel1 {
-                                       to: "rect.button.close";
+                                       to: "rect.icon";
                                }
-                               rel2 {
-                                       to: "rect.button.close";
-                               }
-                               color: QP_ACCESSIBILITY_TEST_COLOR;
-                               visible: 1;
+                               rel2 {to: "rect.icon";}
+                               color: 0 0 0 0;
+                       }
+                       description {
+                               state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               visible:1;
+                       }
+                       description {
+                               state: "hide" 0.0;
+                               inherit: "default" 0.0;
+                               visible: 0;
                        }
                }
        }
@@ -3180,14 +2777,13 @@ group {
                        source: "box.prog";
                        action: STATE_SET "portrait" 0.0;
                        target: "background";
-                       target: "margin.left.thumnail";
-                       target: "margin.right.thumnail";
-                       target: "rect.text.title";
+
                        target: "rect.thumbnail.list.1.padding";
                        target: "rect.thumbnail.list.2.padding";
                        target: "rect.thumbnail.list.3.padding";
                        target: "rect.thumbnail.list.4.padding";
                        target: "rect.thumbnail.list.5";
+
                        target: "object.thumbnail.list.5";
                        after: "box.portrait.custom";
                }
@@ -3197,9 +2793,7 @@ group {
                        source: "box.prog";
                        action: STATE_SET "landscape" 0.0;
                        target: "background";
-                       target: "margin.left.thumnail";
-                       target: "margin.right.thumnail";
-                       target: "rect.text.title";
+
                        target: "rect.thumbnail.list.1.padding";
                        target: "rect.thumbnail.list.2.padding";
                        target: "rect.thumbnail.list.3.padding";
@@ -3226,12 +2820,34 @@ group {
                                }
                        }
                }
+#ifdef TBD
                program{
                        name: "box.touch.down";
                        signal: "mouse,clicked,1";
                        source: "object.layer.touch.background";
                        action: SIGNAL_EMIT "selected" "edje";
                }
+#endif
+               program{
+                       name: "effect,mouse,down";
+                       signal: "mouse,down,1";
+                       source: "object.layer.touch.background";
+                       script {
+                               if (get_int(g_is_show_dim_bg) == 1) {
+                                       set_state(PART:"object.touch.effect", "show.dim", 0.0);
+                               } else {
+                                       set_state(PART:"object.touch.effect", "show", 0.0);
+                               }
+                       }
+               }
+               program{
+                       name: "effect,mouse,up";
+                       signal: "mouse,up,1";
+                       source: "object.layer.touch.background";
+                       action: STATE_SET "default" 0.0;
+                       transition: ACCELERATE 0.20;
+                       target: "object.touch.effect";
+               }
                program{
                        name: "box.button.1.touch.clicked";
                        signal: "mouse,clicked,1";
@@ -3253,80 +2869,44 @@ group {
                        target: "object.icon.press";
                }
                program{
-                       name: "box.button.close.1";
-                       signal: "mouse,down,1";
-                       source: "object.button.close";
-                       script {
-                               if (get_int(g_is_close_button_disabled) == 0) {
-                                       set_state(PART:"object.image.button.close", "pressed", 0.0);
-                               }
-                       }
-               }
-               program{
-                       name: "box.button.close.2";
-                       signal: "mouse,up,1";
-                       source: "object.button.close";
-                       script {
-                               set_state(PART:"object.image.button.close", "normal", 0.0);
-                       }
-               }
-               program{
-                       name: "box.button.close.3";
-                       signal: "mouse,clicked,1";
-                       source: "object.button.close";
-                       script {
-                               if (get_int(g_is_close_button_disabled) == 0) {
-                                       set_state(PART:"object.image.button.close", "normal", 0.0);
-                                       emit("deleted", "edje");
-                               }
-                       }
-               }
-               program{
-                       name: "box.button.close.4";
-                       signal: "disabled";
-                       source: "object.button.close";
-                       script {
-                               set_state(PART:"object.image.button.close", "disabled", 0.0);
-                               set_int(g_is_close_button_disabled, 1);
-                       }
-               }
-               program{
                        name: "box.show.icon.bg";
                        signal: "box.show.icon.bg";
                        source: "box.prog";
                        action: STATE_SET "show" 0.0;
-                       target: "object.icon.bg";
+
                        target: "object.layer.touch.button.1";
                }
                program{
                        name: "box.hide.icon.bg";
                        signal: "box.hide.icon.bg";
-                       source: "box.prog";
+                       source: "box.prog";
                        action: STATE_SET "hide" 0.0;
-                       target: "object.icon.bg";
+
                        target: "object.layer.touch.button.1";
                }
                program{
-                       name: "box.show.icon.sub.bg";
-                       signal: "box.show.sub.bg";
+                       name: "box.title.with.icon";
+                       signal: "box.title.with.icon";
                        source: "box.prog";
-                       action: STATE_SET "show" 0.0;
-                       target: "object.icon.sub.bg";
+                       action: STATE_SET "default" 0.0;
+                       target: "rect.text.title";
                }
                program{
-                       name: "box.hide.icon.sub.bg";
-                       signal: "box.hide.sub.bg";
+                       name: "box.title.without.icon";
+                       signal: "box.title.without.icon";
                        source: "box.prog";
-                       action: STATE_SET "hide" 0.0;
-                       target: "object.icon.sub.bg";
+                       action: STATE_SET "without_icon" 0.0;
+                       target: "rect.text.title";
                }
                MAKE_PART_SHOW_PROGRAM("object.icon.background")
                MAKE_PART_SHOW_PROGRAM("object.icon")
                MAKE_PART_SHOW_PROGRAM("object.icon.sub")
                MAKE_PART_SHOW_TEXT_PROGRAM("object.text.title")
                MAKE_PART_SHOW_TEXT_PROGRAM("object.text.contents")
-               MAKE_PART_SHOW_TEXT_PROGRAM("object.text.contents.short")
                MAKE_PART_SHOW_TEXT_PROGRAM("object.text.count")
+               MAKE_PART_SHOW_TEXT_PROGRAM("object.text.info.1")
+               MAKE_PART_SHOW_TEXT_PROGRAM("object.text.info.1.multiline")
+               MAKE_PART_SHOW_TEXT_PROGRAM("object.text.info.2")
                MAKE_PART_SHOW_PROGRAM("object.thumbnail.list.1")
                MAKE_PART_SHOW_PROGRAM("object.thumbnail.list.2")
                MAKE_PART_SHOW_PROGRAM("object.thumbnail.list.3")
diff --git a/data/quickpanel_page_edit.edc b/data/quickpanel_page_edit.edc
new file mode 100644 (file)
index 0000000..e4de510
--- /dev/null
@@ -0,0 +1,636 @@
+/*
+ * 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 "quickpanel_def.h"
+
+ styles {
+       style {
+               name: "help";
+               base: "font=Tizen:style=Bold text_class=tizen font_size=30 color=#6e6f76FF ellipsis=1.0 wrap=mixed";
+       }
+}
+
+       group {
+               name: "quickpanel/page_edit_base";
+               parts {
+                       part {
+                               name: "background";
+                               type: RECT;
+                               scale: 1;
+                               mouse_events: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: QP_WIN_W (QP_WIN_H - QP_DATE_H - QP_HANDLE_H);
+                               }
+                               description {
+                                       state: "portrait" 0.0;
+                                       inherit: "default" 0.0;
+                               }
+                               description {
+                                       state: "landscape" 0.0;
+                                       inherit: "default" 0.0;
+                                       min: QP_WIN_H (QP_WIN_W - QP_DATE_H - QP_HANDLE_H);
+                               }
+                       }
+                       part{
+                               name: "object.layout";
+                               type:SWALLOW;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       fixed: 0 0;
+                                       rel1 {to: "background";}
+                                       rel2 {to: "background";}
+                                       align: 0.0 0.0;
+                                       visible:1;
+                               }
+                       }
+               }
+               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";
+                       }
+               }
+       }
+       group {
+               name: "quickpanel/page_edit";
+               parts {
+                       part {
+                               name: "background";
+                               type: SPACER;
+                               scale: 1;
+                               mouse_events: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: QP_WIN_W (QP_WIN_H - QP_DATE_H - QP_HANDLE_H);
+                               }
+                               description {
+                                       state: "portrait" 0.0;
+                                       inherit: "default" 0.0;
+                               }
+                               description {
+                                       state: "landscape" 0.0;
+                                       inherit: "default" 0.0;
+                                       min: QP_WIN_H (QP_WIN_W - QP_DATE_H - QP_HANDLE_H);
+                               }
+                       }
+                       part {
+                               name: "rect.section.title.1";
+                               type: SPACER;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 55;
+                                       max: 9999 55;
+                                       rel1 {
+                                               relative: 0.0 0.0;
+                                               to: "background";
+                                       }
+                                       rel2 {
+                                               relative: 1.0 0.0;
+                                               to: "background";
+                                       }
+                                       align: 0.0 0.0;
+                               }
+                       }
+                       part {
+                               name: "rect.active.buttons";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 180;
+                                       rel1 {
+                                               relative: 0.0 1.0;
+                                               to_x: "background";
+                                               to_y: "rect.section.title.1";
+                                       }
+                                       rel2 {
+                                               relative: 1.0 1.0;
+                                               to_x: "background";
+                                               to_y: "rect.section.title.1";
+                                       }
+                                       align: 0.0 0.0;
+                                       color: QP_COLOR_BLACK;
+                                       visible: 1;
+                               }
+                               description {
+                                       state: "portrait" 0.0;
+                                       inherit: "default" 0.0;
+                               }
+                               description {
+                                       state: "landscape" 0.0;
+                                       inherit: "default" 0.0;
+                                       min: 0 89;
+                               }
+                       }
+                       part {
+                               name: "rect.section.title.2";
+                               type: SPACER;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 55;
+                                       max: 9999 55;
+                                       rel1 {
+                                               relative: 0.0 1.0;
+                                               to_x: "background";
+                                               to_y: "rect.active.buttons";
+                                       }
+                                       rel2 {
+                                               relative: 1.0 1.0;
+                                               to_x: "background";
+                                               to_y: "rect.active.buttons";
+                                       }
+                                       align: 0.0 0.0;
+                               }
+                       }
+                       part {
+                               name: "rect.reserved.buttons";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 271;
+                                       rel1 {
+                                               relative: 0.0 1.0;
+                                               to_x: "background";
+                                               to_y: "rect.section.title.2";
+                                       }
+                                       rel2 {
+                                               relative: 1.0 1.0;
+                                               to_x: "background";
+                                               to_y: "rect.section.title.2";
+                                       }
+                                       align: 0.0 0.0;
+                                       color: QP_COLOR_BLACK;
+                                       visible: 1;
+                               }
+                               description {
+                                       state: "portrait" 0.0;
+                                       inherit: "default" 0.0;
+                               }
+                               description {
+                                       state: "landscape" 0.0;
+                                       inherit: "default" 0.0;
+                                       min: 0 180;
+                               }
+                       }
+                       part {
+                               name: "margin.help.left";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 16 0;
+                                       max: 16 9999;
+                                       rel1 {
+                                               relative: 0.0 1.0;
+                                               to_x: "background";
+                                               to_y: "rect.reserved.buttons";
+                                       }
+                                       rel2 {
+                                               relative: 0.0 1.0;
+                                               to: "background";
+                                       }
+                                       color: QP_COLOR_BLACK;
+                                       visible: 1;
+                               }
+                       }
+                       part {
+                               name: "margin.help.right";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 8 0;
+                                       max: 8 9999;
+                                       rel1 {
+                                               relative: 1.0 1.0;
+                                               to_x: "background";
+                                               to_y: "rect.reserved.buttons";
+                                       }
+                                       rel2 {
+                                               relative: 1.0 1.0;
+                                               to: "background";
+                                       }
+                                       color: QP_COLOR_BLACK;
+                                       visible: 1;
+                               }
+                       }
+                       part {
+                               name: "margin.help.top";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 8;
+                                       max: 9999 8;
+                                       rel1 {
+                                               relative: 0.0 1.0;
+                                               to_x: "background";
+                                               to_y: "rect.reserved.buttons";
+                                       }
+                                       rel2 {
+                                               relative: 1.0 1.0;
+                                               to_x: "background";
+                                               to_y: "rect.reserved.buttons";
+                                       }
+                                       align: 0.0 0.0;
+                                       color: QP_COLOR_BLACK;
+                                       visible: 1;
+                               }
+                       }
+                       part {
+                               name: "rect.section.help";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 281;
+                                       max: 9999 281;
+                                       rel1 {
+                                               relative: 1.0 1.0;
+                                               to_x: "margin.help.left";
+                                               to_y: "margin.help.top";
+                                       }
+                                       rel2 {
+                                               relative: 0.0 1.0;
+                                               to_x: "margin.help.right";
+                                               to_y: "margin.help.top";
+                                       }
+                                       align: 0.0 0.0;
+                                       color: QP_COLOR_BLACK;
+                                       visible: 1;
+                               }
+                               description {
+                                       state: "portrait" 0.0;
+                                       inherit: "default" 0.0;
+                               }
+                               description {
+                                       state: "landscape" 0.0;
+                                       inherit: "default" 0.0;
+                                       min: 0 160;
+                               }
+                       }
+                       part{
+                               name: "object.section.1";
+                               type:SWALLOW;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       fixed: 0 0;
+                                       rel1 {to: "rect.section.title.1";}
+                                       rel2 {to: "rect.section.title.1";}
+                                       align: 0.0 0.0;
+                                       visible:1;
+                               }
+                       }
+                       part{
+                               name: "object.active.buttons";
+                               type:SWALLOW;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       fixed: 0 0;
+                                       rel1 {to: "rect.active.buttons";}
+                                       rel2 {to: "rect.active.buttons";}
+                                       visible:1;
+                               }
+                       }
+                       part{
+                               name: "object.section.2";
+                               type:SWALLOW;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       fixed: 0 0;
+                                       rel1 {to: "rect.section.title.2";}
+                                       rel2 {to: "rect.section.title.2";}
+                                       visible:1;
+                               }
+                       }
+                       part{
+                               name: "object.reserved.buttons";
+                               type:SWALLOW;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       fixed: 0 0;
+                                       rel1 {to: "rect.reserved.buttons";}
+                                       rel2 {to: "rect.reserved.buttons";}
+                                       visible:1;
+                               }
+                       }
+                       part { name: "object.text.help";
+                               type: TEXTBLOCK;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 {
+                                               to: "rect.section.help";
+                                       }
+                                       rel2 {
+                                               to: "rect.section.help";
+                                       }
+                                       text {
+                                               style: "help";
+                                               size: 22;
+                                               size_range: 21 22;
+                                               align: 0.0 0.0;
+                                       }
+                               }
+                       }
+                       QUICKPANEL_FOCUS_OBJECT("focus.help", "rect.section.help", "rect.section.help")
+               }
+
+               programs {
+                       program{
+                               name: "portrait";
+                               signal: "portrait";
+                               source: "prog";
+                               action: STATE_SET "portrait" 0.0;
+                               target: "background";
+                               target: "rect.active.buttons";
+                               target: "rect.reserved.buttons";
+                               target: "rect.section.help";
+                       }
+                       program{
+                               name: "landscape";
+                               signal: "landscape";
+                               source: "prog";
+                               action: STATE_SET "landscape" 0.0;
+                               target: "background";
+                               target: "rect.active.buttons";
+                               target: "rect.reserved.buttons";
+                               target: "rect.section.help";
+                       }
+               }
+       }
+
+       group {
+               name: "quickpanel/page_edit_section";
+               parts {
+                       part {
+                               name: "background";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 55;
+                                       max: 9999 55;
+                                       fixed: 0 1;
+                                       rel1 {
+                                               relative: 0.0 0.0;
+                                       }
+                                       rel2 {
+                                               relative: 1.0 1.0;
+                                       }
+                                       align: 0.0 0.0;
+                                       visible: 1;
+                                       color: QP_COLOR_BLACK;
+                               }
+                       }
+                       part {
+                               name: "margin.left.label";
+                               type: SPACER;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 13 0;
+                                       max: 13 0;
+                                       fixed: 1 0;
+                                       rel1 {
+                                               relative: 0.0 0.0;
+                                               to: "background";
+                                       }
+                                       rel2 {
+                                               relative: 0.0 1.0;
+                                               to: "background";
+                                       }
+                                       align: 0.0 0.0;
+                               }
+                       }
+                       part {
+                               name: "margin.top.label";
+                               type: SPACER;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 27;
+                                       max: 0 27;
+                                       fixed: 0 1;
+                                       rel1 {
+                                               relative: 0.0 0.0;
+                                               to: "background";
+                                       }
+                                       rel2 {
+                                               relative: 1.0 0.0;
+                                               to: "background";
+                                       }
+                                       align: 0.0 0.0;
+                               }
+                       }
+                       part {
+                               name: "margin.right.label";
+                               type: SPACER;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 129 0;
+                                       max: 129 0;
+                                       fixed: 1 0;
+                                       rel1 {
+                                               relative: 1.0 0.0;
+                                               to: "background";
+                                       }
+                                       rel2 {
+                                               relative: 1.0 1.0;
+                                               to: "background";
+                                       }
+                                       align: 1.0 0.0;
+                               }
+                       }
+                       part {
+                               name: "margin.bottom.label";
+                               type: SPACER;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 4;
+                                       max: 0 4;
+                                       fixed: 0 1;
+                                       rel1 {
+                                               relative: 0.0 1.0;
+                                               to: "background";
+                                       }
+                                       rel2 {
+                                               relative: 1.0 1.0;
+                                               to: "background";
+                                       }
+                                       align: 0.0 1.0;
+                               }
+                       }
+                       part {
+                               name: "margin.top.button";
+                               type: SPACER;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 16;
+                                       max: 0 16;
+                                       fixed: 0 1;
+                                       rel1 {
+                                               relative: 0.0 0.0;
+                                               to: "background";
+                                       }
+                                       rel2 {
+                                               relative: 1.0 0.0;
+                                               to: "background";
+                                       }
+                                       align: 0.0 0.0;
+                               }
+                       }
+                       part {
+                               name: "margin.right.button";
+                               type: SPACER;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 8 0;
+                                       max: 8 0;
+                                       fixed: 1 0;
+                                       rel1 {
+                                               relative: 1.0 0.0;
+                                               to: "background";
+                                       }
+                                       rel2 {
+                                               relative: 1.0 1.0;
+                                               to: "background";
+                                       }
+                                       align: 1.0 0.0;
+                               }
+                       }
+                       part {
+                               name: "rect.title";
+                               type: SPACER;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       fixed: 0 1;
+                                       min: 0 25;
+                                       rel1 {
+                                               relative: 1.0 0.0;
+                                               to_x: "margin.left.label";
+                                               to_y: "margin.bottom.label";
+                                       }
+                                       rel2 {
+                                               relative: 0.0 0.0;
+                                               to_x: "margin.right.label";
+                                               to_y: "margin.bottom.label";
+                                       }
+                                       align: 1.0 1.0;
+                               }
+                       }
+                       part {
+                               name: "rect.title.accessibility";
+                               type: SPACER;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       fixed: 1 1;
+                                       rel1 {
+                                               relative: 0.0 0.0;
+                                               to: "rect.title";
+                                       }
+                                       rel2 {
+                                               relative: 1.0 1.0;
+                                               to: "rect.title";
+                                               offset: 0 -20;
+                                       }
+                                       align: 0.0 0.0;
+                               }
+                       }
+                       part {
+                               name: "rect.button";
+                               type: SPACER;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 106 35;
+                                       min: 106 35;
+                                       fixed: 1 1;
+                                       rel1 {
+                                               relative: 0.0 1.0;
+                                               to_x: "margin.right.button";
+                                               to_y: "margin.top.button";
+                                       }
+                                       rel2 {
+                                               relative: 0.0 1.0;
+                                               to_x: "margin.right.button";
+                                               to_y: "margin.top.button";
+                                       }
+                                       align: 1.0 0.0;
+                               }
+                       }
+                       part { name: "object.text.title";
+                               type: TEXT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 {
+                                               to: "rect.title";
+                                       }
+                                       rel2 {
+                                               to: "rect.title";
+                                       }
+                                       color: 59 115 182 255;
+                                       text {
+                                               font: "Tizen:style=Bold";
+                                               text_class: "tizen";
+                                               size: 21;
+                                               align: 0.0 1.0;
+                                               ellipsis: 0.0;
+                                       }
+                               }
+                       }
+                       part{
+                               name: "object.button";
+                               type:SWALLOW;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       fixed: 1 1;
+                                       rel1 {to: "rect.button";}
+                                       rel2 {to: "rect.button";}
+                                       visible:1;
+                               }
+                       }
+                       QUICKPANEL_FOCUS_OBJECT("focus.title", "rect.title.accessibility", "rect.title.accessibility")
+               }
+       }
\ No newline at end of file
diff --git a/data/quickpanel_page_setting_all.edc b/data/quickpanel_page_setting_all.edc
new file mode 100644 (file)
index 0000000..1d99df9
--- /dev/null
@@ -0,0 +1,163 @@
+/*
+ * 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 "quickpanel_def.h"
+#include "color_classes.edc"
+
+#define SETTING_ALL_BG_COLOR "AO001"
+#define SETTING_ALL_SECTION_TEXT_COLOR "ATO006"
+
+       group {
+               name: "quickpanel/page_setting_all_base";
+               parts {
+                       part {
+                               name: "background";
+                               type: SPACER;
+                               scale: 1;
+                               mouse_events: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: QP_WIN_W (QP_WIN_H - QP_DATE_H - QP_HANDLE_H);
+                               }
+                               description {
+                                       state: "portrait" 0.0;
+                                       inherit: "default" 0.0;
+                               }
+                               description {
+                                       state: "landscape" 0.0;
+                                       inherit: "default" 0.0;
+                                       min: QP_WIN_H (QP_WIN_W - QP_DATE_H - QP_HANDLE_H);
+                               }
+                       }
+                       part{
+                               name: "object.layout";
+                               type:SWALLOW;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       fixed: 0 0;
+                                       rel1 {to: "background";}
+                                       rel2 {to: "background";}
+                                       align: 0.0 0.0;
+                                       visible:1;
+                               }
+                       }
+               }
+               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";
+                       }
+               }
+       }
+       group {
+               name: "quickpanel/page_setting_all";
+               parts {
+                       part {
+                               name: "background";
+                               type: RECT;
+                               scale: 1;
+                               mouse_events: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: QP_WIN_W (QP_WIN_H - QP_DATE_H - QP_HANDLE_H);
+                                       visible: 1;
+                                       color_class: SETTING_ALL_BG_COLOR;
+                               }
+                               description {
+                                       state: "portrait" 0.0;
+                                       inherit: "default" 0.0;
+                               }
+                               description {
+                                       state: "landscape" 0.0;
+                                       inherit: "default" 0.0;
+                                       min: QP_WIN_H (QP_WIN_W - QP_DATE_H - QP_HANDLE_H);
+                               }
+                       }
+                       part {
+                               name: "rect.active.buttons";
+                               type: SPACER;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 356;
+                                       rel1 {
+                                               relative: 0.0 0.0;
+                                               to_x: "background";
+                                               to_y: "background";
+                                       }
+                                       rel2 {
+                                               relative: 1.0 0.0;
+                                               to_x: "background";
+                                               to_y: "background";
+                                       }
+                                       align: 0.0 0.0;
+                               }
+                               description {
+                                       state: "portrait" 0.0;
+                                       inherit: "default" 0.0;
+                               }
+                               description {
+                                       state: "landscape" 0.0;
+                                       inherit: "default" 0.0;
+                                       min: 0 183;
+                               }
+                       }
+                       part{
+                               name: "object.active.buttons";
+                               type:SWALLOW;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       fixed: 0 0;
+                                       rel1 {to: "rect.active.buttons";}
+                                       rel2 {to: "rect.active.buttons";}
+                                       visible:1;
+                               }
+                       }
+               }
+
+               programs {
+                       program{
+                               name: "portrait";
+                               signal: "portrait";
+                               source: "prog";
+                               action: STATE_SET "portrait" 0.0;
+                               target: "background";
+                               target: "rect.active.buttons";
+                       }
+                       program{
+                               name: "landscape";
+                               signal: "landscape";
+                               source: "prog";
+                               action: STATE_SET "landscape" 0.0;
+                               target: "background";
+                               target: "rect.active.buttons";
+                       }
+               }
+       }
diff --git a/data/quickpanel_setting.edc b/data/quickpanel_setting.edc
new file mode 100644 (file)
index 0000000..14c5e9b
--- /dev/null
@@ -0,0 +1,784 @@
+/*
+ * 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.
+ *
+ */
+
+
+images {
+       image: "quick_menu_divide.png" COMP;
+       image: "quick_menu_touch.png" COMP;
+       image: "quick_button_each_bg.png" COMP;
+       image: "quick_button_each_bg_land.png" COMP;
+       image: "quick_button_each_ef.png" COMP;
+       image: "quick_button_each_ef_land.png" COMP;
+       image: "quick_btn_del_nor.png" COMP;
+       image: "quick_btn_del_press.png" COMP;
+       image: "quick_button_over_land.png" COMP;
+       image: "quick_button_over.png" COMP;
+       image: "quick_menu_divide_highlight.png" COMP;
+       image: "quick_button_icon_bg.png" COMP;
+}
+
+#define ENABLE_COLOR_CLIP
+
+#define QP_SETTINGS_HEIGHT     221
+
+styles
+{
+       style
+       {
+               name: "icon_text_style";
+               base: "font=Tizen:style=Regular font_size=19 text_class=tizen align=center color=#FFFFFF color_class=ATO017 ellipsis=1.0 wrap=mixed";
+       }
+}
+
+group {
+       name: "quickpanel/setting_container_wvga";
+
+       parts {
+               part {
+                       name: "background";
+                       type: RECT;
+                       scale: 1;
+                       description
+                       {
+                               state: "default" 0.0;
+                               min: 0 QP_SETTINGS_HEIGHT;
+                               max: -1 QP_SETTINGS_HEIGHT;
+
+                               align: 0.0 0.0;
+                               visible: 0;
+                       }
+                       description {
+                               state: "landscape" 0.0;
+                               inherit: "default" 0.0;
+                       }
+               }
+               part {
+                       name: "setting.margin.left";
+                       type: SPACER;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 0;
+                               fixed: 1 0;
+                               rel1 {
+                                       relative: 0.0 0.0;
+                                       to: "background";
+                               }
+                               rel2 {
+                                       relative: 0.0 1.0;
+                                       to: "background";
+                               }
+                               align: 0.0 0.0;
+                       }
+                       description {
+                               state: "portrait" 0.0;
+                               inherit: "default" 0.0;
+                       }
+                       description {
+                               state: "landscape" 0.0;
+                               inherit: "default" 0.0;
+                               min: 0 0;
+                       }
+               }
+               part {
+                       name: "setting.margin.right";
+                       type: SPACER;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 0;
+                               fixed: 1 0;
+                               rel1 {
+                                       relative: 1.0 0.0;
+                                       to: "background";
+                               }
+                               rel2 {
+                                       relative: 1.0 1.0;
+                                       to: "background";
+                               }
+                               align: 1.0 0.0;
+                       }
+                       description {
+                               state: "portrait" 0.0;
+                               inherit: "default" 0.0;
+                       }
+                       description {
+                               state: "landscape" 0.0;
+                               inherit: "default" 0.0;
+                               min: 0 0;
+                       }
+               }
+               part{
+                       name: "setting.container.swallow.wvga";
+                       type:SWALLOW;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 QP_SETTING_BG_H;
+                               fixed: 0 1;
+                               rel1 {
+                                       to: "background";
+                                       relative: 0.0 0.0;
+                               }
+                               rel2 {
+                                       to: "background";
+                                       relative: 1.0 0.0;
+                               }
+                               align: 0.5 0.0;
+                       }
+                       description {
+                               state: "portrait" 0.0;
+                               inherit: "default" 0.0;
+                       }
+                       description {
+                               state: "landscape" 0.0;
+                               inherit: "default" 0.0;
+                               rel1 {
+                                       relative: 0.2 0.0;
+                                       to: "background";
+                               }
+                               rel2 {
+                                       relative: 0.8 0.0;
+                                       to: "background";
+                               }
+                       }
+               }
+               part {
+                       name: "brightness.container.swallow.wvga";
+                       type: SWALLOW;
+                       scale:1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 QP_THEME_LIST_ITEM_BRIGHTNESS_HEIGHT;
+                               fixed: 0 1;
+                               rel1 {
+                                       to: "background";
+                                       relative: 0.0 1.0;
+
+                               }
+                               rel2 {
+                                       to: "background";
+                                       relative: 1.0 1.0;
+                               }
+
+                               align: 0.5 1.0;
+                       }
+               }
+       }
+
+       programs {
+               program{
+                       name: "container.portrait";
+                       signal: "portrait";
+                       source: "background";
+                       action: STATE_SET "portrait" 0.0;
+                       target: "setting.margin.left";
+                       target: "setting.margin.right";
+                       target: "setting.container.swallow.wvga";
+                       after: "background.default";
+               }
+               program {
+                       name : "background.default";
+                       action: STATE_SET "default" 0.0;
+                       target: "background";
+               }
+               program{
+                       name: "container.landscape";
+                       signal: "landscape";
+                       source: "background";
+                       action: STATE_SET "landscape" 0.0;
+                       target: "setting.margin.left";
+                       target: "setting.margin.right";
+                       target: "setting.container.swallow.wvga";
+                       target: "background";
+               }
+       }
+}
+
+group {
+       name: "quickpanel/setting_icon_divider_wvga";
+
+       script {
+               public g_is_hided;
+       }
+
+       parts {
+               part {
+                       name: "background";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: QP_SETTING_DIVIDER_W_P QP_SETTING_ICON_MIN_WH_WVGA;
+                               fixed: 1 1;
+                               align: 0.0 0.0;
+                               color_class: QP_BACKGROUND_COLOR;
+                               visible: 1;
+                       }
+                       description {
+                               state: "normal" 0.0;
+                               inherit: "default" 0.0;
+                       }
+                       description {
+                               state: "blank" 0.0;
+                               inherit: "default" 0.0;
+                               color_class: QP_BACKGROUND_COLOR;
+                       }
+                       description {
+                               state: "hide" 0.0;
+                               inherit: "default" 0.0;
+                               visible: 0;
+                       }
+                       description {
+                               state: "show" 0.0;
+                               inherit: "default" 0.0;
+                       }
+               }
+               part {
+                       name: "object.image.divider";
+                       type:IMAGE;
+                       scale:1;
+                       description {
+                               state: "default" 0.0;
+                               fixed: 1 1;
+                               min: QP_SETTING_DIVIDER_W_P 99;
+                               rel1 {
+                                       to: "background";
+                                       relative:0.0 0.5;
+                               }
+                               rel2 {
+                                       to: "background";
+                                       relative:1.0 0.5;
+                               }
+                               image {
+                                       normal:"quick_menu_divide.png";
+                                       border: 0 0 0 0;
+                                       border_scale: 1;
+                               }
+                               align:0.0 0.5;
+                               visible: 0;
+                       }
+                       description {
+                               state: "highlight.show" 0.0;
+                               inherit: "default" 0.0;
+                               image {
+                                       normal:"quick_menu_divide_highlight.png";
+                                       border: 0 0 0 0;
+                                       border_scale: 1;
+                               }
+                               visible: 1;
+                       }
+                       description {
+                               state: "highlight.hide" 0.0;
+                               inherit: "default" 0.0;
+                       }
+                       description {
+                               state: "hide" 0.0;
+                               inherit: "default" 0.0;
+                               visible: 0;
+                       }
+                       description {
+                               state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               visible: 0;
+                       }
+               }
+       }
+
+       programs {
+               program {
+                       name: "init_divider";
+                       signal: "load";
+                       script{
+                               set_int(g_is_hided, 0);
+                       }
+               }
+               program{
+                       name: "divider.highlight.show";
+                       signal: "highlight.show";
+                       source: "quickpanl.prog";
+                       script {
+                               if (get_int(g_is_hided) == 0) {
+                                       set_state(PART:"object.image.divider", "highlight.show", 0.0);
+                               }
+                       }
+               }
+               program{
+                       name: "divider.highlight.hide";
+                       signal: "highlight.hide";
+                       source: "quickpanl.prog";
+                       script {
+                               if (get_int(g_is_hided) == 0) {
+                                       set_state(PART:"object.image.divider", "highlight.hide", 0.0);
+                               }
+                       }
+               }
+               program{
+                       name: "blank.mode.enable";
+                       signal: "blank.enable";
+                       source: "quickpanl.prog";
+                       script {
+                               set_state(PART:"background", "blank", 0.0);
+                               set_state(PART:"object.image.divider", "show", 0.0);
+                               set_int(g_is_hided, 0);
+                       }
+               }
+               program{
+                       name: "blank.mode.disable";
+                       signal: "blank.disable";
+                       source: "quickpanl.prog";
+                       script {
+                               set_state(PART:"background", "normal", 0.0);
+                               set_state(PART:"object.image.divider", "show", 0.0);
+                               set_int(g_is_hided, 0);
+                       }
+               }
+               program{
+                       name: "divider.hide";
+                       signal: "divider.hide";
+                       source: "quickpanl.prog";
+                       script {
+                               set_state(PART:"background", "hide", 0.0);
+                               set_state(PART:"object.image.divider", "hide", 0.0);
+                               set_int(g_is_hided, 1);
+                       }
+               }
+       }
+}
+
+#define QP_SETTING_ICON_COLOR_ON "AO002"
+#define QP_SETTING_ICON_COLOR_OFF "AO003"
+#define QP_SETTING_ICON_COLOR_DIM "AO003D"
+#define QP_SETTING_ICON_COLOR_LOADING "AO003E1"
+
+group {
+       name: "quickpanel/setting_icon_wvga";
+
+       parts {
+               part {
+                       name: "background.super";
+                       type: RECT;
+                       scale: 1;
+                       mouse_events: 1;
+                       description {
+                               state: "default" 0.0;
+                               min : QP_SETTING_ICON_BG_MIN_W_P_WVGA QP_SETTING_BG_H;
+                               color: 0 0 0 0;
+                       }
+                       description {
+                               state: "portrait" 0.0;
+                               inherit: "default" 0.0;
+                       }
+                       description {
+                               state: "landscape" 0.0;
+                               inherit: "default" 0.0;
+                               min : QP_SETTING_ICON_BG_MIN_W_L_WVGA QP_SETTING_BG_H;
+                       }
+                       description {
+                               state: "dragging" 0.0;
+                               inherit: "default" 0.0;
+                               min : QP_SETTING_ICON_DRAGGING_BG_MIN_W_WVGA QP_SETTING_ICON_DRAGGING_BG_MIN_H;
+                       }
+               }
+               part {
+                       name: "padding.top";
+                       type: SPACER;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 17;
+                               fixed: 0 1;
+                               align: 0.5 0.0;
+                               rel1 {
+                                       relative: 0.0 0.0;
+                                       to: "background.super";
+                               }
+                               rel2 {
+                                       relative: 1.0 0.0;
+                                       to: "background.super";
+                               }
+                       }
+               }
+               part {
+                       name: "background";
+                       type: SPACER;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min : QP_SETTING_ICON_BG_MIN_W_P_WVGA QP_SETTING_ICON_MIN_WH_WVGA;
+                               max : QP_SETTING_ICON_BG_MIN_W_P_WVGA QP_SETTING_ICON_MIN_WH_WVGA;
+                               rel1 {
+                                       relative : 0.0 1.0;
+                                       to: "padding.top";
+                               }
+                               rel2 {
+                                       relative : 1.0 1.0;
+                                       to: "padding.top";
+                               }
+                               align: 0.5 0.0;
+                       }
+                       description {
+                               state: "portrait" 0.0;
+                               inherit: "default" 0.0;
+                       }
+                       description {
+                               state: "landscape" 0.0;
+                               inherit: "default" 0.0;
+                               min : QP_SETTING_ICON_BG_MIN_W_L_WVGA QP_SETTING_ICON_MIN_WH_WVGA;
+                               max : QP_SETTING_ICON_BG_MIN_W_L_WVGA QP_SETTING_ICON_MIN_WH_WVGA;
+                       }
+               }
+
+               part {
+                       name: "bg.image";
+                       type : IMAGE;
+                       scale : 1;
+                       repeat_events: 1;
+                       description     {
+                               state: "default" 0.0;
+
+                               min: QP_SETTING_ICON_MIN_WH_WVGA QP_SETTING_ICON_MIN_WH_WVGA;
+                               max: QP_SETTING_ICON_MIN_WH_WVGA QP_SETTING_ICON_MIN_WH_WVGA;
+
+                               image {
+                                       normal:"quick_button_icon_bg.png";
+                               }
+
+                               rel1 {
+                                       relative : 0.5 0.5;
+                                       to: "background";
+                               }
+                               rel2 {
+                                       relative : 0.5 0.5;
+                                       to: "background";
+                               }
+                               color_class: "AO001L1";
+                       }
+                       description {
+                               state: "pressed" 0.0;
+                               inherit: "default" 0.0;
+                               color_class: "AO001L1P";
+                       }
+                       description {
+                               state: "dimmed" 0.0;
+                               inherit: "default" 0.0;
+                               color_class: "AO001L1D";
+                       }
+               }
+
+               part {
+                       name: "pad.top";
+                       type: SPACER;
+                       scale : 1;
+                       mouse_events: 0;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 0;
+                               max: 0 0;
+                               rel1 {
+                                       relative: 0.0 0.0;
+                                       to: "background";
+                               }
+                               rel2 {
+                                       relative: 1.0 0.0;
+                                       to: "background";
+                               }
+                               align: 0.0 0.0;
+                       }
+               }
+               part {
+                       name: "icon.bg";
+                       type: SPACER;
+                       scale: 1;
+                       mouse_events: 0;
+                       description {
+                               state: "default" 0.0;
+                               min: 66 66;
+                               fixed: 0 1;
+                               rel1 {
+                                       relative: 0.0 1.0;
+                                       to_x: "background.super";
+                                       to_y: "pad.top";
+                               }
+                               rel2 {
+                                       relative: 1.0 1.0;
+                                       to_x: "background.super";
+                                       to_y: "pad.top";
+                               }
+                               align: 0.0 0.0;
+                       }
+               }
+#ifdef ENABLE_COLOR_CLIP
+               part {
+                       name : "color_clip";
+                       type : RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 66 66;
+                               rel1 {
+                                       relative: 0.5 0.5;
+                                       to: "icon.bg";
+                               }
+                               rel2 {
+                                       relative: 0.5 0.5;
+                                       to: "icon.bg";
+                               }
+                               align: 0.5 0.5;
+                               color: 255 255 255 255;
+                               color_class: QP_SETTING_ICON_COLOR_OFF;
+                       }
+                       description {
+                               state: "on" 0.0;
+                               inherit: "default" 0.0;
+                               color: 255 255 255 255;
+                               color_class: QP_SETTING_ICON_COLOR_ON;
+                       }
+                       description {
+                               state: "off" 0.0;
+                               inherit: "default" 0.0;
+                               color: 255 255 255 255;
+                               color_class: QP_SETTING_ICON_COLOR_OFF;
+                       }
+                       description {
+                               state: "dim" 0.0;
+                               inherit: "default" 0.0;
+                               color: 255 255 255 255;
+                               color_class: QP_SETTING_ICON_COLOR_DIM;
+                       }
+                       description {
+                               state: "loading" 0.0;
+                               inherit: "default" 0.0;
+                               color: 255 255 255 255;
+                               color_class: QP_SETTING_ICON_COLOR_LOADING;
+                       }
+               }
+#endif
+               part {
+                       name: "icon.swallow.wvga";
+                       type: SWALLOW;
+                       scale: 1;
+                       mouse_events: 0;
+#ifdef ENABLE_COLOR_CLIP
+                       clip_to: "color_clip";
+#endif
+                       description {
+                               state: "default" 0.0;
+                               min: 46 46;
+                               max: 46 46;
+                               fixed: 1 1;
+                               rel1 {
+                                       relative: 0.5 0.5;
+                                       to: "background";
+                               }
+                               rel2 {
+                                       relative: 0.5 0.5;
+                                       to: "background";
+                               }
+                               align: 0.5 0.5;
+                               visible: 1;
+                       }
+               }
+
+               part {
+                       name: "spacer.text";
+                       type: SPACER;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: (96 - 10) (24 + 2 + 24);
+                               max: (96 - 10) (24 + 2 + 24);
+                               fixed: 1 1;
+                               align: 0.5 0.0;
+                               rel1 {
+                                       relative: 0.0 1.0;
+                                       to: "background";
+                                       offset: 0 3;
+                               }
+                               rel2 {
+                                       relative: 1.0 1.0;
+                                       to: "background";
+                               }
+                       }
+               }
+
+               part
+               {
+                       name: "icon.text";
+                       type: TEXTBLOCK;
+                       scale: 1;
+                       mouse_events: 0;
+                       multiline: 1;
+
+                       description {
+                               state: "default" 0.0;
+                               rel1 {
+                                       relative: 0.0 0.0;
+                                       to: "spacer.text";
+                               }
+                               rel2 {
+                                       relative: 1.0 1.0;
+                                       to: "spacer.text";
+                               }
+                               align: 0.5 0.0;
+                               text
+                               {
+                                       style: "icon_text_style";
+                                       align: 0.5 0.0;
+                                       max: 0 1;
+                               }
+                       }
+               }
+
+               QUICKPANEL_FOCUS_OBJECT("focus", "background.super", "background.super")
+       }
+       script {
+               public icon_rotation;
+               public icon_state;
+               public icon_text_state;
+       }
+       programs {
+               program{
+                       name: "icon.portrait";
+                       signal: "icon.portrait";
+                       source: "quickpanl.prog";
+                       script {
+                               set_int(icon_rotation, 0);
+                               set_state(PART:"background.super", "portrait", 0.0);
+                               set_state(PART:"background", "portrait", 0.0);
+                       }
+               }
+               program{
+                       name: "icon.landscape";
+                       signal: "icon.landscape";
+                       source: "quickpanl.prog";
+                       script {
+                               set_int(icon_rotation, 1);
+                               set_state(PART:"background.super", "landscape", 0.0);
+                               set_state(PART:"background", "landscape", 0.0);
+                       }
+               }
+               program{
+                       name: "icon.dragging.on";
+                       signal: "dragging.on";
+                       source: "quickpanl.prog";
+                       script {
+                               set_state(PART:"background.super", "dragging", 0.0);
+                               if (get_int(icon_rotation) == 0) {
+                               } else {
+                               }
+                       }
+               }
+               program{
+                       name: "icon.dragging.off";
+                       signal: "dragging.off";
+                       source: "quickpanl.prog";
+                       script {
+                               if (get_int(icon_rotation) == 0) {
+                                       set_state(PART:"background.super", "portrait", 0.0);
+                               } else {
+                                       set_state(PART:"background.super", "landscape", 0.0);
+                               }
+                       }
+               }
+               program {
+                       name: "color.progress";
+                       signal: "icon.progress";
+                       source: "quickpanl.prog";
+                       script{
+#ifdef ENABLE_COLOR_CLIP
+                               set_state(PART:"color_clip", "loading", 0.0);
+#endif
+                       }
+
+               }
+               program {
+                       name: "color.off";
+                       signal: "icon.off";
+                       source: "quickpanl.prog";
+                       script{
+                               set_int(icon_state, 0);
+#ifdef ENABLE_COLOR_CLIP
+                               set_state(PART:"color_clip", "off", 0.0);
+#endif
+                       }
+
+               }
+               program {
+                       name: "color.on";
+                       signal: "icon.on";
+                       source: "quickpanl.prog";
+                       script{
+                               set_int(icon_state, 1);
+#ifdef ENABLE_COLOR_CLIP
+                               set_state(PART:"color_clip", "on", 0.0);
+#endif
+                       }
+               }
+               program {
+                       name: "color.dim";
+                       signal: "icon.dim";
+                       source: "quickpanl.prog";
+                       script{
+                               set_int(icon_state, 2);
+#ifdef ENABLE_COLOR_CLIP
+                               set_state(PART:"color_clip", "dim", 0.0);
+#endif
+                       }
+               }
+
+               program {
+                       name: "color.release";
+                       action: STATE_SET "press" 0.0;
+                       signal: "mouse,up,1";
+                       source: "background.super";
+                       script{
+                               if (get_int(icon_state) == 1) {
+                                       set_state(PART:"bg.image", "default", 0.0);
+#ifdef ENABLE_COLOR_CLIP
+                                       set_state(PART:"color_clip", "on", 0.0);
+#endif
+                               } else if (get_int(icon_state) == 2) {
+                                       set_state(PART:"bg.image", "dimmed", 0.0);
+#ifdef ENABLE_COLOR_CLIP
+                                       set_state(PART:"color_clip", "dim", 0.0);
+#endif
+                               } else {
+                                       set_state(PART:"bg.image", "default", 0.0);
+#ifdef ENABLE_COLOR_CLIP
+                                       set_state(PART:"color_clip", "off", 0.0);
+#endif
+                               }
+                       }
+               }
+
+               program{
+                       name: "bg.image.press";
+                       signal: "mouse,down,1";
+                       source: "background.super";
+                       action: STATE_SET "pressed" 0.0;
+                       target: "bg.image";
+               }
+               program{
+                       name: "bg.image.release";
+                       signal: "mouse,up,1";
+                       source: "background.super";
+                       action: STATE_SET "default" 0.0;
+                       target: "bg.image";
+               }
+       }
+}
diff --git a/data/quickpanel_spn.edc b/data/quickpanel_spn.edc
deleted file mode 100755 (executable)
index da77a19..0000000
+++ /dev/null
@@ -1,157 +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.
- */
-
-group {
-       name: "quickpanel/spn";
-       parts {
-               part { name: "base";
-                       type: RECT;
-                       repeat_events: 1;
-                       scale: 1;
-                       description {
-                               state: "default" 0.0;
-                               min: 0 QP_SPN_H;
-                               color: QP_BG_COLOR;
-                               visible: QP_BG_VISIBILITY;
-                       }
-               }
-               part { name: "elm.padding.left";
-                       type: RECT;
-                       scale: 1;
-                       description {
-                               state: "default" 0.0;
-                               min: 26 0;
-                               fixed: 1 0;
-                               visible: 0;
-                               rel1.relative: 0.0 0.0;
-                               rel2.relative: 0.0 1.0;
-                               align: 0.0 0.0;
-                               visible: 0;
-                       }
-               }
-               part { name: "elm.padding.right";
-                       type: RECT;
-                       scale: 1;
-                       description {
-                               state: "default" 0.0;
-                               min: 14 0;
-                               fixed: 1 0;
-                               visible: 0;
-                               rel1.relative: 1.0 0.0;
-                               rel2.relative: 1.0 0.0;
-                               align: 1.0 0.0;
-                               visible: 0;
-                       }
-               }
-               part { name: "elm.padding.top";
-                       type: RECT;
-                       scale: 1;
-                       description {
-                               state: "default" 0.0;
-                               min: 0 11;
-                               fixed: 0 1;
-                               visible: 0;
-                               rel1.relative: 0.0 0.0;
-                               rel2.relative: 1.0 0.0;
-                               align: 0.0 0.0;
-                               visible: 0;
-                       }
-               }
-               part { name: "elm.padding.bottom";
-                       type: RECT;
-                       scale: 1;
-                       description {
-                               state: "default" 0.0;
-                               min: 0 11;
-                               fixed: 0 1;
-                               visible: 0;
-                               rel1.relative: 0.0 1.0;
-                               rel2.relative: 1.0 1.0;
-                               align: 0.0 1.0;
-                               visible: 0;
-                       }
-               }
-
-               part { name: "elm.rect.spn";
-                       type: RECT;
-                       scale: 1;
-                       description {
-                               state: "default" 0.0;
-                               min: QP_SPN_TEXT_W 0;
-                               fixed: 1 0;
-                               rel1 {
-                                       to_x: "elm.padding.left";
-                                       relative: 1.0 0.0;
-                               }
-                               rel2 {
-                                       to_x: "elm.padding.left";
-                                       relative: 1.0 1.0;
-                               }
-                               align: 0.0 0.0;
-                               visible:0;
-                       }
-               }
-               part { name: "qp.spn.swallow";
-                       type: SWALLOW;
-                       scale: 1;
-                       description {
-                               state: "default" 0.0;
-                               rel1 {
-                                       to: "elm.rect.spn";
-                               }
-                               rel2 {
-                                       to: "elm.rect.spn";
-                               }
-                       }
-               }
-
-               part { name: "elm.rect.icon";
-                       type: RECT;
-                       scale: 1;
-                       description {
-                               state: "default" 0.0;
-                               min: 158 58;
-                               fixed: 1 1;
-                               rel1 {
-                                       to_x: "elm.padding.right";
-                                       to_y: "elm.padding.top";
-                                       relative: 0.0 1.0;
-                               }
-                               rel2 {
-                                       to_x: "elm.padding.right";
-                                       to_y: "elm.padding.bottom";
-                                       relative: 0.0 0.0;
-                               }
-                               align: 1.0 0.5;
-                               visible: 0;
-                       }
-               }
-               part { name: "qp.button.swallow";
-                       type: SWALLOW;
-                       scale: 1;
-                       description {
-                               state: "default" 0.0;
-                               rel1 {
-                                       to: "elm.rect.icon";
-                               }
-                               rel2 {
-                                       to: "elm.rect.icon";
-                               }
-                       }
-               }
-       }
-}
-
diff --git a/data/quickpanel_textblock_slide_style.edc b/data/quickpanel_textblock_slide_style.edc
new file mode 100644 (file)
index 0000000..74f3fb9
--- /dev/null
@@ -0,0 +1,155 @@
+/*
+ * 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"
+
+collections
+{
+       base_scale: 1.8;
+
+       group {
+               name: "slide_short";
+
+               styles {
+                       style
+                       {
+                               name: "dual_sim_text_style";
+                               base: "font=Tizen:style=Regular font_size=17 text_class=ATO007D color=#FFFFFF color_class=ATO007D align=center wrap=none ";     // unconnected
+                               tag:  "icon_0" "+ text_class=ATO007E1 color=#FFFFFF color_class=ATO007E1 ";     // SIM1
+                               tag:  "icon_1" "+ text_class=ATO007E2 color=#FFFFFF color_class=ATO007E2 ";     // SIM2
+                               tag:  "icon_2" "+ text_class=ATO007E9 color=#FFFFFF color_class=ATO007E9 ";     // Call
+                               tag:  "icon_3" "+ text_class=ATO007E4 color=#FFFFFF color_class=ATO007E4 ";     // SMS
+                               tag:  "icon_4" "+ text_class=ATO007E5 color=#FFFFFF color_class=ATO007E5 ";     // MMS
+                               tag:  "icon_5" "+ text_class=ATO007E6 color=#FFFFFF color_class=ATO007E6 ";     // Internet
+                               tag:  "icon_6" "+ text_class=ATO007E7 color=#FFFFFF color_class=ATO007E7 ";     // Home
+                               tag:  "icon_7" "+ text_class=ATO007E3 color=#FFFFFF color_class=ATO007E3 ";     // Office
+                               tag:  "icon_8" "+ text_class=ATO007E8 color=#FFFFFF color_class=ATO007E8 ";     // Heart
+                       }
+               }
+
+               parts {
+                       part {
+                               name: "base";
+                               type: SPACER;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 84 (4 + 19 + 4);
+                                       max: 84 (4 + 19 + 4);
+                                       fixed: 1 1;
+                               }
+                       }
+                       part {
+                               name: "clip";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 {
+                                               relative: 0.0 0.0;
+                                               to: "base";
+                                       }
+                                       rel2 {
+                                               relative: 1.0 1.0;
+                                               to: "base";
+                                       }
+                               }
+                       }
+                       part {
+                               name: "text";
+                               type: TEXTBLOCK;
+                               mouse_events: 0;
+                               repeat_events: 1;
+                               scale: 1;
+                               clip_to: "clip";
+                               description {
+                                       state: "default" 0.0;
+                                       min: 84 (4 + 19 + 4);
+                                       fixed: 1 1;
+                                       align: 0.5 0.5;
+                                       rel1 {
+                                               relative: 0.0 0.0;
+                                               to: "clip";
+                                       }
+                                       rel2 {
+                                               relative: 1.0 1.0;
+                                               to: "clip";
+                                       }
+                                       text {
+                                               style: "dual_sim_text_style";
+                                               min: 1 1;
+                                               align: 0.5 0.5;
+                                       }
+                               }
+                               description {
+                                       state: "slide_end" 0.0;
+                                       inherit: "default" 0.0;
+                                       align: 1.0 0.5;
+                               }
+                               description {
+                                       state: "slide_begin" 0.0;
+                                       inherit: "default" 0.0;
+                                       align: 0.0 0.5;
+                               }
+                       }
+               }
+
+               programs {
+                       program
+                       {
+                               name: "play_slide";
+                               source: "elm";
+                               signal: "elm,state,slide,start";
+                               action: STATE_SET "slide_begin" 0.0;
+                               target: "text";
+                               after: "start_slide";
+                       }
+
+                       program
+                       {
+                               name: "stop_slide";
+                               source: "elm";
+                               signal: "elm,state,slide,stop";
+                               action: STATE_SET "default" 0.0;
+                               target: "text";
+                       }
+
+                       program
+                       {
+                               name: "start_slide";
+
+                               action: STATE_SET "slide_end" 0.0;
+                               transition: LINEAR 5.0;
+                               target: "text";
+                               filter: "text" "slide_begin";
+                               in: 0.5 0.0;
+                               after: "end_slide";
+                       }
+
+                       program
+                       {
+                               name: "end_slide";
+                               action: STATE_SET "slide_begin" 0.0;
+                               filter: "text" "slide_end";
+                               target: "text";
+                               in: 0.5 0.0;
+
+                               after: "start_slide";
+                       }
+               }
+       }
+}
index 0ca3b7c..7521496 100755 (executable)
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ * Copyright (c) 2009-2015 Samsung Electronics Co., Ltd All Rights Reserved
  *
- * Licensed under the Flora License, Version 1.1 (the "License");
+ * 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 "quickpanel_def.h"
 
 collections {
-       #include "quickpanel_theme_element.edc"
-
-       styles {
-               style {
-                       name: "button_text";
-                       base: "font=Tizen:style=Regular text_class=tizen align=center font_size=28 color=#FFFFFFFF ellipsis=0.0 wrap=mixed";
-               }
-       }
-
-#define NOTI_BUTTON_STATE_ENABLED 0
-#define NOTI_BUTTON_STATE_DISABLED 1
-
-       group { name: "elm/button/base/quickpanel_standard";
-               images {
-                       image: "quick_standard_btn_press.png" COMP;
-                       image: "quick_standard_btn_nor.png" COMP;
-               }
+       base_scale: 1.8;
 
-               script {
-                       public button_state = NOTI_BUTTON_STATE_ENABLED;
-               }
-               parts {
-                       part { name: "button_image";
-                               type: IMAGE;
-                               mouse_events: 1;
-                               scale: 1;
-                               description { 
-                                       state: "default" 0.0;
-                                       min: 145 59;
-                                       fixed: 1 1;
-                                       rel1 {
-                                               relative: 0.0 0.0;
-                                       }
-                                       rel2 {
-                                               relative: 1.0 1.0;
-                                       }
-                                       image {
-                                               normal: "quick_standard_btn_nor.png";
-                                               border: 10 10 0 0;
-                                       }
-                               }
-                               description { state: "clicked" 0.0;
-                                       inherit: "default" 0.0;
-                                       image {
-                                               normal: "quick_standard_btn_press.png";
-                                               border: 10 10 0 0;
-                                       }
-                               }
-                               description { state: "disabled" 0.0;
-                                       inherit: "default" 0.0;
-                               }
-                               description { state: "focused" 0.0;
-                                       inherit: "default" 0.0;
-                               }
-                       }
-               part {   name: "elm.text.rect";
-                       type: RECT;
-                       mouse_events: 0;
-                       scale: 1;
-                       description { state: "default" 0.0;
-                               visible: 0;
-                               fixed: 1 1;
-                               align: 0.5 0.5;
-                                       rel1 {
-                                               relative: 0.05 0.05;
-                                               to: "button_image";
-                                       }
-                                       rel2 {
-                                               relative: 0.95 0.95;
-                                               to: "button_image";
-                                       }
-                       }
-               }
-               part {   name: "elm.text";
-                       type: TEXTBLOCK;
-                       mouse_events: 0;
-                       scale: 1;
-                       multiline: 1;
-                       description { state: "default" 0.0;
-                               visible: 0;
-                               fixed: 1 1;
-                               color: 149 148 148 255;
-                                       rel1 {
-                                               to: "elm.text.rect";
-                                       }
-                                       rel2 {
-                                               to: "elm.text.rect";
-                                       }
-                               text {
-                                               style: "button_text";
-                                               size: 28;
-                                               align: 0.5 0.5;
-                                               fit: 1 1;
-                                               size_range: 22 28;
-                               }
-                       }
-                       description { state: "visible" 0.0;
-                               inherit: "default" 0.0;
-                               visible: 1;
-                               min: 1 1;
-                       }
-                       description { state: "clicked" 0.0;
-                               inherit: "default" 0.0;
-                               visible: 1;
-                               min: 1 1;
-                               color: 255 255 255 255;
-                       }
-                       description { state: "disabled" 0.0;
-                               inherit: "default" 0.0;
-                               color: 0 0 0 128;
-                       }
-                       description { state: "disabled_visible" 0.0;
-                               inherit: "default" 0.0;
-                               visible: 1;
-                               min: 1 1;
-                       }
-                       description { state: "focused" 0.0;
-                               inherit: "default" 0.0;
-                               visible: 1;
-                               min: 1 1;
-                               color: 255 255 255 255;
-                       }
-               }
-               part { name: "over1";
-                       mouse_events: 0;
-                       description { state: "default" 0.0;
-                               rel2.relative: 1.0 0.5;
-                       }
-               }
-               part { name: "over2";
-                       mouse_events: 1;
-                       repeat_events: 1;
-                       ignore_flags: ON_HOLD;
-                       description { state: "default" 0.0;
-                               rel1.to: "button_image";
-                               rel2.to: "button_image";
-                       }
-               }
-               part { name: "over3";
-                       mouse_events: 1;
-                       repeat_events: 1;
-                       description { state: "default" 0.0;
-                               rel1.to: "button_image";
-                               rel2.to: "button_image";
-                               color: 0 0 0 0;
-                       }
-               }
-               part { name: "disabler";
-                       type: RECT;
-                       description { state: "default" 0.0;
-                               rel1.to: "button_image";
-                               rel2.to: "button_image";
-                               color: 0 0 0 0;
-                               visible: 0;
-                       }
-                       description { state: "disabled" 0.0;
-                               inherit: "default" 0.0;
-                               visible: 1;
-                       }
-               }
-       }
-       programs {
-               program { name: "button_click";
-                       signal: "mouse,down,1";
-                       source: "over2";
-                       action: SIGNAL_EMIT "elm,action,press" "";
-                       after: "button_click_anim";
-               }
-               program { name: "button_click_anim";
-                       action: STATE_SET "clicked" 0.0;
-                       target: "button_image";
-                       target: "elm.text";
-               }
-               program { name: "button_unpress";
-                       action: SIGNAL_EMIT "elm,action,unpress" "";
-               }
-               program { name: "button_mouseout_clicked";
-                       signal: "mouse,up,1";
-                       source: "over3";
-                       script {
-                               new st[31];
-                               new Float:vl;
-                               get_state(PART:"elm.text", st, 30, vl);
-                               if (!strcmp(st, "clicked") || !strcmp(st, "focused"))
-                               {
-                                       emit("elm,action,default,text,set", "");
-                                       set_state(PART:"elm.text", "visible", 0.0);
-                               }
-                               if(get_int(button_state) != NOTI_BUTTON_STATE_DISABLED)
-                               {
-                                       set_state(PART:"button_image", "default", 0.0);
-                               }
-                       }
-                       after: button_unpress;
-               }
-               program { name: "button_unclick3";
-                       signal: "mouse,clicked,1";
-                       source: "over2";
-                       action: SIGNAL_EMIT "elm,action,click" "";
-               }
-               program { name: "text_show";
-                       signal: "elm,state,text,visible";
-                       source: "elm";
-                       script {
-                               if(get_int(button_state) != NOTI_BUTTON_STATE_DISABLED)
-                                       set_state(PART:"elm.text", "visible", 0.0);
-                               else
-                                       set_state(PART:"elm.text", "disabled_visible", 0.0);
-                       }
-               }
-               program { name: "text_hide";
-                       signal: "elm,state,text,hidden";
-                       source: "elm";
-                       action: STATE_SET "default" 0.0;
-                       target: "elm.text";
-               }
+#define PROCESS_MEDIUM_IMAGE_WIDTH_INC 36
+#define PROCESS_MEDIUM_IMAGE_HEIGHT_INC 36
+#define PROCESS_MEDIUM_IMAGE_COLOR     "AO008"
 
-               program { name: "disable";
-                       signal: "elm,state,disabled";
-                       source: "elm";
-                       action: STATE_SET "disabled" 0.0;
-                       target: "button_image";
-                       target: "disabler";
-                       after: "disable_text";
-               }
-               program { name: "disable_text";
-                       script {
-                               new st[31];
-                               new Float:vl;
-                               get_state(PART:"elm.text", st, 30, vl);
-                               if (!strcmp(st, "visible"))
-                                       set_state(PART:"elm.text", "disabled_visible", 0.0);
-                               else
-                                       set_state(PART:"elm.text", "disabled", 0.0);
-                               set_int(button_state, NOTI_BUTTON_STATE_DISABLED);
-                       }
-               }
-               program { name: "enable";
-                       signal: "elm,state,enabled";
-                       source: "elm";
-                       action: STATE_SET "default" 0.0;
-                       target: "button_image";
-                       target: "disabler";
-                       after: "enable_text";
-               }
-               program { name: "enable_text";
-                       script {
-                               new st[31];
-                               new Float:vl;
-                               get_state(PART:"elm.text", st, 30, vl);
-                               if (!strcmp(st, "disabled_visible"))
-                                       set_state(PART:"elm.text", "visible", 0.0);
-                               else
-                                       set_state(PART:"elm.text", "default", 0.0);
-                               set_int(button_state, NOTI_BUTTON_STATE_ENABLED);
-                       }
-               }
-               program { name: "focused";
-                       //signal: "elm,action,focus";
-                       //source: "elm";
-                       action: STATE_SET "focused" 0.0;
-                       target: "button_image";
-                       target: "elm.text";
-               }
-               program { name: "unfocused";
-                       //signal: "elm,action,unfocus";
-                       //source: "elm";
-                       action: STATE_SET "default" 0.0;
-                       target: "button_image";
-                       action: STATE_SET "visible" 0.0;
-                       target: "elm.text";
-               }
-               program { name: "reset_button_state";
-                       signal: "elm,action,button,reset";
-                       source: "elm";
-                       action: STATE_SET "default" 0.0;
-                       target: "button_image";
-               }
-       }
+#include "quickpanel_theme_progressbar.edc"
+#include "quickpanel_theme_slider.edc"
 }
diff --git a/data/quickpanel_theme_element.edc b/data/quickpanel_theme_element.edc
deleted file mode 100755 (executable)
index 8f85a9b..0000000
+++ /dev/null
@@ -1,1928 +0,0 @@
-#define SLIDER_INDICATOR_TEXT_COLOR_INC      255 255 255 255
-#define SLIDER_UNITS_TEXT_COLOR_INC      0 0 0 255
-#define SLIDER_UNITS_TEXT_SIZE_INC  30
-#define SLIDER_INDICATOR_TEXT_SIZE_INC  26
-#define SLIDER_BASE_HEIGHT_INC  16
-#define SLIDER_BASE_MIN_WIDTH_INC 375
-#define SLIDER_BASE_HEIGHT_INC  16
-#define SLIDER_SWALLOW_BAR_MIN_WIDTH_INC  20
-#define SLIDER_SWALLOW_BAR_HEIGHT_INC  72
-#define SLIDER_INDICATOR_MAX_WIDTH_INC 52
-#define SLIDER_INDICATOR_WIDTH_INC 52
-#define SLIDER_INDICATOR_HEIGHT_INC 72
-
-   group { name: "elm/slider/horizontal/indicator/default";
-           alias: "elm/slider/horizontal/indicator/disabled";
-           alias: "elm/slider/vertical/indicator/default";
-           alias: "elm/slider/vertical/indicator/disabled";
-           alias: "elm/slider/horizontal/indicator/tap_to_drag";
-      images {
-         image: "00_slider_handle.png" COMP;
-         image: "00_slider_handle_dim.png" COMP;
-         image: "00_slider_handle_press.png" COMP;
-      }
-      parts {
-         part { name: "button_events";
-            type: RECT;
-            mouse_events: 1;
-            scale: 1;
-            description { state: "default" 0.0;
-               fixed: 1 1;
-               min: 2*SLIDER_INDICATOR_WIDTH_INC 1.5*SLIDER_INDICATOR_HEIGHT_INC;
-               aspect: 1.0 1.0;
-               aspect_preference: VERTICAL;
-               color: 0 0 0 0;
-            }
-            description { state: "disabled" 0.0;
-               inherit: "default" 0.0;
-               visible: 0;
-            }
-         }
-         part { name: "button0";
-            mouse_events: 0;
-            scale: 1;
-            description { state: "default" 0.0;
-               fixed: 1 1;
-               min: SLIDER_INDICATOR_WIDTH_INC SLIDER_INDICATOR_HEIGHT_INC;
-               max: SLIDER_INDICATOR_MAX_WIDTH_INC SLIDER_INDICATOR_HEIGHT_INC;
-               rel1 {
-                  to: "elm.indicator";
-                  offset: 0 0;
-               }
-               rel2 {
-                  to: "elm.indicator";
-                  offset: 0 0;
-               }
-               image {
-                  normal: "00_slider_handle.png";
-                  border: 1 1 1 1;
-                  border_scale: 1;
-               }
-            }
-            description { state: "pressed" 0.0;
-               inherit: "default" 0.0;
-               image {
-                  normal: "00_slider_handle_press.png";
-               }
-            }
-            description { state: "disabled" 0.0;
-               inherit: "default" 0.0;
-               image {
-                  normal: "00_slider_handle_dim.png";
-               }
-            }
-         }
-         part { name: "elm.indicator";
-            type: TEXT;
-            mouse_events: 0;
-            scale: 1;
-            description { state: "default" 0.0;
-               visible: 1;
-               color: SLIDER_INDICATOR_TEXT_COLOR_INC;
-               text {
-                  font: "Tizen:style=Medium";
-                  size: SLIDER_INDICATOR_TEXT_SIZE_INC;
-                  min: 1 1;
-                  align: 0.5 0.5;
-                  text_class: "tizen";
-               }
-            }
-            description { state: "hide" 0.0;
-               inherit: "default" 0.0;
-               visible: 0;
-             }
-         }
-      }
-      programs {
-         program { name: "set_val_show";
-            signal: "elm,state,val,show";
-            source: "elm";
-            action:  STATE_SET "default" 0.0;
-            target: "elm.indicator";
-         }
-         program { name: "set_val_hide";
-            signal: "elm,state,val,hide";
-            source: "elm";
-            action:  STATE_SET "hide" 0.0;
-            target: "elm.indicator";
-         }
-         program { name: "slider_disable";
-            signal: "elm,state,disabled";
-            source: "elm";
-            action:  STATE_SET "disabled" 0.0;
-            target: "button0";
-            target: "button_events";
-         }
-         program { name: "slider_enable";
-            signal: "elm,state,enabled";
-            source: "elm";
-            action:  STATE_SET "default" 0.0;
-            target: "button0";
-            target: "button_events";
-         }
-         program { name: "mouse_down";
-            signal: "mouse,down,*";
-            source: "button_events";
-            action:  STATE_SET "pressed" 0.0;
-            target: "button0";
-         }
-         program { name: "mouse_up";
-            signal: "mouse,up,*";
-            source: "button_events";
-            action:  STATE_SET "default" 0.0;
-            target: "button0";
-         }
-      }
-   }
-
-   group { name: "elm/slider/horizontal/quickpanel";
-           alias: "elm/slider/horizontal/disabled";
-      images {
-         image: "00_progress_bg.png" COMP;
-         image: "00_progress_bar.png" COMP;
-      }
-      script {
-         public invert_on = 0;
-         public set_invert_on() {
-            set_state(PART:"level", "inverted", 0.0);
-            set_state(PART:"level2", "inverted", 0.0);
-            set_int(invert_on, 1);
-         }
-         public set_invert_off() {
-            set_state(PART:"level", "default", 0.0);
-            set_state(PART:"level2", "default", 0.0);
-            set_int(invert_on, 0);
-         }
-         public thumb_down() {
-            if(get_int(invert_on) == 0)
-               set_state(PART:"level", "pressed", 0.0);
-            else if(get_int(invert_on) == 1)
-               set_state(PART:"level2", "pressed", 0.0);
-            }
-         public thumb_up() {
-            if(get_int(invert_on) == 0)
-               set_state(PART:"level", "default", 0.0);
-            else if(get_int(invert_on) == 1)
-               set_state(PART:"level2", "inverted", 0.0);
-            }
-         }
-         parts {
-            part { name: "base";
-               mouse_events: 0;
-               scale: 1;
-               description { state: "default" 0.0;
-                  max: 99999 SLIDER_BASE_HEIGHT_INC;
-                  rel1.to: "bg";
-                  rel2.to: "bg";
-                  image.normal: "00_progress_bg.png";
-                  image.border: 10 10 0 0;
-                  image.border_scale: 1;
-               }
-            }
-            part { name: "level";
-               mouse_events: 0;
-               scale: 1;
-               clip_to: "clipper";
-               description { state: "default" 0.0;
-                  fixed: 1 1;
-                  rel1.to: "base";
-                  rel2 {
-                     to_y: "base";
-                     to_x: "elm.dragable.slider";
-                     relative: 0.5 1.0;
-                  }
-                  image.normal: "00_progress_bar.png";
-                  image.border: 10 10 0 0;
-                  image.border_scale: 1;
-               }
-               description { state: "inverted" 0.0;
-                  inherit: "default" 0.0;
-                  visible: 0;
-               }
-               description { state: "pressed" 0.0;
-                  inherit: "default" 0.0;
-                  image.normal: "00_progress_bar.png";
-               }
-            }
-            part { name: "level2";
-               mouse_events: 0;
-               scale: 1;
-               clip_to: "clipper";
-               description { state: "default" 0.0;
-                  fixed: 1 1;
-                  visible: 0;
-                  rel1 {
-                     to_y: "base";
-                     to_x: "elm.dragable.slider";
-                     relative: 0.5 0.0;
-                  }
-                  rel2.to: "base";
-                  image.normal: "00_progress_bar.png";
-                  image.border: 0 0 4 4;
-                  image.border_scale: 1;
-               }
-               description { state: "inverted" 0.0;
-                  inherit: "default" 0.0;
-                  visible: 1;
-               }
-               description { state: "pressed" 0.0;
-                  inherit: "default" 0.0;
-                  visible: 1;
-                  image.normal: "00_progress_bar.png";
-               }
-            }
-            part { name: "bg";
-               type: RECT;
-               mouse_events: 0;
-               scale: 1;
-               description { state: "default" 0.0;
-                  visible: 0;
-                  rel1.to: "elm.swallow.bar";
-                  rel2.to: "elm.swallow.bar";
-               }
-            }
-            part { name: "elm.swallow.bar";
-               type: SWALLOW;
-               mouse_events: 0;
-               scale: 1;
-               description { state: "default" 0.0;
-                  min: SLIDER_SWALLOW_BAR_MIN_WIDTH_INC SLIDER_SWALLOW_BAR_HEIGHT_INC;
-                  max: 99999 SLIDER_SWALLOW_BAR_HEIGHT_INC;
-                  align: 1.0 0.5;
-                  rel1 {
-                     to_x: "bar_left_padding";
-                     relative: 1.0 0.0;
-                  }
-                  rel2 {
-                     to_x: "bar_right_padding";
-                     relative: 0.0 1.0;
-                  }
-               }
-            }
-            part {
-               name: "bar_left_padding";
-               type: RECT;
-               scale: 1;
-               description {
-                  state: "default" 0.0;
-                  visible: 0;
-                  min: 16 0;
-                  fixed: 1 1;
-                  rel1 {
-                     relative: 1.0  0.5;
-                     to_x: "elm.text";
-                  }
-                  rel2 {
-                     relative: 1.0  0.5;
-                     to_x: "elm.text";
-                  }
-                  align: 0.0 0.5;
-               }
-            }
-            part {
-               name: "bar_right_padding";
-               type: RECT;
-               scale: 1;
-               description {
-                  state: "default" 0.0;
-                  visible: 0;
-                  min: 16 0;
-                  fixed: 1 1;
-                  rel1 {
-                     relative: 0.0  0.5;
-                     to_x: "elm.units";
-                  }
-                  rel2 {
-                     relative: 0.0  0.5;
-                     to_x: "elm.units";
-                  }
-                  align: 1.0 0.5;
-               }
-            }
-            part { name: "elm.swallow.icon";
-               type: SWALLOW;
-               scale: 1;
-               description { state: "default" 0.0;
-                  visible: 0;
-                  align: 0.0 0.5;
-                  rel1 {
-                     to_y: "elm.swallow.bar";
-                  }
-                  rel2 {
-                     relative: 0.0 1.0;
-                     to_y: "elm.swallow.bar";
-                  }
-               }
-               description { state: "visible" 0.0;
-                  inherit: "default" 0.0;
-                  visible: 1;
-                  aspect: 1.0 1.0;
-                  aspect_preference: VERTICAL;
-               }
-            }
-            part { name: "elm.text";
-               type: TEXT;
-               mouse_events: 0;
-               scale: 1;
-               description { state: "default" 0.0;
-                  visible: 0;
-                  fixed: 1 1;
-                  align: 0.0 0.5;
-                  rel1.to_x: "elm.swallow.icon";
-                  rel1.relative: 1.0 0.0;
-                  rel2.to_x: "elm.swallow.icon";
-                  color: SLIDER_UNITS_TEXT_COLOR_INC;
-                  text {
-                     font: "Tizen:style=Medium";
-                     size: SLIDER_UNITS_TEXT_SIZE_INC;
-                     min: 0 0;
-                     align: 0.0 0.5;
-                     text_class: "tizen";
-                  }
-               }
-               description { state: "visible" 0.0;
-                  inherit: "default" 0.0;
-                  visible: 1;
-                  text.min: 1 1;
-               }
-            }
-            part { name: "elm.swallow.end";
-               type: SWALLOW;
-               scale: 1;
-               description { state: "default" 0.0;
-                  visible: 0;
-                  align: 1.0 0.5;
-                  rel1 {
-                     relative: 1.0 0.0;
-                     to_y: "elm.swallow.bar";
-                  }
-                  rel2 {
-                     relative: 1.0 1.0;
-                     to_y: "elm.swallow.bar";
-                  }
-               }
-               description { state: "visible" 0.0;
-                  inherit: "default" 0.0;
-                  visible: 1;
-                  aspect: 1.0 1.0;
-                  aspect_preference: VERTICAL;
-               }
-            }
-            part { name: "units";
-               mouse_events: 0;
-               scale: 1;
-               description { state: "default" 0.0;
-                  visible: 0;
-                  rel1 {
-                     to_x: "elm.units";
-                  }
-               }
-               description { state: "visible" 0.0;
-                  inherit: "default" 0.0;
-                  visible: 1;
-               }
-            }
-            part { name: "elm.units";
-               type: TEXT;
-               mouse_events: 0;
-               scale: 1;
-               description { state: "default" 0.0;
-                  visible: 0;
-                  fixed: 1 1;
-                  align: 1.0 0.5;
-                  rel1.to_x: "elm.swallow.end";
-                  rel2.relative: 0.0 1.0;
-                  rel2.to_x: "elm.swallow.end";
-                  color: SLIDER_UNITS_TEXT_COLOR_INC;
-                  text {
-                     font: "Tizen:style=Bold";
-                     size: SLIDER_UNITS_TEXT_SIZE_INC;
-                     min: 0 0;
-                     align: 0.0 0.5;
-                     text_class: "tizen";
-                  }
-               }
-               description { state: "visible" 0.0;
-                  inherit: "default" 0.0;
-                  fixed: 1 1;
-                  visible: 1;
-                  text.min: 1 1;
-               }
-            }
-            part { name: "elm.dragable.slider";
-               type: GROUP;
-               source: "elm/slider/horizontal/indicator/default";
-               mouse_events: 1;
-               scale: 1;
-               dragable {
-                  x: 1 1 0;
-                  y: 0 0 0;
-                  confine: "bg";
-               }
-               description { state: "default" 0.0;
-                  min: SLIDER_INDICATOR_WIDTH_INC SLIDER_INDICATOR_HEIGHT_INC;
-                  fixed: 1 1;
-                  align: 0.5 0.5;
-                  color: 0 0 0 0;
-               }
-            }
-            part { name: "disabler";
-               type: RECT;
-               mouse_events: 1;
-               repeat_events: 0;
-               scale: 1;
-               description { state: "default" 0.0;
-                  visible: 0;
-                  color: 0 0 0 0;
-               }
-               description { state: "disabled" 0.0;
-                  inherit: "default" 0.0;
-                  visible: 1;
-               }
-            }
-            part { name: "clipper";
-               type: RECT;
-               description { state: "default" 0.0;
-                  color: 255 255 255 255;
-               }
-               description { state: "disabled" 0.0;
-                  color: 255 255 255 102;
-               }
-            }
-         }
-         programs {
-            program { name: "text_show";
-            signal: "elm,state,text,visible";
-            source: "elm";
-            action:  STATE_SET "visible" 0.0;
-            target: "elm.text";
-         }
-         program { name: "text_hide";
-            signal: "elm,state,text,hidden";
-            source: "elm";
-            action:  STATE_SET "default" 0.0;
-            target: "elm.text";
-         }
-         program { name: "icon_show";
-            signal: "elm,state,icon,visible";
-            source: "elm";
-            action:  STATE_SET "visible" 0.0;
-            target: "elm.swallow.icon";
-         }
-         program { name: "icon_hide";
-            signal: "elm,state,icon,hidden";
-            source: "elm";
-            action:  STATE_SET "default" 0.0;
-            target: "elm.swallow.icon";
-         }
-         program { name: "end_show";
-            signal: "elm,state,end,visible";
-            source: "elm";
-            action:  STATE_SET "visible" 0.0;
-            target: "elm.swallow.end";
-         }
-         program { name: "end_hide";
-            signal: "elm,state,end,hidden";
-            source: "elm";
-            action:  STATE_SET "default" 0.0;
-            target: "elm.swallow.end";
-         }
-         program { name: "units_show";
-            signal: "elm,state,units,visible";
-            source: "elm";
-            action:  STATE_SET "visible" 0.0;
-            target: "elm.units";
-            target: "units";
-         }
-         program { name: "units_hide";
-            signal: "elm,state,units,hidden";
-            source: "elm";
-            action:  STATE_SET "default" 0.0;
-            target: "elm.units";
-            target: "units";
-         }
-         program { name: "invert_on";
-            signal: "elm,state,inverted,on";
-            source: "elm";
-            script {
-               set_invert_on();
-            }
-         }
-         program { name: "invert_off";
-            signal: "elm,state,inverted,off";
-            source: "elm";
-            script {
-               set_invert_off();
-            }
-         }
-         program { name: "val_show";
-            signal: "mouse,down,*";
-            source: "elm.dragable.slider";
-            script {
-               thumb_down();
-            }
-         }
-         program { name: "val_hide";
-            signal: "mouse,up,*";
-            source: "elm.dragable.slider";
-            script {
-               thumb_up();
-            }
-         }
-         program { name: "slider_disable";
-            signal: "elm,state,disabled";
-            source: "elm";
-            action:  STATE_SET "disabled" 0.0;
-            target: "disabler";
-            target: "clipper";
-         }
-         program { name: "slider_enable";
-            signal: "elm,state,enabled";
-            source: "elm";
-            action:  STATE_SET "default" 0.0;
-            target: "disabler";
-            target: "clipper";
-         }
-      }
-   }
-
-#define CHECK_STATE_DEFAULT 0
-#define CHECK_STATE_VISIBLE 1
-#define CHECK_STATE_DISABLED_VISIBLE 2
-#define CHECK_STATE_DISABLED 3
-
-#define CHECK_DEFAULT_TEXT_NORMAL_COLOR_INC        50 50 50 255
-#define CHECK_DEFAULT_TEXT_PRESSED_COLOR_INC      248 246 239 255
-#define CHECK_DEFAULT_TEXT_DISABLED_COLOR_INC          50 50 50 76
-#define CHECK_DISCLIP_NORMAL_COLOR_INC             255 255 255 255
-#define CHECK_DISCLIP_DISABLED_COLOR_INC           255 255 255 76
-
-#define CHECK_HIDE 0
-#define CHECK_SHOW 1
-
-#define CHECK_STYLE_DEFAULT_BG_NORMAL_MIN_MAX_INC 48 48
-
-////////////////////////////////////////////////////////////////////////////////
-#define CHECK_STYLE_DEFAULT(style_name, min_width, min_height) \
-   group { name: "elm/check/base/"style_name; \
-      images { \
-         image: "00_check_bg.png" COMP; \
-         image: "00_check_bg_press.png" COMP; \
-         image: "00_check_bg_dim.png" COMP; \
-         image: "00_check_checking.png" COMP; \
-         image: "00_check_checking_dim.png" COMP; \
-      } \
-      script { \
-         public check_state = CHECK_STATE_DEFAULT; \
-         public check_visible = CHECK_HIDE; \
-      } \
-      parts { \
-         part { name: "back_bg"; \
-            type: RECT; \
-            scale: 1; \
-            description { state: "default" 0.0; \
-               rel2.relative: 0.0 1.0; \
-               align: 0 0.5; \
-               min: min_width min_height; \
-               fixed: 1 0; \
-               color: 0 0 0 0; \
-            } \
-         } \
-         part { name: "bg"; \
-            mouse_events: 0; \
-            scale: 1; \
-            description { state: "default" 0.0; \
-               min: CHECK_STYLE_DEFAULT_BG_NORMAL_MIN_MAX_INC; \
-               max: CHECK_STYLE_DEFAULT_BG_NORMAL_MIN_MAX_INC; \
-               fixed: 1 1; \
-               rel1.to: "back_bg"; \
-               rel2.to: "back_bg"; \
-               image.normal: "00_check_bg.png"; \
-               fill.smooth : 0; \
-            } \
-            description { state: "visible" 0.0; \
-               inherit: "default" 0.0; \
-            } \
-            description { state: "pressed" 0.0; \
-               inherit: "default" 0.0; \
-               image.normal: "00_check_bg_press.png"; \
-            } \
-            description { state: "disabled" 0.0; \
-               inherit: "default" 0.0; \
-               image.normal: "00_check_bg_dim.png"; \
-            } \
-         } \
-         part { name: "check"; \
-            clip_to: "sequence_clip"; \
-            mouse_events: 0; \
-            scale: 1; \
-            description { state: "default" 0.0; \
-               rel1.to: "bg"; \
-               rel2.to: "bg"; \
-               visible: 0; \
-               image.normal: "00_check_checking.png"; \
-               color: 255 255 255 0; \
-            } \
-            description { state: "visible" 0.0; \
-               inherit: "default" 0.0; \
-               visible: 1; \
-               color: 255 255 255 255; \
-            } \
-            description { state: "disabled_visible" 0.0; \
-               inherit: "default" 0.0; \
-               visible: 1; \
-               image.normal: "00_check_checking_dim.png"; \
-            } \
-         } \
-         part { name: "sequence_clip"; \
-            type: RECT; \
-            mouse_events: 0; \
-            description { state: "default" 0.0; \
-               rel2.relative: 0.0 1.0; \
-               color: 255 255 255 255; \
-            } \
-            description { state: "visible" 0.0; \
-               inherit: "default" 0.0; \
-               rel2.relative: 1.0 1.0; \
-            } \
-         } \
-         part { name: "elm.swallow.content"; \
-            type: SWALLOW; \
-            clip_to: "disclip"; \
-            description { state: "default" 0.0; \
-               fixed: 1 0; \
-               visible: 0; \
-               align: 0.0 0.5; \
-               rel1 { \
-                  to_x: "bg"; \
-                  relative: 1.0 0.0; \
-                  offset: 1 1; \
-               } \
-               rel2 { \
-                  to_x: "bg"; \
-                  relative: 1.0 1.0; \
-                  offset: 2 -2; \
-               } \
-            } \
-            description { state: "visible" 0.0; \
-               inherit: "default" 0.0; \
-               fixed: 1 1; \
-               visible: 1; \
-               aspect: 1.0 1.0; \
-               aspect_preference: VERTICAL; \
-            } \
-            description { state: "disabled" 0.0; \
-               inherit: "default" 0.0; \
-            } \
-            description { state: "disabled_visible" 0.0; \
-               inherit: "default" 0.0; \
-               fixed: 1 1; \
-               visible: 1; \
-               aspect: 1.0 1.0; \
-            } \
-         } \
-         part { name: "elm.text"; \
-            type: TEXTBLOCK; \
-            mouse_events: 0; \
-            clip_to: "disclip"; \
-            scale: 1; \
-            description { state: "default" 0.0; \
-               visible: 0; \
-               fixed: 0 1; \
-               rel1 { \
-                  relative: 1.0 0.5; \
-                  offset: 1 1; \
-                  to_x: "elm.swallow.content"; \
-               } \
-               rel2 { \
-                  relative: 1.0 0.5; \
-                  offset: -2 -2; \
-               } \
-               align: 0.0 0.5; \
-               text { \
-                  style: "check_label_textblock_style"; \
-                  min: 0 0; \
-               } \
-               color: CHECK_DEFAULT_TEXT_NORMAL_COLOR_INC; \
-            } \
-            description { state: "visible" 0.0; \
-               inherit: "default" 0.0; \
-               visible: 1; \
-               text.min: 1 1; \
-            } \
-            description { state: "disabled" 0.0; \
-               inherit: "default" 0.0; \
-            } \
-            description { state: "disabled_visible" 0.0; \
-               inherit: "default" 0.0; \
-               visible: 1; \
-               text.min: 1 1; \
-               color: CHECK_DEFAULT_TEXT_DISABLED_COLOR_INC; \
-            } \
-         } \
-         part { name: "events1"; \
-            type: RECT; \
-            ignore_flags: ON_HOLD; \
-            description { state: "default" 0.0; \
-               color: 0 0 0 0; \
-            } \
-         } \
-         part { name: "events2"; \
-            type: RECT; \
-            repeat_events: 1; \
-            description { state: "default" 0.0; \
-               color: 0 0 0 0; \
-            } \
-         } \
-         part { name: "disclip"; \
-            type: RECT; \
-            mouse_events: 0; \
-            description { state: "default" 0.0; \
-               color: CHECK_DISCLIP_NORMAL_COLOR_INC; \
-            } \
-            description { state: "disabled" 0.0; \
-               inherit: "default" 0.0; \
-               color: CHECK_DISCLIP_DISABLED_COLOR_INC; \
-            } \
-         } \
-         part { name: "disabler"; \
-            type: RECT; \
-            description { state: "default" 0.0; \
-               color: 0 0 0 0; \
-               visible: 0; \
-            } \
-            description { state: "disabled" 0.0; \
-               inherit: "default" 0.0; \
-               visible: 1; \
-            } \
-         } \
-      } \
-      programs { \
-         program { name: "show"; \
-            signal: "show"; \
-            script { \
-               set_int(check_visible, CHECK_SHOW); \
-            } \
-         } \
-         program { name: "hide"; \
-            signal: "hide"; \
-            script { \
-               set_int(check_visible, CHECK_HIDE); \
-            } \
-         } \
-         program { name: "click"; \
-            signal: "mouse,clicked,1"; \
-            source: "events1"; \
-            action: SIGNAL_EMIT "elm,action,check,toggle" ""; \
-         } \
-         program { name: "bg_normal"; \
-            signal: "mouse,up,1"; \
-            source: "events2"; \
-            action: STATE_SET "default" 0.0; \
-            target: "bg"; \
-         } \
-         program { name: "pressed"; \
-            signal: "mouse,down,1"; \
-            source: "events2"; \
-            action: STATE_SET "pressed" 0.0; \
-            target: "bg"; \
-         } \
-         program { name: "mouse,out"; \
-            signal: "mouse,out"; \
-            source: "events2"; \
-            script { \
-               if (get_int(check_state) == CHECK_STATE_VISIBLE) \
-                 { \
-                    set_state(PART:"check", "visible", 0.0); \
-                    set_state(PART:"sequence_clip", "visible", 0.0); \
-                 } \
-               else \
-                 { \
-                    set_state(PART:"check", "default", 0.0); \
-                    set_state(PART:"sequence_clip", "default", 0.0); \
-                 } \
-            } \
-         } \
-         program { name: "check_on"; \
-            signal: "elm,state,check,on"; \
-            source: "elm"; \
-            script { \
-               set_int(check_state, CHECK_STATE_VISIBLE); \
-               if (get_int(check_visible) == CHECK_SHOW) \
-                 { \
-                    run_program(PROGRAM:"check_show_effect"); \
-                    run_program(PROGRAM:"check_draw_effect"); \
-                 } \
-               else \
-                 { \
-                    set_state(PART:"check", "visible", 0.0); \
-                    set_state(PART:"sequence_clip", "visible", 0.0); \
-                 } \
-            } \
-         } \
-         program { name: "check_off"; \
-            signal: "elm,state,check,off"; \
-            source: "elm"; \
-            action: STATE_SET "default" 0.0; \
-            target: "check"; \
-            script { \
-               if (get_int(check_state) == CHECK_STATE_VISIBLE) \
-                 { \
-                    set_int(check_state, CHECK_STATE_DEFAULT); \
-                    set_state(PART:"check", "default", 0.0); \
-                    set_state(PART:"sequence_clip", "default", 0.0); \
-                 } \
-            } \
-         } \
-         program { name: "check_show_effect"; \
-            action: STATE_SET "visible" 0.0; \
-            transition: LINEAR 0.233; \
-            target: "check"; \
-         } \
-         program { name: "check_draw_effect"; \
-            action: STATE_SET "visible" 0.0; \
-            transition: LINEAR 0.267; \
-            target: "sequence_clip"; \
-         } \
-         program { name: "text_show"; \
-            signal: "elm,state,text,visible"; \
-            source: "elm"; \
-            action: STATE_SET "visible" 0.0; \
-            target: "elm.text"; \
-         } \
-         program { name: "text_hide"; \
-            signal: "elm,state,text,hidden"; \
-            source: "elm"; \
-            action: STATE_SET "default" 0.0; \
-            target: "elm.text"; \
-         } \
-         program { name: "icon_show"; \
-            signal: "elm,state,icon,visible"; \
-            source: "elm"; \
-            action: STATE_SET "visible" 0.0; \
-            target: "elm.swallow.content"; \
-         } \
-         program { name: "icon_hide"; \
-            signal: "elm,state,icon,hidden"; \
-            source: "elm"; \
-            action: STATE_SET "default" 0.0; \
-            target: "elm.swallow.content"; \
-         } \
-         program { name: "disable"; \
-            signal: "elm,state,disabled"; \
-            source: "elm"; \
-            action: STATE_SET "disabled" 0.0; \
-            target: "disabler"; \
-            target: "disclip"; \
-            target: "bg"; \
-            after: "disable_text"; \
-         } \
-         program { name: "disable_text"; \
-            script { \
-               new st[31]; \
-               new Float:vl; \
-               get_state(PART:"elm.text", st, 30, vl); \
-               if (!strcmp(st, "visible")) \
-                 set_state(PART:"elm.text", "disabled_visible", 0.0); \
-               else \
-                 set_state(PART:"elm.text", "disabled", 0.0); \
-               get_state(PART:"elm.swallow.content", st, 30, vl); \
-               if (!strcmp(st, "visible")) \
-                 set_state(PART:"elm.swallow.content", "disabled_visible", 0.0); \
-               else \
-                 set_state(PART:"elm.swallow.content", "disabled", 0.0); \
-               get_state(PART:"check", st, 30, vl); \
-               if (!strcmp(st, "visible")) \
-                 { \
-                    set_state(PART:"check", "disabled_visible", 0.0); \
-                    set_int(check_state, CHECK_STATE_DISABLED_VISIBLE); \
-                 } \
-            } \
-         } \
-         program { name: "enable"; \
-            signal: "elm,state,enabled"; \
-            source: "elm"; \
-            action: STATE_SET "default" 0.0; \
-            target: "disabler"; \
-            target: "disclip"; \
-            target: "bg"; \
-            after: "enable_text"; \
-         } \
-         program { name: "enable_text"; \
-            script { \
-               new st[31]; \
-               new Float:vl; \
-               get_state(PART:"elm.text", st, 30, vl); \
-               if (!strcmp(st, "disabled_visible")) \
-                 set_state(PART:"elm.text", "visible", 0.0); \
-               else \
-                 set_state(PART:"elm.text", "default", 0.0); \
-               get_state(PART:"elm.swallow.content", st, 30, vl); \
-               if (!strcmp(st, "visible")) \
-                 set_state(PART:"elm.swallow.content", "visible", 0.0); \
-               else \
-                 set_state(PART:"elm.swallow.content", "default", 0.0); \
-               get_state(PART:"check", st, 30, vl); \
-               if (!strcmp(st, "disabled_visible")) \
-                 { \
-                    set_state(PART:"check", "visible", 0.0); \
-                    set_state(PART:"sequence_clip", "visible", 0.0); \
-                    set_int(check_state, CHECK_STATE_VISIBLE); \
-                 } \
-               else \
-                 set_int(check_state, CHECK_STATE_DEFAULT); \
-            } \
-         } \
-      } \
-   }\
-
-CHECK_STYLE_DEFAULT("quickpanel", 48, 48)
-
-#define PROGRESSBAR_STATUS_TEXT_FONT_SIZE_INC 20
-#define PROGRESSBAR_LIST_PROGRESS_STYLE_TEXT_COLOR_INC          128 128 128 255
-#define PROGRESSBAR_LIST_PROGRESS_STYLE_STATUS_TEXT_COLOR_INC          128 128 128 255
-#define PROGRESSBAR_LIST_PROGRESS_HEIGHT_INC 20
-
-   group { name: "elm/progressbar/horizontal/quickpanel/list_progress";
-      images {
-         image: "quick_progress.9.png" COMP;
-         image: "quick_progress_bg.9.png" COMP;
-      }
-      parts {
-         part { name: "elm.padding.left";
-            type: RECT;
-            scale: 1;
-            description {
-               state: "default" 0.0;
-               min: 0 0;
-               fixed: 1 0;
-               rel1 {
-                  relative: 0.0  0.0;
-                  offset: 0 0;
-               }
-               rel2 {
-                  relative: 0.0  1.0;
-                  offset: 0 0;
-               }
-               visible: 0;
-               align: 0.0 0.0;
-            }
-         }
-         part { name: "elm.padding.right";
-            type: RECT;
-            scale: 1;
-            description {
-               state: "default" 0.0;
-               min: 0 0;
-               fixed: 1 0;
-               rel1 {
-                  relative: 1.0  0.0;
-                  offset: 0 0;
-               }
-               rel2 {
-                  relative: 1.0  1.0;
-                  offset:   0   0;
-               }
-               visible: 0;
-               align: 1.0 0.0;
-            }
-         }
-         part { name: "elm.background.progressbar";
-            type: RECT;
-            mouse_events: 0;
-            scale: 1;
-            description {
-               state: "default" 0.0;
-               rel1 {
-                  to_x: "elm.padding.left";
-                  relative: 1.0 0.0;
-                  offset: 0 0;
-               }
-               rel2 {
-                  to_x: "elm.padding.right";
-                  relative: 0.0 1.0;
-                  offset: 0 0;
-               }
-            }
-         }
-         part { name: "elm.swallow.bar";
-            mouse_events: 0;
-            scale: 1;
-            type: SWALLOW;
-            description {
-               min: 1 PROGRESSBAR_LIST_PROGRESS_HEIGHT_INC;
-               max: 99999 PROGRESSBAR_LIST_PROGRESS_HEIGHT_INC;
-               state: "default" 0.0;
-               rel1 {
-                  to: "elm.background.progressbar";
-                  relative: 0.0 0.0;
-               }
-               rel2 {
-                  to: "elm.background.progressbar";
-                  relative: 1.0 1.0;
-               }
-            }
-         }
-         part { name: "elm.swallow.content";
-            type: SWALLOW;
-            scale: 1;
-            description { state: "default" 0.0;
-               visible: 0;
-               align: 0.0 0.5;
-               rel1 {
-                  offset: 0 0;
-                  to_y: "elm.background.progressbar";
-               }
-               rel2 {
-                  offset: 0 -1;
-                  relative: 0.0 1.0;
-                  to_y: "elm.background.progressbar";
-               }
-            }
-            description { state: "visible" 0.0;
-               inherit: "default" 0.0;
-               visible: 1;
-               aspect: 1.0 1.0;
-               aspect_preference: VERTICAL;
-               rel2.offset: 4 -1;
-            }
-         }
-         part { name: "elm.text";
-            type: TEXT;
-            mouse_events: 0;
-            scale: 1;
-            description { state: "default" 0.0;
-               visible: 0;
-               fixed: 1 1;
-               align: 0.0 0.5;
-               rel1.to_x: "elm.swallow.content";
-               rel1.relative: 1.0 0.0;
-               rel2.to_x: "elm.swallow.content";
-               rel2.relative: 1.0 1.0;
-               color: PROGRESSBAR_LIST_PROGRESS_STYLE_TEXT_COLOR_INC;
-               text {
-                  font: "Tizen:style=Medium";
-                  size: PROGRESSBAR_STATUS_TEXT_FONT_SIZE_INC;
-                  min: 0 0;
-                  align: 0.0 0.5;
-                  text_class: "tizen";
-               }
-            }
-            description { state: "visible" 0.0;
-               inherit: "default" 0.0;
-               visible: 0;
-               text.min: 1 1;
-            }
-         }
-         part { name: "background";
-            mouse_events: 0;
-            scale: 1;
-            clip_to: "elm.background.progressbar";
-            description {
-               state: "default" 0.0;
-               rel1 {
-                  to: "elm.swallow.bar";
-                  relative: 0.0 0.0;
-               }
-               rel2 {
-                  to: "elm.swallow.bar";
-                  relative: 1.0 1.0;
-               }
-               image {
-                  normal: "quick_progress_bg.9.png";
-                  border: 10 10 0 0;
-               }
-            }
-         }
-         part { name: "elm.text.status";
-            type: TEXT;
-            mouse_events: 0;
-            scale: 1;
-            description { state: "default" 0.0;
-               fixed: 1 1;
-               visible: 0;
-               rel1 {
-                  to: "background";
-                  relative: 0.5 0.5;
-               }
-               rel2 {
-                  to: "background";
-                  relative: 0.5 0.5;
-               }
-               text {
-                  font: "Tizen:style=Medium";
-                  size: PROGRESSBAR_STATUS_TEXT_FONT_SIZE_INC;
-                  min: 0 0;
-                  align: 0.5 0.0;
-                  text_class: "tizen";
-               }
-               color: PROGRESSBAR_LIST_PROGRESS_STYLE_TEXT_COLOR_INC;
-            }
-            description { state: "show" 0.0;
-               inherit: "default" 0.0;
-               visible: 0;
-               text.min: 1 1;
-            }
-         }
-         part { name: "elm.progress.progressbar";
-            mouse_events: 0;
-            scale: 1;
-            clip_to: "elm.background.progressbar";
-            description {
-               state: "default" 0.0;
-               min: 0 0;
-               fixed: 1 1;
-               rel1 {
-                  to: "elm.swallow.bar";
-                  relative: 0.0 0.0;
-               }
-               rel2 {
-                  to_y: "elm.swallow.bar";
-                  to_x: "elm.cur.progressbar";
-                  offset: -1 -1;
-               }
-               image {
-                  normal: "quick_progress.9.png";
-                  border: 10 10 0 0;
-               }
-            }
-            description {
-               state: "invert" 0.0;
-               inherit: "default" 0.0;
-               rel1 {
-                  to_y: "elm.swallow.bar";
-                  to_x: "elm.cur.progressbar";
-               }
-               rel2 {
-                  to: "elm.swallow.bar";
-                  relative: 1.0 1.0;
-               }
-            }
-            description {
-               state: "state_begin" 0.0;
-               inherit: "default" 0.0;
-               rel1 {
-                  to: "elm.swallow.bar";
-                  relative: 0.0 0.0;
-               }
-               rel2 {
-                  to: "elm.swallow.bar";
-                  relative: 0.1 1.0;
-               }
-            }
-            description {
-               state: "state_end" 0.0;
-               inherit: "default" 0.0;
-               rel1 {
-                  to: "elm.swallow.bar";
-                  relative: 0.9 0.0;
-               }
-               rel2 {
-                  to: "elm.swallow.bar";
-                  relative: 1.0 1.0;
-               }
-            }
-         }
-         part { name: "text-bar";
-            type: TEXT;
-            mouse_events: 0;
-            scale: 1;
-            clip_to: "progress-rect";
-            //effect: SOFT_SHADOW;
-            scale: 0;
-            description { state: "default" 0.0;
-               align: 0.0 0.0;
-               fixed: 1 1;
-               visible: 0;
-               rel1.to: "elm.text.status";
-               rel1.offset: -1 -1;
-               rel2.to: "elm.text.status";
-               text {
-                  text_source: "elm.text.status";
-                  font: "Tizen:style=Medium";
-                  size: PROGRESSBAR_STATUS_TEXT_FONT_SIZE_INC;
-                  min: 0 0;
-                  align: 0.0 0.0;
-                  text_class: "tizen";
-               }
-               color: PROGRESSBAR_LIST_PROGRESS_STYLE_STATUS_TEXT_COLOR_INC;
-            }
-            description { state: "show" 0.0;
-               inherit: "default" 0.0;
-               visible: 0;
-               text.min: 1 1;
-            }
-         }
-         part { name: "elm.cur.progressbar";
-            mouse_events: 0;
-            scale: 1;
-            dragable {
-               confine: "background";
-               x: 1 1 1;
-               y: 0 0 0;
-            }
-            description { state: "default" 0.0;
-               min: 0 28;
-               fixed: 1 1;
-               visible: 0;
-               rel1 {
-                  to: "background";
-                  relative: 0 0;
-               }
-               rel2.to: "background";
-           }
-         }
-         part { name: "progress-rect";
-            type: RECT;
-            mouse_events: 0;
-            scale: 1;
-            description {
-               state: "default" 0.0;
-               rel1.to: "elm.progress.progressbar";
-               rel2.to: "elm.progress.progressbar";
-            }
-         }
-      }
-      programs {
-         program { name: "label_show";
-            signal: "elm,state,text,visible";
-            source: "elm";
-            action:  STATE_SET "visible" 0.0;
-            target: "elm.text";
-         }
-         program { name: "label_hide";
-            signal: "elm,state,text,hidden";
-            source: "elm";
-            action:  STATE_SET "default" 0.0;
-            target: "elm.text";
-         }
-         program { name: "icon_show";
-            signal: "elm,state,icon,visible";
-            source: "elm";
-            action:  STATE_SET "visible" 0.0;
-            target: "elm.swallow.content";
-         }
-         program { name: "icon_hide";
-            signal: "elm,state,icon,hidden";
-            source: "elm";
-            action:  STATE_SET "default" 0.0;
-            target: "elm.swallow.content";
-         }
-         program { name: "units_show";
-            signal: "elm,state,units,visible";
-            source: "elm";
-            action:  STATE_SET "show" 0.0;
-            target: "text-bar";
-            target: "elm.text.status";
-         }
-         program { name: "units_hide";
-            signal: "elm,state,units,hidden";
-            source: "elm";
-            action:  STATE_SET "default" 0.0;
-            target: "text-bar";
-            target: "elm.text.status";
-         }
-         program { name: "slide_to_end";
-            action:  STATE_SET "state_end" 0.0;
-            transition: LINEAR 0.5;
-            target: "elm.progress.progressbar";
-            after: "slide_to_begin";
-         }
-         program { name: "slide_to_begin";
-            signal: "elm,state,slide,begin";
-            action: STATE_SET "state_begin" 0.0;
-            target: "elm.progress.progressbar";
-            transition: LINEAR 0.5;
-            after: "slide_to_end";
-         }
-         program { name: "start_pulse";
-            signal: "elm,state,pulse,start";
-            source: "elm";
-           // after: "slide_to_end";
-         }
-         program { name: "stop_pulse";
-            signal: "elm,state,pulse,stop";
-            source: "elm";
-            action: ACTION_STOP;
-            target: "slide_to_begin";
-            target: "slide_to_end";
-            target: "start_pulse";
-            //after: "state_pulse";
-         }
-         program { name: "state_pulse";
-            signal: "elm,state,pulse";
-            source: "elm";
-            action: STATE_SET "state_begin" 0.0;
-            target: "elm.progress.progressbar";
-            after: "units_hide";
-         }
-         program { name: "state_fraction";
-            signal: "elm,state,fraction";
-            source: "elm";
-            action: ACTION_STOP;
-            target: "slide_to_begin";
-            target: "slide_to_end";
-            target: "start_pulse";
-            action: STATE_SET "default" 0.0;
-            target: "elm.progress.progressbar";
-         }
-         program { name: "set_invert_on";
-            signal: "elm,state,inverted,on";
-            source: "elm";
-            action:  STATE_SET "invert" 0.0;
-            target: "elm.progress.progressbar";
-         }
-         program { name: "set_invert_off";
-            signal: "elm,state,inverted,off";
-            source: "elm";
-            action:  STATE_SET "default" 0.0;
-            target: "elm.progress.progressbar";
-         }
-      }
-   }
-
-#define PROGRESSBAR_LIST_PENDING_HEIGHT_INC 20
-
-   group { name: "elm/progressbar/horizontal/quickpanel/pending_list";
-      images {
-         image: "quick_progress_unknown_port_01.png" COMP;
-         image: "quick_progress_unknown_port_02.png" COMP;
-      }
-      parts {
-         part { name: "elm.background.progressbar";
-            type: RECT;
-            mouse_events: 0;
-            scale: 1;
-            description {
-               state: "default" 0.0;
-               rel1 {
-                  relative: 0.0 0.0;
-                  offset: 0 0;
-               }
-               rel2 {
-                  relative: 1.0 1.0;
-               }
-            }
-         }
-         part { name: "elm.swallow.bar";
-            mouse_events: 0;
-            scale: 1;
-            type: SWALLOW;
-            description {
-               min: 1 PROGRESSBAR_LIST_PENDING_HEIGHT_INC;
-               max: 99999 PROGRESSBAR_LIST_PENDING_HEIGHT_INC;
-               state: "default" 0.0;
-               rel1 {
-                  to: "elm.background.progressbar";
-                  relative: 0.0 0.0;
-               }
-               rel2 {
-                  to: "elm.background.progressbar";
-                  relative: 1.0 1.0;
-               }
-            }
-         }
-         part { name: "elm.progress.progressbar";
-            mouse_events: 0;
-            scale: 1;
-            clip_to: "elm.background.progressbar";
-            description {
-               state: "default" 0.0;
-               min: 0 0;
-               fixed: 1 1;
-               rel1 {
-                  to: "elm.swallow.bar";
-                  relative: 0.0 0.0;
-               }
-               rel2 {
-                  to: "elm.swallow.bar";
-                  relative: 1.0 1.0;
-                  offset: -1 -1;
-               }
-               image {
-                  normal: "quick_progress_unknown_port_01.png";
-                  border: 7 7 0 0;
-               }
-            }
-            description {
-               state: "state_begin" 0.0;
-               inherit: "default" 0.0;
-            }
-            description {
-               state: "state_end" 0.0;
-               inherit: "default" 0.0;
-               image {
-                  normal: "quick_progress_unknown_port_02.png";
-                  border: 7 7 0 0;
-               }
-            }
-         }
-      }
-      programs {
-         program { name: "slide_to_end";
-            action:  STATE_SET "state_end" 0.0;
-            in: 0.3 0.0;
-            target: "elm.progress.progressbar";
-            after: "slide_to_begin";
-         }
-         program { name: "slide_to_begin";
-            signal: "elm,state,slide,begin";
-            action: STATE_SET "state_begin" 0.0;
-            target: "elm.progress.progressbar";
-            in: 0.3 0.0;
-            after: "slide_to_end";
-         }
-         program { name: "start_pulse";
-            signal: "elm,state,pulse,start";
-            source: "elm";
-            after: "slide_to_end";
-         }
-         program { name: "stop_pulse";
-            signal: "elm,state,pulse,stop";
-            source: "elm";
-            action: ACTION_STOP;
-            target: "slide_to_begin";
-            target: "slide_to_end";
-            target: "start_pulse";
-            after: "init_pulse";
-         }
-         program { name: "init_pulse";
-            action: STATE_SET "default" 0.0;
-            target: "elm.progress.progressbar";
-         }
-      }
-   }
-
-#define BUTTON_STATE_ENABLED 0
-#define BUTTON_STATE_DISABLED 1
-
-#define BUTTON_TEXT_STYLE1_NORMAL_COLOR_INC 58 58 58 255
-#define BUTTON_TEXT_STYLE1_PRESSED_COLOR_INC 248 246 239 255
-#define BUTTON_TEXT_STYLE1_FOCUSED_COLOR_INC 248 246 239 255
-#define BUTTON_TEXT_STYLE1_DISABLED_COLOR_INC 58 58 58 76
-#define BUTTON_TEXT_STYLE1_BG_MIN_INC 100 74
-#define BUTTON_TEXT_STYLE1_VISIBLE_BG_MIN_INC 148 74
-#define BUTTON_TEXT_STYLE1_ICONONLY_BG_MIN_INC 74 74
-#define BUTTON_TEXT_STYLE1_BG_BORDER_INC 13 13 13 13
-#define BUTTON_TEXT_STYLE1_PADDING_MIN_INC 0 0
-#define BUTTON_TEXT_STYLE1_VISIBLE_ICON_RECT_MIN_MAX_INC 45 45
-#define BUTTON_TEXT_STYLE1_VISIBLE_PADDING_ICON_TEXT_MIN_INC 4 0
-#define BUTTON_TEXT_STYLE1_VISIBLE_ICON_MIN_MAX_INC 87 87
-#define BUTTON_TEXT_STYLE1_ICONONLY_ICON_MIN_MAX_INC 87 87
-#define BUTTON_TEXT_STYLE1_FONT_SIZE_INC 36
-#define BUTTON_TEXT_SHADOW_NORMAL_COLOR_INC 255 255 255 255
-#define BUTTON_TEXT_SHADOW_DIM_COLOR_INC 255 255 255 255
-#define BUTTON_TEXT_SHADOW_PRESSED_COLOR_INC 0 0 0 255
-#define BUTTON_DISCLIP_NORMAL_COLOR_INC           255 255 255 255
-#define BUTTON_DISCLIP_DISABLED_COLOR_INC         255 255 255 76
-
-///////////////////////////////////////////////////////////////////////////////////////
-   group { name: "elm/button/base/quickpanel/icon_only";
-
-      images {
-         image: "00_button_01.png" COMP;
-         image: "00_button_01_press.png" COMP;
-         image: "00_button_01_dim.png" COMP;
-      }
-      script {
-         public button_state = BUTTON_STATE_ENABLED;
-      }
-      parts {
-         part { name: "button_image";
-            scale: 1;
-            description { state: "default" 0.0;
-               image {
-                  border: BUTTON_TEXT_STYLE1_BG_BORDER_INC;
-               }
-            }
-            description { state: "clicked" 0.0;
-               inherit: "default" 0.0;
-               //image.normal: "00_button_01_press.png";
-            }
-            description { state: "disabled" 0.0;
-               inherit: "default" 0.0;
-               //image.normal: "00_button_01_dim.png";
-            }
-            description { state: "focused" 0.0;
-               inherit: "default" 0.0;
-               //image.normal: "00_button_01_press.png";
-            }
-         }
-         part { name: "padding_left_top";
-            type: RECT;
-            scale: 1;
-            mouse_events: 0;
-            description { state: "default" 0.0;
-               align: 0.0 0.0;
-               rel2.relative: 0.0 0.0;
-               min: BUTTON_TEXT_STYLE1_PADDING_MIN_INC;
-               fixed: 1 1;
-               visible: 0;
-            }
-         }
-         part { name: "bg";
-            type: RECT;
-            scale: 1;
-            mouse_events: 0;
-            description { state: "default" 0.0;
-               min: BUTTON_TEXT_STYLE1_BG_MIN_INC;
-               visible: 0;
-            }
-            description { state: "visible" 0.0;
-               inherit: "default" 0.0;
-               min: BUTTON_TEXT_STYLE1_VISIBLE_BG_MIN_INC;
-            }
-            description { state: "icononly" 0.0;
-               inherit: "default" 0.0;
-               min: BUTTON_TEXT_STYLE1_ICONONLY_BG_MIN_INC;
-            }
-         }
-         part { name: "padding_right_bottom";
-            type: RECT;
-            scale: 1;
-            mouse_events: 0;
-            description { state: "default" 0.0;
-               align: 1.0 1.0;
-               rel1.relative: 1.0 1.0;
-               min: BUTTON_TEXT_STYLE1_PADDING_MIN_INC;
-               fixed: 1 1;
-               visible: 0;
-            }
-         }
-         part { name: "icon_rect";
-            type: RECT;
-            scale: 1;
-            mouse_events: 0;
-            description { state: "default" 0.0;
-               visible: 0;
-               min: 0 0;
-               fixed: 1 0;
-               rel1 {
-                  relative: 1.0 1.0;
-                  to: "padding_left_top";
-               }
-               rel2 {
-                  relative: 1.0 0.0;
-                  to_x: "padding_left_top";
-                  to_y: "padding_right_bottom";
-               }
-               align: 0.0 0.5;
-            }
-            description { state: "visible" 0.0;
-               inherit: "default" 0.0;
-               min: BUTTON_TEXT_STYLE1_VISIBLE_ICON_RECT_MIN_MAX_INC;
-               max: BUTTON_TEXT_STYLE1_VISIBLE_ICON_RECT_MIN_MAX_INC;
-            }
-            description { state: "icononly" 0.0;
-               inherit: "default" 0.0;
-            }
-         }
-         part { name: "padding_after_icon";
-            type: RECT;
-            scale: 1;
-            mouse_events: 0;
-            description { state: "default" 0.0; //when only icon or no icon is there
-               align: 0.0 0.0;
-               rel1 {
-                  relative: 1.0 0.0;
-                  to: "icon_rect";
-               }
-               rel2.to: "icon_rect";
-               fixed: 1 0;
-               min: 0 0;
-               visible: 0;
-            }
-            description { state: "visible" 0.0;
-               inherit: "default" 0.0;
-               min: BUTTON_TEXT_STYLE1_VISIBLE_PADDING_ICON_TEXT_MIN_INC;
-            }
-            description { state: "icononly" 0.0;
-               inherit: "default" 0.0;
-            }
-         }
-         part { name: "padding_before_text";
-            type: RECT;
-            scale: 1;
-            mouse_events: 0;
-            description { state: "default" 0.0; //when only icon or no icon is there
-               align: 1.0 0.5;
-               rel1 {
-                  relative: 0.0 1.0;
-                  to_x: "elm.text";
-                  to_y: "padding_left_top";
-               }
-               rel2 {
-                  relative: 0.0 0.0;
-                  to_x: "elm.text";
-                  to_y: "padding_right_bottom";
-               }
-               fixed: 1 0;
-               min: BUTTON_TEXT_STYLE1_VISIBLE_PADDING_ICON_TEXT_MIN_INC;
-               visible: 0;
-            }
-         }
-         part { name: "elm.swallow.content";
-            type: SWALLOW;
-            scale: 1;
-            clip_to: "clipper";
-            description { state: "default" 0.0;
-               visible: 0;
-               align: 0.0 0.5;
-               rel1 {
-                  relative: 1.0 1.0;
-                  to: "padding_left_top";
-               }
-               rel2 {
-                  relative: 1.0 0.0;
-                  to_x: "padding_left_top";
-                  to_y: "padding_right_bottom";
-               }
-               fixed: 1 0;
-            }
-            description { state: "visible" 0.0;
-               fixed: 1 0;
-               min: BUTTON_TEXT_STYLE1_VISIBLE_ICON_MIN_MAX_INC;
-               max: BUTTON_TEXT_STYLE1_VISIBLE_ICON_MIN_MAX_INC;
-               align: 1.0 0.5;
-               rel1 {
-                  relative: 0.0 1.0;
-                  to_x: "padding_before_text";
-                  to_y: "padding_left_top";
-               }
-               rel2 {
-                  relative: 0.0 0.0;
-                  to_x: "padding_before_text";
-                  to_y: "padding_right_bottom";
-               }
-            }
-            description { state: "icononly" 0.0;
-               min: BUTTON_TEXT_STYLE1_ICONONLY_ICON_MIN_MAX_INC;
-               max: BUTTON_TEXT_STYLE1_ICONONLY_ICON_MIN_MAX_INC;
-            }
-         }
-         part { name: "elm.text";
-            type: TEXT;
-            mouse_events: 0;
-            effect: SHADOW BOTTOM;
-            scale: 1;
-            clip_to: "clipper";
-            description { state: "default" 0.0;
-               visible: 0;
-               rel1 {
-                  relative: 1.0 1.0;
-                  to_x: "padding_after_icon";
-                  to_y: "padding_left_top";
-               }
-               rel2 {
-                  relative: 0.0 0.0;
-                  to: "padding_right_bottom";
-               }
-               color: BUTTON_TEXT_STYLE1_NORMAL_COLOR_INC;
-               color2: BUTTON_TEXT_SHADOW_NORMAL_COLOR_INC;
-               text {
-                  font: "Tizen:style=Regular";
-                  size: BUTTON_TEXT_STYLE1_FONT_SIZE_INC;
-                  min: 0 0;
-                  max: 1 0;
-                  text_class: "tizen";
-               }
-            }
-            description { state: "visible" 0.0;
-               inherit: "default" 0.0;
-               visible: 1;
-            }
-            description { state: "clicked" 0.0;
-               inherit: "default" 0.0;
-               visible: 1;
-               color: BUTTON_TEXT_STYLE1_PRESSED_COLOR_INC;
-               color2: BUTTON_TEXT_SHADOW_PRESSED_COLOR_INC;
-            }
-            description { state: "disabled" 0.0;
-               inherit: "default" 0.0;
-            }
-            description { state: "disabled_visible" 0.0;
-               inherit: "default" 0.0;
-               color: BUTTON_TEXT_STYLE1_DISABLED_COLOR_INC;
-               color2: BUTTON_TEXT_SHADOW_DIM_COLOR_INC;
-               visible: 1;
-            }
-            description { state: "focused" 0.0;
-               inherit: "default" 0.0;
-               visible: 1;
-               color: BUTTON_TEXT_STYLE1_FOCUSED_COLOR_INC;
-            }
-         }
-         part { name: "over2";
-            type: RECT;
-            repeat_events: 1;
-            ignore_flags: ON_HOLD;
-            description { state: "default" 0.0;
-               color: 0 0 0 0;
-            }
-         }
-         part { name: "over3";
-            type: RECT;
-            repeat_events: 1;
-            description { state: "default" 0.0;
-               color: 0 0 0 0;
-            }
-         }
-         part { name: "clipper";
-            type: RECT;
-            description { state: "default" 0.0;
-               color: BUTTON_DISCLIP_NORMAL_COLOR_INC;
-            }
-            description { state: "disabled" 0.0;
-               inherit: "default" 0.0;
-               color: BUTTON_DISCLIP_DISABLED_COLOR_INC;
-            }
-         }
-         part { name: "disabler";
-            type: RECT;
-            description { state: "default" 0.0;
-               color: 0 0 0 0;
-               visible: 0;
-            }
-            description { state: "disabled" 0.0;
-               inherit: "default" 0.0;
-               visible: 1;
-            }
-         }
-      }
-      programs {
-         program { name: "button_click";
-            signal: "mouse,down,1";
-            source: "over2";
-            action: SIGNAL_EMIT "elm,action,press" "";
-            after: "button_click_anim";
-         }
-         program { name: "button_click_anim";
-            action: STATE_SET "clicked" 0.0;
-            target: "button_image";
-            after: "text_clicked";
-         }
-         program { name: "text_clicked";
-            script {
-               new st[31];
-               new Float:vl;
-               get_state(PART:"elm.text", st, 30, vl);
-               if (!strcmp(st, "visible"))
-                 set_state(PART:"elm.text", "clicked", 0.0);
-            }
-         }
-         program { name: "button_unpress";
-            action: SIGNAL_EMIT "elm,action,unpress" "";
-         }
-         program { name: "button_mouseout_clicked";
-            signal: "mouse,up,1";
-            source: "over3";
-            script {
-               new st[31];
-               new Float:vl;
-               get_state(PART:"elm.swallow.content", st, 30, vl);
-               if (strcmp(st, "icononly"))
-                 {
-                    emit("elm,action,default,text,set", "");
-                    set_state(PART:"elm.text", "visible", 0.0);
-                 }
-               if (get_int(button_state) != BUTTON_STATE_DISABLED)
-                 set_state(PART:"button_image", "default", 0.0);
-            }
-            after: button_unpress;
-         }
-         program { name: "button_unclick3";
-            signal: "mouse,clicked,1";
-            source: "over2";
-            action: SIGNAL_EMIT "elm,action,click" "";
-         }
-         program { name: "text_show";
-            signal: "elm,state,text,visible";
-            source: "elm";
-            script {
-               new st[31];
-               new Float:vl;
-               get_state(PART:"elm.swallow.content", st, 30, vl);
-               if (!strcmp(st, "icononly"))
-                 {
-                    set_state(PART:"elm.swallow.content", "visible", 0.0);
-                    set_state(PART:"icon_rect", "visible", 0.0);
-                    set_state(PART:"padding_after_icon", "visible", 0.0);
-                    set_state(PART:"bg", "visible", 0.0);
-                 }
-               if (get_int(button_state) != BUTTON_STATE_DISABLED)
-                 set_state(PART:"elm.text", "visible", 0.0);
-               else
-                 set_state(PART:"elm.text", "disabled_visible", 0.0);
-            }
-         }
-         program { name: "text_hide";
-            signal: "elm,state,text,hidden";
-            source: "elm";
-            script {
-               new st[31];
-               new Float:vl;
-               get_state(PART:"elm.swallow.content", st, 30, vl);
-               if (!strcmp(st, "visible"))
-                 {
-                    set_state(PART:"elm.swallow.content", "icononly", 0.0);
-                    set_state(PART:"icon_rect", "icononly", 0.0);
-                    set_state(PART:"padding_after_icon", "icononly", 0.0);
-                    set_state(PART:"bg", "icononly", 0.0);
-                 }
-               set_state(PART:"elm.text", "default", 0.0);
-            }
-         }
-         program { name: "icon_show";
-            signal: "elm,state,icon,visible";
-            source: "elm";
-            script {
-               new st[31];
-               new Float:vl;
-               get_state(PART:"elm.text", st, 30, vl);
-               if (!strcmp(st, "visible"))
-                 {
-                    set_state(PART:"elm.swallow.content", "visible", 0.0);
-                    set_state(PART:"icon_rect", "visible", 0.0);
-                    set_state(PART:"padding_after_icon", "visible", 0.0);
-                    set_state(PART:"bg", "visible", 0.0);
-                 }
-               else
-                 {
-                    set_state(PART:"elm.swallow.content", "icononly", 0.0);
-                    set_state(PART:"icon_rect", "icononly", 0.0);
-                    set_state(PART:"padding_after_icon", "icononly", 0.0);
-                    set_state(PART:"bg", "icononly", 0.0);
-                 }
-            }
-         }
-         program { name: "icon_hide";
-            signal: "elm,state,icon,hidden";
-            source: "elm";
-            action: STATE_SET "default" 0.0;
-            target: "elm.swallow.content";
-            target: "padding_after_icon";
-            target: "icon_rect";
-            target: "bg";
-         }
-         program { name: "disable";
-            signal: "elm,state,disabled";
-            source: "elm";
-            action: STATE_SET "disabled" 0.0;
-            target: "button_image";
-            target: "disabler";
-            target: "clipper";
-            after: "disable_text";
-         }
-         program { name: "disable_text";
-            script {
-               new st[31];
-               new Float:vl;
-               get_state(PART:"elm.text", st, 30, vl);
-               if (!strcmp(st, "visible"))
-                 set_state(PART:"elm.text", "disabled_visible", 0.0);
-               else
-                 set_state(PART:"elm.text", "disabled", 0.0);
-               set_int(button_state, BUTTON_STATE_DISABLED);
-            }
-         }
-         program { name: "enable";
-            signal: "elm,state,enabled";
-            source: "elm";
-            action: STATE_SET "default" 0.0;
-            target: "button_image";
-            target: "clipper";
-            target: "disabler";
-            after: "enable_text";
-         }
-         program { name: "enable_text";
-            script {
-               new st[31];
-               new Float:vl;
-               get_state(PART:"elm.text", st, 30, vl);
-               if (!strcmp(st, "disabled_visible"))
-                 set_state(PART:"elm.text", "visible", 0.0);
-               else
-                 set_state(PART:"elm.text", "default", 0.0);
-               set_int(button_state, BUTTON_STATE_ENABLED);
-            }
-         }
-         program { name: "focused";
-            //signal: "elm,action,focus";
-            //source: "elm";
-            action: STATE_SET "focused" 0.0;
-            target: "button_image";
-            target: "elm.text";
-         }
-         program { name: "unfocused";
-            //signal: "elm,action,unfocus";
-            //source: "elm";
-            action: STATE_SET "default" 0.0;
-            target: "button_image";
-            after: "unfocus_text";
-         }
-         program { name: "unfocus_text";
-            action: STATE_SET "visible" 0.0;
-            target: "elm.text";
-         }
-      }
-   }
\ No newline at end of file
diff --git a/data/quickpanel_theme_progressbar.edc b/data/quickpanel_theme_progressbar.edc
new file mode 100644 (file)
index 0000000..d2441f3
--- /dev/null
@@ -0,0 +1,145 @@
+/*
+ * 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.
+ *
+ */
+
+
+
+group {
+       name: "elm/progressbar/horizontal/quickpanel_style";
+
+       images {
+               image: "core_activity_Indicator_medium_00.png" COMP;
+               image: "core_activity_Indicator_medium_01.png" COMP;
+               image: "core_activity_Indicator_medium_02.png" COMP;
+               image: "core_activity_Indicator_medium_03.png" COMP;
+               image: "core_activity_Indicator_medium_04.png" COMP;
+               image: "core_activity_Indicator_medium_05.png" COMP;
+               image: "core_activity_Indicator_medium_06.png" COMP;
+               image: "core_activity_Indicator_medium_07.png" COMP;
+               image: "core_activity_Indicator_medium_08.png" COMP;
+               image: "core_activity_Indicator_medium_09.png" COMP;
+               image: "core_activity_Indicator_medium_10.png" COMP;
+               image: "core_activity_Indicator_medium_11.png" COMP;
+               image: "core_activity_Indicator_medium_12.png" COMP;
+               image: "core_activity_Indicator_medium_13.png" COMP;
+               image: "core_activity_Indicator_medium_14.png" COMP;
+               image: "core_activity_Indicator_medium_15.png" COMP;
+               image: "core_activity_Indicator_medium_16.png" COMP;
+               image: "core_activity_Indicator_medium_17.png" COMP;
+               image: "core_activity_Indicator_medium_18.png" COMP;
+               image: "core_activity_Indicator_medium_19.png" COMP;
+               image: "core_activity_Indicator_medium_20.png" COMP;
+               image: "core_activity_Indicator_medium_21.png" COMP;
+               image: "core_activity_Indicator_medium_22.png" COMP;
+               image: "core_activity_Indicator_medium_23.png" COMP;
+               image: "core_activity_Indicator_medium_24.png" COMP;
+               image: "core_activity_Indicator_medium_25.png" COMP;
+               image: "core_activity_Indicator_medium_26.png" COMP;
+               image: "core_activity_Indicator_medium_27.png" COMP;
+               image: "core_activity_Indicator_medium_28.png" COMP;
+               image: "core_activity_Indicator_medium_29.png" COMP;
+       }
+
+       parts {
+               part {
+                       name: "access";
+                       type: RECT;
+                       description {
+                               state: "default" 0.0;
+                               fixed: 1 1;
+                               color: 0 0 0 0;
+                       }
+               }
+               part {
+                       name: "elm.background.progressbar";
+                       type: RECT;
+                       mouse_events: 0;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                       }
+               }
+               part {
+                       name: "background";
+                       mouse_events: 0;
+                       scale: 1;
+                       clip_to: "elm.background.progressbar";
+                       description {
+                               state: "default" 0.0;
+                               min: PROCESS_MEDIUM_IMAGE_WIDTH_INC PROCESS_MEDIUM_IMAGE_HEIGHT_INC;
+                               max: PROCESS_MEDIUM_IMAGE_WIDTH_INC PROCESS_MEDIUM_IMAGE_HEIGHT_INC;
+                               aspect: 1.0 1.0;
+                               aspect_preference: BOTH;
+                               color_class: PROCESS_MEDIUM_IMAGE_COLOR;
+                               image.normal: "core_activity_Indicator_medium_00.png";
+                               image.tween: "core_activity_Indicator_medium_01.png";
+                               image.tween: "core_activity_Indicator_medium_02.png";
+                               image.tween: "core_activity_Indicator_medium_03.png";
+                               image.tween: "core_activity_Indicator_medium_04.png";
+                               image.tween: "core_activity_Indicator_medium_05.png";
+                               image.tween: "core_activity_Indicator_medium_06.png";
+                               image.tween: "core_activity_Indicator_medium_07.png";
+                               image.tween: "core_activity_Indicator_medium_08.png";
+                               image.tween: "core_activity_Indicator_medium_09.png";
+                               image.tween: "core_activity_Indicator_medium_10.png";
+                               image.tween: "core_activity_Indicator_medium_11.png";
+                               image.tween: "core_activity_Indicator_medium_12.png";
+                               image.tween: "core_activity_Indicator_medium_13.png";
+                               image.tween: "core_activity_Indicator_medium_14.png";
+                               image.tween: "core_activity_Indicator_medium_15.png";
+                               image.tween: "core_activity_Indicator_medium_16.png";
+                               image.tween: "core_activity_Indicator_medium_17.png";
+                               image.tween: "core_activity_Indicator_medium_18.png";
+                               image.tween: "core_activity_Indicator_medium_19.png";
+                               image.tween: "core_activity_Indicator_medium_20.png";
+                               image.tween: "core_activity_Indicator_medium_21.png";
+                               image.tween: "core_activity_Indicator_medium_22.png";
+                               image.tween: "core_activity_Indicator_medium_23.png";
+                               image.tween: "core_activity_Indicator_medium_24.png";
+                               image.tween: "core_activity_Indicator_medium_25.png";
+                               image.tween: "core_activity_Indicator_medium_26.png";
+                               image.tween: "core_activity_Indicator_medium_27.png";
+                               image.tween: "core_activity_Indicator_medium_28.png";
+                               image.tween: "core_activity_Indicator_medium_29.png";
+                       }
+               }
+       }
+
+       programs {
+               program {
+                       name: "start_pulse";
+                       signal: "elm,state,pulse,start";
+                       source: "elm";
+                       action: STATE_SET "default" 0.0;
+                       target: "background";
+                       transition: LINEAR 1.8;
+                       after: "start_pulse";
+               }
+               program {
+                       name: "stop_pulse";
+                       signal: "elm,state,pulse,stop";
+                       source: "elm";
+                       action: ACTION_STOP;
+                       target: "start_pulse";
+                       after: "init_pulse";
+               }
+               program {
+                       name: "init_pulse";
+                       action: STATE_SET "default" 0.0;
+                       target: "background";
+               }
+       }
+}
diff --git a/data/quickpanel_theme_slider.edc b/data/quickpanel_theme_slider.edc
new file mode 100644 (file)
index 0000000..bff8a08
--- /dev/null
@@ -0,0 +1,694 @@
+/*
+ * 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 SLIDER_BASE_HEIGHT_INC  6
+#define SLIDER_INDICATOR_SIZE_INC 42
+#define SLIDER_SWALLOWBAR_HEIGHT_INC  42
+#define SLIDER_LEFT_RIGHT_PADDING_SIZE_INC 15 0
+#define SLIDER_ICON_PADDING_SIZE_INC 5 0
+#define SLIDER_CENTER_POINT_SIZE_INC 10 24
+
+#define SLIDER_POPUP_WIDTH_INC 80
+#define SLIDER_POPUP_HEIGHT_INC 92
+
+group {
+       name: "elm/slider/horizontal/indicator/quickpanel_style";
+       images {
+               image: "core_slider_handle_normal.png" COMP;
+               image: "core_slider_handle_press.png" COMP;
+       }
+       parts {
+               part {
+                       name: "access";
+                       type: RECT;
+                       description { state: "default" 0.0;
+                               fixed: 1 1;
+                               color: 0 0 0 0;
+                       }
+               }
+               part {
+                       name: "button_events";
+                       type: RECT;
+                       mouse_events: 1;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               fixed: 1 1;
+                               min: 2*SLIDER_INDICATOR_SIZE_INC 1.5*SLIDER_INDICATOR_SIZE_INC;
+                               aspect: 1.0 1.0;
+                               aspect_preference: VERTICAL;
+                               color: 0 0 0 0;
+                       }
+                       description {
+                               state: "disabled" 0.0;
+                               inherit: "default" 0.0;
+                               visible: 0;
+                       }
+               }
+               part {
+                       name: "button0";
+                       mouse_events: 0;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               fixed: 1 1;
+                               min: SLIDER_INDICATOR_SIZE_INC SLIDER_INDICATOR_SIZE_INC;
+                               max: SLIDER_INDICATOR_SIZE_INC SLIDER_INDICATOR_SIZE_INC;
+                               image {
+                                       normal: "core_slider_handle_normal.png";
+                               }
+                               color_class: "AO005L3";
+                       }
+                       description {
+                               state: "disabled" 0.0;
+                               inherit: "default" 0.0;
+                               color_class: "AO004D";
+                               visible: 1;
+                       }
+               }
+               part {
+                       name: "button0_press";
+                       mouse_events: 0;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               fixed: 1 1;
+                               min: SLIDER_INDICATOR_SIZE_INC SLIDER_INDICATOR_SIZE_INC;
+                               max: SLIDER_INDICATOR_SIZE_INC SLIDER_INDICATOR_SIZE_INC;
+                               image {
+                                       normal: "core_slider_handle_press.png";
+                               }
+                               color_class: "AO005L4";
+                               visible: 0;
+                               }
+                       description {
+                               state: "pressed" 0.0;
+                               inherit: "default" 0.0;
+                               visible: 1;
+                       }
+               }
+       }
+       programs {
+               program { name: "mouse_down";
+                       signal: "mouse,down,*";
+                       source: "button_events";
+                       action:  STATE_SET "pressed" 0.0;
+                       target: "button0_press";
+               }
+               program { name: "mouse_up";
+                       signal: "mouse,up,*";
+                       source: "button_events";
+                       action:  STATE_SET "default" 0.0;
+                       target: "button0_press";
+               }
+               program { name: "slider_disable";
+                       signal: "elm,state,disabled";
+                       source: "elm";
+                       action:  STATE_SET "disabled" 0.0;
+                       target: "button0";
+                       target: "button_events";
+               }
+               program { name: "slider_enable";
+                       signal: "elm,state,enabled";
+                       source: "elm";
+                       action:  STATE_SET "default" 0.0;
+                       target: "button0";
+                       target: "button_events";
+               }
+       }
+}
+
+group {
+       name: "elm/slider/horizontal/quickpanel_style";
+               images {
+                       image: "core_progressbar_bg.#.png" COMP;
+                       image: "core_progress_bar.#.png" COMP;
+                       image: "core_slider_center_point_bg.png" COMP;
+               }
+               script {
+                       public invert_on = 0;
+                       public popup_show = 1;
+                       public show = 0;
+                       public set_popup_show() {
+                               set_int(popup_show, 1);
+                       }
+                       public set_popup_hide() {
+                               set_int(popup_show, 0);
+                       }
+                       public set_invert_on() {
+                               set_state(PART:"level", "inverted", 0.0);
+                               set_state(PART:"level2", "inverted", 0.0);
+                               set_int(invert_on, 1);
+                       }
+                       public set_invert_off() {
+                               set_state(PART:"level", "default", 0.0);
+                               set_state(PART:"level2", "default", 0.0);
+                               set_int(invert_on, 0);
+                       }
+                       public thumb_down() {
+                               if (get_int(invert_on) == 0) {
+                                       set_state(PART:"level", "pressed", 0.0);
+                                       set_state(PART:"level2", "pressed", 0.0);
+                               }
+                               if (get_int(popup_show) == 1) {
+                                       emit("popup,show", "elm");
+                               }
+                       }
+                       public thumb_up() {
+                               if (get_int(invert_on) == 0) {
+                                       set_state(PART:"level", "default", 0.0);
+                                       set_state(PART:"level2", "default", 0.0);
+                               }
+                               if (get_int(popup_show) == 1) {
+                                       emit("popup,hide", "elm");
+                               }
+                       }
+                       public drag_state() {
+                               new Float:dx, Float:dy;
+                               get_drag(PART:"elm.dragable.slider", dx, dy);
+                               if (dx > 0.5) {
+                                       set_state(PART:"level", "default", 0.0);
+                                       set_state(PART:"level2", "default", 0.0);
+                                       set_int(invert_on, 0);
+                               }
+                               else {
+                                       set_state(PART:"level", "inverted", 0.0);
+                                       set_state(PART:"level2", "inverted", 0.0);
+                                       set_int(invert_on, 1);
+                               }
+                       }
+                       public message(Msg_Type:type, id, ...) {
+                               if (type == MSG_FLOAT_SET) {
+                                       new Float:ratio;
+                                       ratio = getfarg(2);
+                                       if (id == 1) {
+                                               custom_state(PART:"left_restrict", "default", 0.0);
+                                               set_state_val(PART:"left_restrict", STATE_REL2, ratio, 0.0);
+                                               set_state(PART:"left_restrict", "custom", 0.0);
+                                       } else if (id == 2) {
+                                               custom_state(PART:"right_restrict", "default", 0.0);
+                                               set_state_val(PART:"right_restrict", STATE_REL1, 1.0 - ratio, 0.0);
+                                               set_state(PART:"right_restrict", "custom", 0.0);
+                                       }
+                               }
+                       }
+               }
+       parts {
+               part {
+                       name: "access";
+                       type: RECT;
+                       description {
+                               state: "default" 0.0;
+                               fixed: 1 1;
+                               color: 0 0 0 0;
+                       }
+               }
+               part {
+                       name: "bg";
+                       type: SPACER;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 SLIDER_SWALLOWBAR_HEIGHT_INC;
+                       }
+               }
+               part {
+                       name: "elm.swallow.icon";
+                       type: SWALLOW;
+                       clip_to: "icon_clipper";
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               visible: 0;
+                               align: 0.0 0.5;
+                               max: SLIDER_SWALLOWBAR_HEIGHT_INC SLIDER_SWALLOWBAR_HEIGHT_INC;
+                               rel1 {
+                                       relative: 0.0 0.0;
+                                       to: "bg";
+                               }
+                               rel2 {
+                                       relative: 0.0 1.0;
+                                       to: "bg";
+                               }
+                       }
+                       description {
+                               state: "visible" 0.0;
+                               inherit: "default" 0.0;
+                               visible: 1;
+                       }
+               }
+               part {
+                       name: "bar_icon_right_padding_1";
+                       type: SPACER;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               align: 0.0 0.5;
+                               min: 0 0;
+                               max: 0 0;
+                               rel1 {
+                                       relative: 1.0  0.0;
+                                       to: "elm.swallow.icon";
+                               }
+                               rel2 {
+                                       relative: 1.0  1.0;
+                                       to: "elm.swallow.icon";
+                               }
+                               fixed: 1 1;
+                       }
+                       description { state: "visible";
+                               inherit: "default" 0.0;
+                               min: SLIDER_ICON_PADDING_SIZE_INC;
+                               max: SLIDER_ICON_PADDING_SIZE_INC;
+                       }
+               }
+               part {
+                       name: "bar_icon_right_padding_2";
+                       type: SPACER;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               align: 0.0 0.5;
+                               min: SLIDER_LEFT_RIGHT_PADDING_SIZE_INC;
+                               max: SLIDER_LEFT_RIGHT_PADDING_SIZE_INC;
+                               rel1 {
+                               relative: 1.0  0.0;
+                                       to: "bar_icon_right_padding_1";
+                               }
+                               rel2 {
+                                       relative: 1.0  1.0;
+                                       to: "bar_icon_right_padding_1";
+                               }
+                               fixed: 1 1;
+                       }
+               }
+               part {
+                       name: "left_restrict";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 SLIDER_BASE_HEIGHT_INC;
+                               max: -1 SLIDER_BASE_HEIGHT_INC;
+                               fixed: 1 1;
+                               rel1 {
+                                       to: "base";
+                                       relative: 0.0 0.0;
+                               }
+                               rel2 {
+                                       to: "base";
+                                       relative: 0.0 1.0;
+                               }
+                               align: 0.0 0.5;
+                       }
+               }
+               part {
+                       name: "right_restrict";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 SLIDER_BASE_HEIGHT_INC;
+                               max: -1 SLIDER_BASE_HEIGHT_INC;
+                               rel1 {
+                                       to: "base";
+                                       relative: 1.0 0.0;
+                               }
+                               rel2 {
+                                       to: "base";
+                                       relative: 1.0 1.0;
+                               }
+                       }
+               }
+               part {
+                       name: "base";
+                       mouse_events: 0;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 SLIDER_BASE_HEIGHT_INC;
+                               max: -1 SLIDER_BASE_HEIGHT_INC;
+                               rel1 {
+                                       to: "bar_icon_right_padding_2";
+                                       relative: 1.0 0.0;
+                               }
+                               rel2 {
+                                       to: "bar_image_right_padding";
+                                       relative: 0.0 1.0;
+                               }
+                               fixed: 0 1;
+                               image.normal: "core_progressbar_bg.#.png";
+                               color: 255 255 255 255;
+                               color_class: "AO005L1";
+                       }
+                       description {
+                               state: "disabled" 0.0;
+                               inherit: "default" 0.0;
+                               color_class: "AO005L1D";
+                       }
+               }
+               part {
+                       name: "drag_base";
+                       type: "SPACER";
+                       description {
+                               state: "default" 0.0;
+                               min: 0 SLIDER_SWALLOWBAR_HEIGHT_INC;
+                               rel1 {
+                                       to_x: "left_restrict";
+                                       to_y: "bg";
+                                       relative: 1.0 0.0;
+                                       offset: -SLIDER_LEFT_RIGHT_PADDING_SIZE_INC;
+                               }
+                               rel2 {
+                                       to_x: "right_restrict";
+                                       to_y: "bg";
+                                       relative: 0.0 1.0;
+                                       offset: SLIDER_LEFT_RIGHT_PADDING_SIZE_INC;
+                               }
+                               fixed: 1 1;
+                       }
+               }
+               part {
+                       name: "level";
+                       mouse_events: 0;
+                       scale: 1;
+                       clip_to: "clipper";
+                       description {
+                               state: "default" 0.0;
+                               rel1 {
+                                       to_x: "bar_icon_right_padding_2";
+                                       relative: 1.0 0.0;
+                               }
+                               rel2 {
+                                       to_x: "elm.dragable.slider";
+                                       relative: 0.5 1.0;
+                               }
+                               fixed: 1 1;
+                               min: 0 SLIDER_BASE_HEIGHT_INC;
+                               max: -1 SLIDER_BASE_HEIGHT_INC;
+                               image.normal: "core_progressbar_bg.#.png";
+                       }
+                       description {
+                               state: "inverted" 0.0;
+                               inherit: "default" 0.0;
+                               visible: 0;
+                       }
+               }
+               part { 
+                       name: "level2";
+                       mouse_events: 0;
+                       scale: 1;
+                       clip_to: "clipper";
+                       description {
+                               state: "default" 0.0;
+                               fixed: 1 1;
+                               visible: 0;
+                               rel1 {
+                                       to_y: "base";
+                                       to_x: "elm.dragable.slider";
+                                       relative: 0.5 0.0;
+                               }
+                               rel2.to: "base";
+                                       image.normal: "core_progressbar_bg.#.png";
+                               }
+                               description {
+                                       state: "inverted" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                       }
+               }
+               part {
+                       name: "bar_image_right_padding";
+                       type: SPACER;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: SLIDER_LEFT_RIGHT_PADDING_SIZE_INC;
+                               max: SLIDER_LEFT_RIGHT_PADDING_SIZE_INC;
+                               fixed: 1 0;
+                               rel1 {
+                                       relative: 1.0  0.0;
+                                       to: "bg";
+                               }
+                               rel2 {
+                                       relative: 1.0  1.0;
+                                       to: "bg";
+                               }
+                               align: 1.0 0.5;
+                       }
+               }
+               part { name: "icon_clipper";
+                       scale: 1;
+                       type: RECT;
+                       description {
+                               state: "default" 0.0;
+                               color_class: "W0661";
+                       }
+                       description {
+                               state: "disabled" 0.0;
+                               color_class: "W0661D";
+                       }
+               }
+               part {
+                       name: "elm.swallow.bar";
+                       type: SWALLOW;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0  SLIDER_SWALLOWBAR_HEIGHT_INC;
+                               max: -1 SLIDER_SWALLOWBAR_HEIGHT_INC;
+                               fixed: 0 1;
+                               rel1 {
+                                       to: "bar_icon_right_padding_2";
+                                       relative: 1.0 0.0;
+                               }
+                               rel2 {
+                                       to: "bar_image_right_padding";
+                                       relative: 0.0 1.0;
+                               }
+                       }
+               }
+               part {
+                       name:"center_point";
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: SLIDER_CENTER_POINT_SIZE_INC;
+                               max: SLIDER_CENTER_POINT_SIZE_INC;
+                               visible: 0;
+                               image.normal: "core_slider_center_point_bg.png";
+                               rel1.to: "base";
+                               rel2.to: "base";
+                               fixed: 0 1;
+                               color_class: "W062L1";
+                       }
+                       description {
+                               state: "visible" 0.0;
+                               inherit: "default" 0.0;
+                               visible: 1;
+                       }
+                       description {
+                               state: "disabled" 0.0;
+                               inherit: "default" 0.0;
+                               visible: 1;
+                               color_class: "W062L1D";
+                       }
+               }
+               part {
+                       name: "elm.track.slider";
+                       type: SWALLOW;
+                       mouse_events: 0;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 SLIDER_POPUP_HEIGHT_INC;
+                               max: -1 SLIDER_POPUP_HEIGHT_INC;
+                               align: 0.5 1.0;
+                               fixed: 0 1;
+                               rel1.to: "elm.dragable.slider";
+                               rel1.offset: 0 8;
+                               rel2 {
+                                       relative: 1.0 0.0;
+                                       to: "elm.dragable.slider";
+                                       offset: 0 8;
+                               }
+                       }
+               }
+               part {
+                       name: "elm.dragable.slider";
+                       type: GROUP;
+                       source: "elm/slider/horizontal/indicator/quickpanel_style";
+                       mouse_events: 1;
+                       scale: 1;
+                       dragable {
+                               x: 1 1 0;
+                               y: 0 0 0;
+                               confine: "drag_base";
+                       }
+                       description {
+                               state: "default" 0.0;
+                               min: SLIDER_INDICATOR_SIZE_INC SLIDER_INDICATOR_SIZE_INC;
+                               fixed: 1 1;
+                               align: 0.5 0.5;
+                               rel1.to: "drag_base";
+                               rel1.relative: 0.5 0.5;
+                               rel2.to: "drag_base";
+                               rel2.relative: 0.5 0.5;
+                               color: 0 0 0 0;
+                       }
+               }
+               part {
+                       name: "disabler";
+                       type: RECT;
+                       mouse_events: 1;
+                       repeat_events: 0;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               visible: 0;
+                               color: 0 0 0 0;
+                       }
+                       description {
+                               state: "disabled" 0.0;
+                               inherit: "default" 0.0;
+                               visible: 1;
+                       }
+               }
+               part {
+                       name: "clipper";
+                       type: RECT;
+                       description {
+                               state: "default" 0.0;
+                                       color_class: "AO005L2";
+                               }
+                               description {
+                                       state: "pressed" 0.0;
+                                       color_class: "AO005L2";
+                               }
+                               description {
+                                       state: "disabled" 0.0;
+                                       color_class: "AO004D";
+                               }
+                       }
+               }
+               programs {
+                       program {
+                       name: "invert_on";
+                       signal: "elm,state,inverted,on";
+                       source: "elm";
+                       script {
+                               set_invert_on();
+                       }
+               }
+               program {
+                       name: "invert_off";
+                       signal: "elm,state,inverted,off";
+                       source: "elm";
+                       script {
+                               set_invert_off();
+                       }
+               }
+               program {
+                       name: "val_show";
+                       signal: "mouse,down,*";
+                       source: "elm.dragable.slider";
+                       script {
+                               thumb_down();
+                       }
+               }
+               program {
+                       name: "val_hide";
+                       signal: "mouse,up,*";
+                       source: "elm.dragable.slider";
+                       script {
+                               thumb_up();
+                       }
+               }
+               program {
+                       name: "popup_show";
+                       signal: "elm,state,val,show";
+                       source: "elm";
+                       script {
+                               set_popup_show();
+                       }
+               }
+               program {
+                       name: "popup_hide";
+                       signal: "elm,state,val,hide";
+                       source: "elm";
+                       script {
+                               set_popup_hide();
+                       }
+               }
+               program {
+                       name: "icon_show";
+                       signal: "elm,state,icon,visible";
+                       source: "elm";
+                       action:  STATE_SET "visible" 0.0;
+                       target: "elm.swallow.icon";
+                       target: "bar_icon_right_padding_1";
+               }
+               program {
+                       name: "center_point_enable";
+                       signal: "slider,center,point,show";
+                       source: "elm";
+                       script {
+                               set_state(PART:"center_point", "visible", 0.0);
+                               set_int(show, 1);
+                       }
+               }
+               program {
+                       name: "center_point_disable";
+                       signal: "slider,center,point,hide";
+                       source: "elm";
+                       script {
+                               set_state(PART:"center_point", "default", 0.0);
+                               set_int(show, 0);
+                       }
+               }
+               program {
+                       name: "slider_disable";
+                       signal: "elm,state,disabled";
+                       source: "elm";
+                       script {
+                               if (get_int(show)) {
+                                       set_state(PART:"center_point", "disabled", 0.0);
+                               }
+                               set_state(PART:"disabler", "disabled", 0.0);
+                               set_state(PART:"icon_clipper", "disabled", 0.0);
+                               set_state(PART:"clipper", "disabled", 0.0);
+                               set_state(PART:"base", "disabled", 0.0);
+                       }
+               }
+               program {
+                       name: "slider_enable";
+                       signal: "elm,state,enabled";
+                       source: "elm";
+                       script {
+                               if (get_int(show)) {
+                                       set_state(PART:"center_point", "default", 0.0);
+                               }
+                               set_state(PART:"disabler", "default", 0.0);
+                               set_state(PART:"icon_clipper", "default", 0.0);
+                               set_state(PART:"clipper", "default", 0.0);
+                               set_state(PART:"base", "default", 0.0);
+                       }
+               }
+       }
+}
diff --git a/data/sip.wav b/data/sip.wav
deleted file mode 100644 (file)
index a4394bf..0000000
Binary files a/data/sip.wav and /dev/null differ
diff --git a/debian/changelog b/debian/changelog
deleted file mode 100755 (executable)
index f370e99..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-quickpanel (0.1.1-112) unstable; urgency=low
-
-  * update boilerplate
-  * Git: pkgs/q/quickpanel
-  * Tag: quickpanel_0.1.1-112
-
- -- Jeonghoon Park <jh1979.park@samsung.com>  Wed, 02 May 2012 17:45:20 +0900
-
diff --git a/debian/compat b/debian/compat
deleted file mode 100755 (executable)
index 7ed6ff8..0000000
+++ /dev/null
@@ -1 +0,0 @@
-5
diff --git a/debian/control b/debian/control
deleted file mode 100755 (executable)
index 58806f9..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-Source: quickpanel
-Section: devel
-Priority: extra
-Maintainer: Jeonghoon Park <jh1979.park@samsung.com>, Youngjoo Park <yjoo93.park@samsung.com> 
-Build-Depends: debhelper (>= 5), libnotification-dev, libaul-1-dev, libelm-dev, libappcore-efl-dev, libappcore-common-dev, dlog-dev, libslp-setting-dev, libheynoti-dev, libsvi-dev, libprivilege-control-dev, libecore-dev, libedbus-dev, libevas-dev, libedje-dev, libmm-sound-dev, libicu-dev, libappsvc-dev, iniparser-dev, syspopup-caller-dev
-Standards-Version: 3.7.2
-
-Package: org.tizen.quickpanel
-Architecture: any
-Depends: ${shlibs:Depends}, ${misc:Depends}, libappcore-efl-0, libelm-bin, libaul-1, libnotification-0, libsvi-0, libicu
-Description: Quickpanel Application
-
-Package: org.tizen.quickpanel-dbg
-Section: debug
-Architecture: any
-Depends: ${shlibs:Depends}, ${misc:Depends}, org.tizen.quickpanel (= ${Source-Version})
-Description: Quickpanel Application
diff --git a/debian/org.tizen.quickpanel.install.in b/debian/org.tizen.quickpanel.install.in
deleted file mode 100755 (executable)
index fb4746c..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-@PREFIX@/bin/*
-@PREFIX@/res/locale/*
-@PREFIX@/res/edje/*
-@PREFIX@/data
-/opt/share/applications/*
-/etc/init.d/*
diff --git a/debian/org.tizen.quickpanel.postinst.in b/debian/org.tizen.quickpanel.postinst.in
deleted file mode 100755 (executable)
index aabc3cb..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-#!/bin/sh
-
-
-if [ ${USER} = "root" ]
-then
-       chown -R 5000:5000 @PREFIX@/data
-fi
-
-chmod 755 /etc/init.d/quickpanel
-mkdir -p /etc/rc.d/rc5.d/
-mkdir -p /etc/rc.d/rc3.d/
-ln -s  /etc/init.d/quickpanel /etc/rc.d/rc5.d/S51quickpanel
-ln -s  /etc/init.d/quickpanel /etc/rc.d/rc3.d/S51quickpanel
diff --git a/debian/rules b/debian/rules
deleted file mode 100755 (executable)
index b0c2d9f..0000000
+++ /dev/null
@@ -1,114 +0,0 @@
-#!/usr/bin/make -f
-# -*- makefile -*-
-# Sample debian/rules that uses debhelper.
-# This file was originally written by Joey Hess and Craig Small.
-# As a special exception, when this file is copied by dh-make into a
-# dh-make output file, you may use that output file without restriction.
-# This special exception was added by Craig Small in version 0.37 of dh-make.
-
-# Uncomment this to turn on verbose mode.
-#export DH_VERBOSE=1
-
-CFLAGS ?= -Wall -g
-LDFLAGS ?=
-PREFIX ?= /opt/apps/org.tizen.quickpanel
-RESDIR ?= $(PREFIX)/res
-DATADIR ?= $(PREFIX)/data
-
-ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
-       CFLAGS += -O0
-else
-       CFLAGS += -O2
-endif
-
-LDFLAGS += -Wl,--rpath=$(PREFIX)/lib -Wl,--as-needed
-
-CMAKE_BUILD_DIR ?= $(CURDIR)/cmake_build_tmp
-
-configure: configure-stamp
-configure-stamp:
-       dh_testdir
-       # Add here commands to configure the package.
-       mkdir -p $(CMAKE_BUILD_DIR) && cd $(CMAKE_BUILD_DIR) && \
-       CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" cmake .. -DCMAKE_INSTALL_PREFIX="$(PREFIX)"
-
-       touch configure-stamp
-
-build: build-stamp
-
-build-stamp: configure-stamp 
-       dh_testdir
-
-       # Add here commands to compile the package.
-       cd $(CMAKE_BUILD_DIR) && $(MAKE)
-
-       for f in `find $(CURDIR)/debian/ -name "*.in"`; do \
-               cat $$f > $${f%.in}; \
-               sed -i -e "s#@PREFIX@#$(PREFIX)#g" $${f%.in}; \
-               sed -i -e "s#@RESDIR@#$(RESDIR)#g" $${f%.in}; \
-               sed -i -e "s#@DATADIR@#$(DATADIR)#g" $${f%.in}; \
-       done
-
-       touch $@
-
-clean:
-       dh_testdir
-       dh_testroot
-       rm -f build-stamp configure-stamp
-
-       # Add here commands to clean up after the build process.
-       rm -rf $(CMAKE_BUILD_DIR)
-
-       for f in `find $(CURDIR)/debian/ -name "*.in"`; do \
-               rm -f $${f%.in}; \
-       done
-
-       dh_clean 
-
-install: build
-       dh_testdir
-       dh_testroot
-       dh_clean -k 
-       dh_installdirs
-
-       # Add here commands to install the package into debian/wavplayer.
-       cd $(CMAKE_BUILD_DIR) && $(MAKE) DESTDIR=$(CURDIR)/debian/tmp install
-
-
-# Build architecture-independent files here.
-binary-indep: build install
-# We have nothing to do by default.
-
-# Build architecture-dependent files here.
-binary-arch: build install
-       dh_testdir
-       dh_testroot
-#      dh_installchangelogs 
-#      dh_installdocs
-#      dh_installexamples
-       dh_install --sourcedir=debian/tmp
-#      dh_installmenu
-#      dh_installdebconf       
-#      dh_installlogrotate
-#      dh_installemacsen
-#      dh_installpam
-#      dh_installmime
-#      dh_python
-#      dh_installinit
-#      dh_installcron
-#      dh_installinfo
-       dh_installman
-       dh_link
-       dh_strip --dbg-package=org.tizen.quickpanel-dbg
-       dh_compress
-       dh_fixperms
-#      dh_perl
-       dh_makeshlibs
-       dh_installdeb
-       dh_shlibdeps
-       dh_gencontrol
-       dh_md5sums
-       dh_builddeb
-
-binary: binary-indep binary-arch
-.PHONY: build clean binary-indep binary-arch binary install configure
diff --git a/icons/settings_noti_panel.png b/icons/settings_noti_panel.png
new file mode 100644 (file)
index 0000000..fa80b17
Binary files /dev/null and b/icons/settings_noti_panel.png differ
diff --git a/org.tizen.quickpanel.efl b/org.tizen.quickpanel.efl
new file mode 100644 (file)
index 0000000..e1bc472
--- /dev/null
@@ -0,0 +1,97 @@
+org.tizen.quickpanel system::use_internet r----- ------
+org.tizen.quickpanel system::vconf_network rwx--l ------
+org.tizen.quickpanel system::vconf_system rwx--l ------
+org.tizen.quickpanel system::vconf_inhouse rwx--l ------
+org.tizen.quickpanel telephony_framework::vconf rwx--l ------
+org.tizen.quickpanel org.tizen.setting::private rwx--l ------
+org.tizen.quickpanel secure-storage-client rw---- ------
+org.tizen.quickpanel secure-storage rw---- ------
+org.tizen.quickpanel secure-storage::tethering rw---- ------
+org.tizen.quickpanel tethering::dbus-access rw---- ------
+org.tizen.quickpanel mdm-server rwx--- ------
+org.tizen.quickpanel system r-x--- ------
+org.tizen.quickpanel xorg rw---- ------
+org.tizen.quickpanel device::bklight rw---- ------
+org.tizen.quickpanel org.tizen.indicator rwx--- ------
+org.tizen.quickpanel crash-popup r-x--- ------
+org.tizen.quickpanel system-server rwx--- ------
+org.tizen.quickpanel immvibed rw---- ------
+org.tizen.quickpanel display_wd r-x--- ------
+org.tizen.quickpanel sound_server rwxa-- ------
+org.tizen.quickpanel dbus rwx--- ------
+org.tizen.quickpanel e17 rwx--- ------
+org.tizen.quickpanel svi-data r-x--- ------
+org.tizen.quickpanel ail::db rw---- ------
+org.tizen.quickpanel org.tizen.oma-dm r-x--- ------
+org.tizen.quickpanel isf rwx--- ------
+org.tizen.quickpanel media-server r-x--- ------
+org.tizen.quickpanel deviced rwx--- ------
+org.tizen.quickpanel deviced::display rw---- ------
+org.tizen.quickpanel deviced::led rw---- ------
+org.tizen.quickpanel deviced::haptic rw---- ------
+org.tizen.quickpanel csc-feature r----- ------
+org.tizen.quickpanel notification::db rw---- ------
+org.tizen.quickpanel data-provider-master rw---- ------
+org.tizen.quickpanel data-provider-master::notification rw---- ------
+org.tizen.quickpanel data-provider-master::notification.client rw---- ------
+org.tizen.quickpanel data-provider-master::badge rw---- ------
+org.tizen.quickpanel data-provider-master::badge.client -w---- ------
+org.tizen.quickpanel data-provider-master::badge.manager -w---- ------
+org.tizen.quickpanel org.tizen.setting::default-resources r-x--- ------
+org.tizen.quickpanel factory::vconf rw---- ------
+org.tizen.quickpanel org.tizen.ready-to-share::state rw---- ------
+org.tizen.quickpanel starter::vconf rw---- ------
+org.tizen.quickpanel oma-ds-agent::cfg r----- ------
+org.tizen.quickpanel oma-ds-agent::svc rw---- ------
+org.tizen.quickpanel nfc-manager rwx--- ------
+org.tizen.quickpanel nfc-manager::admin rwx--- ------
+org.tizen.quickpanel tts-server r-x--- ------
+org.tizen.quickpanel pkgmgr::db rw---l ------
+org.tizen.quickpanel pkgmgr-client r-x--- ------
+org.tizen.quickpanel bt-service rw---- ------
+org.tizen.quickpanel bt-service::admin rw---- ------
+org.tizen.quickpanel bt-service::public r----- ------
+org.tizen.quickpanel bt-service::platform -w---- ------
+org.tizen.quickpanel syspopup::db rwx--- ------
+org.tizen.quickpanel connman rw---- ------
+org.tizen.quickpanel connman::set rw---- ------
+org.tizen.quickpanel connman::get rw---- ------
+org.tizen.quickpanel net-config rw---- ------
+org.tizen.quickpanel ug-setting-mobileap-efl r----l ------
+org.tizen.quickpanel ug-setting-call-efl::vconf rw---- ------
+org.tizen.quickpanel quickpanel_private::vconf rwx--- ------
+org.tizen.quickpanel aul::launch --x--- ------
+org.tizen.quickpanel alarm-manager::alarm rw---- ------
+org.tizen.quickpanel alarm-server::alarm -w---- ------
+org.tizen.quickpanel drmfw rw---- ------
+org.tizen.quickpanel app-svc --x--- ------
+org.tizen.quickpanel app-svc::db rw---l ------
+org.tizen.quickpanel trm -w---- ------
+org.tizen.quickpanel network::set rw---- ------
+org.tizen.quickpanel network::get rw---- ------
+org.tizen.quickpanel telephony_framework::api_ps_public rw---- ------
+org.tizen.quickpanel telephony_framework::api_call rw---- ------
+org.tizen.quickpanel telephony_framework::api_modem rw---- ------
+org.tizen.quickpanel telephony_framework::properties rw---- ------
+org.tizen.quickpanel telephony_framework::api_sim r----- ------
+org.tizen.quickpanel contacts-service::svc --x--- ------
+system org.tizen.quickpanel -w---- ------
+display_wd org.tizen.quickpanel -w---- ------
+dbus org.tizen.quickpanel rwx--- ------
+org.tizen.app-tray org.tizen.quickpanel r-x--- ------
+org.tizen.quickpanel system::homedir rwxat- ------
+org.tizen.quickpanel system::vconf rwxat- ------
+org.tizen.quickpanel system::media rwxat- ------
+org.tizen.quickpanel system::share rwxat- ------
+org.tizen.quickpanel pulseaudio rwxat- ------
+e17 org.tizen.quickpanel -w---- ------
+org.tizen.quickpanel device::app_logging -w---- ------
+org.tizen.quickpanel sys-assert::core rwxat- ------
+org.tizen.quickpanel privacy-manager::db r----l ------
+org.tizen.quickpanel system::vconf_setting rw---- ------
+org.tizen.quickpanel system::vconf_privacy rw---- ------
+org.tizen.quickpanel system::vconf_multimedia rw---- ------
+org.tizen.quickpanel system::vconf_misc rw---- ------
+org.tizen.quickpanel ecore::lock rwxat- ------
+org.tizen.quickpanel location_fw::vconf rw---- ------
+org.tizen.quickpanel com.samsung.download-manager r-x--- ------
diff --git a/org.tizen.quickpanel.manifest b/org.tizen.quickpanel.manifest
new file mode 100644 (file)
index 0000000..e15ba29
--- /dev/null
@@ -0,0 +1,11 @@
+<manifest>
+       <define>
+           <domain name="org.tizen.quickpanel"/>
+       </define>
+       <assign>
+               <filesystem path="/etc/init.d/quickpanel" label="_" exec_label="none"/>
+       </assign>
+       <request>
+           <domain name="org.tizen.quickpanel"/>
+       </request>
+</manifest>
diff --git a/packaging/org.tizen.quickpanel.changes b/packaging/org.tizen.quickpanel.changes
deleted file mode 100644 (file)
index d6f3ba3..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-* Thu Jan 02 2014 Maciej Wereski <m.wereski@partner.samsung.com> submit/tizen/20130627.143056@65e5018
-- Adjust SMACK to new model, remove initscripts
-
-* Thu Jun 27 2013 Junfeng Dong <junfeng.dong@intel.com> accepted/tizen/20130530.164708@6366e3a
-- Fix the build error with glibc 2.17.
diff --git a/packaging/org.tizen.quickpanel.manifest b/packaging/org.tizen.quickpanel.manifest
deleted file mode 100644 (file)
index 1875bf1..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<manifest>
-       <request>
-           <domain name="_"/>
-       </request>
-       <assign>
-               <filesystem path="/usr/apps/org.tizen.quickpanel/data" label="User" />
-       </assign>
-</manifest>
index ff42531..c660e58 100644 (file)
@@ -1,48 +1,80 @@
-%define PREFIX    /usr/apps/%{name}
+%bcond_with wayland
+
+%define PKGNAME org.tizen.quickpanel
+%define PREFIX    /usr/apps/%{PKGNAME}
+%define PREFIX_RW    /opt/usr/apps/%{PKGNAME}
 %define RESDIR    %{PREFIX}/res
 %define DATADIR    %{PREFIX}/data
 
 Name:       org.tizen.quickpanel
 Summary:    Quick Panel
-Version:    0.3.38
+Version:    0.6.23
 Release:    1
-Group:      Application Framework/Utilities
-License:    Flora
+Group:      util
+License:    Apache-2.0
 Source0:    %{name}-%{version}.tar.gz
-Source101:  quickpanel.service
-Source102:  org.tizen.quickpanel.manifest
+Source102:  quickpanel-system.service
+
+%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-system-info)
 BuildRequires: pkgconfig(capi-system-device)
+BuildRequires: pkgconfig(capi-network-wifi)
+BuildRequires: pkgconfig(capi-network-bluetooth)
 BuildRequires: pkgconfig(capi-network-tethering)
+BuildRequires: pkgconfig(capi-network-connection)
 BuildRequires: pkgconfig(capi-media-player)
+BuildRequires: pkgconfig(capi-media-sound-manager)
+BuildRequires: pkgconfig(capi-media-metadata-extractor)
+BuildRequires: pkgconfig(capi-system-system-settings)
+BuildRequires: pkgconfig(capi-base-utils-i18n)
+BuildRequires: pkgconfig(capi-ui-efl-util)
+BuildRequires: pkgconfig(tapi)
 BuildRequires: pkgconfig(feedback)
 BuildRequires: pkgconfig(appcore-common)
 BuildRequires: pkgconfig(notification)
+BuildRequires: pkgconfig(badge)
 BuildRequires: pkgconfig(vconf)
-BuildRequires: pkgconfig(appsvc)
-BuildRequires: pkgconfig(devman_haptic)
 BuildRequires: pkgconfig(libprivilege-control)
-BuildRequires: pkgconfig(ecore-x)
 BuildRequires: pkgconfig(edbus)
 BuildRequires: pkgconfig(evas)
 BuildRequires: pkgconfig(ecore)
 BuildRequires: pkgconfig(edje)
 BuildRequires: pkgconfig(icu-i18n)
 BuildRequires: pkgconfig(dlog)
+BuildRequires: pkgconfig(syspopup-caller)
+BuildRequires: pkgconfig(bundle)
 BuildRequires: pkgconfig(elementary)
+BuildRequires: pkgconfig(efl-assist)
 BuildRequires: pkgconfig(syspopup-caller)
 BuildRequires: pkgconfig(minicontrol-viewer)
 BuildRequires: pkgconfig(minicontrol-monitor)
-#BuildRequires: pkgconfig(deviced)
-BuildRequires: pkgconfig(utilX)
+BuildRequires: pkgconfig(pkgmgr)
+BuildRequires: pkgconfig(pkgmgr-info)
+BuildRequires: pkgconfig(iniparser)
+BuildRequires: pkgconfig(alarm-service)
 BuildRequires: gettext-tools
 BuildRequires: cmake
 BuildRequires: edje-tools
 
+%if %{with wayland}
+BuildRequires: pkgconfig(ecore-wayland)
+%else
+BuildRequires: pkgconfig(ecore-x)
+BuildRequires: pkgconfig(x11)
+BuildRequires: pkgconfig(xi)
+BuildRequires: pkgconfig(utilX)
+BuildRequires: pkgconfig(inputproto)
+%endif
+
 Requires(post): /usr/bin/vconftool
 Requires: e17
 %description
@@ -50,38 +82,63 @@ Quick Panel
 
 %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
+
+%if %{with wayland}
+export WAYLAND_SUPPORT=On
+export X11_SUPPORT=Off
+%else
+export WAYLAND_SUPPORT=Off
+export X11_SUPPORT=On
+%endif
+
+
 LDFLAGS+="-Wl,--rpath=%{PREFIX}/lib -Wl,--as-needed";export LDFLAGS
-cmake . -DCMAKE_INSTALL_PREFIX=%{PREFIX}
+LDFLAGS="$LDFLAGS" %cmake . -DCMAKE_INSTALL_PREFIX=%{PREFIX} -DPREFIX_RW=%{PREFIX_RW} -DWAYLAND_SUPPORT=${WAYLAND_SUPPORT} -DX11_SUPPORT=${X11_SUPPORT} \
+
 make %{?jobs:-j%jobs}
 
 %install
 rm -rf %{buildroot}
 %make_install
 
-mkdir -p %{buildroot}%{_libdir}/systemd/user/core-efl.target.wants
-install -m 0644 %SOURCE101 %{buildroot}%{_libdir}/systemd/user/
-ln -s ../quickpanel.service %{buildroot}%{_libdir}/systemd/user/core-efl.target.wants/quickpanel.service
+mkdir -p %{buildroot}%{_libdir}/systemd/system/multi-user.target.wants
+install -m 0644 %SOURCE102 %{buildroot}%{_libdir}/systemd/system/quickpanel.service
+ln -s ../quickpanel.service %{buildroot}%{_libdir}/systemd/system/multi-user.target.wants/quickpanel.service
+
+mkdir -p %{buildroot}/usr/share/license
+cp -f LICENSE %{buildroot}/usr/share/license/%{PKGNAME}
+
 
 %post
-vconftool set -t bool db/setting/rotate_lock 0 -u 5000 -f
-vconftool set -t bool db/setting/drivingmode/drivingmode 0 -u 5000 -f
-vconftool set -t bool memory/private/%{name}/started 0 -i -u 5000 -f
-vconftool set -t bool memory/private/%{name}/enable_ask 1 -i -u 5000 -f
-vconftool set -t bool memory/private/%{name}/disable_ask 1 -i -u 5000 -f
-vconftool set -t bool memory/private/%{name}/hotspot/enable_ask 1 -i -u 5000 -f
+
 
 %files
-%manifest %{name}.manifest
+%manifest %{PKGNAME}.manifest
 %defattr(-,root,root,-)
-%license LICENSE.Flora NOTICE
+%attr(755,-,-) %{_sysconfdir}/init.d/quickpanel
 %attr(775,app,app) %{DATADIR}
-%{DATADIR}/*
+%attr(775,app,app) %{PREFIX_RW}/data
+%{PREFIX_RW}/data
 %{PREFIX}/bin/*
 %{RESDIR}/*
-/usr/share/packages/%{name}.xml
-%{_libdir}/systemd/user/quickpanel.service
-%{_libdir}/systemd/user/core-efl.target.wants/quickpanel.service
+/usr/share/packages/%{PKGNAME}.xml
+%{_sysconfdir}/init.d/quickpanel
+%{_libdir}/systemd/system/quickpanel.service
+%{_libdir}/systemd/system/multi-user.target.wants/quickpanel.service
+/usr/share/license/%{PKGNAME}
+/etc/smack/accesses.d/%{PKGNAME}.efl
+/usr/apps/%{PKGNAME}/shared/res/icons/*
+/usr/apps/%{PKGNAME}/shared/res/noti_icons/*
diff --git a/packaging/quickpanel-system.service b/packaging/quickpanel-system.service
new file mode 100644 (file)
index 0000000..e8e1223
--- /dev/null
@@ -0,0 +1,15 @@
+[Unit]
+Description=Start the Quickpanel
+After=check-mount.service connman.service
+
+[Service]
+Type=simple
+EnvironmentFile=/run/tizen-mobile-env
+ExecStart=/usr/apps/org.tizen.quickpanel/bin/quickpanel
+Restart=always
+RestartSec=0
+KillSignal=SIGKILL
+OOMScoreAdjust=200
+
+[Install]
+WantedBy=multi-user.target
diff --git a/packaging/quickpanel.service b/packaging/quickpanel.service
deleted file mode 100644 (file)
index ef2776e..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-
-[Unit]
-Description=Start the Quickpanel
-Before=core-efl.target
-After=xorg.target starter.service e17.service
-
-[Service]
-ExecStart=/usr/apps/org.tizen.quickpanel/bin/quickpanel
-
-[Install]
-WantedBy=tizen-mobile.target
index 5495a31..eeee6ac 100755 (executable)
@@ -1,6 +1,7 @@
 # for i18n
 
-SET(POFILES ar.po az.po bg.po ca.po cs.po da.po de_DE.po el_GR.po en.po en_PH.po en_US.po es_ES.po es_MX.po et.po eu.po fi.po fr_CA.po fr_FR.po ga.po gl.po hi.po hr.po hu.po hy.po is.po it_IT.po ja_JP.po ka.po kk.po ko_KR.po lt.po lv.po mk.po nb.po nl_NL.po pl.po pt_BR.po pt_PT.po ro.po ru_RU.po sk.po sl.po sr.po sv.po tr_TR.po uk.po uz.po zh_CN.po zh_HK.po zh_SG.po zh_TW.po)
+SET(POFILES ar.po az.po bg.po ca.po cs.po da.po de.po el_GR.po en_PH.po en.po en_US.po es_ES.po es_US.po et.po eu.po fi.po fr_CA.po fr.po ga.po gl.po hi.po hr.po hu.po hy.po is.po it_IT.po ja_JP.po ka.po 
+kk.po ko_KR.po lt.po lv.po mk.po nb.po nl.po pl.po pt_BR.po pt_PT.po ro.po ru_RU.po sk.po sl.po sr.po sv.po tr_TR.po uk.po uz.po zh_CN.po zh_HK.po zh_TW.po)
 
 SET(MSGFMT "/usr/bin/msgfmt")
 
index 6165b42..446a52d 100755 (executable)
--- a/po/ar.po
+++ b/po/ar.po
-msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
-msgstr "إشعارات"
-
-msgid "IDS_WIFI_BODY_ALLSHARE_CAST"
-msgstr "AllShare Cast"
+msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
+msgstr "لا يمكن تنشيط كل من Wi-Fi وMobile AP في الوقت نفسه. هل تريد إلغاء تنشيط Mobile AP؟"
 
-msgid "IDS_CALL_POP_CALLING_EMERG_ONLY"
-msgstr "مكالمات طوارئ فقط"
+msgid "IDS_TASKMGR_BUTTON_CLEAR_ALL"
+msgstr "مسح الكل"
 
-msgid "IDS_QP_BUTTON_ROTATION"
-msgstr "تدÙ\88Ù\8aر"
+msgid "IDS_IDLE_SBODY_TAP_HERE_TO_DISABLE_SAFE_MODE_ABB"
+msgstr "اÙ\86Ù\82ر Ù\87Ù\86ا Ù\84Ø¥Ù\84غاء ØªÙ\81عÙ\8aÙ\84 Ø§Ù\84Ù\88ضع Ø§Ù\84Ø¢Ù\85Ù\86."
 
-msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
-msgstr "إشعارات (%d)"
+msgid "IDS_IDLE_POP_UNABLE_TO_LAUNCH_PS"
+msgstr "يتعذر بدء %s."
 
-msgid "IDS_QP_BUTTON_VIBRATION"
-msgstr "الاهتزاز"
+msgid "IDS_IDLE_MBODY_EMERGENCY_CALLS_ONLY"
+msgstr "مكالمات الطوارئ فقط"
 
-msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
-msgstr "صوت واهتزاز"
+msgid "IDS_IDLE_BODY_SEARCHING_ING"
+msgstr "قيد البحث"
 
-msgid "IDS_QP_TAB4_AUTO_ROTATION"
-msgstr "تدوير تلقائي"
+msgid "IDS_IDLE_BODY_NO_SIM"
+msgstr "لا توجد SIM"
 
-msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
-msgstr "Ù\82Ù\81Ù\84 Ø§Ù\84تدÙ\88Ù\8aر"
+msgid "IDS_IDLE_BODY_NO_SERVICE"
+msgstr "Ù\84ا ØªÙ\88جد Ø®Ø¯Ù\85Ø©"
 
-msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
-msgstr "وضع التخزين كبير السعة"
+msgid "IDS_IDLE_BODY_INVALID_SIM_CARD"
+msgstr "بطاقة غير صالحة."
 
-msgid "IDS_QP_BUTTON_DISABLE"
-msgstr "تعطيل"
+msgid "IDS_IDLE_BODY_EMERGENCY_CALLS_ONLY"
+msgstr "مكالمات طوارئ فقط."
 
-msgid "IDS_QP_BUTTON_ENABLE"
-msgstr "تÙ\81عÙ\8aÙ\84"
+msgid "IDS_QP_OPT_OUTDOORS_ABB"
+msgstr "باÙ\84خارج"
 
-msgid "IDS_COM_POP_UNSUPPORTED"
-msgstr "غÙ\8aر Ù\85دعÙ\88Ù\85"
+msgid "IDS_QP_MBODY_SAFE_MODE_ENABLED"
+msgstr "تÙ\85 ØªÙ\81عÙ\8aÙ\84 Ø§Ù\84Ù\88ضع Ø§Ù\84Ø¢Ù\85Ù\86"
 
-msgid "IDS_COM_SK_DISMISS"
-msgstr "Ø¥Ù\8aÙ\82اÙ\81"
+msgid "IDS_QP_HEADER_NOTIFICATIONS_HPD_ABB"
+msgstr "اÙ\84إشعارات (%d)"
 
-msgid "IDS_COM_POP_PELASE_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
-msgstr "Ù\82Ù\85 Ø¨Ø¥Ø¯Ø®Ø§Ù\84 Ø§Ù\84بطاÙ\82Ø© Ù\84Ù\84Ù\86Ù\81اذ Ø¥Ù\84Ù\89 Ø®Ø¯Ù\85ات Ø§Ù\84شبÙ\83Ø©"
+msgid "IDS_QP_HEADER_CLEAR_ALL_ABB"
+msgstr "Ù\85سح Ø§Ù\84Ù\83Ù\84"
 
-msgid "IDS_COM_BODY_DO_NOT_ASK_AGAIN"
-msgstr "عدÙ\85 Ø§Ù\84سؤاÙ\84 Ù\85رة Ø£Ø®Ø±Ù\89"
+msgid "IDS_QP_BUTTON_NOTIFICATION"
+msgstr "إشعار"
 
-msgid "IDS_QP_POP_INSERT_SIM_CARD_AND_RESTART_DEVICE_TO_USE_TETHERING"
-msgstr "إدخاÙ\84 Ø¨Ø·Ø§Ù\82Ø© SIM Ù\88إعادة ØªØ´ØºÙ\8aÙ\84 Ø§Ù\84جÙ\87از Ù\84استخداÙ\85 Ø§Ù\84تÙ\82Ù\8aÙ\8aد"
+msgid "IDS_QP_BUTTON_ALWAYS_ASK_ABB"
+msgstr "اÙ\84سؤاÙ\84 Ø¯Ø§Ø¦Ù\85اÙ\8b"
 
-msgid "IDS_QP_POP_CONNECTING_VIA_PACKET_DATA_MAY_INCUR_ADDITIONAL_CHARGES_CONTINUE_Q"
-msgstr "الاتصال من خلال حزم البيانات قد تتطلب تكاليف إضافية. متابعة؟"
+msgid "IDS_QP_BUTTON2_WI_FI"
+msgstr "Wi-Fi"
 
-msgid "IDS_QP_BODY_AUTO"
-msgstr "تÙ\84Ù\82ائÙ\8a"
+msgid "IDS_QP_BUTTON2_VIBRATE"
+msgstr "اÙ\87تزاز"
 
-msgid "IDS_QP_TAB_POWER_SAVING"
-msgstr "توفير الطاقة"
+msgid "IDS_QP_BUTTON2_U_POWER_NSAVING_ABB"
+msgstr "توفير فائق\nللطاقة"
 
-msgid "IDS_QP_TAB_TETHERING"
+msgid "IDS_QP_BUTTON2_TETHERING"
 msgstr "تقييد"
 
-msgid "IDS_QP_TAB_MOBILE_DATA"
-msgstr "بÙ\8aاÙ\86ات Ø§Ù\84Ù\87اتÙ\81 Ø§Ù\84Ù\85Ø­Ù\85Ù\88Ù\84"
+msgid "IDS_QP_BUTTON2_SOUND_ABB"
+msgstr "اÙ\84صÙ\88ت"
 
-msgid "IDS_QP_TAB_DRIVING_MODE"
-msgstr "وضع القيادة"
+msgid "IDS_QP_BUTTON2_SOUND"
+msgstr "صوت"
 
-msgid "IDS_COM_POP_UNABLE_TO_CONNECT_TO_MOBILE_NETWORK_WHILE_FLIGHT_MODE_IS_ENABLED_MSG"
-msgstr "يتعذر الاتصال بشبكات الهاتف المحمول أثناء تفعيل وضع الطيران. اتصل بشبكة Wi-Fi بدلا من ذلك أو قم بإلغاء تفعيل وضع الطيران، ثم أعد المحاولة"
+msgid "IDS_QP_BUTTON2_PRIVATE_MODE"
+msgstr "الوضع الخاص"
 
-msgid "IDS_QP_POP_WI_FI_TETHERING_CONSUMES_MORE_BATTERY_POWER_AND_INCREASES_YOUR_DATA_USAGE_CONTINUE_Q"
-msgstr "يستهلك تقييد Wi-Fi‬ الكثير من طاقة البطارية وتزيد من استخدام البيانات. هل تريد المتابعة؟"
+msgid "IDS_QP_BUTTON2_POWER_N_SAVING"
+msgstr "توفير\nالطاقة"
 
-msgid "IDS_QP_POP_DISABLE_TETHERING_TO_USE_WI_FI"
-msgstr "إلغاء تفعيل التقييد لاستخدام Wi-Fi"
+msgid "IDS_QP_BUTTON2_MUTE_ABB"
+msgstr "كتم"
 
-msgid "IDS_QP_POP_TO_ENABLE_POWER_SAVING_MODE_ENABLE_AT_LEAST_ONE_RELEVANT_FUNCTION"
-msgstr "لتفعيل وضع توفير الطاقة، قم بتفعيل وظيفة واحدة ذات صلة"
+msgid "IDS_QP_BUTTON2_MOBILE_DATA"
+msgstr "بيانات\nالهاتف"
 
-msgid "IDS_QP_POP_TURN_OFF_WI_FI_TO_USE_TETHERING"
-msgstr "Ø¥Ù\8aÙ\82اÙ\81 ØªØ´ØºÙ\8aÙ\84 Ø§Ù\84تÙ\82Ù\8aÙ\8aد Ù\84استخداÙ\85 Wi-Fi"
+msgid "IDS_QP_BUTTON2_LOCATION_ABB"
+msgstr "اÙ\84Ù\85Ù\88Ù\82ع"
 
-msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
-msgstr "Ù\84ا Ù\8aÙ\85Ù\83Ù\86 ØªÙ\86Ø´Ù\8aØ· Ù\83Ù\84 Ù\85Ù\86 Wi-Fi Ù\88Mobile AP Ù\81Ù\8a Ø§Ù\84Ù\88Ù\82ت Ù\86Ù\81سÙ\87. Ù\87Ù\84 ØªØ±Ù\8aد Ø¥Ù\84غاء ØªÙ\86Ø´Ù\8aØ· Mobile APØ\9f"
+msgid "IDS_QP_BUTTON2_FLIGHT_N_MODE"
+msgstr "Ù\88ضع\nاÙ\84Ø·Ù\8aراÙ\86"
 
-msgid "IDS_ASCAST_HEADER_SCREEN_MIRRORING"
-msgstr "مراقبة الشاشة"
+msgid "IDS_QP_BUTTON2_BLUETOOTH"
+msgstr "البلوتوث"
 
-msgid "IDS_QP_HEADER_REPLACE_QUICK_SETTING_BUTTON"
-msgstr "استبداÙ\84 Ø²Ø± Ø§Ù\84إعداد Ø§Ù\84سرÙ\8aع"
+msgid "IDS_QP_BUTTON2_AUTO_ROTATE"
+msgstr "تدÙ\88Ù\8aر ØªÙ\84Ù\82ائÙ\8a"
 
-msgid "IDS_QP_HEADER_ADD_QUICK_SETTING_BUTTON"
-msgstr "إضاÙ\81Ø© Ø²Ø± Ø§Ù\84إعداد Ø§Ù\84سرÙ\8aع"
+msgid "IDS_QP_BUTTON2_ASSISTIVE_NLIGHT"
+msgstr "اÙ\84ضÙ\88Ø¡\nاÙ\84Ù\85ساعد"
 
-msgid "IDS_QP_POP_YOU_WILL_NO_LONGER_BE_ABLE_TO_USE_APPLICATIONS_SUCH_AS_INTERNET_NOTI_MSG"
-msgstr "Ù\84Ù\86 Ù\8aÙ\85Ù\83Ù\86Ù\83 Ø§Ø³ØªØ®Ø¯Ø§Ù\85 ØªØ·Ø¨Ù\8aÙ\82اتØ\8c Ù\85Ø«Ù\84 Ø§Ù\84Ø¥Ù\86ترÙ\86ت Ù\88اÙ\84برÙ\8aد Ø§Ù\84Ø¥Ù\84Ù\83ترÙ\88Ù\86Ù\8a Ø¹Ø¨Ø± Ø´Ø¨Ù\83ات Ø§Ù\84Ù\87اتÙ\81 Ø§Ù\84Ù\85Ø­Ù\85Ù\88Ù\84 Ø¨Ø¹Ø¯ Ø§Ù\84Ø¢Ù\86. Ù\87Ù\84 ØªØ±Ù\8aد Ø§Ù\84Ù\85تابعةØ\9f"
+msgid "IDS_QP_BODY_PM_ABB"
+msgstr "Ù\85"
 
-msgid "IDS_QP_BUTTON2_SCREEN_N_MIRRORING"
-msgstr "Screen\nMirroring"
+msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
+msgstr "إشعارات"
 
-msgid "IDS_COM_BODY_BUTTON_T_TTS"
-msgstr "اÙ\84زر"
+msgid "IDS_QP_BODY_AM_ABB"
+msgstr "ص"
 
-msgid "IDS_QP_BUTTON2_GPS"
-msgstr "GPS"
+msgid "IDS_ST_TPOP_UNABLE_TO_MAKE_VOICE_CALLS_VIDEO_CALLS_AND_SEND_TEXT_MESSAGES_USING_PS"
+msgstr "يتعذر إجراء المكالمات الصوتية ومكالمات الفيديو وإرسال الرسائل النصية باستخدام %s."
 
-msgid "IDS_QP_BUTTON_NOTIFICATION"
-msgstr "إشعار"
+msgid "IDS_ST_TPOP_SELECT_SIM_CARD_FOR_OUTGOING_VOICE_CALLS_VIDEO_CALLS_AND_TEXT_MESSAGES"
+msgstr "حدد بطاقة SIM للمكالمات الصوتية ومكالمات الفيديو والرسائل النصية الصادرة."
+
+msgid "IDS_ST_TPOP_OUTGOING_VOICE_CALLS_VIDEO_CALLS_AND_TEXT_MESSAGES_WILL_BE_MADE_USING_THE_PS_SIM_CARD"
+msgstr "سيتم إجراء مكالمات صوتية ومكالمات فيديو ورسائل نصية صادرة باستخدام بطاقة SIM‏ %s."
 
-msgid "IDS_COM_BUTTON_AGREE"
+msgid "IDS_ST_SK_OK"
 msgstr "موافق"
 
-msgid "IDS_COM_BUTTON_DISAGREE"
-msgstr "غير موافق"
+msgid "IDS_ST_SK_NO"
+msgstr "لا"
+
+msgid "IDS_ST_POP_UNABLE_TO_INCREASE_BRIGHTNESS_FURTHER_BECAUSE_OF_PHONE_OVERHEATING"
+msgstr "لايمكن زيادة الاضاءة بسبب زيادة حرارة الهاتف."
+
+msgid "IDS_ST_NPBODY_NO_SERVICE"
+msgstr "ما من خدمة"
+
+msgid "IDS_ST_NPBODY_EMERGENCY_CALLS_ONLY_ABB"
+msgstr "مكالمات الطوارئ فقط"
+
+msgid "IDS_ST_HEADER_OUTDOOR"
+msgstr "في الخارج"
+
+msgid "IDS_ST_BUTTON2_WI_FI_NTETHERING"
+msgstr "تقييد\n‏Wi-Fi"
+
+msgid "IDS_ST_BUTTON2_WI_FI_ABB"
+msgstr "Wi-Fi"
+
+msgid "IDS_ST_BUTTON2_TORCH_ABB"
+msgstr "الكشاف"
+
+msgid "IDS_ST_BUTTON2_POWER_NSAVING"
+msgstr "توفير\nالطاقة"
+
+msgid "IDS_ST_BUTTON2_MOBILE_NDATA"
+msgstr "بيانات\nالهاتف المحمول"
+
+msgid "IDS_ST_BUTTON2_GPS_ABB"
+msgstr "GPS"
+
+msgid "IDS_ST_BUTTON2_FLIGHT_NMODE"
+msgstr "وضع\nالطيران"
+
+msgid "IDS_ST_BUTTON2_BLUETOOTH_ABB"
+msgstr "البلوتوث"
+
+msgid "IDS_ST_BUTTON2_AUTO_NROTATE"
+msgstr "التدوير\nالتلقائي"
+
+msgid "IDS_ST_BODY_SIM_2"
+msgstr "بطاقة SIM 2"
+
+msgid "IDS_ST_BODY_SIM_1"
+msgstr "بطاقة SIM 1"
+
+msgid "IDS_ST_BODY_SCANNING_FOR_MOBILE_NETWORK_ING_ABB"
+msgstr "جارٍ المسح بحثاً عن شبكة هاتف محمول..."
+
+msgid "IDS_ST_BODY_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
+msgstr "قم بإدخال البطاقة للنفاذ إلى خدمات الشبكة."
+
+msgid "IDS_ST_BODY_ALWAYS_ASK_ABB"
+msgstr "السؤال دائما"
+
+msgid "IDS_SCP_BODY_UNABLE_TO_CONNECT_TO_MOBILE_NETWORKS_WHILE_FLIGHT_MODE_IS_ENABLED_CONNECT_TO_A_WI_FI_NETWORK_INSTEAD_OR_DISABLE_FLIGHT_MODE_AND_TRY_AGAIN"
+msgstr "يتعذر الاتصال بشبكات المحمول عندما يكون وضع الطيران مُفعّلًا. اتصل بشبكة Wi-Fi بدلاً من ذلك، أو قم بإلغاء تفعيل وضع الطيران وحاول مرة أخرى."
+
+msgid "IDS_COM_BODY_SEARCHING"
+msgstr "البحث"
+
+msgid "IDS_QP_TPOP_UNABLE_TO_OPEN_PS"
+msgstr "يتعذر فتح %s."
 
-msgid "IDS_ST_BODY_GPS_LOCATION_USE_CONTROLLED_BY_APPLICATIONS_MSG"
-msgstr "تتحكم التطبيقات التي تستخدمها في موقع GPS واستخدام بيانات الموقع"
+msgid "IDS_QP_OPT_OUTDOORS_M_OUTDOOR_MODE_ABB"
+msgstr "وضع الخارج"
 
-msgid "IDS_ST_HEADER_USER_CONSENT"
-msgstr "موافقة المستخدم"
+msgid "IDS_QP_BUTTON2_PRIVATE_NMODE_ABB"
+msgstr "الوضع\nالخاص"
 
index d852b7f..930ed38 100755 (executable)
--- a/po/az.po
+++ b/po/az.po
-msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
-msgstr "Bildirişlər"
+msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
+msgstr "Wi-Fi və Mobile AP eyni zamanda aktivləşdirilə bilməz. Mobile AP qeyri-aktiv edilsin?"
+
+msgid "IDS_TASKMGR_BUTTON_CLEAR_ALL"
+msgstr "Hamısını sil"
+
+msgid "IDS_IDLE_SBODY_TAP_HERE_TO_DISABLE_SAFE_MODE_ABB"
+msgstr "Təhl rej q-akt et ü bur vur."
+
+msgid "IDS_IDLE_POP_UNABLE_TO_LAUNCH_PS"
+msgstr "%s-ə başlamaq mümkün deyildir."
+
+msgid "IDS_IDLE_MBODY_EMERGENCY_CALLS_ONLY"
+msgstr "Yalnız fövqəladə zənglər"
+
+msgid "IDS_IDLE_BODY_SEARCHING_ING"
+msgstr "Axtarır..."
 
-msgid "IDS_WIFI_BODY_ALLSHARE_CAST"
-msgstr "AllShare Cast"
+msgid "IDS_IDLE_BODY_NO_SIM"
+msgstr "SIM yoxdur"
 
-msgid "IDS_CALL_POP_CALLING_EMERG_ONLY"
-msgstr "Yalnız fövqəladə zənglər üçün"
+msgid "IDS_IDLE_BODY_NO_SERVICE"
+msgstr "Servis yoxdur"
 
-msgid "IDS_QP_BUTTON_ROTATION"
-msgstr "Fırlatma"
+msgid "IDS_IDLE_BODY_INVALID_SIM_CARD"
+msgstr "Yanlış SIM kart."
 
-msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
+msgid "IDS_IDLE_BODY_EMERGENCY_CALLS_ONLY"
+msgstr "Yalnız fövqəladə zənglər üçün."
+
+msgid "IDS_QP_OPT_OUTDOORS_ABB"
+msgstr "Açq hava"
+
+msgid "IDS_QP_MBODY_SAFE_MODE_ENABLED"
+msgstr "Təhlük rej akt edil"
+
+msgid "IDS_QP_HEADER_NOTIFICATIONS_HPD_ABB"
 msgstr "Bildirişlər (%d)"
 
-msgid "IDS_QP_BUTTON_VIBRATION"
-msgstr "Vibrasiya"
+msgid "IDS_QP_HEADER_CLEAR_ALL_ABB"
+msgstr "Hamını sil"
 
-msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
-msgstr "Səs və titrəmə"
+msgid "IDS_QP_BUTTON_NOTIFICATION"
+msgstr "Bildiriş"
 
-msgid "IDS_QP_TAB4_AUTO_ROTATION"
-msgstr "Avto fırlatma"
+msgid "IDS_QP_BUTTON_ALWAYS_ASK_ABB"
+msgstr "Həmişə soruş"
 
-msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
-msgstr "Fırlanma kilidi"
+msgid "IDS_QP_BUTTON2_WI_FI"
+msgstr "Wi-Fi"
 
-msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
-msgstr "Kütləvi yaddaş rejimi"
+msgid "IDS_QP_BUTTON2_VIBRATE"
+msgstr "Titrəyiş"
 
-msgid "IDS_QP_BUTTON_DISABLE"
-msgstr "Söndür"
+msgid "IDS_QP_BUTTON2_U_POWER_NSAVING_ABB"
+msgstr "U. enerj\nqənaət"
 
-msgid "IDS_QP_BUTTON_ENABLE"
-msgstr "Qoş"
+msgid "IDS_QP_BUTTON2_TETHERING"
+msgstr "Bağlanma"
 
-msgid "IDS_COM_POP_UNSUPPORTED"
-msgstr "Dəstəklənmədi"
+msgid "IDS_QP_BUTTON2_SOUND_ABB"
+msgstr "Səs"
 
-msgid "IDS_COM_SK_DISMISS"
-msgstr "Söndürmək"
+msgid "IDS_QP_BUTTON2_SOUND"
+msgstr "Səs"
 
-msgid "IDS_COM_POP_PELASE_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
-msgstr "Şəbəkə xidmətlərinə daxil olmaq üçün SİM kartı daxil edin"
+msgid "IDS_QP_BUTTON2_PRIVATE_MODE"
+msgstr "Şəxsi rejim"
 
-msgid "IDS_COM_BODY_DO_NOT_ASK_AGAIN"
-msgstr "Bir də soruşma"
+msgid "IDS_QP_BUTTON2_POWER_N_SAVING"
+msgstr "Enerji\nqrnmsı"
 
-msgid "IDS_QP_POP_INSERT_SIM_CARD_AND_RESTART_DEVICE_TO_USE_TETHERING"
-msgstr "SIM kartı daxil edin və bağlanmadan istifadə etmək üçün cihazı yenidən başladın"
+msgid "IDS_QP_BUTTON2_MUTE_ABB"
+msgstr "Səssiz"
 
-msgid "IDS_QP_POP_CONNECTING_VIA_PACKET_DATA_MAY_INCUR_ADDITIONAL_CHARGES_CONTINUE_Q"
-msgstr "Paket məlumatları vasitəsilə qoşulma əlavə qiymət tətbiq edə bilər. Davam edilsin?"
+msgid "IDS_QP_BUTTON2_MOBILE_DATA"
+msgstr "Mobil\nməlumatlr"
 
-msgid "IDS_QP_BODY_AUTO"
-msgstr "Avtomatik"
+msgid "IDS_QP_BUTTON2_LOCATION_ABB"
+msgstr "Yer"
 
-msgid "IDS_QP_TAB_POWER_SAVING"
-msgstr "Enerji qorunması"
+msgid "IDS_QP_BUTTON2_FLIGHT_N_MODE"
+msgstr "Uçuş\nrejimi"
 
-msgid "IDS_QP_TAB_TETHERING"
-msgstr "Bağlanma"
+msgid "IDS_QP_BUTTON2_BLUETOOTH"
+msgstr "Bluetooth"
 
-msgid "IDS_QP_TAB_MOBILE_DATA"
-msgstr "Mobil məlumatlar"
+msgid "IDS_QP_BUTTON2_AUTO_ROTATE"
+msgstr "Avto-fırlat"
 
-msgid "IDS_QP_TAB_DRIVING_MODE"
-msgstr "Sürücülük rejimi"
+msgid "IDS_QP_BUTTON2_ASSISTIVE_NLIGHT"
+msgstr "Köməkçi\nişıq"
 
-msgid "IDS_COM_POP_UNABLE_TO_CONNECT_TO_MOBILE_NETWORK_WHILE_FLIGHT_MODE_IS_ENABLED_MSG"
-msgstr "Uçuş rejimi aktiv olduqda mobil şəbəkələrə qoşulmaq mümkün deyil. Əvəzinə Wi-Fi şəbəkəsinə qoşulun və ya Uçuş rejimini qeyri-aktiv edin və yenidən cəhd edin"
+msgid "IDS_QP_BODY_PM_ABB"
+msgstr "PM"
 
-msgid "IDS_QP_POP_WI_FI_TETHERING_CONSUMES_MORE_BATTERY_POWER_AND_INCREASES_YOUR_DATA_USAGE_CONTINUE_Q"
-msgstr "Wi-Fi bağlanma daha çox batareyadan istifadə edir və verilənlərdən istifadənizi artırır. Davam etsin?"
+msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
+msgstr "Bildirişlər"
 
-msgid "IDS_QP_POP_DISABLE_TETHERING_TO_USE_WI_FI"
-msgstr "Wi-Fi-dan istifadə etmək üçün bağlanmanı söndür"
+msgid "IDS_QP_BODY_AM_ABB"
+msgstr "AM"
 
-msgid "IDS_QP_POP_TO_ENABLE_POWER_SAVING_MODE_ENABLE_AT_LEAST_ONE_RELEVANT_FUNCTION"
-msgstr "Enerji qorunması rejimini aktivləşdirmək üçün ən azı bir müvafiq funksiyanı aktivəşdirin"
+msgid "IDS_ST_TPOP_UNABLE_TO_MAKE_VOICE_CALLS_VIDEO_CALLS_AND_SEND_TEXT_MESSAGES_USING_PS"
+msgstr "%s ilə səsli zənglər, video zənglər etmək və mətn mesajları göndərmək olmadı."
 
-msgid "IDS_QP_POP_TURN_OFF_WI_FI_TO_USE_TETHERING"
-msgstr "Bağlanmadan istifadə etmək üçün Wi-Fi-ı söndür"
+msgid "IDS_ST_TPOP_SELECT_SIM_CARD_FOR_OUTGOING_VOICE_CALLS_VIDEO_CALLS_AND_TEXT_MESSAGES"
+msgstr "Gedən səsli zənglər, video zənglər və mətni mesajlar üçün SIM kart seçin."
 
-msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
-msgstr "Wi-Fi və Mobile AP eyni zamanda aktivləşdirilə bilməz. Mobile AP qeyri-aktiv edilsin?"
+msgid "IDS_ST_TPOP_OUTGOING_VOICE_CALLS_VIDEO_CALLS_AND_TEXT_MESSAGES_WILL_BE_MADE_USING_THE_PS_SIM_CARD"
+msgstr "Gedən səs zəngləri, video zənglər və mətn mesajları %s SIM kartı ilə ediləcək."
+
+msgid "IDS_ST_SK_OK"
+msgstr "OK"
+
+msgid "IDS_ST_SK_NO"
+msgstr "Xeyr"
+
+msgid "IDS_ST_POP_UNABLE_TO_INCREASE_BRIGHTNESS_FURTHER_BECAUSE_OF_PHONE_OVERHEATING"
+msgstr "Telefon qızdığından parlaqlığı daha da artırmaq mümkün deyil."
 
-msgid "IDS_ASCAST_HEADER_SCREEN_MIRRORING"
-msgstr "Screen Mirroring"
+msgid "IDS_ST_NPBODY_NO_SERVICE"
+msgstr "Xidmət yoxdur"
 
-msgid "IDS_QP_HEADER_REPLACE_QUICK_SETTING_BUTTON"
-msgstr "Çevik parametr düyməsini əvəz et"
+msgid "IDS_ST_NPBODY_EMERGENCY_CALLS_ONLY_ABB"
+msgstr "Yalnız fövqəladə zənglər"
 
-msgid "IDS_QP_HEADER_ADD_QUICK_SETTING_BUTTON"
-msgstr "Sürətli parametr düyməsi əlavə et"
+msgid "IDS_ST_HEADER_OUTDOOR"
+msgstr "Açıq havada"
 
-msgid "IDS_QP_POP_YOU_WILL_NO_LONGER_BE_ABLE_TO_USE_APPLICATIONS_SUCH_AS_INTERNET_NOTI_MSG"
-msgstr "Siz artıq mobil şəbəkələr vasitəsilə İnternet və Epoçt kimi proqramlardan istifadə edə bilməyəcəksiniz. Davam edilsin?"
+msgid "IDS_ST_BUTTON2_WI_FI_NTETHERING"
+msgstr "Wi-Fi\nbağlantı"
 
-msgid "IDS_QP_BUTTON2_SCREEN_N_MIRRORING"
-msgstr "Screen\nMirroring"
+msgid "IDS_ST_BUTTON2_WI_FI_ABB"
+msgstr "Wi-Fi"
 
-msgid "IDS_COM_BODY_BUTTON_T_TTS"
-msgstr "Düymə"
+msgid "IDS_ST_BUTTON2_TORCH_ABB"
+msgstr "Fənər"
 
-msgid "IDS_QP_BUTTON2_GPS"
+msgid "IDS_ST_BUTTON2_POWER_NSAVING"
+msgstr "Enerjiyə\nqənaət"
+
+msgid "IDS_ST_BUTTON2_MOBILE_NDATA"
+msgstr "Mobil\nməlumat"
+
+msgid "IDS_ST_BUTTON2_GPS_ABB"
 msgstr "GPS"
 
-msgid "IDS_QP_BUTTON_NOTIFICATION"
-msgstr "Bildiriş"
+msgid "IDS_ST_BUTTON2_FLIGHT_NMODE"
+msgstr "Uçuş\nrejimi"
+
+msgid "IDS_ST_BUTTON2_BLUETOOTH_ABB"
+msgstr "Bluetooth"
+
+msgid "IDS_ST_BUTTON2_AUTO_NROTATE"
+msgstr "Avto\nfırlat"
+
+msgid "IDS_ST_BODY_SIM_2"
+msgstr "SIM 2"
+
+msgid "IDS_ST_BODY_SIM_1"
+msgstr "SIM 1"
+
+msgid "IDS_ST_BODY_SCANNING_FOR_MOBILE_NETWORK_ING_ABB"
+msgstr "Mobil şəbəkə axtarılır..."
+
+msgid "IDS_ST_BODY_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
+msgstr "Şəbəkə xidmətlərinə daxil olmaq üçün SİM kartı daxil edin."
+
+msgid "IDS_ST_BODY_ALWAYS_ASK_ABB"
+msgstr "Həmişə soruş"
+
+msgid "IDS_SCP_BODY_UNABLE_TO_CONNECT_TO_MOBILE_NETWORKS_WHILE_FLIGHT_MODE_IS_ENABLED_CONNECT_TO_A_WI_FI_NETWORK_INSTEAD_OR_DISABLE_FLIGHT_MODE_AND_TRY_AGAIN"
+msgstr "Uçuş rejimi aktiv olduqda mobil şəbəkələrə qoşulmaq mümkün deyil. Əvəzinə Wi-Fi şəbəkəsinə qoşulun və ya Uçuş rejimini qeyri-aktiv edin və yenidən cəhd edin."
 
-msgid "IDS_COM_BUTTON_AGREE"
-msgstr "Razıyam"
+msgid "IDS_COM_BODY_SEARCHING"
+msgstr "Axtarılır"
 
-msgid "IDS_COM_BUTTON_DISAGREE"
-msgstr "Müvafiq deyil"
+msgid "IDS_QP_TPOP_UNABLE_TO_OPEN_PS"
+msgstr "%s açmaq mümkün deyil."
 
-msgid "IDS_ST_BODY_GPS_LOCATION_USE_CONTROLLED_BY_APPLICATIONS_MSG"
-msgstr "GPS məkanı və məkan məlumatlarınızdan istifadə istifadə etdiyiniz proqramlarla idarə olunur"
+msgid "IDS_QP_OPT_OUTDOORS_M_OUTDOOR_MODE_ABB"
+msgstr "Açq hava"
 
-msgid "IDS_ST_HEADER_USER_CONSENT"
-msgstr "İstifadəçi razılığı"
+msgid "IDS_QP_BUTTON2_PRIVATE_NMODE_ABB"
+msgstr "Şəxsi\nrejim"
 
index 41315eb..1750c86 100755 (executable)
--- a/po/bg.po
+++ b/po/bg.po
-msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
-msgstr "Уведомления"
+msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
+msgstr "Wi-Fi и Mobile AP не могат да бъдат активирани едновременно.. Деактивиране на Mobile AP?"
+
+msgid "IDS_TASKMGR_BUTTON_CLEAR_ALL"
+msgstr "Изтр. всч"
 
-msgid "IDS_WIFI_BODY_ALLSHARE_CAST"
-msgstr "AllShare Cast"
+msgid "IDS_IDLE_SBODY_TAP_HERE_TO_DISABLE_SAFE_MODE_ABB"
+msgstr "Чукн. тук за деакт. Безоп. реж."
 
-msgid "IDS_CALL_POP_CALLING_EMERG_ONLY"
+msgid "IDS_IDLE_POP_UNABLE_TO_LAUNCH_PS"
+msgstr "Не може да се стартира %s."
+
+msgid "IDS_IDLE_MBODY_EMERGENCY_CALLS_ONLY"
 msgstr "Само спешни повиквания"
 
-msgid "IDS_QP_BUTTON_ROTATION"
-msgstr "Въртене"
+msgid "IDS_IDLE_BODY_SEARCHING_ING"
+msgstr "Търсене..."
+
+msgid "IDS_IDLE_BODY_NO_SIM"
+msgstr "Няма SIM"
+
+msgid "IDS_IDLE_BODY_NO_SERVICE"
+msgstr "Няма услуга"
+
+msgid "IDS_IDLE_BODY_INVALID_SIM_CARD"
+msgstr "Невалидна SIM карта."
 
-msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
+msgid "IDS_IDLE_BODY_EMERGENCY_CALLS_ONLY"
+msgstr "Само спешни повиквания."
+
+msgid "IDS_QP_OPT_OUTDOORS_ABB"
+msgstr "Навън"
+
+msgid "IDS_QP_MBODY_SAFE_MODE_ENABLED"
+msgstr "Безоп. режим е активиран"
+
+msgid "IDS_QP_HEADER_NOTIFICATIONS_HPD_ABB"
 msgstr "Уведомления (%d)"
 
-msgid "IDS_QP_BUTTON_VIBRATION"
+msgid "IDS_QP_HEADER_CLEAR_ALL_ABB"
+msgstr "Изч.всички"
+
+msgid "IDS_QP_BUTTON_NOTIFICATION"
+msgstr "Уведом."
+
+msgid "IDS_QP_BUTTON_ALWAYS_ASK_ABB"
+msgstr "Питай винаги"
+
+msgid "IDS_QP_BUTTON2_WI_FI"
+msgstr "Wi-Fi"
+
+msgid "IDS_QP_BUTTON2_VIBRATE"
 msgstr "Вибрация"
 
-msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
-msgstr "Ð\97вÑ\8aнене Ð¸ Ð²Ð¸Ð±Ñ\80аÑ\86иÑ\8f"
+msgid "IDS_QP_BUTTON2_U_POWER_NSAVING_ABB"
+msgstr "УлÑ\82Ñ\80а\nпеÑ\81Ñ\82. ÐµÐ½."
 
-msgid "IDS_QP_TAB4_AUTO_ROTATION"
-msgstr "Ð\90вÑ\82ом. Ð·Ð°Ð²Ñ\8aÑ\80Ñ\82."
+msgid "IDS_QP_BUTTON2_TETHERING"
+msgstr "Ð\9fÑ\80ивÑ\8aÑ\80зване"
 
-msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
-msgstr "Ð\97аклÑ\8eÑ\87в. Ð·Ð°Ð²Ñ\8aÑ\80Ñ\82ане"
+msgid "IDS_QP_BUTTON2_SOUND_ABB"
+msgstr "Ð\97вÑ\83к"
 
-msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
-msgstr "Режим Ð·Ð°Ð¿Ð°Ð¼. Ñ\83Ñ\81Ñ\82Ñ\80ойÑ\81Ñ\82во"
+msgid "IDS_QP_BUTTON2_SOUND"
+msgstr "Ð\97вÑ\83к"
 
-msgid "IDS_QP_BUTTON_DISABLE"
-msgstr "Ð\97абÑ\80ани"
+msgid "IDS_QP_BUTTON2_PRIVATE_MODE"
+msgstr "Ð\9bиÑ\87ен Ñ\80ежим"
 
-msgid "IDS_QP_BUTTON_ENABLE"
-msgstr "РазÑ\80еÑ\88аване"
+msgid "IDS_QP_BUTTON2_POWER_N_SAVING"
+msgstr "Ð\9fеÑ\81Ñ\82. Ð½Ð°\nенеÑ\80г."
 
-msgid "IDS_COM_POP_UNSUPPORTED"
-msgstr "Ð\9dе Ñ\81е Ð¿Ð¾Ð´Ð´Ñ\8aÑ\80жа"
+msgid "IDS_QP_BUTTON2_MUTE_ABB"
+msgstr "СпиÑ\80ане Ð½Ð° Ð·Ð²Ñ\83ка"
 
-msgid "IDS_COM_SK_DISMISS"
-msgstr "Ð\9eÑ\82Ñ\85вÑ\8aÑ\80лÑ\8fне"
+msgid "IDS_QP_BUTTON2_MOBILE_DATA"
+msgstr "Ð\9cобилни\nданни"
 
-msgid "IDS_COM_POP_PELASE_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
-msgstr "Ð\9fоÑ\81Ñ\82авеÑ\82е SIM ÐºÐ°Ñ\80Ñ\82аÑ\82а, Ð·Ð° Ð´Ð° Ð¿Ð¾Ð»Ñ\83Ñ\87иÑ\82е Ð´Ð¾Ñ\81Ñ\82Ñ\8aп Ð´Ð¾ Ñ\83Ñ\81лÑ\83ги Ð½Ð° Ð¼Ñ\80ежаÑ\82а"
+msgid "IDS_QP_BUTTON2_LOCATION_ABB"
+msgstr "Ð\9cÑ\8fÑ\81Ñ\82о"
 
-msgid "IDS_COM_BODY_DO_NOT_ASK_AGAIN"
-msgstr "Ð\9dе Ð¿Ð¸Ñ\82ай Ð¿Ð¾Ð²ÐµÑ\87е"
+msgid "IDS_QP_BUTTON2_FLIGHT_N_MODE"
+msgstr "Режим\nполеÑ\82"
 
-msgid "IDS_QP_POP_INSERT_SIM_CARD_AND_RESTART_DEVICE_TO_USE_TETHERING"
-msgstr "Поставете SIM карта и рестартирайте устройството, за да използвате привързване"
+msgid "IDS_QP_BUTTON2_BLUETOOTH"
+msgstr "Bluetooth"
 
-msgid "IDS_QP_POP_CONNECTING_VIA_PACKET_DATA_MAY_INCUR_ADDITIONAL_CHARGES_CONTINUE_Q"
-msgstr "Ð\9fÑ\80и Ñ\81вÑ\8aÑ\80зване Ð·Ð° Ð¿Ð°ÐºÐµÑ\82ни Ð´Ð°Ð½Ð½Ð¸ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ñ\81е Ð½Ð°Ñ\87иÑ\81лÑ\8fÑ\82 Ð´Ð¾Ð¿Ñ\8aлниÑ\82елни Ñ\82акÑ\81и. Ð\9fÑ\80одÑ\8aлжаване?"
+msgid "IDS_QP_BUTTON2_AUTO_ROTATE"
+msgstr "Ð\90вÑ\82омаÑ\82. Ð·Ð°Ð²Ñ\8aÑ\80Ñ\82ане"
 
-msgid "IDS_QP_BODY_AUTO"
-msgstr "Ð\90вÑ\82о"
+msgid "IDS_QP_BUTTON2_ASSISTIVE_NLIGHT"
+msgstr "Ð\9fомоÑ\89на\nÑ\81веÑ\82л."
 
-msgid "IDS_QP_TAB_POWER_SAVING"
-msgstr "Пестене на енергия"
+msgid "IDS_QP_BODY_PM_ABB"
+msgstr "PM"
 
-msgid "IDS_QP_TAB_TETHERING"
-msgstr "Ð\9fÑ\80ивÑ\8aÑ\80зване"
+msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
+msgstr "УведомлениÑ\8f"
 
-msgid "IDS_QP_TAB_MOBILE_DATA"
-msgstr "Мобилни данни"
+msgid "IDS_QP_BODY_AM_ABB"
+msgstr "AM"
 
-msgid "IDS_QP_TAB_DRIVING_MODE"
-msgstr "Режим Ð¨Ð¾Ñ\84иÑ\80ане"
+msgid "IDS_ST_TPOP_UNABLE_TO_MAKE_VOICE_CALLS_VIDEO_CALLS_AND_SEND_TEXT_MESSAGES_USING_PS"
+msgstr "Ð\9dе Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ñ\81е Ð¸Ð·Ð²Ñ\8aÑ\80Ñ\88ваÑ\82 Ð³Ð»Ð°Ñ\81ови Ð¿Ð¾Ð²Ð¸ÐºÐ²Ð°Ð½Ð¸Ñ\8f, Ð²Ð¸Ð´ÐµÐ¾Ð¿Ð¾Ð²Ð¸ÐºÐ²Ð°Ð½Ð¸Ñ\8f Ð¸ Ð´Ð° Ñ\81е Ð¸Ð·Ð¿Ñ\80аÑ\89аÑ\82 Ñ\82екÑ\81Ñ\82ови Ñ\81Ñ\8aобÑ\89ениÑ\8f Ñ\87Ñ\80ез %s."
 
-msgid "IDS_COM_POP_UNABLE_TO_CONNECT_TO_MOBILE_NETWORK_WHILE_FLIGHT_MODE_IS_ENABLED_MSG"
-msgstr "Ð\9dе Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ñ\81е Ñ\81вÑ\8aÑ\80же ÐºÑ\8aм Ð¼Ð¾Ð±Ð¸Ð»Ð½Ð¸ Ð¼Ñ\80ежи, ÐºÐ¾Ð³Ð°Ñ\82о Ðµ Ð°ÐºÑ\82ивиÑ\80ан Ñ\80ежим Ð\9fолеÑ\82. Ð\92меÑ\81Ñ\82о Ñ\82ова Ñ\81е Ñ\81вÑ\8aÑ\80жеÑ\82е ÐºÑ\8aм Wi-Fi Ð¼Ñ\80ежа Ð¸Ð»Ð¸ Ð´ÐµÐ°ÐºÑ\82ивиÑ\80айÑ\82е Ñ\80ежим Ð\9fолеÑ\82 Ð¸ Ð¾Ð¿Ð¸Ñ\82айÑ\82е Ð¾Ñ\82ново"
+msgid "IDS_ST_TPOP_SELECT_SIM_CARD_FOR_OUTGOING_VOICE_CALLS_VIDEO_CALLS_AND_TEXT_MESSAGES"
+msgstr "Ð\98збеÑ\80еÑ\82е SIM ÐºÐ°Ñ\80Ñ\82а Ð·Ð° Ð¸Ð·Ñ\85одÑ\8fÑ\89и Ð³Ð»Ð°Ñ\81ови Ð¿Ð¾Ð²Ð¸ÐºÐ²Ð°Ð½Ð¸Ñ\8f, Ð²Ð¸Ð´ÐµÐ¾Ð¿Ð¾Ð²Ð¸ÐºÐ²Ð°Ð½Ð¸Ñ\8f Ð¸ Ñ\82екÑ\81Ñ\82ови Ñ\81Ñ\8aобÑ\89ениÑ\8f."
 
-msgid "IDS_QP_POP_WI_FI_TETHERING_CONSUMES_MORE_BATTERY_POWER_AND_INCREASES_YOUR_DATA_USAGE_CONTINUE_Q"
-msgstr "Wi-Fi привързване изразходва повече енергия от батерията и увеличава потреблението на данни. Продължаване?"
+msgid "IDS_ST_TPOP_OUTGOING_VOICE_CALLS_VIDEO_CALLS_AND_TEXT_MESSAGES_WILL_BE_MADE_USING_THE_PS_SIM_CARD"
+msgstr "Изходящи гласови повиквания, видеоповиквания и текстови съобщения ще се извършват чрез SIM карта %s."
 
-msgid "IDS_QP_POP_DISABLE_TETHERING_TO_USE_WI_FI"
-msgstr "Деактивирайте привързване, за да използвате Wi-Fi"
+msgid "IDS_ST_SK_OK"
+msgstr "OK"
 
-msgid "IDS_QP_POP_TO_ENABLE_POWER_SAVING_MODE_ENABLE_AT_LEAST_ONE_RELEVANT_FUNCTION"
-msgstr "Ð\97а Ð´Ð° Ð°ÐºÑ\82ивиÑ\80аÑ\82е Ñ\80ежим Ð\9fеÑ\81Ñ\82ене Ð½Ð° ÐµÐ½ÐµÑ\80гиÑ\8f, Ð°ÐºÑ\82ивиÑ\80айÑ\82е Ð¿Ð¾Ð½Ðµ ÐµÐ´Ð½Ð° Ñ\80елеванÑ\82на Ñ\84Ñ\83нкÑ\86иÑ\8f"
+msgid "IDS_ST_SK_NO"
+msgstr "Ð\9dе"
 
-msgid "IDS_QP_POP_TURN_OFF_WI_FI_TO_USE_TETHERING"
-msgstr "Ð\98зклÑ\8eÑ\87еÑ\82е Wi-Fi, Ð·Ð° Ð´Ð° Ð¸Ð·Ð¿Ð¾Ð»Ð·Ð²Ð°Ñ\82е Ð¿Ñ\80ивÑ\8aÑ\80зване"
+msgid "IDS_ST_POP_UNABLE_TO_INCREASE_BRIGHTNESS_FURTHER_BECAUSE_OF_PHONE_OVERHEATING"
+msgstr "ЯÑ\80коÑ\81Ñ\82Ñ\82а Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ñ\81е Ñ\83велиÑ\87и Ð¿Ð¾Ð²ÐµÑ\87е Ð¿Ð¾Ñ\80ади Ð¿Ñ\80егÑ\80Ñ\8fване Ð½Ð° Ñ\82елеÑ\84она."
 
-msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
-msgstr "Wi-Fi и Mobile AP не могат да бъдат активирани едновременно.. Деактивиране на Mobile AP?"
+msgid "IDS_ST_NPBODY_NO_SERVICE"
+msgstr "Няма услуга"
+
+msgid "IDS_ST_NPBODY_EMERGENCY_CALLS_ONLY_ABB"
+msgstr "Само спешни повиквания"
 
-msgid "IDS_ASCAST_HEADER_SCREEN_MIRRORING"
-msgstr "Ð\9eгледален Ñ\80ежим Ð½Ð° ÐµÐºÑ\80ана"
+msgid "IDS_ST_HEADER_OUTDOOR"
+msgstr "Ð\9dа Ð¾Ñ\82кÑ\80иÑ\82о"
 
-msgid "IDS_QP_HEADER_REPLACE_QUICK_SETTING_BUTTON"
-msgstr "Заместване на бутона за бърза настройка"
+msgid "IDS_ST_BUTTON2_WI_FI_NTETHERING"
+msgstr "Wi-Fi\nтетъринг"
 
-msgid "IDS_QP_HEADER_ADD_QUICK_SETTING_BUTTON"
-msgstr "Добавяне на бутон за бърза настройка"
+msgid "IDS_ST_BUTTON2_WI_FI_ABB"
+msgstr "Wi-Fi"
 
-msgid "IDS_QP_POP_YOU_WILL_NO_LONGER_BE_ABLE_TO_USE_APPLICATIONS_SUCH_AS_INTERNET_NOTI_MSG"
-msgstr "Ð\9fовеÑ\87е Ð½Ñ\8fма Ð´Ð° Ð¼Ð¾Ð¶ÐµÑ\82е Ð´Ð° Ð¸Ð·Ð¿Ð¾Ð»Ð·Ð²Ð°Ñ\82е Ð¿Ñ\80иложениÑ\8f, ÐºÐ°Ñ\82о Ð\98нÑ\82еÑ\80неÑ\82 Ð¸ Ð\98мейл, Ð¿Ñ\80ез Ð¼Ð¾Ð±Ð¸Ð»Ð½Ð¸ Ð¼Ñ\80ежи. Ð\9fÑ\80одÑ\8aлжаване?"
+msgid "IDS_ST_BUTTON2_TORCH_ABB"
+msgstr "ФенеÑ\80Ñ\87е"
 
-msgid "IDS_QP_BUTTON2_SCREEN_N_MIRRORING"
-msgstr "Screen\nMirroring"
+msgid "IDS_ST_BUTTON2_POWER_NSAVING"
+msgstr "Пестене\nенергия"
 
-msgid "IDS_COM_BODY_BUTTON_T_TTS"
-msgstr "Ð\91Ñ\83Ñ\82он"
+msgid "IDS_ST_BUTTON2_MOBILE_NDATA"
+msgstr "Ð\9cобилни\nданни"
 
-msgid "IDS_QP_BUTTON2_GPS"
+msgid "IDS_ST_BUTTON2_GPS_ABB"
 msgstr "GPS"
 
-msgid "IDS_QP_BUTTON_NOTIFICATION"
-msgstr "Уведом."
+msgid "IDS_ST_BUTTON2_FLIGHT_NMODE"
+msgstr "Режим\nполет"
+
+msgid "IDS_ST_BUTTON2_BLUETOOTH_ABB"
+msgstr "Bluetooth"
+
+msgid "IDS_ST_BUTTON2_AUTO_NROTATE"
+msgstr "Авто\nвъртене"
+
+msgid "IDS_ST_BODY_SIM_2"
+msgstr "SIM 2"
+
+msgid "IDS_ST_BODY_SIM_1"
+msgstr "SIM 1"
+
+msgid "IDS_ST_BODY_SCANNING_FOR_MOBILE_NETWORK_ING_ABB"
+msgstr "Сканиране за мобилна мрежа..."
+
+msgid "IDS_ST_BODY_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
+msgstr "Поставете SIM картата, за да получите достъп до услуги на мрежата."
+
+msgid "IDS_ST_BODY_ALWAYS_ASK_ABB"
+msgstr "Винаги питай"
+
+msgid "IDS_SCP_BODY_UNABLE_TO_CONNECT_TO_MOBILE_NETWORKS_WHILE_FLIGHT_MODE_IS_ENABLED_CONNECT_TO_A_WI_FI_NETWORK_INSTEAD_OR_DISABLE_FLIGHT_MODE_AND_TRY_AGAIN"
+msgstr "Не може да се свърже към мобилни мрежи, когато е активиран режим Полет. Вместо това се свържете към Wi-Fi мрежа или деактивирайте режим Полет и опитайте отново."
 
-msgid "IDS_COM_BUTTON_AGREE"
-msgstr "СÑ\8aглаÑ\81ен"
+msgid "IDS_COM_BODY_SEARCHING"
+msgstr "ТÑ\8aÑ\80Ñ\81ене"
 
-msgid "IDS_COM_BUTTON_DISAGREE"
-msgstr "Несъгласен"
+msgid "IDS_QP_TPOP_UNABLE_TO_OPEN_PS"
+msgstr "Не може да се отвори %s."
 
-msgid "IDS_ST_BODY_GPS_LOCATION_USE_CONTROLLED_BY_APPLICATIONS_MSG"
-msgstr "GPS местоположението и използването на вашите данни за местоположение се контролират от приложенията, които използвате"
+msgid "IDS_QP_OPT_OUTDOORS_M_OUTDOOR_MODE_ABB"
+msgstr "На откр."
 
-msgid "IDS_ST_HEADER_USER_CONSENT"
-msgstr "СÑ\8aглаÑ\81ие Ð¾Ñ\82 Ð¿Ð¾Ñ\82Ñ\80ебиÑ\82елÑ\8f"
+msgid "IDS_QP_BUTTON2_PRIVATE_NMODE_ABB"
+msgstr "Ð\9bиÑ\87ен\nÑ\80ежим"
 
index bcf570c..7fec3e5 100755 (executable)
--- a/po/ca.po
+++ b/po/ca.po
-msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
-msgstr "Notificacions"
+msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
+msgstr "No es poden activar els punt d'accés Wi-Fi i mòbil al mateix temps. Desactivar al punt d'accés mòbil?"
+
+msgid "IDS_TASKMGR_BUTTON_CLEAR_ALL"
+msgstr "Esbor tot"
+
+msgid "IDS_IDLE_SBODY_TAP_HERE_TO_DISABLE_SAFE_MODE_ABB"
+msgstr "Toqui per sortir de mode Segur."
+
+msgid "IDS_IDLE_POP_UNABLE_TO_LAUNCH_PS"
+msgstr "No es pot iniciar %s"
+
+msgid "IDS_IDLE_MBODY_EMERGENCY_CALLS_ONLY"
+msgstr "Només trucades emergència"
+
+msgid "IDS_IDLE_BODY_SEARCHING_ING"
+msgstr "Cercant..."
 
-msgid "IDS_WIFI_BODY_ALLSHARE_CAST"
-msgstr "AllShare Cast"
+msgid "IDS_IDLE_BODY_NO_SIM"
+msgstr "Sense SIM"
 
-msgid "IDS_CALL_POP_CALLING_EMERG_ONLY"
+msgid "IDS_IDLE_BODY_NO_SERVICE"
+msgstr "Sense servei"
+
+msgid "IDS_IDLE_BODY_INVALID_SIM_CARD"
+msgstr "Targeta SIM no vàlida"
+
+msgid "IDS_IDLE_BODY_EMERGENCY_CALLS_ONLY"
 msgstr "Només trucades d'emergència"
 
-msgid "IDS_QP_BUTTON_ROTATION"
-msgstr "Rotació"
+msgid "IDS_QP_OPT_OUTDOORS_ABB"
+msgstr "Exterior"
+
+msgid "IDS_QP_MBODY_SAFE_MODE_ENABLED"
+msgstr "Mode Segur activat"
 
-msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
+msgid "IDS_QP_HEADER_NOTIFICATIONS_HPD_ABB"
 msgstr "Notificacions (%d)"
 
-msgid "IDS_QP_BUTTON_VIBRATION"
-msgstr "Vibració"
+msgid "IDS_QP_HEADER_CLEAR_ALL_ABB"
+msgstr "Esbor tot"
 
-msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
-msgstr "So i vibració"
+msgid "IDS_QP_BUTTON_NOTIFICATION"
+msgstr "Notificac"
 
-msgid "IDS_QP_TAB4_AUTO_ROTATION"
-msgstr "Rotació auto."
+msgid "IDS_QP_BUTTON_ALWAYS_ASK_ABB"
+msgstr "Preguntar sempre"
 
-msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
-msgstr "Bloq de rotació"
+msgid "IDS_QP_BUTTON2_WI_FI"
+msgstr "Wi-Fi"
 
-msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
-msgstr "Mode emmagatzemat massiu"
+msgid "IDS_QP_BUTTON2_VIBRATE"
+msgstr "Vibrar"
 
-msgid "IDS_QP_BUTTON_DISABLE"
-msgstr "Desactiv"
+msgid "IDS_QP_BUTTON2_U_POWER_NSAVING_ABB"
+msgstr "Estalvi\nultra"
 
-msgid "IDS_QP_BUTTON_ENABLE"
-msgstr "Activar"
+msgid "IDS_QP_BUTTON2_TETHERING"
+msgstr "Ancoratge a xarxa"
 
-msgid "IDS_COM_POP_UNSUPPORTED"
-msgstr "No s'admet"
+msgid "IDS_QP_BUTTON2_SOUND_ABB"
+msgstr "So"
 
-msgid "IDS_COM_SK_DISMISS"
-msgstr "Descartar"
+msgid "IDS_QP_BUTTON2_SOUND"
+msgstr "So"
 
-msgid "IDS_COM_POP_PELASE_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
-msgstr "Insereixi la targeta SIM per a accedir als serveis de xarxa"
+msgid "IDS_QP_BUTTON2_PRIVATE_MODE"
+msgstr "Mode Privat"
 
-msgid "IDS_COM_BODY_DO_NOT_ASK_AGAIN"
-msgstr "No ho tornis a preguntar"
+msgid "IDS_QP_BUTTON2_POWER_N_SAVING"
+msgstr "Estalvi\nenergia"
 
-msgid "IDS_QP_POP_INSERT_SIM_CARD_AND_RESTART_DEVICE_TO_USE_TETHERING"
-msgstr "Insereixi una targeta SIM i reiniciï el dispositiu per utilitzar tethering"
+msgid "IDS_QP_BUTTON2_MUTE_ABB"
+msgstr "Silenci"
 
-msgid "IDS_QP_POP_CONNECTING_VIA_PACKET_DATA_MAY_INCUR_ADDITIONAL_CHARGES_CONTINUE_Q"
-msgstr "La connexió mitjançant paquet de dades pot suposar un cost addicional. Vol continuar?"
+msgid "IDS_QP_BUTTON2_MOBILE_DATA"
+msgstr "Dades\nmòbils"
 
-msgid "IDS_QP_BODY_AUTO"
-msgstr "Auto"
+msgid "IDS_QP_BUTTON2_LOCATION_ABB"
+msgstr "Ubicació"
 
-msgid "IDS_QP_TAB_POWER_SAVING"
-msgstr "Estalvi d'energia"
+msgid "IDS_QP_BUTTON2_FLIGHT_N_MODE"
+msgstr "Mode\nVol"
 
-msgid "IDS_QP_TAB_TETHERING"
-msgstr "Tethering"
+msgid "IDS_QP_BUTTON2_BLUETOOTH"
+msgstr "Bluetooth"
 
-msgid "IDS_QP_TAB_MOBILE_DATA"
-msgstr "Dades mòbils"
+msgid "IDS_QP_BUTTON2_AUTO_ROTATE"
+msgstr "Rotació auto"
 
-msgid "IDS_QP_TAB_DRIVING_MODE"
-msgstr "Mode de conducció"
+msgid "IDS_QP_BUTTON2_ASSISTIVE_NLIGHT"
+msgstr "Llum \nassist"
 
-msgid "IDS_COM_POP_UNABLE_TO_CONNECT_TO_MOBILE_NETWORK_WHILE_FLIGHT_MODE_IS_ENABLED_MSG"
-msgstr "No es pot connectar a xarxes mòbils mentre el mode Vol està habilitat. Connecti a una xarxa Wi-Fi en el seu lloc, o deshabiliti el mode Vol i torni-ho a intentar"
+msgid "IDS_QP_BODY_PM_ABB"
+msgstr "PM"
 
-msgid "IDS_QP_POP_WI_FI_TETHERING_CONSUMES_MORE_BATTERY_POWER_AND_INCREASES_YOUR_DATA_USAGE_CONTINUE_Q"
-msgstr "El tethering Wi-Fi consumeix més bateria i augmenta el consum de dades. Continuar?"
+msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
+msgstr "Notificacions"
 
-msgid "IDS_QP_POP_DISABLE_TETHERING_TO_USE_WI_FI"
-msgstr "Deshabilitar tethering per utilitzar Wi-Fi"
+msgid "IDS_QP_BODY_AM_ABB"
+msgstr "AM"
 
-msgid "IDS_QP_POP_TO_ENABLE_POWER_SAVING_MODE_ENABLE_AT_LEAST_ONE_RELEVANT_FUNCTION"
-msgstr "Per habilitar el mode d'estalvi d'energia, habiliti almenys una funció pertinent"
+msgid "IDS_ST_TPOP_UNABLE_TO_MAKE_VOICE_CALLS_VIDEO_CALLS_AND_SEND_TEXT_MESSAGES_USING_PS"
+msgstr "No es poden fer trucades de veu ni videotrucades, ni enviar missatges de text amb %s."
 
-msgid "IDS_QP_POP_TURN_OFF_WI_FI_TO_USE_TETHERING"
-msgstr "Desactivar el Wi-Fi per utilitzar tethering"
+msgid "IDS_ST_TPOP_SELECT_SIM_CARD_FOR_OUTGOING_VOICE_CALLS_VIDEO_CALLS_AND_TEXT_MESSAGES"
+msgstr "Seleccioni una targeta SIM per a trucades de veu de sortida, videotrucades i missatges de text."
 
-msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
-msgstr "No es poden activar els punt d'accés Wi-Fi i mòbil al mateix temps. Desactivar al punt d'accés mòbil?"
+msgid "IDS_ST_TPOP_OUTGOING_VOICE_CALLS_VIDEO_CALLS_AND_TEXT_MESSAGES_WILL_BE_MADE_USING_THE_PS_SIM_CARD"
+msgstr "Les trucades de veu de sortida, les videotrucades i els missatges de text es realitzaran amb la targeta SIM %s."
+
+msgid "IDS_ST_SK_OK"
+msgstr "Acceptar"
+
+msgid "IDS_ST_SK_NO"
+msgstr "No"
 
-msgid "IDS_ASCAST_HEADER_SCREEN_MIRRORING"
-msgstr "Simetria de pantalla"
+msgid "IDS_ST_POP_UNABLE_TO_INCREASE_BRIGHTNESS_FURTHER_BECAUSE_OF_PHONE_OVERHEATING"
+msgstr "No es pot incrementar més la brillantor a causa d'un sobreescalfament del telèfon"
 
-msgid "IDS_QP_HEADER_REPLACE_QUICK_SETTING_BUTTON"
-msgstr "Substituir botó d'ajustament ràpid"
+msgid "IDS_ST_NPBODY_NO_SERVICE"
+msgstr "Sense servei"
+
+msgid "IDS_ST_NPBODY_EMERGENCY_CALLS_ONLY_ABB"
+msgstr "Només trucades d'emergència"
 
-msgid "IDS_QP_HEADER_ADD_QUICK_SETTING_BUTTON"
-msgstr "Afegir botó d'ajustament ràpid"
+msgid "IDS_ST_HEADER_OUTDOOR"
+msgstr "A l'aire lliure"
 
-msgid "IDS_QP_POP_YOU_WILL_NO_LONGER_BE_ABLE_TO_USE_APPLICATIONS_SUCH_AS_INTERNET_NOTI_MSG"
-msgstr "Ja no podrà utilitzar aplicacions com ara Internet i el correu electrònic mitjançant xarxes de mòbil. Continuar?"
+msgid "IDS_ST_BUTTON2_WI_FI_NTETHERING"
+msgstr "Ancorat\nWi-Fi"
 
-msgid "IDS_QP_BUTTON2_SCREEN_N_MIRRORING"
-msgstr "Screen\nMirroring"
+msgid "IDS_ST_BUTTON2_WI_FI_ABB"
+msgstr "Wi-Fi"
 
-msgid "IDS_COM_BODY_BUTTON_T_TTS"
-msgstr "Botó"
+msgid "IDS_ST_BUTTON2_TORCH_ABB"
+msgstr "Llan-\nterna"
 
-msgid "IDS_QP_BUTTON2_GPS"
+msgid "IDS_ST_BUTTON2_POWER_NSAVING"
+msgstr "Estalvi\nenergia"
+
+msgid "IDS_ST_BUTTON2_MOBILE_NDATA"
+msgstr "Dades\nmòbils"
+
+msgid "IDS_ST_BUTTON2_GPS_ABB"
 msgstr "GPS"
 
-msgid "IDS_QP_BUTTON_NOTIFICATION"
-msgstr "Notificac"
+msgid "IDS_ST_BUTTON2_FLIGHT_NMODE"
+msgstr "Mode\nVol"
+
+msgid "IDS_ST_BUTTON2_BLUETOOTH_ABB"
+msgstr "Bluetooth"
+
+msgid "IDS_ST_BUTTON2_AUTO_NROTATE"
+msgstr "Rotació\nauto"
+
+msgid "IDS_ST_BODY_SIM_2"
+msgstr "SIM 2"
+
+msgid "IDS_ST_BODY_SIM_1"
+msgstr "SIM 1"
+
+msgid "IDS_ST_BODY_SCANNING_FOR_MOBILE_NETWORK_ING_ABB"
+msgstr "Cercant xarxa mòbil..."
+
+msgid "IDS_ST_BODY_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
+msgstr "Insereixi la targeta SIM per a accedir als serveis de xarxa"
+
+msgid "IDS_ST_BODY_ALWAYS_ASK_ABB"
+msgstr "Preguntar sempre"
+
+msgid "IDS_SCP_BODY_UNABLE_TO_CONNECT_TO_MOBILE_NETWORKS_WHILE_FLIGHT_MODE_IS_ENABLED_CONNECT_TO_A_WI_FI_NETWORK_INSTEAD_OR_DISABLE_FLIGHT_MODE_AND_TRY_AGAIN"
+msgstr "No es pot connectar a xarxes mòbils mentre el mode Vol està habilitat. Connecti's a una xarxa Wi-Fi en el seu lloc, o deshabiliti el mode Vol i torni-ho a intentar."
 
-msgid "IDS_COM_BUTTON_AGREE"
-msgstr "Aceptar"
+msgid "IDS_COM_BODY_SEARCHING"
+msgstr "S'està cercant"
 
-msgid "IDS_COM_BUTTON_DISAGREE"
-msgstr "No acceptar"
+msgid "IDS_QP_TPOP_UNABLE_TO_OPEN_PS"
+msgstr "No es pot obrir %s."
 
-msgid "IDS_ST_BODY_GPS_LOCATION_USE_CONTROLLED_BY_APPLICATIONS_MSG"
-msgstr "La ubicació GPS i l'ús de les dades de la ubicació les controlen les aplicacions que utilitza"
+msgid "IDS_QP_OPT_OUTDOORS_M_OUTDOOR_MODE_ABB"
+msgstr "Exterior"
 
-msgid "IDS_ST_HEADER_USER_CONSENT"
-msgstr "Consentiment d'usuari"
+msgid "IDS_QP_BUTTON2_PRIVATE_NMODE_ABB"
+msgstr "Mode\nPrivat"
 
index 4a15571..c78d34b 100755 (executable)
--- a/po/cs.po
+++ b/po/cs.po
-msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
-msgstr "Oznámení"
+msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
+msgstr "Wi-Fi a mobilní přístupový bod nelze aktivovat současně. Chcete deaktivovat mobilní přístupový bod?"
+
+msgid "IDS_TASKMGR_BUTTON_CLEAR_ALL"
+msgstr "Smazat vše"
 
-msgid "IDS_WIFI_BODY_ALLSHARE_CAST"
-msgstr "AllShare Cast"
+msgid "IDS_IDLE_SBODY_TAP_HERE_TO_DISABLE_SAFE_MODE_ABB"
+msgstr "Klepnutím vypnete Bezp. režim."
 
-msgid "IDS_CALL_POP_CALLING_EMERG_ONLY"
+msgid "IDS_IDLE_POP_UNABLE_TO_LAUNCH_PS"
+msgstr "Nelze spustit %s."
+
+msgid "IDS_IDLE_MBODY_EMERGENCY_CALLS_ONLY"
 msgstr "Pouze tísňová volání"
 
-msgid "IDS_QP_BUTTON_ROTATION"
-msgstr "Otočení"
+msgid "IDS_IDLE_BODY_SEARCHING_ING"
+msgstr "Hledání..."
+
+msgid "IDS_IDLE_BODY_NO_SIM"
+msgstr "Žádná SIM karta"
+
+msgid "IDS_IDLE_BODY_NO_SERVICE"
+msgstr "Žádné služby"
+
+msgid "IDS_IDLE_BODY_INVALID_SIM_CARD"
+msgstr "Chybná SIM karta."
 
-msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
+msgid "IDS_IDLE_BODY_EMERGENCY_CALLS_ONLY"
+msgstr "Pouze tísňová volání."
+
+msgid "IDS_QP_OPT_OUTDOORS_ABB"
+msgstr "Venku"
+
+msgid "IDS_QP_MBODY_SAFE_MODE_ENABLED"
+msgstr "Bezpečný režim zapnut"
+
+msgid "IDS_QP_HEADER_NOTIFICATIONS_HPD_ABB"
 msgstr "Oznámení (%d)"
 
-msgid "IDS_QP_BUTTON_VIBRATION"
+msgid "IDS_QP_HEADER_CLEAR_ALL_ABB"
+msgstr "Smazat vše"
+
+msgid "IDS_QP_BUTTON_NOTIFICATION"
+msgstr "Oznámení"
+
+msgid "IDS_QP_BUTTON_ALWAYS_ASK_ABB"
+msgstr "Vždy se dotázat"
+
+msgid "IDS_QP_BUTTON2_WI_FI"
+msgstr "Wi-Fi"
+
+msgid "IDS_QP_BUTTON2_VIBRATE"
 msgstr "Vibrace"
 
-msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
-msgstr "Zvuk a vibrace"
+msgid "IDS_QP_BUTTON2_U_POWER_NSAVING_ABB"
+msgstr "Ultra ús.\nrežim"
 
-msgid "IDS_QP_TAB4_AUTO_ROTATION"
-msgstr "Automat. otočení"
+msgid "IDS_QP_BUTTON2_TETHERING"
+msgstr "Sdílení připojení"
 
-msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
-msgstr "Zámek otočení"
+msgid "IDS_QP_BUTTON2_SOUND_ABB"
+msgstr "Zvuk"
 
-msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
-msgstr "Režim velkokap. pam. zař."
+msgid "IDS_QP_BUTTON2_SOUND"
+msgstr "Zvuk"
 
-msgid "IDS_QP_BUTTON_DISABLE"
-msgstr "Vypnout"
+msgid "IDS_QP_BUTTON2_PRIVATE_MODE"
+msgstr "Soukromý režim"
 
-msgid "IDS_QP_BUTTON_ENABLE"
-msgstr "Povolit"
+msgid "IDS_QP_BUTTON2_POWER_N_SAVING"
+msgstr "Úsporný\nrežim"
 
-msgid "IDS_COM_POP_UNSUPPORTED"
-msgstr "Není podporováno"
+msgid "IDS_QP_BUTTON2_MUTE_ABB"
+msgstr "Ztlumit"
 
-msgid "IDS_COM_SK_DISMISS"
-msgstr "Konec"
+msgid "IDS_QP_BUTTON2_MOBILE_DATA"
+msgstr "Mobilní\ndata"
 
-msgid "IDS_COM_POP_PELASE_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
-msgstr "Chcete-li používat síťové služby, vložte SIM kartu"
+msgid "IDS_QP_BUTTON2_LOCATION_ABB"
+msgstr "Umístění"
 
-msgid "IDS_COM_BODY_DO_NOT_ASK_AGAIN"
-msgstr "Příště se neptat"
+msgid "IDS_QP_BUTTON2_FLIGHT_N_MODE"
+msgstr "Režim\nLetadlo"
 
-msgid "IDS_QP_POP_INSERT_SIM_CARD_AND_RESTART_DEVICE_TO_USE_TETHERING"
-msgstr "Chcete-li použít sdílení připojení, vložte SIM kartu a restartujte zařízení"
+msgid "IDS_QP_BUTTON2_BLUETOOTH"
+msgstr "Bluetooth"
 
-msgid "IDS_QP_POP_CONNECTING_VIA_PACKET_DATA_MAY_INCUR_ADDITIONAL_CHARGES_CONTINUE_Q"
-msgstr "Připojení prostřednictvím datových paketů může zahrnovat další poplatky. Chcete pokračovat?"
+msgid "IDS_QP_BUTTON2_AUTO_ROTATE"
+msgstr "Automat. otočení"
 
-msgid "IDS_QP_BODY_AUTO"
-msgstr "Automaticky"
+msgid "IDS_QP_BUTTON2_ASSISTIVE_NLIGHT"
+msgstr "Pomocné\nosvětl."
 
-msgid "IDS_QP_TAB_POWER_SAVING"
-msgstr "Úsporný režim"
+msgid "IDS_QP_BODY_PM_ABB"
+msgstr "od"
 
-msgid "IDS_QP_TAB_TETHERING"
-msgstr "Sdílení internetového připojení"
+msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
+msgstr "Oznámení"
 
-msgid "IDS_QP_TAB_MOBILE_DATA"
-msgstr "Mobilní data"
+msgid "IDS_QP_BODY_AM_ABB"
+msgstr "do"
 
-msgid "IDS_QP_TAB_DRIVING_MODE"
-msgstr "Režim Vozidlo"
+msgid "IDS_ST_TPOP_UNABLE_TO_MAKE_VOICE_CALLS_VIDEO_CALLS_AND_SEND_TEXT_MESSAGES_USING_PS"
+msgstr "Pomocí %s nelze uskutečňovat hlasové hovory, videohovory a odesílat textové zprávy."
 
-msgid "IDS_COM_POP_UNABLE_TO_CONNECT_TO_MOBILE_NETWORK_WHILE_FLIGHT_MODE_IS_ENABLED_MSG"
-msgstr "V režimu Letadlo není možné se připojit k mobilním sítím. Připojte se pomocí sítě Wi-Fi, nebo vypněte režim Letadlo a opakujte akci"
+msgid "IDS_ST_TPOP_SELECT_SIM_CARD_FOR_OUTGOING_VOICE_CALLS_VIDEO_CALLS_AND_TEXT_MESSAGES"
+msgstr "Vyberte SIM kartu pro odchozí hlasové hovory, videohovory a textové zprávy."
 
-msgid "IDS_QP_POP_WI_FI_TETHERING_CONSUMES_MORE_BATTERY_POWER_AND_INCREASES_YOUR_DATA_USAGE_CONTINUE_Q"
-msgstr "Sdílení připojení Wi-Fi spotřebovává více energie z baterie a zvyšuje využívání dat. Pokračovat?"
+msgid "IDS_ST_TPOP_OUTGOING_VOICE_CALLS_VIDEO_CALLS_AND_TEXT_MESSAGES_WILL_BE_MADE_USING_THE_PS_SIM_CARD"
+msgstr "Odchozí hlasové hovory, videohovory a textové zprávy budou uskutečňovány pomocí SIM karty %s."
 
-msgid "IDS_QP_POP_DISABLE_TETHERING_TO_USE_WI_FI"
-msgstr "Chcete-li použít Wi-Fi, vypněte sdílení připojení k Intern."
+msgid "IDS_ST_SK_OK"
+msgstr "OK"
 
-msgid "IDS_QP_POP_TO_ENABLE_POWER_SAVING_MODE_ENABLE_AT_LEAST_ONE_RELEVANT_FUNCTION"
-msgstr "Chcete-li zapnout Úsporný režim, zapněte alespoň jednu související funkci"
+msgid "IDS_ST_SK_NO"
+msgstr "Ne"
 
-msgid "IDS_QP_POP_TURN_OFF_WI_FI_TO_USE_TETHERING"
-msgstr "Chcete použít sdílení připojení k Internetu, vypněte Wi-Fi"
+msgid "IDS_ST_POP_UNABLE_TO_INCREASE_BRIGHTNESS_FURTHER_BECAUSE_OF_PHONE_OVERHEATING"
+msgstr "Nelze více zvýšit jas z důvodu přehřívání telefonu."
 
-msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
-msgstr "Wi-Fi a mobilní přístupový bod nelze aktivovat současně. Chcete deaktivovat mobilní přístupový bod?"
+msgid "IDS_ST_NPBODY_NO_SERVICE"
+msgstr "Žádné služby"
+
+msgid "IDS_ST_NPBODY_EMERGENCY_CALLS_ONLY_ABB"
+msgstr "Pouze tísňová volání"
 
-msgid "IDS_ASCAST_HEADER_SCREEN_MIRRORING"
-msgstr "Zrcadlení obrazovky"
+msgid "IDS_ST_HEADER_OUTDOOR"
+msgstr "Venku"
 
-msgid "IDS_QP_HEADER_REPLACE_QUICK_SETTING_BUTTON"
-msgstr "Vyměnit tlačítko rychlého nastavení"
+msgid "IDS_ST_BUTTON2_WI_FI_NTETHERING"
+msgstr "Sd. př.\nWi-Fi"
 
-msgid "IDS_QP_HEADER_ADD_QUICK_SETTING_BUTTON"
-msgstr "Přidat tlačítko rychlého nastavení"
+msgid "IDS_ST_BUTTON2_WI_FI_ABB"
+msgstr "Wi-Fi"
 
-msgid "IDS_QP_POP_YOU_WILL_NO_LONGER_BE_ABLE_TO_USE_APPLICATIONS_SUCH_AS_INTERNET_NOTI_MSG"
-msgstr "Nebudete moci dále používat aplikace jako je Internet a E-mail prostřednictvím mobilních sítí. Chcete pokračovat?"
+msgid "IDS_ST_BUTTON2_TORCH_ABB"
+msgstr "Baterka"
 
-msgid "IDS_QP_BUTTON2_SCREEN_N_MIRRORING"
-msgstr "Screen\nMirroring"
+msgid "IDS_ST_BUTTON2_POWER_NSAVING"
+msgstr "Úsporný\nrežim"
 
-msgid "IDS_COM_BODY_BUTTON_T_TTS"
-msgstr "Tlačítko"
+msgid "IDS_ST_BUTTON2_MOBILE_NDATA"
+msgstr "Mobilní\ndata"
 
-msgid "IDS_QP_BUTTON2_GPS"
+msgid "IDS_ST_BUTTON2_GPS_ABB"
 msgstr "GPS"
 
-msgid "IDS_QP_BUTTON_NOTIFICATION"
-msgstr "Oznámení"
+msgid "IDS_ST_BUTTON2_FLIGHT_NMODE"
+msgstr "Režim\nLetadlo"
+
+msgid "IDS_ST_BUTTON2_BLUETOOTH_ABB"
+msgstr "Bluetooth"
+
+msgid "IDS_ST_BUTTON2_AUTO_NROTATE"
+msgstr "Autom.\notočení"
+
+msgid "IDS_ST_BODY_SIM_2"
+msgstr "SIM 2"
+
+msgid "IDS_ST_BODY_SIM_1"
+msgstr "SIM 1"
+
+msgid "IDS_ST_BODY_SCANNING_FOR_MOBILE_NETWORK_ING_ABB"
+msgstr "Hledání mobilní sítě..."
+
+msgid "IDS_ST_BODY_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
+msgstr "Chcete-li používat síťové služby, vložte SIM kartu."
+
+msgid "IDS_ST_BODY_ALWAYS_ASK_ABB"
+msgstr "Vždy se dotázat"
+
+msgid "IDS_SCP_BODY_UNABLE_TO_CONNECT_TO_MOBILE_NETWORKS_WHILE_FLIGHT_MODE_IS_ENABLED_CONNECT_TO_A_WI_FI_NETWORK_INSTEAD_OR_DISABLE_FLIGHT_MODE_AND_TRY_AGAIN"
+msgstr "V režimu Letadlo není možné se připojit k mobilním sítím. Připojte se pomocí sítě Wi-Fi, nebo vypněte režim Letadlo a opakujte akci."
 
-msgid "IDS_COM_BUTTON_AGREE"
-msgstr "Souhlasím"
+msgid "IDS_COM_BODY_SEARCHING"
+msgstr "Vyhledávání"
 
-msgid "IDS_COM_BUTTON_DISAGREE"
-msgstr "Nesouhlasím"
+msgid "IDS_QP_TPOP_UNABLE_TO_OPEN_PS"
+msgstr "%s nelze spustit."
 
-msgid "IDS_ST_BODY_GPS_LOCATION_USE_CONTROLLED_BY_APPLICATIONS_MSG"
-msgstr "Poloha GPS a použití údajů o poloze je řízeno používanými aplikacemi"
+msgid "IDS_QP_OPT_OUTDOORS_M_OUTDOOR_MODE_ABB"
+msgstr "Venku"
 
-msgid "IDS_ST_HEADER_USER_CONSENT"
-msgstr "Souhlas uživatele"
+msgid "IDS_QP_BUTTON2_PRIVATE_NMODE_ABB"
+msgstr "Soukromý\nrežim"
 
index 46fc74a..775d307 100755 (executable)
--- a/po/da.po
+++ b/po/da.po
-msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
-msgstr "Meddelelser"
+msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
+msgstr "Både Wi-Fi og mobilt adgangspunkt kan ikke være aktiveret på samme tid. Deaktivér mobilt adgangspunkt?"
+
+msgid "IDS_TASKMGR_BUTTON_CLEAR_ALL"
+msgstr "Slet alle"
 
-msgid "IDS_WIFI_BODY_ALLSHARE_CAST"
-msgstr "AllShare Cast"
+msgid "IDS_IDLE_SBODY_TAP_HERE_TO_DISABLE_SAFE_MODE_ABB"
+msgstr "Tryk for at deakt. sik. tilst."
 
-msgid "IDS_CALL_POP_CALLING_EMERG_ONLY"
+msgid "IDS_IDLE_POP_UNABLE_TO_LAUNCH_PS"
+msgstr "Kunne ikke starte %s."
+
+msgid "IDS_IDLE_MBODY_EMERGENCY_CALLS_ONLY"
 msgstr "Kun nødopkald"
 
-msgid "IDS_QP_BUTTON_ROTATION"
-msgstr "Rotation"
+msgid "IDS_IDLE_BODY_SEARCHING_ING"
+msgstr "Søger ..."
+
+msgid "IDS_IDLE_BODY_NO_SIM"
+msgstr "Intet SIM-kort"
+
+msgid "IDS_IDLE_BODY_NO_SERVICE"
+msgstr "Ingen dækning"
+
+msgid "IDS_IDLE_BODY_INVALID_SIM_CARD"
+msgstr "Ugyldigt SIM-kort."
 
-msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
+msgid "IDS_IDLE_BODY_EMERGENCY_CALLS_ONLY"
+msgstr "Kun nødopkald."
+
+msgid "IDS_QP_OPT_OUTDOORS_ABB"
+msgstr "Udendørs"
+
+msgid "IDS_QP_MBODY_SAFE_MODE_ENABLED"
+msgstr "Sikker tilstand aktiveret"
+
+msgid "IDS_QP_HEADER_NOTIFICATIONS_HPD_ABB"
 msgstr "Meddelelser (%d)"
 
-msgid "IDS_QP_BUTTON_VIBRATION"
-msgstr "Vibration"
+msgid "IDS_QP_HEADER_CLEAR_ALL_ABB"
+msgstr "Ryd alle"
 
-msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
-msgstr "Lyd og vibration"
+msgid "IDS_QP_BUTTON_NOTIFICATION"
+msgstr "Besked"
 
-msgid "IDS_QP_TAB4_AUTO_ROTATION"
-msgstr "Auto rotation"
+msgid "IDS_QP_BUTTON_ALWAYS_ASK_ABB"
+msgstr "Spørg altid"
 
-msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
-msgstr "Lås rotation"
+msgid "IDS_QP_BUTTON2_WI_FI"
+msgstr "Wi-Fi"
 
-msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
-msgstr "Masselager-tilstand"
+msgid "IDS_QP_BUTTON2_VIBRATE"
+msgstr "Vibrer"
 
-msgid "IDS_QP_BUTTON_DISABLE"
-msgstr "Deaktivér"
+msgid "IDS_QP_BUTTON2_U_POWER_NSAVING_ABB"
+msgstr "U.strøm\nbespar."
 
-msgid "IDS_QP_BUTTON_ENABLE"
-msgstr "Aktivér"
+msgid "IDS_QP_BUTTON2_TETHERING"
+msgstr "Internetdeling"
 
-msgid "IDS_COM_POP_UNSUPPORTED"
-msgstr "Understøttes ikke"
+msgid "IDS_QP_BUTTON2_SOUND_ABB"
+msgstr "Lyd"
 
-msgid "IDS_COM_SK_DISMISS"
-msgstr "Afvis"
+msgid "IDS_QP_BUTTON2_SOUND"
+msgstr "Lyd"
 
-msgid "IDS_COM_POP_PELASE_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
-msgstr "Indsæt SIM-kortet for at få adgang til netværkstjenesterne"
+msgid "IDS_QP_BUTTON2_PRIVATE_MODE"
+msgstr "Privat tilstand"
 
-msgid "IDS_COM_BODY_DO_NOT_ASK_AGAIN"
-msgstr "Spørg ikke igen"
+msgid "IDS_QP_BUTTON2_POWER_N_SAVING"
+msgstr "Strøm-\nbespar."
 
-msgid "IDS_QP_POP_INSERT_SIM_CARD_AND_RESTART_DEVICE_TO_USE_TETHERING"
-msgstr "Isæt SIM-kort, og genstart enhed for at bruge deling"
+msgid "IDS_QP_BUTTON2_MUTE_ABB"
+msgstr "Lydløs"
 
-msgid "IDS_QP_POP_CONNECTING_VIA_PACKET_DATA_MAY_INCUR_ADDITIONAL_CHARGES_CONTINUE_Q"
-msgstr "Tilslutning via pakkedata kan medføre ekstra gebyrer. Fortsæt?"
+msgid "IDS_QP_BUTTON2_MOBILE_DATA"
+msgstr "Mobile\ndata"
 
-msgid "IDS_QP_BODY_AUTO"
-msgstr "Auto"
+msgid "IDS_QP_BUTTON2_LOCATION_ABB"
+msgstr "Placer."
 
-msgid "IDS_QP_TAB_POWER_SAVING"
-msgstr "Strøm\n-besparelse"
+msgid "IDS_QP_BUTTON2_FLIGHT_N_MODE"
+msgstr "Fly-\ntilstand"
 
-msgid "IDS_QP_TAB_TETHERING"
-msgstr "Internetdeling"
+msgid "IDS_QP_BUTTON2_BLUETOOTH"
+msgstr "Bluetooth"
+
+msgid "IDS_QP_BUTTON2_AUTO_ROTATE"
+msgstr "Roter automatisk"
+
+msgid "IDS_QP_BUTTON2_ASSISTIVE_NLIGHT"
+msgstr "Hjælpe-\nlys"
 
-msgid "IDS_QP_TAB_MOBILE_DATA"
-msgstr "Mobildata"
+msgid "IDS_QP_BODY_PM_ABB"
+msgstr "PM"
 
-msgid "IDS_QP_TAB_DRIVING_MODE"
-msgstr "Køretilstand"
+msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
+msgstr "Meddelelser"
 
-msgid "IDS_COM_POP_UNABLE_TO_CONNECT_TO_MOBILE_NETWORK_WHILE_FLIGHT_MODE_IS_ENABLED_MSG"
-msgstr "Kan ikke oprette forbindelse til mobile netværk, da Flytilstand er aktiveret. Opret forbindelse til Wi-Fi-netværk i stedet, eller deaktivér Flytilstand og prøv igen"
+msgid "IDS_QP_BODY_AM_ABB"
+msgstr "AM"
 
-msgid "IDS_QP_POP_WI_FI_TETHERING_CONSUMES_MORE_BATTERY_POWER_AND_INCREASES_YOUR_DATA_USAGE_CONTINUE_Q"
-msgstr "Wi-Fi-deling bruger mere batteri og forøger dit dataforbrug. Fortsæt?"
+msgid "IDS_ST_TPOP_UNABLE_TO_MAKE_VOICE_CALLS_VIDEO_CALLS_AND_SEND_TEXT_MESSAGES_USING_PS"
+msgstr "Kan ikke foretage stemmeopkald, videoopkald og sende sms-beskeder med %s."
 
-msgid "IDS_QP_POP_DISABLE_TETHERING_TO_USE_WI_FI"
-msgstr "Deaktivér deling for at bruge Wi-Fi"
+msgid "IDS_ST_TPOP_SELECT_SIM_CARD_FOR_OUTGOING_VOICE_CALLS_VIDEO_CALLS_AND_TEXT_MESSAGES"
+msgstr "Vælg et SIM-kort til udgående stemmeopkald, videoopkald og sms-beskeder."
 
-msgid "IDS_QP_POP_TO_ENABLE_POWER_SAVING_MODE_ENABLE_AT_LEAST_ONE_RELEVANT_FUNCTION"
-msgstr "Aktivér mindst én relevant funktion for at aktivere Strømsparetilstand"
+msgid "IDS_ST_TPOP_OUTGOING_VOICE_CALLS_VIDEO_CALLS_AND_TEXT_MESSAGES_WILL_BE_MADE_USING_THE_PS_SIM_CARD"
+msgstr "Udgående stemmeopkald, videoopkald og sms-beskeder vil blive foretaget med %s-SIM-kortet."
 
-msgid "IDS_QP_POP_TURN_OFF_WI_FI_TO_USE_TETHERING"
-msgstr "Sluk for Wi-Fi for at bruge deling"
+msgid "IDS_ST_SK_OK"
+msgstr "OK"
 
-msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
-msgstr "Både Wi-Fi og mobilt adgangspunkt kan ikke være aktiveret på samme tid. Deaktivér mobilt adgangspunkt?"
+msgid "IDS_ST_SK_NO"
+msgstr "Nej"
 
-msgid "IDS_ASCAST_HEADER_SCREEN_MIRRORING"
-msgstr "Skærmspejling"
+msgid "IDS_ST_POP_UNABLE_TO_INCREASE_BRIGHTNESS_FURTHER_BECAUSE_OF_PHONE_OVERHEATING"
+msgstr "Det er ikke muligt at øge lysstyrken yderligere, fordi telefonen kan overophedes."
 
-msgid "IDS_QP_HEADER_REPLACE_QUICK_SETTING_BUTTON"
-msgstr "Erstat hurtig indstillingsknap"
+msgid "IDS_ST_NPBODY_NO_SERVICE"
+msgstr "Ingen dækning"
 
-msgid "IDS_QP_HEADER_ADD_QUICK_SETTING_BUTTON"
-msgstr "Tilføj hurtig indstillingsknap"
+msgid "IDS_ST_NPBODY_EMERGENCY_CALLS_ONLY_ABB"
+msgstr "Kun nødopkald"
 
-msgid "IDS_QP_POP_YOU_WILL_NO_LONGER_BE_ABLE_TO_USE_APPLICATIONS_SUCH_AS_INTERNET_NOTI_MSG"
-msgstr "Du kan ikke længere bruge programmer, såsom internettet og e-mail via mobile netværk. Fortsæt?"
+msgid "IDS_ST_HEADER_OUTDOOR"
+msgstr "Udendørs"
 
-msgid "IDS_QP_BUTTON2_SCREEN_N_MIRRORING"
-msgstr "Screen\nMirroring"
+msgid "IDS_ST_BUTTON2_WI_FI_NTETHERING"
+msgstr "Wi-Fi-\ndeling"
 
-msgid "IDS_COM_BODY_BUTTON_T_TTS"
-msgstr "Tast"
+msgid "IDS_ST_BUTTON2_WI_FI_ABB"
+msgstr "Wi-Fi"
 
-msgid "IDS_QP_BUTTON2_GPS"
+msgid "IDS_ST_BUTTON2_TORCH_ABB"
+msgstr "Lommelygte"
+
+msgid "IDS_ST_BUTTON2_POWER_NSAVING"
+msgstr "Strøm-\nbespar."
+
+msgid "IDS_ST_BUTTON2_MOBILE_NDATA"
+msgstr "Mobile\ndata"
+
+msgid "IDS_ST_BUTTON2_GPS_ABB"
 msgstr "GPS"
 
-msgid "IDS_QP_BUTTON_NOTIFICATION"
-msgstr "Besked"
+msgid "IDS_ST_BUTTON2_FLIGHT_NMODE"
+msgstr "Fly-\ntilstand"
+
+msgid "IDS_ST_BUTTON2_BLUETOOTH_ABB"
+msgstr "Bluetooth"
+
+msgid "IDS_ST_BUTTON2_AUTO_NROTATE"
+msgstr "Auto-\nroter"
+
+msgid "IDS_ST_BODY_SIM_2"
+msgstr "SIM 2"
+
+msgid "IDS_ST_BODY_SIM_1"
+msgstr "SIM 1"
+
+msgid "IDS_ST_BODY_SCANNING_FOR_MOBILE_NETWORK_ING_ABB"
+msgstr "Søger efter mobilt netværk ..."
+
+msgid "IDS_ST_BODY_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
+msgstr "Indsæt SIM-kortet for at få adgang til netværkstjenesterne."
+
+msgid "IDS_ST_BODY_ALWAYS_ASK_ABB"
+msgstr "Spørg altid"
+
+msgid "IDS_SCP_BODY_UNABLE_TO_CONNECT_TO_MOBILE_NETWORKS_WHILE_FLIGHT_MODE_IS_ENABLED_CONNECT_TO_A_WI_FI_NETWORK_INSTEAD_OR_DISABLE_FLIGHT_MODE_AND_TRY_AGAIN"
+msgstr "Kan ikke oprette forbindelse til mobile netværk, da Flytilstand er aktiveret. Opret forbindelse til et Wi-Fi-netværk i stedet, eller deaktiver Flytilstand, og prøv igen."
 
-msgid "IDS_COM_BUTTON_AGREE"
-msgstr "Acceptér"
+msgid "IDS_COM_BODY_SEARCHING"
+msgstr "Søger"
 
-msgid "IDS_COM_BUTTON_DISAGREE"
-msgstr "Uenig"
+msgid "IDS_QP_TPOP_UNABLE_TO_OPEN_PS"
+msgstr "Kunne ikke åbne: %s."
 
-msgid "IDS_ST_BODY_GPS_LOCATION_USE_CONTROLLED_BY_APPLICATIONS_MSG"
-msgstr "GPS-placering og brug af dine placeringsdata styres af det program, du anvender"
+msgid "IDS_QP_OPT_OUTDOORS_M_OUTDOOR_MODE_ABB"
+msgstr "Udendørs"
 
-msgid "IDS_ST_HEADER_USER_CONSENT"
-msgstr "Brugersamtykke"
+msgid "IDS_QP_BUTTON2_PRIVATE_NMODE_ABB"
+msgstr "Privat\ntilstand"
 
diff --git a/po/de.po b/po/de.po
new file mode 100644 (file)
index 0000000..49174fe
--- /dev/null
+++ b/po/de.po
@@ -0,0 +1,186 @@
+msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
+msgstr "WLAN und Mobile AP können nicht zur gleichen Zeit aktiviert werden. Mobile AP deaktivieren?"
+
+msgid "IDS_TASKMGR_BUTTON_CLEAR_ALL"
+msgstr "Alle löschen"
+
+msgid "IDS_IDLE_SBODY_TAP_HERE_TO_DISABLE_SAFE_MODE_ABB"
+msgstr "Tipp., um sich. Mod. zu deakt."
+
+msgid "IDS_IDLE_POP_UNABLE_TO_LAUNCH_PS"
+msgstr "%s kann nicht gestartet werden"
+
+msgid "IDS_IDLE_MBODY_EMERGENCY_CALLS_ONLY"
+msgstr "Nur Notrufe"
+
+msgid "IDS_IDLE_BODY_SEARCHING_ING"
+msgstr "Suche läuft..."
+
+msgid "IDS_IDLE_BODY_NO_SIM"
+msgstr "Keine SIM"
+
+msgid "IDS_IDLE_BODY_NO_SERVICE"
+msgstr "Kein Netz"
+
+msgid "IDS_IDLE_BODY_INVALID_SIM_CARD"
+msgstr "Ungültige SIM-Karte"
+
+msgid "IDS_IDLE_BODY_EMERGENCY_CALLS_ONLY"
+msgstr "Nur Notrufe möglich"
+
+msgid "IDS_QP_OPT_OUTDOORS_ABB"
+msgstr "Outdoor"
+
+msgid "IDS_QP_MBODY_SAFE_MODE_ENABLED"
+msgstr "Sicherer Modus aktiviert."
+
+msgid "IDS_QP_HEADER_NOTIFICATIONS_HPD_ABB"
+msgstr "Benachrichtig. (%d)"
+
+msgid "IDS_QP_HEADER_CLEAR_ALL_ABB"
+msgstr "Löschen"
+
+msgid "IDS_QP_BUTTON_NOTIFICATION"
+msgstr "Benachr."
+
+msgid "IDS_QP_BUTTON_ALWAYS_ASK_ABB"
+msgstr "Immer fragen"
+
+msgid "IDS_QP_BUTTON2_WI_FI"
+msgstr "WLAN"
+
+msgid "IDS_QP_BUTTON2_VIBRATE"
+msgstr "Vibrieren"
+
+msgid "IDS_QP_BUTTON2_U_POWER_NSAVING_ABB"
+msgstr "Ultra-\nsparen"
+
+msgid "IDS_QP_BUTTON2_TETHERING"
+msgstr "Tethering"
+
+msgid "IDS_QP_BUTTON2_SOUND_ABB"
+msgstr "Ton"
+
+msgid "IDS_QP_BUTTON2_SOUND"
+msgstr "Ton"
+
+msgid "IDS_QP_BUTTON2_PRIVATE_MODE"
+msgstr "Privater Modus"
+
+msgid "IDS_QP_BUTTON2_POWER_N_SAVING"
+msgstr "Energie\nsparen"
+
+msgid "IDS_QP_BUTTON2_MUTE_ABB"
+msgstr "Stumm"
+
+msgid "IDS_QP_BUTTON2_MOBILE_DATA"
+msgstr "Mobile\nDaten"
+
+msgid "IDS_QP_BUTTON2_LOCATION_ABB"
+msgstr "GPS"
+
+msgid "IDS_QP_BUTTON2_FLIGHT_N_MODE"
+msgstr "Offline-\nModus"
+
+msgid "IDS_QP_BUTTON2_BLUETOOTH"
+msgstr "Bluetooth"
+
+msgid "IDS_QP_BUTTON2_AUTO_ROTATE"
+msgstr "Auto-Rotation"
+
+msgid "IDS_QP_BUTTON2_ASSISTIVE_NLIGHT"
+msgstr "Assistenz-\nlicht"
+
+msgid "IDS_QP_BODY_PM_ABB"
+msgstr "PM"
+
+msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
+msgstr "Benachricht."
+
+msgid "IDS_QP_BODY_AM_ABB"
+msgstr "AM"
+
+msgid "IDS_ST_TPOP_UNABLE_TO_MAKE_VOICE_CALLS_VIDEO_CALLS_AND_SEND_TEXT_MESSAGES_USING_PS"
+msgstr "Mit %s sind keine Sprachanrufe, Videoanrufe und Textnachrichten möglich."
+
+msgid "IDS_ST_TPOP_SELECT_SIM_CARD_FOR_OUTGOING_VOICE_CALLS_VIDEO_CALLS_AND_TEXT_MESSAGES"
+msgstr "Wählen Sie eine SIM-Karte für ausgehende Sprachanrufe, Videoanrufe und Textnachrichten aus."
+
+msgid "IDS_ST_TPOP_OUTGOING_VOICE_CALLS_VIDEO_CALLS_AND_TEXT_MESSAGES_WILL_BE_MADE_USING_THE_PS_SIM_CARD"
+msgstr "Für ausgehende Sprachanrufe, Videoanrufe und Textnachrichten wird die SIM-Karte „%s“ verwendet."
+
+msgid "IDS_ST_SK_OK"
+msgstr "OK"
+
+msgid "IDS_ST_SK_NO"
+msgstr "Nein"
+
+msgid "IDS_ST_POP_UNABLE_TO_INCREASE_BRIGHTNESS_FURTHER_BECAUSE_OF_PHONE_OVERHEATING"
+msgstr "Helligkeit kann wegen Überhitzen des Geräts nicht weiter angehoben werden"
+
+msgid "IDS_ST_NPBODY_NO_SERVICE"
+msgstr "Kein Netz"
+
+msgid "IDS_ST_NPBODY_EMERGENCY_CALLS_ONLY_ABB"
+msgstr "Nur Notrufe"
+
+msgid "IDS_ST_HEADER_OUTDOOR"
+msgstr "Im Freien"
+
+msgid "IDS_ST_BUTTON2_WI_FI_NTETHERING"
+msgstr "WLAN-\nTethering"
+
+msgid "IDS_ST_BUTTON2_WI_FI_ABB"
+msgstr "WLAN"
+
+msgid "IDS_ST_BUTTON2_TORCH_ABB"
+msgstr "Taschen-\nlampe"
+
+msgid "IDS_ST_BUTTON2_POWER_NSAVING"
+msgstr "Energie-\nsparen"
+
+msgid "IDS_ST_BUTTON2_MOBILE_NDATA"
+msgstr "Mobile\nDaten"
+
+msgid "IDS_ST_BUTTON2_GPS_ABB"
+msgstr "GPS"
+
+msgid "IDS_ST_BUTTON2_FLIGHT_NMODE"
+msgstr "Offline-\nModus"
+
+msgid "IDS_ST_BUTTON2_BLUETOOTH_ABB"
+msgstr "Bluetooth"
+
+msgid "IDS_ST_BUTTON2_AUTO_NROTATE"
+msgstr "Auto-\nRotation"
+
+msgid "IDS_ST_BODY_SIM_2"
+msgstr "SIM 2"
+
+msgid "IDS_ST_BODY_SIM_1"
+msgstr "SIM 1"
+
+msgid "IDS_ST_BODY_SCANNING_FOR_MOBILE_NETWORK_ING_ABB"
+msgstr "Mobile Netze werden gesucht..."
+
+msgid "IDS_ST_BODY_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
+msgstr "SIM-Karte einsetzen, um auf Netzdienste zuzugreifen"
+
+msgid "IDS_ST_BODY_ALWAYS_ASK_ABB"
+msgstr "Immer fragen"
+
+msgid "IDS_SCP_BODY_UNABLE_TO_CONNECT_TO_MOBILE_NETWORKS_WHILE_FLIGHT_MODE_IS_ENABLED_CONNECT_TO_A_WI_FI_NETWORK_INSTEAD_OR_DISABLE_FLIGHT_MODE_AND_TRY_AGAIN"
+msgstr "Bei aktiviertem Offline-Modus kann keine Verbindung mit mobilen Netzwerken hergestellt werden. Stellen Sie stattdessen eine WLAN-Verbindung her oder deaktivieren Sie den Offline-Modus und versuchen Sie es erneut."
+
+msgid "IDS_COM_BODY_SEARCHING"
+msgstr "Suche"
+
+msgid "IDS_QP_TPOP_UNABLE_TO_OPEN_PS"
+msgstr "%s kann nicht geöffnet werden."
+
+msgid "IDS_QP_OPT_OUTDOORS_M_OUTDOOR_MODE_ABB"
+msgstr "Im Freien"
+
+msgid "IDS_QP_BUTTON2_PRIVATE_NMODE_ABB"
+msgstr "Privater\nModus"
+
diff --git a/po/de_DE.po b/po/de_DE.po
deleted file mode 100755 (executable)
index 73ed8f0..0000000
+++ /dev/null
@@ -1,123 +0,0 @@
-msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
-msgstr "Benachricht."
-
-msgid "IDS_WIFI_BODY_ALLSHARE_CAST"
-msgstr "AllShare Cast"
-
-msgid "IDS_CALL_POP_CALLING_EMERG_ONLY"
-msgstr "Nur Notrufe"
-
-msgid "IDS_QP_BUTTON_ROTATION"
-msgstr "Drehung"
-
-msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
-msgstr "Benachrichtigungen (%d)"
-
-msgid "IDS_QP_BUTTON_VIBRATION"
-msgstr "Vibration"
-
-msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
-msgstr "Ton & Vibration"
-
-msgid "IDS_QP_TAB4_AUTO_ROTATION"
-msgstr "Automat.\nAusrichten"
-
-msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
-msgstr "Automat.\nAusrichten"
-
-msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
-msgstr "Massenspeichermodus"
-
-msgid "IDS_QP_BUTTON_DISABLE"
-msgstr "Deaktiv."
-
-msgid "IDS_QP_BUTTON_ENABLE"
-msgstr "Aktivieren"
-
-msgid "IDS_COM_POP_UNSUPPORTED"
-msgstr "Nicht unterstützt"
-
-msgid "IDS_COM_SK_DISMISS"
-msgstr "Ablehnen"
-
-msgid "IDS_COM_POP_PELASE_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
-msgstr "SIM-Karte einsetzen, um auf Netzdienste zuzugreifen"
-
-msgid "IDS_COM_BODY_DO_NOT_ASK_AGAIN"
-msgstr "Nicht erneut fragen"
-
-msgid "IDS_QP_POP_INSERT_SIM_CARD_AND_RESTART_DEVICE_TO_USE_TETHERING"
-msgstr "SIM-Karte einsetzen und Gerät neu starten, um Tethering zu verwenden."
-
-msgid "IDS_QP_POP_CONNECTING_VIA_PACKET_DATA_MAY_INCUR_ADDITIONAL_CHARGES_CONTINUE_Q"
-msgstr "Die Verbindung über Paketdaten kann zusätzliche Kosten erzeugen. Fortfahren?"
-
-msgid "IDS_QP_BODY_AUTO"
-msgstr "Auto"
-
-msgid "IDS_QP_TAB_POWER_SAVING"
-msgstr "Energiesparmodus"
-
-msgid "IDS_QP_TAB_TETHERING"
-msgstr "Tethering"
-
-msgid "IDS_QP_TAB_MOBILE_DATA"
-msgstr "Mobile Datenverbindung"
-
-msgid "IDS_QP_TAB_DRIVING_MODE"
-msgstr "Fahrzeugmodus"
-
-msgid "IDS_COM_POP_UNABLE_TO_CONNECT_TO_MOBILE_NETWORK_WHILE_FLIGHT_MODE_IS_ENABLED_MSG"
-msgstr "Bei aktiviertem Offline-Modus kann keine Verbindung mit mobilen Netzwerken hergestellt werden. Verbinden Sie sich stattdessen mit WLAN oder deaktivieren Sie den Offline-Modus und versuchen Sie es erneut."
-
-msgid "IDS_QP_POP_WI_FI_TETHERING_CONSUMES_MORE_BATTERY_POWER_AND_INCREASES_YOUR_DATA_USAGE_CONTINUE_Q"
-msgstr "WLAN-Tethering verbraucht mehr Akkuleistung und erhöht Ihre Datenverarbeitung. Fortfahren?"
-
-msgid "IDS_QP_POP_DISABLE_TETHERING_TO_USE_WI_FI"
-msgstr "Tethering deaktivieren, um WLAN zu verwenden"
-
-msgid "IDS_QP_POP_TO_ENABLE_POWER_SAVING_MODE_ENABLE_AT_LEAST_ONE_RELEVANT_FUNCTION"
-msgstr "Energiesparmodus durch Aktivierung mindestens einer relevanten Funktion aktivieren."
-
-msgid "IDS_QP_POP_TURN_OFF_WI_FI_TO_USE_TETHERING"
-msgstr "WLAN ausschalten, um Tethering zu verwenden"
-
-msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
-msgstr "WLAN und Mobile AP können nicht zur gleichen Zeit aktiviert werden. Mobile AP deaktivieren?"
-
-msgid "IDS_ASCAST_HEADER_SCREEN_MIRRORING"
-msgstr "Bildschirmspiegelung"
-
-msgid "IDS_QP_HEADER_REPLACE_QUICK_SETTING_BUTTON"
-msgstr "Schnelleinstellungstaste ersetzen"
-
-msgid "IDS_QP_HEADER_ADD_QUICK_SETTING_BUTTON"
-msgstr "Schnelleinstellungstaste hinzufügen"
-
-msgid "IDS_QP_POP_YOU_WILL_NO_LONGER_BE_ABLE_TO_USE_APPLICATIONS_SUCH_AS_INTERNET_NOTI_MSG"
-msgstr "Sie können Anwendungen wie Internet und E-Mail mehr über mobile Netzwerke verwenden. Fortfahren?"
-
-msgid "IDS_QP_BUTTON2_SCREEN_N_MIRRORING"
-msgstr "Bildschirm-\nspiegelung"
-
-msgid "IDS_COM_BODY_BUTTON_T_TTS"
-msgstr "Taste"
-
-msgid "IDS_QP_BUTTON2_GPS"
-msgstr "GPS"
-
-msgid "IDS_QP_BUTTON_NOTIFICATION"
-msgstr "Benachr."
-
-msgid "IDS_COM_BUTTON_AGREE"
-msgstr "Zustimmen"
-
-msgid "IDS_COM_BUTTON_DISAGREE"
-msgstr "Ablehnen"
-
-msgid "IDS_ST_BODY_GPS_LOCATION_USE_CONTROLLED_BY_APPLICATIONS_MSG"
-msgstr "GPS-Standort und Verwendung Ihrer Standortdaten werden von den von Ihnen verwendeten Anwendungen kontrolliert"
-
-msgid "IDS_ST_HEADER_USER_CONSENT"
-msgstr "Benutzerzustimmung"
-
index d0ea64d..e140e7f 100755 (executable)
-msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
-msgstr "Ειδοποιήσεις"
+msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
+msgstr "Τόσο το Wi-Fi όσο και το AP για κινητά δεν μπορούν να ενεργοποιηθούν ταυτόχρονα. Απενεργοποίηση AP για κινητά;"
+
+msgid "IDS_TASKMGR_BUTTON_CLEAR_ALL"
+msgstr "Διαγραφή όλων"
+
+msgid "IDS_IDLE_SBODY_TAP_HERE_TO_DISABLE_SAFE_MODE_ABB"
+msgstr "Πατ. εδώ για απεν. ασφαλ. λειτ."
+
+msgid "IDS_IDLE_POP_UNABLE_TO_LAUNCH_PS"
+msgstr "Αδύνατη η εκκίνηση του %s."
+
+msgid "IDS_IDLE_MBODY_EMERGENCY_CALLS_ONLY"
+msgstr "Μόνο κλήσεις έκτ. ανάγκης"
+
+msgid "IDS_IDLE_BODY_SEARCHING_ING"
+msgstr "Αναζήτηση..."
 
-msgid "IDS_WIFI_BODY_ALLSHARE_CAST"
-msgstr "AllShare Cast"
+msgid "IDS_IDLE_BODY_NO_SIM"
+msgstr "Δεν βρέθηκε SIM"
 
-msgid "IDS_CALL_POP_CALLING_EMERG_ONLY"
-msgstr "Μόνο επείγουσες κλήσεις"
+msgid "IDS_IDLE_BODY_NO_SERVICE"
+msgstr "Μη διαθέσιμη υπηρεσία"
 
-msgid "IDS_QP_BUTTON_ROTATION"
-msgstr "ΠεÏ\81ιÏ\83Ï\84Ï\81."
+msgid "IDS_IDLE_BODY_INVALID_SIM_CARD"
+msgstr "Î\9cη Î­Î³ÎºÏ\85Ï\81η ÎºÎ¬Ï\81Ï\84α SIM."
 
-msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
+msgid "IDS_IDLE_BODY_EMERGENCY_CALLS_ONLY"
+msgstr "Μόνο επείγουσες κλήσεις."
+
+msgid "IDS_QP_OPT_OUTDOORS_ABB"
+msgstr "Υπαίθρια"
+
+msgid "IDS_QP_MBODY_SAFE_MODE_ENABLED"
+msgstr "Ασφ. λειτουργία ενεργή"
+
+msgid "IDS_QP_HEADER_NOTIFICATIONS_HPD_ABB"
 msgstr "Ειδοποιήσεις (%d)"
 
-msgid "IDS_QP_BUTTON_VIBRATION"
+msgid "IDS_QP_HEADER_CLEAR_ALL_ABB"
+msgstr "Διαγ. όλων"
+
+msgid "IDS_QP_BUTTON_NOTIFICATION"
+msgstr "Ειδοποίηση"
+
+msgid "IDS_QP_BUTTON_ALWAYS_ASK_ABB"
+msgstr "Ερώτηση πάντα"
+
+msgid "IDS_QP_BUTTON2_WI_FI"
+msgstr "Wi-Fi"
+
+msgid "IDS_QP_BUTTON2_VIBRATE"
 msgstr "Δόνηση"
 
-msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
-msgstr "Î\89Ï\87οÏ\82 & Î´Ï\8cνηÏ\83η"
+msgid "IDS_QP_BUTTON2_U_POWER_NSAVING_ABB"
+msgstr "Î\95ξ.ενέÏ\81γ.\nUltra"
 
-msgid "IDS_QP_TAB4_AUTO_ROTATION"
-msgstr "Αυτόμ. περιστρ."
+msgid "IDS_QP_BUTTON2_TETHERING"
+msgstr "Tethering"
 
-msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
-msgstr "Î\9aλείδ. Ï\80εÏ\81ιÏ\83Ï\84Ï\81."
+msgid "IDS_QP_BUTTON2_SOUND_ABB"
+msgstr "Î\89Ï\87οÏ\82"
 
-msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
-msgstr "Î\9bειÏ\84. Î¼Î±Î¶Î¹ÎºÎ®Ï\82 Î±Ï\80οθήκεÏ\85Ï\83ης"
+msgid "IDS_QP_BUTTON2_SOUND"
+msgstr "Î\89Ï\87ος"
 
-msgid "IDS_QP_BUTTON_DISABLE"
-msgstr "Απενεργ."
+msgid "IDS_QP_BUTTON2_PRIVATE_MODE"
+msgstr "Απόρρητη λειτ."
 
-msgid "IDS_QP_BUTTON_ENABLE"
-msgstr "Î\95νεÏ\81γÏ\8c"
+msgid "IDS_QP_BUTTON2_POWER_N_SAVING"
+msgstr "Î\95ξοικ.\nενέÏ\81γ."
 
-msgid "IDS_COM_POP_UNSUPPORTED"
-msgstr "Î\94εν Ï\85Ï\80οÏ\83Ï\84ηÏ\81ίζεÏ\84αι"
+msgid "IDS_QP_BUTTON2_MUTE_ABB"
+msgstr "ΣίγαÏ\83η"
 
-msgid "IDS_COM_SK_DISMISS"
-msgstr "Î\9cαÏ\84αίÏ\89Ï\83η"
+msgid "IDS_QP_BUTTON2_MOBILE_DATA"
+msgstr "Î\94εδομ.\nκινηÏ\84οÏ\8d"
 
-msgid "IDS_COM_POP_PELASE_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
-msgstr "Î\95ιÏ\83άγεÏ\84ε Ï\84ην ÎºÎ¬Ï\81Ï\84α SIM Î³Î¹Î± Ï\80αÏ\81οÏ\87ή Ï\80Ï\81Ï\8cÏ\83βαÏ\83ηÏ\82 Ï\83Ï\84ιÏ\82 Ï\85Ï\80ηÏ\81εÏ\83ίεÏ\82 Î´Î¹ÎºÏ\84Ï\8dοÏ\85"
+msgid "IDS_QP_BUTTON2_LOCATION_ABB"
+msgstr "ΤοÏ\80οθεÏ\83ία"
 
-msgid "IDS_COM_BODY_DO_NOT_ASK_AGAIN"
-msgstr "Î\9dα Î¼Î·Î½ ÎµÏ\81Ï\89Ï\84ηθÏ\8e Î¾Î±Î½Î¬"
+msgid "IDS_QP_BUTTON2_FLIGHT_N_MODE"
+msgstr "Î\9bειÏ\84.\nÏ\80Ï\84ήÏ\83ηÏ\82"
 
-msgid "IDS_QP_POP_INSERT_SIM_CARD_AND_RESTART_DEVICE_TO_USE_TETHERING"
-msgstr "Εισαγάγετε την κάρτα SIM και επανεκκινήστε τη συσκευή για να χρησιμοποιήσετε τη λειτουργία tethering"
+msgid "IDS_QP_BUTTON2_BLUETOOTH"
+msgstr "Bluetooth"
 
-msgid "IDS_QP_POP_CONNECTING_VIA_PACKET_DATA_MAY_INCUR_ADDITIONAL_CHARGES_CONTINUE_Q"
-msgstr "Î\95νδέÏ\87εÏ\84αι Î½Î± Ï\85Ï\80άÏ\81Ï\87οÏ\85ν ÎµÏ\80ιÏ\80λέον Ï\87Ï\81εÏ\8eÏ\83ειÏ\82 Î³Î¹Î± Ï\84η Ï\83Ï\8dνδεÏ\83η Î¼Î­Ï\83Ï\89 Ï\80ακέÏ\84οÏ\85 Î´ÎµÎ´Î¿Î¼Î­Î½Ï\89ν. Î£Ï\85νέÏ\87εια;"
+msgid "IDS_QP_BUTTON2_AUTO_ROTATE"
+msgstr "Î\91Ï\85Ï\84Ï\8cμαÏ\84η Ï\80εÏ\81ιÏ\83Ï\84Ï\81οÏ\86ή"
 
-msgid "IDS_QP_BODY_AUTO"
-msgstr "Î\91Ï\85Ï\84Ï\8cμαÏ\84ο"
+msgid "IDS_QP_BUTTON2_ASSISTIVE_NLIGHT"
+msgstr "Î\92οηθηÏ\84.\nÏ\86Ï\89Ï\82"
 
-msgid "IDS_QP_TAB_POWER_SAVING"
-msgstr "Î\95ξοικονÏ\8cμηÏ\83η ÎµÎ½Î­Ï\81γειαÏ\82"
+msgid "IDS_QP_BODY_PM_ABB"
+msgstr "Î\9cÎ\9c"
 
-msgid "IDS_QP_TAB_TETHERING"
-msgstr "Tethering"
+msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
+msgstr "Ειδοποιήσεις"
 
-msgid "IDS_QP_TAB_MOBILE_DATA"
-msgstr "Î\94εδομ. ÎºÎ¹Î½Î·Ï\84ήÏ\82 Ï\83Ï\85Ï\83κ."
+msgid "IDS_QP_BODY_AM_ABB"
+msgstr "ΠÎ\9c"
 
-msgid "IDS_QP_TAB_DRIVING_MODE"
-msgstr "Î\9bειÏ\84οÏ\85Ï\81γία Î¿Î´Î®Î³Î·Ï\83ηÏ\82"
+msgid "IDS_ST_TPOP_UNABLE_TO_MAKE_VOICE_CALLS_VIDEO_CALLS_AND_SEND_TEXT_MESSAGES_USING_PS"
+msgstr "Î\94εν ÎµÎ¯Î½Î±Î¹ Î´Ï\85ναÏ\84ή Î· Ï\80Ï\81αγμαÏ\84οÏ\80οίηÏ\83η Ï\86Ï\89νηÏ\84ικÏ\8eν ÎºÎ»Î®Ï\83εÏ\89ν, ÎºÎ»Î®Ï\83εÏ\89ν Î²Î¯Î½Ï\84εο ÎºÎ±Î¹ Î· Î±Ï\80οÏ\83Ï\84ολή Î¼Î·Î½Ï\85μάÏ\84Ï\89ν ÎºÎµÎ¹Î¼Î­Î½Î¿Ï\85 Ï\87Ï\81ηÏ\83ιμοÏ\80οιÏ\8eνÏ\84αÏ\82 Ï\84ο %s."
 
-msgid "IDS_COM_POP_UNABLE_TO_CONNECT_TO_MOBILE_NETWORK_WHILE_FLIGHT_MODE_IS_ENABLED_MSG"
-msgstr "Î\94εν ÎµÎ¯Î½Î±Î¹ Î´Ï\85ναÏ\84ή Î· Ï\83Ï\8dνδεÏ\83η Ï\83ε Î´Î¯ÎºÏ\84Ï\85α ÎºÎ¹Î½Î·Ï\84ήÏ\82 Ï\84ηλεÏ\86Ï\89νίαÏ\82 Ï\8cÏ\83ο ÎµÎ¯Î½Î±Î¹ ÎµÎ½ÎµÏ\81γοÏ\80οιημένη Î· Î»ÎµÎ¹Ï\84οÏ\85Ï\81γία Ï\80Ï\84ήÏ\83ηÏ\82. Î£Ï\85νδεθείÏ\84ε Ï\83ε Î´Î¯ÎºÏ\84Ï\85ο Wi-Fi Î® Î±Ï\80ενεÏ\81γοÏ\80οιήÏ\83Ï\84ε Ï\84η Î»ÎµÎ¹Ï\84οÏ\85Ï\81γία Ï\80Ï\84ήÏ\83ηÏ\82 ÎºÎ±Î¹ Î´Î¿ÎºÎ¹Î¼Î¬Ï\83Ï\84ε Î¾Î±Î½Î¬"
+msgid "IDS_ST_TPOP_SELECT_SIM_CARD_FOR_OUTGOING_VOICE_CALLS_VIDEO_CALLS_AND_TEXT_MESSAGES"
+msgstr "Î\95Ï\80ιλέξÏ\84ε Î¼Î¹Î± ÎºÎ¬Ï\81Ï\84α SIM Î³Î¹Î± ÎµÎ¾ÎµÏ\81Ï\87Ï\8cμενεÏ\82 Ï\86Ï\89νηÏ\84ικέÏ\82 ÎºÎ»Î®Ï\83ειÏ\82, ÎºÎ»Î®Ï\83ειÏ\82 Î²Î¯Î½Ï\84εο ÎºÎ±Î¹ Î¼Î·Î½Ï\85μάÏ\84Ï\89ν ÎºÎµÎ¹Î¼Î­Î½Î¿Ï\85."
 
-msgid "IDS_QP_POP_WI_FI_TETHERING_CONSUMES_MORE_BATTERY_POWER_AND_INCREASES_YOUR_DATA_USAGE_CONTINUE_Q"
-msgstr "Το tethering Î¼Î­Ï\83Ï\89 Wi-Fi ÎºÎ±Ï\84αναλÏ\8eνει Ï\80εÏ\81ιÏ\83Ï\83Ï\8cÏ\84εÏ\81η Î¹Ï\83Ï\87Ï\8d Î¼Ï\80αÏ\84αÏ\81ίαÏ\82 ÎºÎ±Î¹ Î±Ï\85ξάνει Ï\84η Ï\87Ï\81ήÏ\83η Î´ÎµÎ´Î¿Î¼Î­Î½Ï\89ν. Î£Ï\85νέÏ\87εια;"
+msgid "IDS_ST_TPOP_OUTGOING_VOICE_CALLS_VIDEO_CALLS_AND_TEXT_MESSAGES_WILL_BE_MADE_USING_THE_PS_SIM_CARD"
+msgstr "Î\9fι ÎµÎ¾ÎµÏ\81Ï\87Ï\8cμενεÏ\82 Ï\86Ï\89νηÏ\84ικέÏ\82 ÎºÎ»Î®Ï\83ειÏ\82, ÎºÎ»Î®Ï\83ειÏ\82 Î²Î¯Î½Ï\84εο ÎºÎ±Î¹ Ï\84α Î¼Î·Î½Ï\8dμαÏ\84α ÎºÎµÎ¹Î¼Î­Î½Î¿Ï\85 Î¸Î± Ï\80Ï\81αγμαÏ\84οÏ\80οιοÏ\8dνÏ\84αι Î¼Îµ Ï\84ην ÎºÎ¬Ï\81Ï\84α SIM %s."
 
-msgid "IDS_QP_POP_DISABLE_TETHERING_TO_USE_WI_FI"
-msgstr "Απενεργοποιήστε τη λειτουργία tethering για χρήση του Wi-Fi"
+msgid "IDS_ST_SK_OK"
+msgstr "OK"
 
-msgid "IDS_QP_POP_TO_ENABLE_POWER_SAVING_MODE_ENABLE_AT_LEAST_ONE_RELEVANT_FUNCTION"
-msgstr "Î\93ια Ï\84ην ÎµÎ½ÎµÏ\81γοÏ\80οίηÏ\83η Ï\84ηÏ\82 Î»ÎµÎ¹Ï\84οÏ\85Ï\81γίαÏ\82 ÎµÎ¾Î¿Î¹ÎºÎ¿Î½Ï\8cμηÏ\83ηÏ\82 ÎµÎ½Î­Ï\81γειαÏ\82, ÎµÎ½ÎµÏ\81γοÏ\80οιήÏ\83Ï\84ε Ï\84οÏ\85λάÏ\87ιÏ\83Ï\84ον Î¼Î¯Î± Ï\83Ï\87εÏ\84ική Î»ÎµÎ¹Ï\84οÏ\85Ï\81γία"
+msgid "IDS_ST_SK_NO"
+msgstr "Î\8cÏ\87ι"
 
-msgid "IDS_QP_POP_TURN_OFF_WI_FI_TO_USE_TETHERING"
-msgstr "Απενεργοποιήστε το Wi-Fi για χρήση της λειτουργίας tethering"
+msgid "IDS_ST_POP_UNABLE_TO_INCREASE_BRIGHTNESS_FURTHER_BECAUSE_OF_PHONE_OVERHEATING"
+msgstr "Αδυναμία περαιτέρω αύξησης της φωτεινότητας λόγω υπερθέρμανσης της συσκευής."
 
-msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
-msgstr "Τόσο το Wi-Fi όσο και το AP για κινητά δεν μπορούν να ενεργοποιηθούν ταυτόχρονα. Απενεργοποίηση AP για κινητά;"
+msgid "IDS_ST_NPBODY_NO_SERVICE"
+msgstr "Εκτός δικτύου"
+
+msgid "IDS_ST_NPBODY_EMERGENCY_CALLS_ONLY_ABB"
+msgstr "Μόνο κλήσεις έκτακτης ανάγκης"
 
-msgid "IDS_ASCAST_HEADER_SCREEN_MIRRORING"
-msgstr "Î\9aαÏ\84οÏ\80Ï\84Ï\81ιÏ\83μÏ\8cÏ\82 Î¿Î¸Ï\8cνηÏ\82"
+msgid "IDS_ST_HEADER_OUTDOOR"
+msgstr "Î\95ξÏ\89Ï\84εÏ\81ικοί Ï\87Ï\8eÏ\81οι"
 
-msgid "IDS_QP_HEADER_REPLACE_QUICK_SETTING_BUTTON"
-msgstr "Αντικατάσταση κουμπιού γρήγορης ρύθμισης"
+msgid "IDS_ST_BUTTON2_WI_FI_NTETHERING"
+msgstr "Wi-Fi\ntethering"
 
-msgid "IDS_QP_HEADER_ADD_QUICK_SETTING_BUTTON"
-msgstr "Κουμπί προσθήκης γρήγορης ρύθμισης"
+msgid "IDS_ST_BUTTON2_WI_FI_ABB"
+msgstr "Wi-Fi"
 
-msgid "IDS_QP_POP_YOU_WILL_NO_LONGER_BE_ABLE_TO_USE_APPLICATIONS_SUCH_AS_INTERNET_NOTI_MSG"
-msgstr "Î\94εν Î¸Î± Î¼Ï\80οÏ\81είÏ\84ε Ï\80λέον Î½Î± Ï\87Ï\81ηÏ\83ιμοÏ\80οιείÏ\84ε ÎµÏ\86αÏ\81μογέÏ\82 Ï\8cÏ\80Ï\89Ï\82 Ï\84ο Internet ÎºÎ±Î¹ Ï\84ο Email Î¼Î­Ï\83Ï\89 Î´Î¹ÎºÏ\84Ï\8dÏ\89ν ÎºÎ¹Î½Î·Ï\84ήÏ\82 Ï\84ηλεÏ\86Ï\89νίαÏ\82. Î£Ï\85νέÏ\87εια;"
+msgid "IDS_ST_BUTTON2_TORCH_ABB"
+msgstr "ΦακÏ\8cÏ\82"
 
-msgid "IDS_QP_BUTTON2_SCREEN_N_MIRRORING"
-msgstr "Screen\nMirroring"
+msgid "IDS_ST_BUTTON2_POWER_NSAVING"
+msgstr "Εξοικ.\nενέργ."
 
-msgid "IDS_COM_BODY_BUTTON_T_TTS"
-msgstr "Î\9aοÏ\85μÏ\80ί"
+msgid "IDS_ST_BUTTON2_MOBILE_NDATA"
+msgstr "Î\94εδομ.\nκιν.Ï\84ηλ."
 
-msgid "IDS_QP_BUTTON2_GPS"
+msgid "IDS_ST_BUTTON2_GPS_ABB"
 msgstr "GPS"
 
-msgid "IDS_QP_BUTTON_NOTIFICATION"
-msgstr "Ειδοποίηση"
+msgid "IDS_ST_BUTTON2_FLIGHT_NMODE"
+msgstr "Λειτουρ.\nπτήσης"
+
+msgid "IDS_ST_BUTTON2_BLUETOOTH_ABB"
+msgstr "Bluetooth"
+
+msgid "IDS_ST_BUTTON2_AUTO_NROTATE"
+msgstr "Αυτόμ.\nπεριστρ."
+
+msgid "IDS_ST_BODY_SIM_2"
+msgstr "SIM 2"
+
+msgid "IDS_ST_BODY_SIM_1"
+msgstr "SIM 1"
+
+msgid "IDS_ST_BODY_SCANNING_FOR_MOBILE_NETWORK_ING_ABB"
+msgstr "Σάρωση για δίκτυα κινητής τηλεφωνίας..."
+
+msgid "IDS_ST_BODY_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
+msgstr "Εισάγετε την κάρτα SIM για παροχή πρόσβασης στις υπηρεσίες δικτύου."
+
+msgid "IDS_ST_BODY_ALWAYS_ASK_ABB"
+msgstr "Ερώτηση πάντα"
+
+msgid "IDS_SCP_BODY_UNABLE_TO_CONNECT_TO_MOBILE_NETWORKS_WHILE_FLIGHT_MODE_IS_ENABLED_CONNECT_TO_A_WI_FI_NETWORK_INSTEAD_OR_DISABLE_FLIGHT_MODE_AND_TRY_AGAIN"
+msgstr "Δεν είναι δυνατή η σύνδεση σε δίκτυα κινητής τηλεφωνίας όσο είναι ενεργοποιημένη η λειτουργία πτήσης. Συνδεθείτε σε ένα δίκτυο Wi-Fi ή απενεργοποιήστε τη λειτουργία πτήσης και δοκιμάστε ξανά."
 
-msgid "IDS_COM_BUTTON_AGREE"
-msgstr "Αποδοχή"
+msgid "IDS_COM_BODY_SEARCHING"
+msgstr "Αναζήτηση"
 
-msgid "IDS_COM_BUTTON_DISAGREE"
-msgstr "Δεν συμφωνώ"
+msgid "IDS_QP_TPOP_UNABLE_TO_OPEN_PS"
+msgstr "Δεν είναι δυνατό το άνοιγμα του %s."
 
-msgid "IDS_ST_BODY_GPS_LOCATION_USE_CONTROLLED_BY_APPLICATIONS_MSG"
-msgstr "Î\97 Ï\84οÏ\80οθεÏ\83ία GPS ÎºÎ±Î¹ Î· Ï\87Ï\81ήÏ\83η Ï\84Ï\89ν Î´ÎµÎ´Î¿Î¼Î­Î½Ï\89ν Ï\84οÏ\80οθεÏ\83ίαÏ\82 Ï\83αÏ\82 ÎµÎ»Î­Î³Ï\87ονÏ\84αι Î±Ï\80Ï\8c Ï\84ιÏ\82 ÎµÏ\86αÏ\81μογέÏ\82 Ï\84ιÏ\82 Î¿Ï\80οίεÏ\82 Ï\87Ï\81ηÏ\83ιμοÏ\80οιείÏ\84ε"
+msgid "IDS_QP_OPT_OUTDOORS_M_OUTDOOR_MODE_ABB"
+msgstr "Î¥Ï\80αίθÏ\81ια"
 
-msgid "IDS_ST_HEADER_USER_CONSENT"
-msgstr "ΣÏ\85γκαÏ\84άθεÏ\83η Ï\87Ï\81ήÏ\83Ï\84η"
+msgid "IDS_QP_BUTTON2_PRIVATE_NMODE_ABB"
+msgstr "Î\91Ï\80Ï\8cÏ\81Ï\81ηÏ\84η\nλειÏ\84."
 
index 18a648e..3ee2739 100755 (executable)
--- a/po/en.po
+++ b/po/en.po
-msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
-msgstr "Notifications"
+msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
+msgstr "Both Wi-Fi and mobile AP cannot be activated at the same time. Deactivate mobile AP?"
+
+msgid "IDS_TASKMGR_BUTTON_CLEAR_ALL"
+msgstr "Clear all"
 
-msgid "IDS_WIFI_BODY_ALLSHARE_CAST"
-msgstr "AllShare Cast"
+msgid "IDS_IDLE_SBODY_TAP_HERE_TO_DISABLE_SAFE_MODE_ABB"
+msgstr "Tap here to disable Safe mode."
 
-msgid "IDS_CALL_POP_CALLING_EMERG_ONLY"
+msgid "IDS_IDLE_POP_UNABLE_TO_LAUNCH_PS"
+msgstr "Unable to launch %s."
+
+msgid "IDS_IDLE_MBODY_EMERGENCY_CALLS_ONLY"
 msgstr "Emergency calls only"
 
-msgid "IDS_QP_BUTTON_ROTATION"
-msgstr "Rotation"
+msgid "IDS_IDLE_BODY_SEARCHING_ING"
+msgstr "Searching..."
+
+msgid "IDS_IDLE_BODY_NO_SIM"
+msgstr "No SIM"
+
+msgid "IDS_IDLE_BODY_NO_SERVICE"
+msgstr "No service"
+
+msgid "IDS_IDLE_BODY_INVALID_SIM_CARD"
+msgstr "Invalid SIM card."
 
-msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
+msgid "IDS_IDLE_BODY_EMERGENCY_CALLS_ONLY"
+msgstr "Emergency calls only."
+
+msgid "IDS_QP_OPT_OUTDOORS_ABB"
+msgstr "Outdoors"
+
+msgid "IDS_QP_MBODY_SAFE_MODE_ENABLED"
+msgstr "Safe mode enabled"
+
+msgid "IDS_QP_HEADER_NOTIFICATIONS_HPD_ABB"
 msgstr "Notifications (%d)"
 
-msgid "IDS_QP_BUTTON_VIBRATION"
-msgstr "Vibration"
+msgid "IDS_QP_HEADER_CLEAR_ALL_ABB"
+msgstr "Clear all"
 
-msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
-msgstr "Sound & vibration"
+msgid "IDS_QP_BUTTON_NOTIFICATION"
+msgstr "Notification"
 
-msgid "IDS_QP_TAB4_AUTO_ROTATION"
-msgstr "Auto rotation"
+msgid "IDS_QP_BUTTON_ALWAYS_ASK_ABB"
+msgstr "Always ask"
 
-msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
-msgstr "Rotation lock"
+msgid "IDS_QP_BUTTON2_WI_FI"
+msgstr "Wi-Fi"
 
-msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
-msgstr "Mass storage mode"
+msgid "IDS_QP_BUTTON2_VIBRATE"
+msgstr "Vibrate"
 
-msgid "IDS_QP_BUTTON_DISABLE"
-msgstr "Disable"
+msgid "IDS_QP_BUTTON2_U_POWER_NSAVING_ABB"
+msgstr "U. power\nsaving"
 
-msgid "IDS_QP_BUTTON_ENABLE"
-msgstr "Enable"
+msgid "IDS_QP_BUTTON2_TETHERING"
+msgstr "Tethering"
 
-msgid "IDS_COM_POP_UNSUPPORTED"
-msgstr "Unsupported"
+msgid "IDS_QP_BUTTON2_SOUND_ABB"
+msgstr "Sound"
 
-msgid "IDS_COM_SK_DISMISS"
-msgstr "Dismiss"
+msgid "IDS_QP_BUTTON2_SOUND"
+msgstr "Sound"
 
-msgid "IDS_COM_POP_PELASE_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
-msgstr "Insert SIM card to access network services"
+msgid "IDS_QP_BUTTON2_PRIVATE_MODE"
+msgstr "Private mode"
 
-msgid "IDS_COM_BODY_DO_NOT_ASK_AGAIN"
-msgstr "Do not ask again"
+msgid "IDS_QP_BUTTON2_POWER_N_SAVING"
+msgstr "Power\nsaving"
 
-msgid "IDS_QP_POP_INSERT_SIM_CARD_AND_RESTART_DEVICE_TO_USE_TETHERING"
-msgstr "Insert SIM card and restart device to use tethering"
+msgid "IDS_QP_BUTTON2_MUTE_ABB"
+msgstr "Mute"
 
-msgid "IDS_QP_POP_CONNECTING_VIA_PACKET_DATA_MAY_INCUR_ADDITIONAL_CHARGES_CONTINUE_Q"
-msgstr "Connecting via packet data may incur additional charges. Continue?"
+msgid "IDS_QP_BUTTON2_MOBILE_DATA"
+msgstr "Mobile\ndata"
 
-msgid "IDS_QP_BODY_AUTO"
-msgstr "Auto"
+msgid "IDS_QP_BUTTON2_LOCATION_ABB"
+msgstr "Location"
 
-msgid "IDS_QP_TAB_POWER_SAVING"
-msgstr "Power saving"
+msgid "IDS_QP_BUTTON2_FLIGHT_N_MODE"
+msgstr "Flight\nmode"
 
-msgid "IDS_QP_TAB_TETHERING"
-msgstr "Tethering"
+msgid "IDS_QP_BUTTON2_BLUETOOTH"
+msgstr "Bluetooth"
+
+msgid "IDS_QP_BUTTON2_AUTO_ROTATE"
+msgstr "Auto rotate"
+
+msgid "IDS_QP_BUTTON2_ASSISTIVE_NLIGHT"
+msgstr "Assistive\nlight"
 
-msgid "IDS_QP_TAB_MOBILE_DATA"
-msgstr "Mobile data"
+msgid "IDS_QP_BODY_PM_ABB"
+msgstr "PM"
 
-msgid "IDS_QP_TAB_DRIVING_MODE"
-msgstr "Driving mode"
+msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
+msgstr "Notifications"
 
-msgid "IDS_COM_POP_UNABLE_TO_CONNECT_TO_MOBILE_NETWORK_WHILE_FLIGHT_MODE_IS_ENABLED_MSG"
-msgstr "Unable to connect to mobile networks while Flight mode is enabled. Connect to Wi-Fi network instead, or disable Flight mode and try again."
+msgid "IDS_QP_BODY_AM_ABB"
+msgstr "AM"
 
-msgid "IDS_QP_POP_WI_FI_TETHERING_CONSUMES_MORE_BATTERY_POWER_AND_INCREASES_YOUR_DATA_USAGE_CONTINUE_Q"
-msgstr "Wi-Fi tethering consumes more battery power and increases your data usage. Continue?"
+msgid "IDS_ST_TPOP_UNABLE_TO_MAKE_VOICE_CALLS_VIDEO_CALLS_AND_SEND_TEXT_MESSAGES_USING_PS"
+msgstr "Unable to make voice calls, video calls, and send text messages using %s."
 
-msgid "IDS_QP_POP_DISABLE_TETHERING_TO_USE_WI_FI"
-msgstr "Disable tethering to use Wi-Fi"
+msgid "IDS_ST_TPOP_SELECT_SIM_CARD_FOR_OUTGOING_VOICE_CALLS_VIDEO_CALLS_AND_TEXT_MESSAGES"
+msgstr "Select SIM card for outgoing voice calls, video calls, and text messages."
 
-msgid "IDS_QP_POP_TO_ENABLE_POWER_SAVING_MODE_ENABLE_AT_LEAST_ONE_RELEVANT_FUNCTION"
-msgstr "To enable Power saving mode, enable at least one relevant function"
+msgid "IDS_ST_TPOP_OUTGOING_VOICE_CALLS_VIDEO_CALLS_AND_TEXT_MESSAGES_WILL_BE_MADE_USING_THE_PS_SIM_CARD"
+msgstr "Outgoing voice calls, video calls, and text messages will be made using the %s SIM card."
 
-msgid "IDS_QP_POP_TURN_OFF_WI_FI_TO_USE_TETHERING"
-msgstr "Turn off Wi-Fi to use tethering"
+msgid "IDS_ST_SK_OK"
+msgstr "OK"
 
-msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
-msgstr "Both Wi-Fi and mobile AP cannot be activated at the same time. Deactivate mobile AP?"
+msgid "IDS_ST_SK_NO"
+msgstr "No"
 
-msgid "IDS_ASCAST_HEADER_SCREEN_MIRRORING"
-msgstr "Screen Mirroring"
+msgid "IDS_ST_POP_UNABLE_TO_INCREASE_BRIGHTNESS_FURTHER_BECAUSE_OF_PHONE_OVERHEATING"
+msgstr "Unable to increase brightness further because of phone overheating."
 
-msgid "IDS_QP_HEADER_REPLACE_QUICK_SETTING_BUTTON"
-msgstr "Replace quick setting button"
+msgid "IDS_ST_NPBODY_NO_SERVICE"
+msgstr "No service"
 
-msgid "IDS_QP_HEADER_ADD_QUICK_SETTING_BUTTON"
-msgstr "Add quick setting button"
+msgid "IDS_ST_NPBODY_EMERGENCY_CALLS_ONLY_ABB"
+msgstr "Emergency calls only"
 
-msgid "IDS_QP_POP_YOU_WILL_NO_LONGER_BE_ABLE_TO_USE_APPLICATIONS_SUCH_AS_INTERNET_NOTI_MSG"
-msgstr "You will no longer be able to use applications such as Internet and Email via mobile networks. Continue?"
+msgid "IDS_ST_HEADER_OUTDOOR"
+msgstr "Outdoor"
 
-msgid "IDS_QP_BUTTON2_SCREEN_N_MIRRORING"
-msgstr "Screen\nMirroring"
+msgid "IDS_ST_BUTTON2_WI_FI_NTETHERING"
+msgstr "Wi-Fi\ntethering"
 
-msgid "IDS_COM_BODY_BUTTON_T_TTS"
-msgstr "Button"
+msgid "IDS_ST_BUTTON2_WI_FI_ABB"
+msgstr "Wi-Fi"
 
-msgid "IDS_QP_BUTTON2_GPS"
+msgid "IDS_ST_BUTTON2_TORCH_ABB"
+msgstr "Torch"
+
+msgid "IDS_ST_BUTTON2_POWER_NSAVING"
+msgstr "Power\nsaving"
+
+msgid "IDS_ST_BUTTON2_MOBILE_NDATA"
+msgstr "Mobile\ndata"
+
+msgid "IDS_ST_BUTTON2_GPS_ABB"
 msgstr "GPS"
 
-msgid "IDS_QP_BUTTON_NOTIFICATION"
-msgstr "Notification"
+msgid "IDS_ST_BUTTON2_FLIGHT_NMODE"
+msgstr "Flight\nmode"
+
+msgid "IDS_ST_BUTTON2_BLUETOOTH_ABB"
+msgstr "Bluetooth"
+
+msgid "IDS_ST_BUTTON2_AUTO_NROTATE"
+msgstr "Auto\nrotate"
+
+msgid "IDS_ST_BODY_SIM_2"
+msgstr "SIM2"
+
+msgid "IDS_ST_BODY_SIM_1"
+msgstr "SIM1"
+
+msgid "IDS_ST_BODY_SCANNING_FOR_MOBILE_NETWORK_ING_ABB"
+msgstr "Scanning for mobile network..."
+
+msgid "IDS_ST_BODY_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
+msgstr "Insert SIM card to access network services."
+
+msgid "IDS_ST_BODY_ALWAYS_ASK_ABB"
+msgstr "Always ask"
+
+msgid "IDS_SCP_BODY_UNABLE_TO_CONNECT_TO_MOBILE_NETWORKS_WHILE_FLIGHT_MODE_IS_ENABLED_CONNECT_TO_A_WI_FI_NETWORK_INSTEAD_OR_DISABLE_FLIGHT_MODE_AND_TRY_AGAIN"
+msgstr "Unable to connect to mobile networks while Flight mode is enabled. Connect to a Wi-Fi network instead, or disable Flight mode and try again."
 
-msgid "IDS_COM_BUTTON_AGREE"
-msgstr "Agree"
+msgid "IDS_COM_BODY_SEARCHING"
+msgstr "Searching"
 
-msgid "IDS_COM_BUTTON_DISAGREE"
-msgstr "Disagree"
+msgid "IDS_QP_TPOP_UNABLE_TO_OPEN_PS"
+msgstr "Unable to open %s."
 
-msgid "IDS_ST_BODY_GPS_LOCATION_USE_CONTROLLED_BY_APPLICATIONS_MSG"
-msgstr "GPS location and use of your location data are controlled by the applications you use"
+msgid "IDS_QP_OPT_OUTDOORS_M_OUTDOOR_MODE_ABB"
+msgstr "Outdoors"
 
-msgid "IDS_ST_HEADER_USER_CONSENT"
-msgstr "User consent"
+msgid "IDS_QP_BUTTON2_PRIVATE_NMODE_ABB"
+msgstr "Private\nmode"
 
index d99aed0..4591e56 100755 (executable)
-msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
-msgstr "Notifications"
+msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
+msgstr "Both Wi-Fi and Mobile AP cannot be activated at the same time. Deactivate Mobile AP?"
+
+msgid "IDS_TASKMGR_BUTTON_CLEAR_ALL"
+msgstr "Clear all"
 
-msgid "IDS_WIFI_BODY_ALLSHARE_CAST"
-msgstr "AllShare Cast"
+msgid "IDS_IDLE_SBODY_TAP_HERE_TO_DISABLE_SAFE_MODE_ABB"
+msgstr "Tap here to disable Safe mode."
 
-msgid "IDS_CALL_POP_CALLING_EMERG_ONLY"
+msgid "IDS_IDLE_POP_UNABLE_TO_LAUNCH_PS"
+msgstr "Unable to launch %s."
+
+msgid "IDS_IDLE_MBODY_EMERGENCY_CALLS_ONLY"
 msgstr "Emergency calls only"
 
-msgid "IDS_QP_BUTTON_ROTATION"
-msgstr "Rotation"
+msgid "IDS_IDLE_BODY_SEARCHING_ING"
+msgstr "Searching..."
+
+msgid "IDS_IDLE_BODY_NO_SIM"
+msgstr "No SIM"
+
+msgid "IDS_IDLE_BODY_NO_SERVICE"
+msgstr "No service"
+
+msgid "IDS_IDLE_BODY_INVALID_SIM_CARD"
+msgstr "Invalid SIM card."
 
-msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
+msgid "IDS_IDLE_BODY_EMERGENCY_CALLS_ONLY"
+msgstr "Emergency calls only."
+
+msgid "IDS_QP_OPT_OUTDOORS_ABB"
+msgstr "Outdoors"
+
+msgid "IDS_QP_MBODY_SAFE_MODE_ENABLED"
+msgstr "Safe mode enabled"
+
+msgid "IDS_QP_HEADER_NOTIFICATIONS_HPD_ABB"
 msgstr "Notifications (%d)"
 
-msgid "IDS_QP_BUTTON_VIBRATION"
-msgstr "Vibration"
+msgid "IDS_QP_HEADER_CLEAR_ALL_ABB"
+msgstr "Clear all"
 
-msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
-msgstr "Sound & vibration"
+msgid "IDS_QP_BUTTON_NOTIFICATION"
+msgstr "Notification"
 
-msgid "IDS_QP_TAB4_AUTO_ROTATION"
-msgstr "Auto rotation"
+msgid "IDS_QP_BUTTON_ALWAYS_ASK_ABB"
+msgstr "Always ask"
 
-msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
-msgstr "Rotation lock"
+msgid "IDS_QP_BUTTON2_WI_FI"
+msgstr "Wi-Fi"
 
-msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
-msgstr "Mass storage mode"
+msgid "IDS_QP_BUTTON2_VIBRATE"
+msgstr "Vibrate"
 
-msgid "IDS_QP_BUTTON_DISABLE"
-msgstr "Disable"
+msgid "IDS_QP_BUTTON2_U_POWER_NSAVING_ABB"
+msgstr "U. power\nsaving"
 
-msgid "IDS_QP_BUTTON_ENABLE"
-msgstr "Enable"
+msgid "IDS_QP_BUTTON2_TETHERING"
+msgstr "Tethering"
 
-msgid "IDS_COM_POP_UNSUPPORTED"
-msgstr "Unsupported"
+msgid "IDS_QP_BUTTON2_SOUND_ABB"
+msgstr "Sound"
 
-msgid "IDS_COM_SK_DISMISS"
-msgstr "Dismiss"
+msgid "IDS_QP_BUTTON2_SOUND"
+msgstr "Sound"
 
-msgid "IDS_COM_POP_PELASE_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
-msgstr "Insert SIM card to access network services"
+msgid "IDS_QP_BUTTON2_PRIVATE_MODE"
+msgstr "Private mode"
 
-msgid "IDS_COM_BODY_DO_NOT_ASK_AGAIN"
-msgstr "Do not ask again"
+msgid "IDS_QP_BUTTON2_POWER_N_SAVING"
+msgstr "Power\nsaving"
 
-msgid "IDS_QP_POP_INSERT_SIM_CARD_AND_RESTART_DEVICE_TO_USE_TETHERING"
-msgstr "Insert SIM card and restart device to use tethering"
+msgid "IDS_QP_BUTTON2_MUTE_ABB"
+msgstr "Mute"
 
-msgid "IDS_QP_POP_CONNECTING_VIA_PACKET_DATA_MAY_INCUR_ADDITIONAL_CHARGES_CONTINUE_Q"
-msgstr "Connecting via packet data may incur additional charges. Continue?"
+msgid "IDS_QP_BUTTON2_MOBILE_DATA"
+msgstr "Mobile\ndata"
 
-msgid "IDS_QP_BODY_AUTO"
-msgstr "Auto"
+msgid "IDS_QP_BUTTON2_LOCATION_ABB"
+msgstr "Location"
 
-msgid "IDS_QP_TAB_POWER_SAVING"
-msgstr "Power saving"
+msgid "IDS_QP_BUTTON2_FLIGHT_N_MODE"
+msgstr "Flight\nmode"
 
-msgid "IDS_QP_TAB_TETHERING"
-msgstr "Tethering"
+msgid "IDS_QP_BUTTON2_BLUETOOTH"
+msgstr "Bluetooth"
+
+msgid "IDS_QP_BUTTON2_AUTO_ROTATE"
+msgstr "Auto rotate"
+
+msgid "IDS_QP_BUTTON2_ASSISTIVE_NLIGHT"
+msgstr "Assistive\nlight"
 
-msgid "IDS_QP_TAB_MOBILE_DATA"
-msgstr "Mobile data"
+msgid "IDS_QP_BODY_PM_ABB"
+msgstr "PM"
 
-msgid "IDS_QP_TAB_DRIVING_MODE"
-msgstr "Driving mode"
+msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
+msgstr "Notifications"
 
-msgid "IDS_COM_POP_UNABLE_TO_CONNECT_TO_MOBILE_NETWORK_WHILE_FLIGHT_MODE_IS_ENABLED_MSG"
-msgstr "Unable to connect to mobile network while Flight mode is enabled. Connect to Wi-Fi network instead, or disable Flight mode and try again"
+msgid "IDS_QP_BODY_AM_ABB"
+msgstr "AM"
 
-msgid "IDS_QP_POP_WI_FI_TETHERING_CONSUMES_MORE_BATTERY_POWER_AND_INCREASES_YOUR_DATA_USAGE_CONTINUE_Q"
-msgstr "Wi-Fi tethering consumes more battery power and increases your data usage. Continue?"
+msgid "IDS_ST_TPOP_UNABLE_TO_MAKE_VOICE_CALLS_VIDEO_CALLS_AND_SEND_TEXT_MESSAGES_USING_PS"
+msgstr "Unable to make voice calls, video calls and send text messages using %s."
 
-msgid "IDS_QP_POP_DISABLE_TETHERING_TO_USE_WI_FI"
-msgstr "Disable tethering to use Wi-Fi"
+msgid "IDS_ST_TPOP_SELECT_SIM_CARD_FOR_OUTGOING_VOICE_CALLS_VIDEO_CALLS_AND_TEXT_MESSAGES"
+msgstr "Select SIM card for outgoing voice calls, video calls and text messages."
 
-msgid "IDS_QP_POP_TO_ENABLE_POWER_SAVING_MODE_ENABLE_AT_LEAST_ONE_RELEVANT_FUNCTION"
-msgstr "To enable Power saving mode, enable at least one relevant function"
+msgid "IDS_ST_TPOP_OUTGOING_VOICE_CALLS_VIDEO_CALLS_AND_TEXT_MESSAGES_WILL_BE_MADE_USING_THE_PS_SIM_CARD"
+msgstr "Outgoing voice calls, video calls and text messages will be made using the %s SIM card."
 
-msgid "IDS_QP_POP_TURN_OFF_WI_FI_TO_USE_TETHERING"
-msgstr "Turn off Wi-Fi to use tethering"
+msgid "IDS_ST_SK_OK"
+msgstr "OK"
 
-msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
-msgstr "Both Wi-Fi and Mobile AP cannot be activated at the same time. Deactivate Mobile AP?"
+msgid "IDS_ST_SK_NO"
+msgstr "No"
 
-msgid "IDS_ASCAST_HEADER_SCREEN_MIRRORING"
-msgstr "Screen Mirroring"
+msgid "IDS_ST_POP_UNABLE_TO_INCREASE_BRIGHTNESS_FURTHER_BECAUSE_OF_PHONE_OVERHEATING"
+msgstr "Unable to increase brightness further because of phone overheating."
 
-msgid "IDS_QP_HEADER_REPLACE_QUICK_SETTING_BUTTON"
-msgstr "Replace quick setting button"
+msgid "IDS_ST_NPBODY_NO_SERVICE"
+msgstr "No service"
 
-msgid "IDS_QP_HEADER_ADD_QUICK_SETTING_BUTTON"
-msgstr "Add quick setting button"
+msgid "IDS_ST_NPBODY_EMERGENCY_CALLS_ONLY_ABB"
+msgstr "Emergency calls only"
 
-msgid "IDS_QP_POP_YOU_WILL_NO_LONGER_BE_ABLE_TO_USE_APPLICATIONS_SUCH_AS_INTERNET_NOTI_MSG"
-msgstr "You will no longer be able to use applications such as Internet and Email via mobile networks. Continue?"
+msgid "IDS_ST_HEADER_OUTDOOR"
+msgstr "Outdoor"
 
-msgid "IDS_QP_BUTTON2_SCREEN_N_MIRRORING"
-msgstr "Screen\nMirroring"
+msgid "IDS_ST_BUTTON2_WI_FI_NTETHERING"
+msgstr "Wi-Fi\ntethering"
 
-msgid "IDS_COM_BODY_BUTTON_T_TTS"
-msgstr "Button"
+msgid "IDS_ST_BUTTON2_WI_FI_ABB"
+msgstr "Wi-Fi"
 
-msgid "IDS_QP_BUTTON2_GPS"
+msgid "IDS_ST_BUTTON2_TORCH_ABB"
+msgstr "Torch"
+
+msgid "IDS_ST_BUTTON2_POWER_NSAVING"
+msgstr "Power\nsaving"
+
+msgid "IDS_ST_BUTTON2_MOBILE_NDATA"
+msgstr "Mobile\ndata"
+
+msgid "IDS_ST_BUTTON2_GPS_ABB"
 msgstr "GPS"
 
-msgid "IDS_QP_BUTTON_NOTIFICATION"
-msgstr "Notification"
+msgid "IDS_ST_BUTTON2_FLIGHT_NMODE"
+msgstr "Flight\nmode"
+
+msgid "IDS_ST_BUTTON2_BLUETOOTH_ABB"
+msgstr "Bluetooth"
+
+msgid "IDS_ST_BUTTON2_AUTO_NROTATE"
+msgstr "Auto\nrotate"
+
+msgid "IDS_ST_BODY_SIM_2"
+msgstr "SIM 2"
+
+msgid "IDS_ST_BODY_SIM_1"
+msgstr "SIM 1"
+
+msgid "IDS_ST_BODY_SCANNING_FOR_MOBILE_NETWORK_ING_ABB"
+msgstr "Scanning for mobile network..."
+
+msgid "IDS_ST_BODY_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
+msgstr "Insert SIM card to access network services."
+
+msgid "IDS_ST_BODY_ALWAYS_ASK_ABB"
+msgstr "Always ask"
+
+msgid "IDS_SCP_BODY_UNABLE_TO_CONNECT_TO_MOBILE_NETWORKS_WHILE_FLIGHT_MODE_IS_ENABLED_CONNECT_TO_A_WI_FI_NETWORK_INSTEAD_OR_DISABLE_FLIGHT_MODE_AND_TRY_AGAIN"
+msgstr "Unable to connect to mobile networks while Flight mode is enabled. Connect to a Wi-Fi network instead, or disable Flight mode and try again."
 
-msgid "IDS_COM_BUTTON_AGREE"
-msgstr "Agree"
+msgid "IDS_COM_BODY_SEARCHING"
+msgstr "Searching"
 
-msgid "IDS_COM_BUTTON_DISAGREE"
-msgstr "Disagree"
+msgid "IDS_QP_TPOP_UNABLE_TO_OPEN_PS"
+msgstr "Unable to open %s."
 
-msgid "IDS_ST_BODY_GPS_LOCATION_USE_CONTROLLED_BY_APPLICATIONS_MSG"
-msgstr "GPS location and use of your location data are controlled by the applications you use"
+msgid "IDS_QP_OPT_OUTDOORS_M_OUTDOOR_MODE_ABB"
+msgstr "Outdoors"
 
-msgid "IDS_ST_HEADER_USER_CONSENT"
-msgstr "User consent"
+msgid "IDS_QP_BUTTON2_PRIVATE_NMODE_ABB"
+msgstr "Private\nmode"
 
index c2e73ee..6a892f3 100755 (executable)
-msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
-msgstr "Notifications"
+msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
+msgstr "Both Wi-Fi and Mobile AP cannot be activated at the same time. Deactivate Mobile AP?"
+
+msgid "IDS_TASKMGR_BUTTON_CLEAR_ALL"
+msgstr "Clear all"
 
-msgid "IDS_WIFI_BODY_ALLSHARE_CAST"
-msgstr "AllShare Cast"
+msgid "IDS_IDLE_SBODY_TAP_HERE_TO_DISABLE_SAFE_MODE_ABB"
+msgstr "Tap here to disable Safe mode."
 
-msgid "IDS_CALL_POP_CALLING_EMERG_ONLY"
+msgid "IDS_IDLE_POP_UNABLE_TO_LAUNCH_PS"
+msgstr "Unable to launch %s."
+
+msgid "IDS_IDLE_MBODY_EMERGENCY_CALLS_ONLY"
 msgstr "Emergency calls only"
 
-msgid "IDS_QP_BUTTON_ROTATION"
-msgstr "Rotation"
+msgid "IDS_IDLE_BODY_SEARCHING_ING"
+msgstr "Searching..."
+
+msgid "IDS_IDLE_BODY_NO_SIM"
+msgstr "No SIM"
+
+msgid "IDS_IDLE_BODY_NO_SERVICE"
+msgstr "No service"
 
-msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
+msgid "IDS_IDLE_BODY_INVALID_SIM_CARD"
+msgstr "Invalid SIM card."
+
+msgid "IDS_IDLE_BODY_EMERGENCY_CALLS_ONLY"
+msgstr "Emergency calls only"
+
+msgid "IDS_QP_OPT_OUTDOORS_ABB"
+msgstr "Outdoors"
+
+msgid "IDS_QP_MBODY_SAFE_MODE_ENABLED"
+msgstr "Safe mode enabled"
+
+msgid "IDS_QP_HEADER_NOTIFICATIONS_HPD_ABB"
 msgstr "Notifications (%d)"
 
-msgid "IDS_QP_BUTTON_VIBRATION"
-msgstr "Vibration"
+msgid "IDS_QP_HEADER_CLEAR_ALL_ABB"
+msgstr "Clear all"
 
-msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
-msgstr "Sound & vibration"
+msgid "IDS_QP_BUTTON_NOTIFICATION"
+msgstr "Notification"
 
-msgid "IDS_QP_TAB4_AUTO_ROTATION"
-msgstr "Auto rotation"
+msgid "IDS_QP_BUTTON_ALWAYS_ASK_ABB"
+msgstr "Always ask"
 
-msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
-msgstr "Rotation lock"
+msgid "IDS_QP_BUTTON2_WI_FI"
+msgstr "Wi-Fi"
 
-msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
-msgstr "Mass storage mode"
+msgid "IDS_QP_BUTTON2_VIBRATE"
+msgstr "Vibrate"
 
-msgid "IDS_QP_BUTTON_DISABLE"
-msgstr "Turn off"
+msgid "IDS_QP_BUTTON2_U_POWER_NSAVING_ABB"
+msgstr "U. power\nsaving"
 
-msgid "IDS_QP_BUTTON_ENABLE"
-msgstr "Turn on"
+msgid "IDS_QP_BUTTON2_TETHERING"
+msgstr "Tethering"
 
-msgid "IDS_COM_POP_UNSUPPORTED"
-msgstr "Unsupported"
+msgid "IDS_QP_BUTTON2_SOUND_ABB"
+msgstr "Sound"
 
-msgid "IDS_COM_SK_DISMISS"
-msgstr "Dismiss"
+msgid "IDS_QP_BUTTON2_SOUND"
+msgstr "Sound"
 
-msgid "IDS_COM_POP_PELASE_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
-msgstr "Insert SIM card to access network services"
+msgid "IDS_QP_BUTTON2_PRIVATE_MODE"
+msgstr "Private mode"
 
-msgid "IDS_COM_BODY_DO_NOT_ASK_AGAIN"
-msgstr "Do not ask again"
+msgid "IDS_QP_BUTTON2_POWER_N_SAVING"
+msgstr "Power\nsaving"
 
-msgid "IDS_QP_POP_INSERT_SIM_CARD_AND_RESTART_DEVICE_TO_USE_TETHERING"
-msgstr "Insert SIM card and restart device to use tethering"
+msgid "IDS_QP_BUTTON2_MUTE_ABB"
+msgstr "Mute"
 
-msgid "IDS_QP_POP_CONNECTING_VIA_PACKET_DATA_MAY_INCUR_ADDITIONAL_CHARGES_CONTINUE_Q"
-msgstr "Connecting via packet data may incur additional charges. Continue?"
+msgid "IDS_QP_BUTTON2_MOBILE_DATA"
+msgstr "Mobile\ndata"
 
-msgid "IDS_QP_BODY_AUTO"
-msgstr "Auto"
+msgid "IDS_QP_BUTTON2_LOCATION_ABB"
+msgstr "Location"
 
-msgid "IDS_QP_TAB_POWER_SAVING"
-msgstr "Power saving"
+msgid "IDS_QP_BUTTON2_FLIGHT_N_MODE"
+msgstr "Airplane\nmode"
 
-msgid "IDS_QP_TAB_TETHERING"
-msgstr "Tethering"
+msgid "IDS_QP_BUTTON2_BLUETOOTH"
+msgstr "Bluetooth"
 
-msgid "IDS_QP_TAB_MOBILE_DATA"
-msgstr "Mobile data"
+msgid "IDS_QP_BUTTON2_AUTO_ROTATE"
+msgstr "Auto rotate"
 
-msgid "IDS_QP_TAB_DRIVING_MODE"
-msgstr "Driving mode"
+msgid "IDS_QP_BUTTON2_ASSISTIVE_NLIGHT"
+msgstr "Assistive\nlight"
 
-msgid "IDS_COM_POP_UNABLE_TO_CONNECT_TO_MOBILE_NETWORK_WHILE_FLIGHT_MODE_IS_ENABLED_MSG"
-msgstr "Unable to connect to mobile networks while Airplane mode is turned on. Connect to Wi-Fi network instead, or turn off Airplane mode and try again."
+msgid "IDS_QP_BODY_PM_ABB"
+msgstr "PM"
 
-msgid "IDS_QP_POP_WI_FI_TETHERING_CONSUMES_MORE_BATTERY_POWER_AND_INCREASES_YOUR_DATA_USAGE_CONTINUE_Q"
-msgstr "Wi-Fi tethering consumes more battery power and increases your data usage. Continue?"
+msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
+msgstr "Notifications"
 
-msgid "IDS_QP_POP_DISABLE_TETHERING_TO_USE_WI_FI"
-msgstr "Turn off tethering to use Wi-Fi"
+msgid "IDS_QP_BODY_AM_ABB"
+msgstr "AM"
 
-msgid "IDS_QP_POP_TO_ENABLE_POWER_SAVING_MODE_ENABLE_AT_LEAST_ONE_RELEVANT_FUNCTION"
-msgstr "To turn on Power saving mode, turn on at least one relevant function"
+msgid "IDS_ST_TPOP_UNABLE_TO_MAKE_VOICE_CALLS_VIDEO_CALLS_AND_SEND_TEXT_MESSAGES_USING_PS"
+msgstr "Unable to make voice and video calls or send text messages using %s."
 
-msgid "IDS_QP_POP_TURN_OFF_WI_FI_TO_USE_TETHERING"
-msgstr "Turn off Wi-Fi to use tethering."
+msgid "IDS_ST_TPOP_SELECT_SIM_CARD_FOR_OUTGOING_VOICE_CALLS_VIDEO_CALLS_AND_TEXT_MESSAGES"
+msgstr "Select SIM card for outgoing voice calls, video calls, and text messages."
 
-msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
-msgstr "Both Wi-Fi and Mobile AP cannot be activated at the same time. Deactivate Mobile AP?"
+msgid "IDS_ST_TPOP_OUTGOING_VOICE_CALLS_VIDEO_CALLS_AND_TEXT_MESSAGES_WILL_BE_MADE_USING_THE_PS_SIM_CARD"
+msgstr "Outgoing voice calls, video calls, and text messages will be made using the %s SIM card."
+
+msgid "IDS_ST_SK_OK"
+msgstr "OK"
 
-msgid "IDS_ASCAST_HEADER_SCREEN_MIRRORING"
-msgstr "Screen Mirroring"
+msgid "IDS_ST_SK_NO"
+msgstr "No"
 
-msgid "IDS_QP_HEADER_REPLACE_QUICK_SETTING_BUTTON"
-msgstr "Replace quick setting button"
+msgid "IDS_ST_POP_UNABLE_TO_INCREASE_BRIGHTNESS_FURTHER_BECAUSE_OF_PHONE_OVERHEATING"
+msgstr "Unable to increase brightness further because of phone overheating."
 
-msgid "IDS_QP_HEADER_ADD_QUICK_SETTING_BUTTON"
-msgstr "Add quick setting button"
+msgid "IDS_ST_NPBODY_NO_SERVICE"
+msgstr "No service"
+
+msgid "IDS_ST_NPBODY_EMERGENCY_CALLS_ONLY_ABB"
+msgstr "Emergency calls only"
 
-msgid "IDS_QP_POP_YOU_WILL_NO_LONGER_BE_ABLE_TO_USE_APPLICATIONS_SUCH_AS_INTERNET_NOTI_MSG"
-msgstr "You will no longer be able to use applications such as Internet and Email via mobile networks. Continue?"
+msgid "IDS_ST_HEADER_OUTDOOR"
+msgstr "Outdoor"
 
-msgid "IDS_QP_BUTTON2_SCREEN_N_MIRRORING"
-msgstr "Screen\nMirroring"
+msgid "IDS_ST_BUTTON2_WI_FI_NTETHERING"
+msgstr "Wi-Fi\ntethering"
 
-msgid "IDS_COM_BODY_BUTTON_T_TTS"
-msgstr "Button"
+msgid "IDS_ST_BUTTON2_WI_FI_ABB"
+msgstr "Wi-Fi"
 
-msgid "IDS_QP_BUTTON2_GPS"
+msgid "IDS_ST_BUTTON2_TORCH_ABB"
+msgstr "Flashlight"
+
+msgid "IDS_ST_BUTTON2_POWER_NSAVING"
+msgstr "Power\nsaving"
+
+msgid "IDS_ST_BUTTON2_MOBILE_NDATA"
+msgstr "Mobile\ndata"
+
+msgid "IDS_ST_BUTTON2_GPS_ABB"
 msgstr "GPS"
 
-msgid "IDS_QP_BUTTON_NOTIFICATION"
-msgstr "Notification"
+msgid "IDS_ST_BUTTON2_FLIGHT_NMODE"
+msgstr "Airplane\nmode"
+
+msgid "IDS_ST_BUTTON2_BLUETOOTH_ABB"
+msgstr "Bluetooth"
+
+msgid "IDS_ST_BUTTON2_AUTO_NROTATE"
+msgstr "Auto\nrotate"
+
+msgid "IDS_ST_BODY_SIM_2"
+msgstr "SIM2"
+
+msgid "IDS_ST_BODY_SIM_1"
+msgstr "SIM1"
+
+msgid "IDS_ST_BODY_SCANNING_FOR_MOBILE_NETWORK_ING_ABB"
+msgstr "Scanning for mobile network..."
+
+msgid "IDS_ST_BODY_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
+msgstr "Insert SIM card to access network services."
+
+msgid "IDS_ST_BODY_ALWAYS_ASK_ABB"
+msgstr "Always ask"
+
+msgid "IDS_SCP_BODY_UNABLE_TO_CONNECT_TO_MOBILE_NETWORKS_WHILE_FLIGHT_MODE_IS_ENABLED_CONNECT_TO_A_WI_FI_NETWORK_INSTEAD_OR_DISABLE_FLIGHT_MODE_AND_TRY_AGAIN"
+msgstr "Unable to connect to mobile networks while Airplane mode is on. Connect to a Wi-Fi network instead, or turn off Airplane mode, and try again."
 
-msgid "IDS_COM_BUTTON_AGREE"
-msgstr "Agree"
+msgid "IDS_COM_BODY_SEARCHING"
+msgstr "Searching"
 
-msgid "IDS_COM_BUTTON_DISAGREE"
-msgstr "Disagree"
+msgid "IDS_QP_TPOP_UNABLE_TO_OPEN_PS"
+msgstr "Unable to open %s."
 
-msgid "IDS_ST_BODY_GPS_LOCATION_USE_CONTROLLED_BY_APPLICATIONS_MSG"
-msgstr "GPS location and use of your location data are controlled by the applications you use"
+msgid "IDS_QP_OPT_OUTDOORS_M_OUTDOOR_MODE_ABB"
+msgstr "Outdoors"
 
-msgid "IDS_ST_HEADER_USER_CONSENT"
-msgstr "User consent"
+msgid "IDS_QP_BUTTON2_PRIVATE_NMODE_ABB"
+msgstr "Private\nmode"
 
index 222e57a..a8b43be 100755 (executable)
-msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
-msgstr "Notificación"
+msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
+msgstr "Las conexiones Wi-Fi y Mobile AP no se pueden activar al mismo tiempo. ¿Desactivar Mobile AP?"
+
+msgid "IDS_TASKMGR_BUTTON_CLEAR_ALL"
+msgstr "Borrar todo"
+
+msgid "IDS_IDLE_SBODY_TAP_HERE_TO_DISABLE_SAFE_MODE_ABB"
+msgstr "Pulse para desact modo seguro."
+
+msgid "IDS_IDLE_POP_UNABLE_TO_LAUNCH_PS"
+msgstr "No se puede iniciar %s"
+
+msgid "IDS_IDLE_MBODY_EMERGENCY_CALLS_ONLY"
+msgstr "Solo llamadas emergencia"
+
+msgid "IDS_IDLE_BODY_SEARCHING_ING"
+msgstr "Buscando..."
 
-msgid "IDS_WIFI_BODY_ALLSHARE_CAST"
-msgstr "AllShare Cast"
+msgid "IDS_IDLE_BODY_NO_SIM"
+msgstr "No hay SIM"
 
-msgid "IDS_CALL_POP_CALLING_EMERG_ONLY"
+msgid "IDS_IDLE_BODY_NO_SERVICE"
+msgstr "Sin servicio"
+
+msgid "IDS_IDLE_BODY_INVALID_SIM_CARD"
+msgstr "Tarjeta SIM no válida"
+
+msgid "IDS_IDLE_BODY_EMERGENCY_CALLS_ONLY"
 msgstr "Sólo llamadas de emergencia"
 
-msgid "IDS_QP_BUTTON_ROTATION"
-msgstr "Rotación"
+msgid "IDS_QP_OPT_OUTDOORS_ABB"
+msgstr "Exterior"
 
-msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
+msgid "IDS_QP_MBODY_SAFE_MODE_ENABLED"
+msgstr "Modo seguro activado"
+
+msgid "IDS_QP_HEADER_NOTIFICATIONS_HPD_ABB"
 msgstr "Notificaciones (%d)"
 
-msgid "IDS_QP_BUTTON_VIBRATION"
-msgstr "Vibración"
+msgid "IDS_QP_HEADER_CLEAR_ALL_ABB"
+msgstr "Elim todo"
 
-msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
-msgstr "Sonido y vibración"
+msgid "IDS_QP_BUTTON_NOTIFICATION"
+msgstr "Notificac"
 
-msgid "IDS_QP_TAB4_AUTO_ROTATION"
-msgstr "Rotación autom"
+msgid "IDS_QP_BUTTON_ALWAYS_ASK_ABB"
+msgstr "Preg siempre"
 
-msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
-msgstr "Bloq rotación"
+msgid "IDS_QP_BUTTON2_WI_FI"
+msgstr "Wi-Fi"
 
-msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
-msgstr "Modo almacenam masivo"
+msgid "IDS_QP_BUTTON2_VIBRATE"
+msgstr "Vibrar"
 
-msgid "IDS_QP_BUTTON_DISABLE"
-msgstr "Desactiv"
+msgid "IDS_QP_BUTTON2_U_POWER_NSAVING_ABB"
+msgstr "Ultra\nahorro"
 
-msgid "IDS_QP_BUTTON_ENABLE"
-msgstr "Habilitar"
+msgid "IDS_QP_BUTTON2_TETHERING"
+msgstr "Anclaje a red"
 
-msgid "IDS_COM_POP_UNSUPPORTED"
-msgstr "No admitido"
+msgid "IDS_QP_BUTTON2_SOUND_ABB"
+msgstr "Sonido"
 
-msgid "IDS_COM_SK_DISMISS"
-msgstr "Rechazar"
+msgid "IDS_QP_BUTTON2_SOUND"
+msgstr "Sonido"
 
-msgid "IDS_COM_POP_PELASE_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
-msgstr "Inserte la tarjeta SIM para acceder a los servicios de red"
+msgid "IDS_QP_BUTTON2_PRIVATE_MODE"
+msgstr "Modo Privado"
 
-msgid "IDS_COM_BODY_DO_NOT_ASK_AGAIN"
-msgstr "No preguntar de nuevo"
+msgid "IDS_QP_BUTTON2_POWER_N_SAVING"
+msgstr "Ahorro\nenergía"
 
-msgid "IDS_QP_POP_INSERT_SIM_CARD_AND_RESTART_DEVICE_TO_USE_TETHERING"
-msgstr "Introduzca la tarjeta SIM y reinicie el dispositivo para utilizar anclaje a red"
+msgid "IDS_QP_BUTTON2_MUTE_ABB"
+msgstr "Silencio"
 
-msgid "IDS_QP_POP_CONNECTING_VIA_PACKET_DATA_MAY_INCUR_ADDITIONAL_CHARGES_CONTINUE_Q"
-msgstr "La conexión mediante paquetes de datos puede suponer gastos adicionales. ¿Continuar?"
+msgid "IDS_QP_BUTTON2_MOBILE_DATA"
+msgstr "Datos\nmóviles"
 
-msgid "IDS_QP_BODY_AUTO"
-msgstr "Automático"
+msgid "IDS_QP_BUTTON2_LOCATION_ABB"
+msgstr "Ubicación"
 
-msgid "IDS_QP_TAB_POWER_SAVING"
-msgstr "Ahorro de energía"
+msgid "IDS_QP_BUTTON2_FLIGHT_N_MODE"
+msgstr "Modo\navión"
 
-msgid "IDS_QP_TAB_TETHERING"
-msgstr "Módem USB"
+msgid "IDS_QP_BUTTON2_BLUETOOTH"
+msgstr "Bluetooth"
 
-msgid "IDS_QP_TAB_MOBILE_DATA"
-msgstr "Datos móviles"
+msgid "IDS_QP_BUTTON2_AUTO_ROTATE"
+msgstr "Rotación automática"
 
-msgid "IDS_QP_TAB_DRIVING_MODE"
-msgstr "Modo de conducción"
+msgid "IDS_QP_BUTTON2_ASSISTIVE_NLIGHT"
+msgstr "Luz de\nasisten"
 
-msgid "IDS_COM_POP_UNABLE_TO_CONNECT_TO_MOBILE_NETWORK_WHILE_FLIGHT_MODE_IS_ENABLED_MSG"
-msgstr "No se puede conectar a redes móviles mientras el modo Avión está activado. Conecte a una red Wi-Fi en su lugar o desactive el modo Avión y vuelva a intentarlo"
+msgid "IDS_QP_BODY_PM_ABB"
+msgstr "PM"
 
-msgid "IDS_QP_POP_WI_FI_TETHERING_CONSUMES_MORE_BATTERY_POWER_AND_INCREASES_YOUR_DATA_USAGE_CONTINUE_Q"
-msgstr "El anclaje a red Wi-Fi consume mucha batería y aumenta el uso de datos. ¿Continuar?"
+msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
+msgstr "Notificación"
 
-msgid "IDS_QP_POP_DISABLE_TETHERING_TO_USE_WI_FI"
-msgstr "Desactive el anclaje a red para usar Wi-Fi"
+msgid "IDS_QP_BODY_AM_ABB"
+msgstr "AM"
 
-msgid "IDS_QP_POP_TO_ENABLE_POWER_SAVING_MODE_ENABLE_AT_LEAST_ONE_RELEVANT_FUNCTION"
-msgstr "Para habilitar el modo de ahorro de energía, active al menos una función relevante"
+msgid "IDS_ST_TPOP_UNABLE_TO_MAKE_VOICE_CALLS_VIDEO_CALLS_AND_SEND_TEXT_MESSAGES_USING_PS"
+msgstr "No se pueden hacer llamadas de voz, videollamadas ni enviar mensajes de texto con %s."
 
-msgid "IDS_QP_POP_TURN_OFF_WI_FI_TO_USE_TETHERING"
-msgstr "Apague la Wi-Fi para usar anclaje a red"
+msgid "IDS_ST_TPOP_SELECT_SIM_CARD_FOR_OUTGOING_VOICE_CALLS_VIDEO_CALLS_AND_TEXT_MESSAGES"
+msgstr "Seleccione una tarjeta SIM para las llamadas de voz, las videollamadas y los mensajes de texto salientes."
 
-msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
-msgstr "Las conexiones Wi-Fi y Mobile AP no se pueden activar al mismo tiempo. ¿Desactivar Mobile AP?"
+msgid "IDS_ST_TPOP_OUTGOING_VOICE_CALLS_VIDEO_CALLS_AND_TEXT_MESSAGES_WILL_BE_MADE_USING_THE_PS_SIM_CARD"
+msgstr "Las llamadas de voz salientes, las videollamadas y los mensajes de texto se realizarán con la tarjeta SIM %s."
+
+msgid "IDS_ST_SK_OK"
+msgstr "Aceptar"
+
+msgid "IDS_ST_SK_NO"
+msgstr "No"
+
+msgid "IDS_ST_POP_UNABLE_TO_INCREASE_BRIGHTNESS_FURTHER_BECAUSE_OF_PHONE_OVERHEATING"
+msgstr "No se puede incrementar más el brillo debido a un sobrecalentamiento del teléfono"
 
-msgid "IDS_ASCAST_HEADER_SCREEN_MIRRORING"
-msgstr "Screen Mirroring"
+msgid "IDS_ST_NPBODY_NO_SERVICE"
+msgstr "Sin servicio"
 
-msgid "IDS_QP_HEADER_REPLACE_QUICK_SETTING_BUTTON"
-msgstr "Reemplazar botón de ajuste rápido"
+msgid "IDS_ST_NPBODY_EMERGENCY_CALLS_ONLY_ABB"
+msgstr "Solo llamadas de emergencia"
 
-msgid "IDS_QP_HEADER_ADD_QUICK_SETTING_BUTTON"
-msgstr "Añadir botón de ajuste rápido"
+msgid "IDS_ST_HEADER_OUTDOOR"
+msgstr "Exterior"
 
-msgid "IDS_QP_POP_YOU_WILL_NO_LONGER_BE_ABLE_TO_USE_APPLICATIONS_SUCH_AS_INTERNET_NOTI_MSG"
-msgstr "Ya no podrá utilizar aplicaciones de datos como Internet y el correo electrónico mediante redes móviles. ¿Continuar?"
+msgid "IDS_ST_BUTTON2_WI_FI_NTETHERING"
+msgstr "Anclaje\na Wi-Fi"
 
-msgid "IDS_QP_BUTTON2_SCREEN_N_MIRRORING"
-msgstr "Compartir\npantalla"
+msgid "IDS_ST_BUTTON2_WI_FI_ABB"
+msgstr "Wi-Fi"
 
-msgid "IDS_COM_BODY_BUTTON_T_TTS"
-msgstr "Botón"
+msgid "IDS_ST_BUTTON2_TORCH_ABB"
+msgstr "Linterna"
 
-msgid "IDS_QP_BUTTON2_GPS"
+msgid "IDS_ST_BUTTON2_POWER_NSAVING"
+msgstr "Ahorro\nenergía"
+
+msgid "IDS_ST_BUTTON2_MOBILE_NDATA"
+msgstr "Datos\nmóviles"
+
+msgid "IDS_ST_BUTTON2_GPS_ABB"
 msgstr "GPS"
 
-msgid "IDS_QP_BUTTON_NOTIFICATION"
-msgstr "Notificac"
+msgid "IDS_ST_BUTTON2_FLIGHT_NMODE"
+msgstr "Modo\nAvión"
+
+msgid "IDS_ST_BUTTON2_BLUETOOTH_ABB"
+msgstr "Bluetooth"
+
+msgid "IDS_ST_BUTTON2_AUTO_NROTATE"
+msgstr "Giro\nauto"
+
+msgid "IDS_ST_BODY_SIM_2"
+msgstr "SIM 2"
+
+msgid "IDS_ST_BODY_SIM_1"
+msgstr "SIM 1"
+
+msgid "IDS_ST_BODY_SCANNING_FOR_MOBILE_NETWORK_ING_ABB"
+msgstr "Buscando red móvil..."
+
+msgid "IDS_ST_BODY_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
+msgstr "Inserte la tarjeta SIM para acceder a los servicios de red."
+
+msgid "IDS_ST_BODY_ALWAYS_ASK_ABB"
+msgstr "Preguntar siempre"
+
+msgid "IDS_SCP_BODY_UNABLE_TO_CONNECT_TO_MOBILE_NETWORKS_WHILE_FLIGHT_MODE_IS_ENABLED_CONNECT_TO_A_WI_FI_NETWORK_INSTEAD_OR_DISABLE_FLIGHT_MODE_AND_TRY_AGAIN"
+msgstr "No es posible conectar a las redes móviles mientras el modo Avión esté activado. Conéctese a una red Wi-Fi o desactive el modo Avión e inténtelo de nuevo."
 
-msgid "IDS_COM_BUTTON_AGREE"
-msgstr "Acepto"
+msgid "IDS_COM_BODY_SEARCHING"
+msgstr "Buscando"
 
-msgid "IDS_COM_BUTTON_DISAGREE"
-msgstr "No acepto"
+msgid "IDS_QP_TPOP_UNABLE_TO_OPEN_PS"
+msgstr "No se puede abrir %s."
 
-msgid "IDS_ST_BODY_GPS_LOCATION_USE_CONTROLLED_BY_APPLICATIONS_MSG"
-msgstr "La ubicación del GPS y el uso de los datos de ubicación los controlan las aplicaciones que utiliza"
+msgid "IDS_QP_OPT_OUTDOORS_M_OUTDOOR_MODE_ABB"
+msgstr "Exterior"
 
-msgid "IDS_ST_HEADER_USER_CONSENT"
-msgstr "Consentimiento del usuario"
+msgid "IDS_QP_BUTTON2_PRIVATE_NMODE_ABB"
+msgstr "Modo\nPrivado"
 
diff --git a/po/es_MX.po b/po/es_MX.po
deleted file mode 100755 (executable)
index b2532c6..0000000
+++ /dev/null
@@ -1,123 +0,0 @@
-msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
-msgstr "Notific."
-
-msgid "IDS_WIFI_BODY_ALLSHARE_CAST"
-msgstr "AllShare Cast"
-
-msgid "IDS_CALL_POP_CALLING_EMERG_ONLY"
-msgstr "Sólo llamadas de emergencia"
-
-msgid "IDS_QP_BUTTON_ROTATION"
-msgstr "Rotación"
-
-msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
-msgstr "Notificaciones (%d)"
-
-msgid "IDS_QP_BUTTON_VIBRATION"
-msgstr "Vibración"
-
-msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
-msgstr "Sonido y vibración"
-
-msgid "IDS_QP_TAB4_AUTO_ROTATION"
-msgstr "Rotación auto."
-
-msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
-msgstr "Bloq rotación"
-
-msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
-msgstr "Modo de almacenamiento masivo"
-
-msgid "IDS_QP_BUTTON_DISABLE"
-msgstr "Desactiv."
-
-msgid "IDS_QP_BUTTON_ENABLE"
-msgstr "Activar"
-
-msgid "IDS_COM_POP_UNSUPPORTED"
-msgstr "No compatible"
-
-msgid "IDS_COM_SK_DISMISS"
-msgstr "Rechazar"
-
-msgid "IDS_COM_POP_PELASE_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
-msgstr "Insertar tarjeta SIM para acceder a los servicios de red"
-
-msgid "IDS_COM_BODY_DO_NOT_ASK_AGAIN"
-msgstr "No volver a preguntar"
-
-msgid "IDS_QP_POP_INSERT_SIM_CARD_AND_RESTART_DEVICE_TO_USE_TETHERING"
-msgstr "Inserte tarjeta SIM y reinicie el dispositivo para usar la redirección"
-
-msgid "IDS_QP_POP_CONNECTING_VIA_PACKET_DATA_MAY_INCUR_ADDITIONAL_CHARGES_CONTINUE_Q"
-msgstr "La conexión mediante paquete de datos puede suponer gastos adicionales. ¿Continuar?"
-
-msgid "IDS_QP_BODY_AUTO"
-msgstr "Automático"
-
-msgid "IDS_QP_TAB_POWER_SAVING"
-msgstr "Ahorro de energía"
-
-msgid "IDS_QP_TAB_TETHERING"
-msgstr "Anclaje a red"
-
-msgid "IDS_QP_TAB_MOBILE_DATA"
-msgstr "Datos móviles"
-
-msgid "IDS_QP_TAB_DRIVING_MODE"
-msgstr "Perfil Manejo"
-
-msgid "IDS_COM_POP_UNABLE_TO_CONNECT_TO_MOBILE_NETWORK_WHILE_FLIGHT_MODE_IS_ENABLED_MSG"
-msgstr "No se puede conectar a las redes móviles mientras que el perfil Fuera de línea está activado. Conéctese a una red Wi-Fi o desactive el perfil Fuera de línea e inténtelo de nuevo"
-
-msgid "IDS_QP_POP_WI_FI_TETHERING_CONSUMES_MORE_BATTERY_POWER_AND_INCREASES_YOUR_DATA_USAGE_CONTINUE_Q"
-msgstr "La redirección de Wi-Fi consume más batería y aumenta el uso de datos. ¿Continuar?"
-
-msgid "IDS_QP_POP_DISABLE_TETHERING_TO_USE_WI_FI"
-msgstr "Desactive la redirección para usar Wi-Fi"
-
-msgid "IDS_QP_POP_TO_ENABLE_POWER_SAVING_MODE_ENABLE_AT_LEAST_ONE_RELEVANT_FUNCTION"
-msgstr "Para activar el Modo de ahorro de energía, active, al menos, una función importante"
-
-msgid "IDS_QP_POP_TURN_OFF_WI_FI_TO_USE_TETHERING"
-msgstr "Desactive Wi-Fi para usar la redirección"
-
-msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
-msgstr "Las conexiones Wi-Fi y Mobile AP no se pueden activar al mismo tiempo. ¿Desactivar Mobile AP?"
-
-msgid "IDS_ASCAST_HEADER_SCREEN_MIRRORING"
-msgstr "Screen Mirroring"
-
-msgid "IDS_QP_HEADER_REPLACE_QUICK_SETTING_BUTTON"
-msgstr "Reemplazar el botón de configuración rápida"
-
-msgid "IDS_QP_HEADER_ADD_QUICK_SETTING_BUTTON"
-msgstr "Añadir botón de configuración rápida"
-
-msgid "IDS_QP_POP_YOU_WILL_NO_LONGER_BE_ABLE_TO_USE_APPLICATIONS_SUCH_AS_INTERNET_NOTI_MSG"
-msgstr "Ya no podrá usar aplicaciones como Internet y correo a través de redes móviles. ¿Continuar?"
-
-msgid "IDS_QP_BUTTON2_SCREEN_N_MIRRORING"
-msgstr "Pantalla\nEspejo"
-
-msgid "IDS_COM_BODY_BUTTON_T_TTS"
-msgstr "Botón"
-
-msgid "IDS_QP_BUTTON2_GPS"
-msgstr "GPS"
-
-msgid "IDS_QP_BUTTON_NOTIFICATION"
-msgstr "Notific."
-
-msgid "IDS_COM_BUTTON_AGREE"
-msgstr "Acepto"
-
-msgid "IDS_COM_BUTTON_DISAGREE"
-msgstr "En desacuer."
-
-msgid "IDS_ST_BODY_GPS_LOCATION_USE_CONTROLLED_BY_APPLICATIONS_MSG"
-msgstr "La ubicación del GPS y el uso de los datos de ubicación los controlan las aplicaciones que utiliza"
-
-msgid "IDS_ST_HEADER_USER_CONSENT"
-msgstr "Consentimiento del usuario"
-
diff --git a/po/es_US.po b/po/es_US.po
new file mode 100644 (file)
index 0000000..732597f
--- /dev/null
@@ -0,0 +1,186 @@
+msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
+msgstr "Las conexiones Wi-Fi y Mobile AP no se pueden activar al mismo tiempo. ¿Desactivar Mobile AP?"
+
+msgid "IDS_TASKMGR_BUTTON_CLEAR_ALL"
+msgstr "Eliminar todo"
+
+msgid "IDS_IDLE_SBODY_TAP_HERE_TO_DISABLE_SAFE_MODE_ABB"
+msgstr "Pulse para desact modo seguro."
+
+msgid "IDS_IDLE_POP_UNABLE_TO_LAUNCH_PS"
+msgstr "No es posible iniciar %s."
+
+msgid "IDS_IDLE_MBODY_EMERGENCY_CALLS_ONLY"
+msgstr "Llamadas de emergencia"
+
+msgid "IDS_IDLE_BODY_SEARCHING_ING"
+msgstr "Buscando..."
+
+msgid "IDS_IDLE_BODY_NO_SIM"
+msgstr "No hay tarjeta SIM"
+
+msgid "IDS_IDLE_BODY_NO_SERVICE"
+msgstr "Sin servicio"
+
+msgid "IDS_IDLE_BODY_INVALID_SIM_CARD"
+msgstr "Tarjeta SIM no válida."
+
+msgid "IDS_IDLE_BODY_EMERGENCY_CALLS_ONLY"
+msgstr "Sólo llamadas de emergencia."
+
+msgid "IDS_QP_OPT_OUTDOORS_ABB"
+msgstr "Exterior"
+
+msgid "IDS_QP_MBODY_SAFE_MODE_ENABLED"
+msgstr "Modo seguro activado"
+
+msgid "IDS_QP_HEADER_NOTIFICATIONS_HPD_ABB"
+msgstr "Notificaciones (%d)"
+
+msgid "IDS_QP_HEADER_CLEAR_ALL_ABB"
+msgstr "Elim. todo"
+
+msgid "IDS_QP_BUTTON_NOTIFICATION"
+msgstr "Notific."
+
+msgid "IDS_QP_BUTTON_ALWAYS_ASK_ABB"
+msgstr "Pregunt. siempre"
+
+msgid "IDS_QP_BUTTON2_WI_FI"
+msgstr "Wi-Fi"
+
+msgid "IDS_QP_BUTTON2_VIBRATE"
+msgstr "Vibrar"
+
+msgid "IDS_QP_BUTTON2_U_POWER_NSAVING_ABB"
+msgstr "Ultra a.\nenergía"
+
+msgid "IDS_QP_BUTTON2_TETHERING"
+msgstr "Anclaje a red"
+
+msgid "IDS_QP_BUTTON2_SOUND_ABB"
+msgstr "Sonido"
+
+msgid "IDS_QP_BUTTON2_SOUND"
+msgstr "Sonido"
+
+msgid "IDS_QP_BUTTON2_PRIVATE_MODE"
+msgstr "Modo privado"
+
+msgid "IDS_QP_BUTTON2_POWER_N_SAVING"
+msgstr "Ahorro de\nenergía"
+
+msgid "IDS_QP_BUTTON2_MUTE_ABB"
+msgstr "Silencio"
+
+msgid "IDS_QP_BUTTON2_MOBILE_DATA"
+msgstr "Móvil\ny datos"
+
+msgid "IDS_QP_BUTTON2_LOCATION_ABB"
+msgstr "Ubica-\nción"
+
+msgid "IDS_QP_BUTTON2_FLIGHT_N_MODE"
+msgstr "Fuera de\n línea"
+
+msgid "IDS_QP_BUTTON2_BLUETOOTH"
+msgstr "Bluetooth"
+
+msgid "IDS_QP_BUTTON2_AUTO_ROTATE"
+msgstr "Girar automátic."
+
+msgid "IDS_QP_BUTTON2_ASSISTIVE_NLIGHT"
+msgstr "Luz de\nasisten."
+
+msgid "IDS_QP_BODY_PM_ABB"
+msgstr "PM"
+
+msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
+msgstr "Notific."
+
+msgid "IDS_QP_BODY_AM_ABB"
+msgstr "AM"
+
+msgid "IDS_ST_TPOP_UNABLE_TO_MAKE_VOICE_CALLS_VIDEO_CALLS_AND_SEND_TEXT_MESSAGES_USING_PS"
+msgstr "No es posible realizar llamadas de voz y videollamadas, y enviar mensajes de texto usando %s."
+
+msgid "IDS_ST_TPOP_SELECT_SIM_CARD_FOR_OUTGOING_VOICE_CALLS_VIDEO_CALLS_AND_TEXT_MESSAGES"
+msgstr "Seleccione una tarjeta SIM para las llamadas de voz, las videollamadas y los mensajes de texto salientes."
+
+msgid "IDS_ST_TPOP_OUTGOING_VOICE_CALLS_VIDEO_CALLS_AND_TEXT_MESSAGES_WILL_BE_MADE_USING_THE_PS_SIM_CARD"
+msgstr "Las llamadas de voz, las videollamadas y los mensajes de texto salientes utilizarán la tarjeta SIM %s."
+
+msgid "IDS_ST_SK_OK"
+msgstr "Aceptar"
+
+msgid "IDS_ST_SK_NO"
+msgstr "No"
+
+msgid "IDS_ST_POP_UNABLE_TO_INCREASE_BRIGHTNESS_FURTHER_BECAUSE_OF_PHONE_OVERHEATING"
+msgstr "No se puede aumentar más el brillo para evitar sobrecalentamiento del dispositivo."
+
+msgid "IDS_ST_NPBODY_NO_SERVICE"
+msgstr "Sin servicio"
+
+msgid "IDS_ST_NPBODY_EMERGENCY_CALLS_ONLY_ABB"
+msgstr "Solo llamadas de emergencia"
+
+msgid "IDS_ST_HEADER_OUTDOOR"
+msgstr "Exterior"
+
+msgid "IDS_ST_BUTTON2_WI_FI_NTETHERING"
+msgstr "Wi-Fi\nanc. red"
+
+msgid "IDS_ST_BUTTON2_WI_FI_ABB"
+msgstr "Wi-Fi"
+
+msgid "IDS_ST_BUTTON2_TORCH_ABB"
+msgstr "Linterna"
+
+msgid "IDS_ST_BUTTON2_POWER_NSAVING"
+msgstr "Ahorro\nenergía"
+
+msgid "IDS_ST_BUTTON2_MOBILE_NDATA"
+msgstr "Datos\nmóviles"
+
+msgid "IDS_ST_BUTTON2_GPS_ABB"
+msgstr "GPS"
+
+msgid "IDS_ST_BUTTON2_FLIGHT_NMODE"
+msgstr "Fuera de\nlínea"
+
+msgid "IDS_ST_BUTTON2_BLUETOOTH_ABB"
+msgstr "Bluetooth"
+
+msgid "IDS_ST_BUTTON2_AUTO_NROTATE"
+msgstr "Giro\nautom."
+
+msgid "IDS_ST_BODY_SIM_2"
+msgstr "Tarjeta SIM 2"
+
+msgid "IDS_ST_BODY_SIM_1"
+msgstr "Tarjeta SIM 1"
+
+msgid "IDS_ST_BODY_SCANNING_FOR_MOBILE_NETWORK_ING_ABB"
+msgstr "Buscando redes móviles..."
+
+msgid "IDS_ST_BODY_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
+msgstr "Inserte tarjeta SIM para acceder a los servicios de red"
+
+msgid "IDS_ST_BODY_ALWAYS_ASK_ABB"
+msgstr "Preguntar siempre"
+
+msgid "IDS_SCP_BODY_UNABLE_TO_CONNECT_TO_MOBILE_NETWORKS_WHILE_FLIGHT_MODE_IS_ENABLED_CONNECT_TO_A_WI_FI_NETWORK_INSTEAD_OR_DISABLE_FLIGHT_MODE_AND_TRY_AGAIN"
+msgstr "No es posible conectar a las redes móviles mientras que el perfil Fuera de línea está activo. Conéctese a una red Wi-Fi en su lugar o desactive el perfil Fuera de línea e inténtelo de nuevo."
+
+msgid "IDS_COM_BODY_SEARCHING"
+msgstr "Buscando"
+
+msgid "IDS_QP_TPOP_UNABLE_TO_OPEN_PS"
+msgstr "No se puede abrir %s."
+
+msgid "IDS_QP_OPT_OUTDOORS_M_OUTDOOR_MODE_ABB"
+msgstr "Exterior"
+
+msgid "IDS_QP_BUTTON2_PRIVATE_NMODE_ABB"
+msgstr "Modo\nPrivado"
+
index 13bead2..79ac33a 100755 (executable)
--- a/po/et.po
+++ b/po/et.po
-msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
-msgstr "Teavitused"
+msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
+msgstr "Wi-Fit ja Mobile AP-d ei saa aktiveerida samaaegselt. Kas desaktiveerida Mobile AP?"
+
+msgid "IDS_TASKMGR_BUTTON_CLEAR_ALL"
+msgstr "Tühjenda kõik"
 
-msgid "IDS_WIFI_BODY_ALLSHARE_CAST"
-msgstr "AllShare Cast"
+msgid "IDS_IDLE_SBODY_TAP_HERE_TO_DISABLE_SAFE_MODE_ABB"
+msgstr "Tok. siia, et desak. turv. rež."
 
-msgid "IDS_CALL_POP_CALLING_EMERG_ONLY"
+msgid "IDS_IDLE_POP_UNABLE_TO_LAUNCH_PS"
+msgstr "Üksust %s ei saa käivitada."
+
+msgid "IDS_IDLE_MBODY_EMERGENCY_CALLS_ONLY"
 msgstr "Ainult hädaabikõned"
 
-msgid "IDS_QP_BUTTON_ROTATION"
-msgstr "Pööram."
+msgid "IDS_IDLE_BODY_SEARCHING_ING"
+msgstr "Otsimine..."
+
+msgid "IDS_IDLE_BODY_NO_SIM"
+msgstr "SIM-i pole"
+
+msgid "IDS_IDLE_BODY_NO_SERVICE"
+msgstr "Teenus puudub"
+
+msgid "IDS_IDLE_BODY_INVALID_SIM_CARD"
+msgstr "Vigane SIM-kaart."
 
-msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
+msgid "IDS_IDLE_BODY_EMERGENCY_CALLS_ONLY"
+msgstr "Ainult hädaabikõned."
+
+msgid "IDS_QP_OPT_OUTDOORS_ABB"
+msgstr "Väljas"
+
+msgid "IDS_QP_MBODY_SAFE_MODE_ENABLED"
+msgstr "Turv. režiim aktiveeritud"
+
+msgid "IDS_QP_HEADER_NOTIFICATIONS_HPD_ABB"
 msgstr "Teavitused (%d)"
 
-msgid "IDS_QP_BUTTON_VIBRATION"
+msgid "IDS_QP_HEADER_CLEAR_ALL_ABB"
+msgstr "Kust. kõik"
+
+msgid "IDS_QP_BUTTON_NOTIFICATION"
+msgstr "Teavitus"
+
+msgid "IDS_QP_BUTTON_ALWAYS_ASK_ABB"
+msgstr "Küsi alati"
+
+msgid "IDS_QP_BUTTON2_WI_FI"
+msgstr "Wi-Fi"
+
+msgid "IDS_QP_BUTTON2_VIBRATE"
 msgstr "Värin"
 
-msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
-msgstr "Heli ja värin"
+msgid "IDS_QP_BUTTON2_U_POWER_NSAVING_ABB"
+msgstr "Ülim\nen.sääst"
 
-msgid "IDS_QP_TAB4_AUTO_ROTATION"
-msgstr "Autom. pööram."
+msgid "IDS_QP_BUTTON2_TETHERING"
+msgstr "Modem"
 
-msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
-msgstr "Pööramise lukk"
+msgid "IDS_QP_BUTTON2_SOUND_ABB"
+msgstr "Heli"
 
-msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
-msgstr "Massmälurežiim"
+msgid "IDS_QP_BUTTON2_SOUND"
+msgstr "Heli"
 
-msgid "IDS_QP_BUTTON_DISABLE"
-msgstr "Desaktiv."
+msgid "IDS_QP_BUTTON2_PRIVATE_MODE"
+msgstr "Priv.-\nrežiim"
 
-msgid "IDS_QP_BUTTON_ENABLE"
-msgstr "Luba"
+msgid "IDS_QP_BUTTON2_POWER_N_SAVING"
+msgstr "Energia-\nsääst"
 
-msgid "IDS_COM_POP_UNSUPPORTED"
-msgstr "Toetuseta"
+msgid "IDS_QP_BUTTON2_MUTE_ABB"
+msgstr "Vaigista"
 
-msgid "IDS_COM_SK_DISMISS"
-msgstr "Keeldu"
+msgid "IDS_QP_BUTTON2_MOBILE_DATA"
+msgstr "Mobiiliandmes."
 
-msgid "IDS_COM_POP_PELASE_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
-msgstr "Sisestage SIM-kaart, et pääseda ligi võrguteenustele"
+msgid "IDS_QP_BUTTON2_LOCATION_ABB"
+msgstr "Asukoht"
 
-msgid "IDS_COM_BODY_DO_NOT_ASK_AGAIN"
-msgstr "Ära küsi enam"
+msgid "IDS_QP_BUTTON2_FLIGHT_N_MODE"
+msgstr "Lennu-\nrežiim"
 
-msgid "IDS_QP_POP_INSERT_SIM_CARD_AND_RESTART_DEVICE_TO_USE_TETHERING"
-msgstr "Vahendamiseks sisestage SIM-kaart ja taaskäivitage seade"
+msgid "IDS_QP_BUTTON2_BLUETOOTH"
+msgstr "Bluetooth"
 
-msgid "IDS_QP_POP_CONNECTING_VIA_PACKET_DATA_MAY_INCUR_ADDITIONAL_CHARGES_CONTINUE_Q"
-msgstr "Pakettandmesideühenduse loomisel võivad rakenduda lisatasud. Kas jätkata?"
+msgid "IDS_QP_BUTTON2_AUTO_ROTATE"
+msgstr "Automaatne pööramine"
 
-msgid "IDS_QP_BODY_AUTO"
-msgstr "Automaatne"
+msgid "IDS_QP_BUTTON2_ASSISTIVE_NLIGHT"
+msgstr "Abi-\nvalgus"
 
-msgid "IDS_QP_TAB_POWER_SAVING"
-msgstr "Energia säästmine"
+msgid "IDS_QP_BODY_PM_ABB"
+msgstr "PL"
 
-msgid "IDS_QP_TAB_TETHERING"
-msgstr "Mobiilse internetiga ühendamine"
+msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
+msgstr "Teavitused"
 
-msgid "IDS_QP_TAB_MOBILE_DATA"
-msgstr "Mobiilne andmeside"
+msgid "IDS_QP_BODY_AM_ABB"
+msgstr "EL"
 
-msgid "IDS_QP_TAB_DRIVING_MODE"
-msgstr "Sõidurežiim"
+msgid "IDS_ST_TPOP_UNABLE_TO_MAKE_VOICE_CALLS_VIDEO_CALLS_AND_SEND_TEXT_MESSAGES_USING_PS"
+msgstr "Hääl- ja videokõnesid ei saa teha ning tekstsõnumeid ei saa saata üksusega %s."
 
-msgid "IDS_COM_POP_UNABLE_TO_CONNECT_TO_MOBILE_NETWORK_WHILE_FLIGHT_MODE_IS_ENABLED_MSG"
-msgstr "Mobiilsete võrkudega ei saa ühendust luua, kui lennurežiim on aktiveeritud. Looge selle asemel ühendus Wi-Fi võrguga või desaktiveerige lennurežiim ja proovige uuesti"
+msgid "IDS_ST_TPOP_SELECT_SIM_CARD_FOR_OUTGOING_VOICE_CALLS_VIDEO_CALLS_AND_TEXT_MESSAGES"
+msgstr "Valige väljuvate hääl- ja videokõnede ning tekstsõnumite jaoks SIM-kaart."
 
-msgid "IDS_QP_POP_WI_FI_TETHERING_CONSUMES_MORE_BATTERY_POWER_AND_INCREASES_YOUR_DATA_USAGE_CONTINUE_Q"
-msgstr "Wi-Fi kaudu vahendamine tarbib rohkem akutoidet ja suurendab andmekasutust. Kas jätkata?"
+msgid "IDS_ST_TPOP_OUTGOING_VOICE_CALLS_VIDEO_CALLS_AND_TEXT_MESSAGES_WILL_BE_MADE_USING_THE_PS_SIM_CARD"
+msgstr "Väljuvate häälkõnede ja videokõnede ning tekstsõnumite korral kasutatakse SIM-kaarti %s."
 
-msgid "IDS_QP_POP_DISABLE_TETHERING_TO_USE_WI_FI"
-msgstr "Wi-Fi kasutamiseks desaktiveerige modem"
+msgid "IDS_ST_SK_OK"
+msgstr "OK"
 
-msgid "IDS_QP_POP_TO_ENABLE_POWER_SAVING_MODE_ENABLE_AT_LEAST_ONE_RELEVANT_FUNCTION"
-msgstr "Energiasäästurežiimi aktiveerimiseks aktiveerige vähemalt üks asjakohane funktsioon"
+msgid "IDS_ST_SK_NO"
+msgstr "Ei"
 
-msgid "IDS_QP_POP_TURN_OFF_WI_FI_TO_USE_TETHERING"
-msgstr "Modemi kasutamiseks lülitage Wi-Fi välja"
+msgid "IDS_ST_POP_UNABLE_TO_INCREASE_BRIGHTNESS_FURTHER_BECAUSE_OF_PHONE_OVERHEATING"
+msgstr "Ei ole võimalik heledust suurendada telefoni ülekuumenemise tõttu."
 
-msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
-msgstr "Wi-Fit ja Mobile AP-d ei saa aktiveerida samaaegselt. Kas desaktiveerida Mobile AP?"
+msgid "IDS_ST_NPBODY_NO_SERVICE"
+msgstr "Teenus puudub"
 
-msgid "IDS_ASCAST_HEADER_SCREEN_MIRRORING"
-msgstr "Screen Mirroring"
+msgid "IDS_ST_NPBODY_EMERGENCY_CALLS_ONLY_ABB"
+msgstr "Ainult hädaabikõned"
+
+msgid "IDS_ST_HEADER_OUTDOOR"
+msgstr "Välitingimused"
 
-msgid "IDS_QP_HEADER_REPLACE_QUICK_SETTING_BUTTON"
-msgstr "Asenda kiirseadistuse nupp"
+msgid "IDS_ST_BUTTON2_WI_FI_NTETHERING"
+msgstr "Wi-Fi\nmodem"
 
-msgid "IDS_QP_HEADER_ADD_QUICK_SETTING_BUTTON"
-msgstr "Lisa kiirseadistuse nupp"
+msgid "IDS_ST_BUTTON2_WI_FI_ABB"
+msgstr "Wi-Fi"
 
-msgid "IDS_QP_POP_YOU_WILL_NO_LONGER_BE_ABLE_TO_USE_APPLICATIONS_SUCH_AS_INTERNET_NOTI_MSG"
-msgstr "Te ei saa enam mobiilsidevõrgu kaudu kasutada rakendusi nagu internet ja e-post. Kas jätkata?"
+msgid "IDS_ST_BUTTON2_TORCH_ABB"
+msgstr "Tasku-\nlamp"
 
-msgid "IDS_QP_BUTTON2_SCREEN_N_MIRRORING"
-msgstr "Screen\nMirroring"
+msgid "IDS_ST_BUTTON2_POWER_NSAVING"
+msgstr "Energia\nsäästm."
 
-msgid "IDS_COM_BODY_BUTTON_T_TTS"
-msgstr "Nupp"
+msgid "IDS_ST_BUTTON2_MOBILE_NDATA"
+msgstr "Mobiili\nandmed"
 
-msgid "IDS_QP_BUTTON2_GPS"
+msgid "IDS_ST_BUTTON2_GPS_ABB"
 msgstr "GPS"
 
-msgid "IDS_QP_BUTTON_NOTIFICATION"
-msgstr "Teavitus"
+msgid "IDS_ST_BUTTON2_FLIGHT_NMODE"
+msgstr "Lennu-\nrežiim"
+
+msgid "IDS_ST_BUTTON2_BLUETOOTH_ABB"
+msgstr "Bluetooth"
+
+msgid "IDS_ST_BUTTON2_AUTO_NROTATE"
+msgstr "Autom.\npööram."
+
+msgid "IDS_ST_BODY_SIM_2"
+msgstr "SIM 2"
+
+msgid "IDS_ST_BODY_SIM_1"
+msgstr "SIM 1"
+
+msgid "IDS_ST_BODY_SCANNING_FOR_MOBILE_NETWORK_ING_ABB"
+msgstr "Mobiilsidevõrgu otsimine..."
+
+msgid "IDS_ST_BODY_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
+msgstr "Sisestage SIM-kaart, et paaseda ligi vorguteenustele."
+
+msgid "IDS_ST_BODY_ALWAYS_ASK_ABB"
+msgstr "Küsi alati"
+
+msgid "IDS_SCP_BODY_UNABLE_TO_CONNECT_TO_MOBILE_NETWORKS_WHILE_FLIGHT_MODE_IS_ENABLED_CONNECT_TO_A_WI_FI_NETWORK_INSTEAD_OR_DISABLE_FLIGHT_MODE_AND_TRY_AGAIN"
+msgstr "Mobiilsidevõrkudega ei saa ühendust luua, kui lennurežiim on aktiveeritud. Looge ühendus hoopis Wi-Fi võrguga või desaktiveerige lennurežiim ja proovige uuesti."
 
-msgid "IDS_COM_BUTTON_AGREE"
-msgstr "Nõustu"
+msgid "IDS_COM_BODY_SEARCHING"
+msgstr "Otsimine"
 
-msgid "IDS_COM_BUTTON_DISAGREE"
-msgstr "Ei nõustu"
+msgid "IDS_QP_TPOP_UNABLE_TO_OPEN_PS"
+msgstr "Rakendust %s ei saa avada."
 
-msgid "IDS_ST_BODY_GPS_LOCATION_USE_CONTROLLED_BY_APPLICATIONS_MSG"
-msgstr "GPS-asukohta ja teie asukohaandmete kasutamist kontrollib rakendus, mida te kasutate"
+msgid "IDS_QP_OPT_OUTDOORS_M_OUTDOOR_MODE_ABB"
+msgstr "Väljas"
 
-msgid "IDS_ST_HEADER_USER_CONSENT"
-msgstr "Kasutaja nõusolek"
+msgid "IDS_QP_BUTTON2_PRIVATE_NMODE_ABB"
+msgstr "Priv.-\nrežiim"
 
index b34233a..ff4e8c1 100755 (executable)
--- a/po/eu.po
+++ b/po/eu.po
-msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
-msgstr "Jakinarazpenak"
+msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
+msgstr "Wi-Fi eta Mobile AP ezin dira aldi berean aktibatu. Desaktibatu Mobile AP?"
+
+msgid "IDS_TASKMGR_BUTTON_CLEAR_ALL"
+msgstr "Garbitu guztiak"
+
+msgid "IDS_IDLE_SBODY_TAP_HERE_TO_DISABLE_SAFE_MODE_ABB"
+msgstr "Uk. hemen Seg. mod. ezgaitzeko."
+
+msgid "IDS_IDLE_POP_UNABLE_TO_LAUNCH_PS"
+msgstr "Ezin da %s abiatu"
+
+msgid "IDS_IDLE_MBODY_EMERGENCY_CALLS_ONLY"
+msgstr "Larrialdi deiak soilik"
+
+msgid "IDS_IDLE_BODY_SEARCHING_ING"
+msgstr "Bilatzen"
 
-msgid "IDS_WIFI_BODY_ALLSHARE_CAST"
-msgstr "AllShare Cast"
+msgid "IDS_IDLE_BODY_NO_SIM"
+msgstr "Ez dago SIM txartelik"
 
-msgid "IDS_CALL_POP_CALLING_EMERG_ONLY"
+msgid "IDS_IDLE_BODY_NO_SERVICE"
+msgstr "Zerbitzurik gabe"
+
+msgid "IDS_IDLE_BODY_INVALID_SIM_CARD"
+msgstr "SIM txartel baliogabea"
+
+msgid "IDS_IDLE_BODY_EMERGENCY_CALLS_ONLY"
 msgstr "Larrialdi deiak bakarrik"
 
-msgid "IDS_QP_BUTTON_ROTATION"
-msgstr "Biraketa"
+msgid "IDS_QP_OPT_OUTDOORS_ABB"
+msgstr "Kanpoan"
+
+msgid "IDS_QP_MBODY_SAFE_MODE_ENABLED"
+msgstr "Segurua modua gaituta"
 
-msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
+msgid "IDS_QP_HEADER_NOTIFICATIONS_HPD_ABB"
 msgstr "Jakinarazpenak (%d)"
 
-msgid "IDS_QP_BUTTON_VIBRATION"
-msgstr "Bibrazioa"
+msgid "IDS_QP_HEADER_CLEAR_ALL_ABB"
+msgstr "Garb. dena"
 
-msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
-msgstr "Soinu & bibrazioa"
+msgid "IDS_QP_BUTTON_NOTIFICATION"
+msgstr "Jakinaraz."
 
-msgid "IDS_QP_TAB4_AUTO_ROTATION"
-msgstr "Errotaz. autom."
+msgid "IDS_QP_BUTTON_ALWAYS_ASK_ABB"
+msgstr "Galdetu beti"
 
-msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
-msgstr "Biraketa blokeoa"
+msgid "IDS_QP_BUTTON2_WI_FI"
+msgstr "Wi-Fi"
 
-msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
-msgstr "Biltegiratze masibo modua"
+msgid "IDS_QP_BUTTON2_VIBRATE"
+msgstr "Bibratu"
 
-msgid "IDS_QP_BUTTON_DISABLE"
-msgstr "Ezgaitu"
+msgid "IDS_QP_BUTTON2_U_POWER_NSAVING_ABB"
+msgstr "Bat.aurr.\nultram."
 
-msgid "IDS_QP_BUTTON_ENABLE"
-msgstr "Gaitu"
+msgid "IDS_QP_BUTTON2_TETHERING"
+msgstr "Ainguraketa"
 
-msgid "IDS_COM_POP_UNSUPPORTED"
-msgstr "Ez bateragarria"
+msgid "IDS_QP_BUTTON2_SOUND_ABB"
+msgstr "Soinua"
 
-msgid "IDS_COM_SK_DISMISS"
-msgstr "Kendu"
+msgid "IDS_QP_BUTTON2_SOUND"
+msgstr "Soinua"
 
-msgid "IDS_COM_POP_PELASE_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
-msgstr "Sartu SIM txartela sare zerbitzuetara sartzeko"
+msgid "IDS_QP_BUTTON2_PRIVATE_MODE"
+msgstr "Modu pribatua"
 
-msgid "IDS_COM_BODY_DO_NOT_ASK_AGAIN"
-msgstr "Ez galdetu berriz"
+msgid "IDS_QP_BUTTON2_POWER_N_SAVING"
+msgstr "Bateria\naurrez."
 
-msgid "IDS_QP_POP_INSERT_SIM_CARD_AND_RESTART_DEVICE_TO_USE_TETHERING"
-msgstr "Sartu SIM txartela eta berrabiarazi gailua ainguraketa erabiltzeko"
+msgid "IDS_QP_BUTTON2_MUTE_ABB"
+msgstr "Mututu"
 
-msgid "IDS_QP_POP_CONNECTING_VIA_PACKET_DATA_MAY_INCUR_ADDITIONAL_CHARGES_CONTINUE_Q"
-msgstr "Litekeena da pakete datuen bidez konektatzeak kosturen bat izatea. Jarraitu?"
+msgid "IDS_QP_BUTTON2_MOBILE_DATA"
+msgstr "Datu\nmugik."
 
-msgid "IDS_QP_BODY_AUTO"
-msgstr "Auto"
+msgid "IDS_QP_BUTTON2_LOCATION_ABB"
+msgstr "Kokapena"
 
-msgid "IDS_QP_TAB_POWER_SAVING"
-msgstr "Bateria aurreztea"
+msgid "IDS_QP_BUTTON2_FLIGHT_N_MODE"
+msgstr "Hegaldia\nmodua"
 
-msgid "IDS_QP_TAB_TETHERING"
-msgstr "Sare ainguraketa"
+msgid "IDS_QP_BUTTON2_BLUETOOTH"
+msgstr "Bluetooth"
 
-msgid "IDS_QP_TAB_MOBILE_DATA"
-msgstr "Datu mugikorrak"
+msgid "IDS_QP_BUTTON2_AUTO_ROTATE"
+msgstr "Biratu automatikoki"
 
-msgid "IDS_QP_TAB_DRIVING_MODE"
-msgstr "Gidatze modua"
+msgid "IDS_QP_BUTTON2_ASSISTIVE_NLIGHT"
+msgstr "Laguntza\nargia"
 
-msgid "IDS_COM_POP_UNABLE_TO_CONNECT_TO_MOBILE_NETWORK_WHILE_FLIGHT_MODE_IS_ENABLED_MSG"
-msgstr "Ezin da sare mugikorretara konektatu Hegaldi modua gaituta dagoen bitartean. Konektatu Wi-Fi sarera bestela, edo ezgaitu Hegaldi modua eta saiatu berriz"
+msgid "IDS_QP_BODY_PM_ABB"
+msgstr "PM"
 
-msgid "IDS_QP_POP_WI_FI_TETHERING_CONSUMES_MORE_BATTERY_POWER_AND_INCREASES_YOUR_DATA_USAGE_CONTINUE_Q"
-msgstr "Wi-Fi ainguraketak bateria gehiago kontsumitzen du eta zure datuen erabilera areagotzen du. Jarraitu?"
+msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
+msgstr "Jakinarazpenak"
 
-msgid "IDS_QP_POP_DISABLE_TETHERING_TO_USE_WI_FI"
-msgstr "Desgaitu ainguraketa Wi-Fi erabiltzeko"
+msgid "IDS_QP_BODY_AM_ABB"
+msgstr "AM"
 
-msgid "IDS_QP_POP_TO_ENABLE_POWER_SAVING_MODE_ENABLE_AT_LEAST_ONE_RELEVANT_FUNCTION"
-msgstr "Bateria aurrezteko modua gaitzeko, gaitu funtzio nagusi bat gutxienez"
+msgid "IDS_ST_TPOP_UNABLE_TO_MAKE_VOICE_CALLS_VIDEO_CALLS_AND_SEND_TEXT_MESSAGES_USING_PS"
+msgstr "Ezin dira ahots deiak eta bideo deiak egin eta testu mezuak bidali %s erabiliz."
 
-msgid "IDS_QP_POP_TURN_OFF_WI_FI_TO_USE_TETHERING"
-msgstr "Itzali Wi-Fia ainguraketa erabiltzeko"
+msgid "IDS_ST_TPOP_SELECT_SIM_CARD_FOR_OUTGOING_VOICE_CALLS_VIDEO_CALLS_AND_TEXT_MESSAGES"
+msgstr "Hautatu irteera ahots deietarako, bideo deietarako eta testu mezuetarako SIM txartela."
 
-msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
-msgstr "Wi-Fi eta Mobile AP ezin dira aldi berean aktibatu. Desaktibatu Mobile AP?"
+msgid "IDS_ST_TPOP_OUTGOING_VOICE_CALLS_VIDEO_CALLS_AND_TEXT_MESSAGES_WILL_BE_MADE_USING_THE_PS_SIM_CARD"
+msgstr "Irteera ahots deiak, bideo deiak eta testu mezuak %s SIM txartela erabiliz egingo dira."
 
-msgid "IDS_ASCAST_HEADER_SCREEN_MIRRORING"
-msgstr "Pantaila Islatzea"
+msgid "IDS_ST_SK_OK"
+msgstr "Ados"
+
+msgid "IDS_ST_SK_NO"
+msgstr "Ez"
+
+msgid "IDS_ST_POP_UNABLE_TO_INCREASE_BRIGHTNESS_FURTHER_BECAUSE_OF_PHONE_OVERHEATING"
+msgstr "Ezin da argitasuna areagotu, telefonoa gehiegi berotuko baita"
+
+msgid "IDS_ST_NPBODY_NO_SERVICE"
+msgstr "Ez dago zerbitzurik"
+
+msgid "IDS_ST_NPBODY_EMERGENCY_CALLS_ONLY_ABB"
+msgstr "Larrialdi deiak soilik"
 
-msgid "IDS_QP_HEADER_REPLACE_QUICK_SETTING_BUTTON"
-msgstr "Ordeztu ezarpen azkarraren botoia"
+msgid "IDS_ST_HEADER_OUTDOOR"
+msgstr "Kanpoan"
 
-msgid "IDS_QP_HEADER_ADD_QUICK_SETTING_BUTTON"
-msgstr "Gehitu ezarpen azkarraren botoia"
+msgid "IDS_ST_BUTTON2_WI_FI_NTETHERING"
+msgstr "Wi-Fi\naingur."
 
-msgid "IDS_QP_POP_YOU_WILL_NO_LONGER_BE_ABLE_TO_USE_APPLICATIONS_SUCH_AS_INTERNET_NOTI_MSG"
-msgstr "Aurrerantzean ezingo duzu Internet eta Posta elektronikoa gisako aplikazioak erabili sare mugikorren bidez. Jarraitu?"
+msgid "IDS_ST_BUTTON2_WI_FI_ABB"
+msgstr "Wi-Fi"
 
-msgid "IDS_QP_BUTTON2_SCREEN_N_MIRRORING"
-msgstr "Screen\nMirroring"
+msgid "IDS_ST_BUTTON2_TORCH_ABB"
+msgstr "Linterna"
 
-msgid "IDS_COM_BODY_BUTTON_T_TTS"
-msgstr "Botoia"
+msgid "IDS_ST_BUTTON2_POWER_NSAVING"
+msgstr "Bateria\naurrez."
 
-msgid "IDS_QP_BUTTON2_GPS"
+msgid "IDS_ST_BUTTON2_MOBILE_NDATA"
+msgstr "Datu\nmugik."
+
+msgid "IDS_ST_BUTTON2_GPS_ABB"
 msgstr "GPS"
 
-msgid "IDS_QP_BUTTON_NOTIFICATION"
-msgstr "Jakinaraz."
+msgid "IDS_ST_BUTTON2_FLIGHT_NMODE"
+msgstr "Hegaldi\nmodua"
 
-msgid "IDS_COM_BUTTON_AGREE"
-msgstr "Ados"
+msgid "IDS_ST_BUTTON2_BLUETOOTH_ABB"
+msgstr "Bluetooth"
+
+msgid "IDS_ST_BUTTON2_AUTO_NROTATE"
+msgstr "Biratu\nautom."
+
+msgid "IDS_ST_BODY_SIM_2"
+msgstr "SIM 2"
+
+msgid "IDS_ST_BODY_SIM_1"
+msgstr "SIM 1"
+
+msgid "IDS_ST_BODY_SCANNING_FOR_MOBILE_NETWORK_ING_ABB"
+msgstr "Sare mugikorrak bilatzen..."
+
+msgid "IDS_ST_BODY_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
+msgstr "Sartu SIM txartela sare zerbitzuetan sartzeko."
+
+msgid "IDS_ST_BODY_ALWAYS_ASK_ABB"
+msgstr "Galdetu beti"
+
+msgid "IDS_SCP_BODY_UNABLE_TO_CONNECT_TO_MOBILE_NETWORKS_WHILE_FLIGHT_MODE_IS_ENABLED_CONNECT_TO_A_WI_FI_NETWORK_INSTEAD_OR_DISABLE_FLIGHT_MODE_AND_TRY_AGAIN"
+msgstr "Ezin da sare mugikorretara konektatu Hegaldi modua gaituta badago. Konektatu Wi-Fi sarera bestela, edo ezgaitu Hegaldi modua eta saiatu berriz."
+
+msgid "IDS_COM_BODY_SEARCHING"
+msgstr "Bilatzen"
 
-msgid "IDS_COM_BUTTON_DISAGREE"
-msgstr "Ez nago ados"
+msgid "IDS_QP_TPOP_UNABLE_TO_OPEN_PS"
+msgstr "Ezin da %s ireki."
 
-msgid "IDS_ST_BODY_GPS_LOCATION_USE_CONTROLLED_BY_APPLICATIONS_MSG"
-msgstr "GPS kokapena eta zure kokapen datuen erabilera zuk erabiltzen duzun aplikazioak kontrolatzen ditu"
+msgid "IDS_QP_OPT_OUTDOORS_M_OUTDOOR_MODE_ABB"
+msgstr "Kanpoan"
 
-msgid "IDS_ST_HEADER_USER_CONSENT"
-msgstr "Erabiltzaile baimena"
+msgid "IDS_QP_BUTTON2_PRIVATE_NMODE_ABB"
+msgstr "Modu\npribatua"
 
index 707277d..750f276 100755 (executable)
--- a/po/fi.po
+++ b/po/fi.po
-msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
-msgstr "Ilmoitukset"
+msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
+msgstr "Wi-Fiä ja mobiilitukiasemaa ei voi ottaa käyttöön samaan aikaan. Haluatko poistaa mobiilitukiaseman käytöstä?"
+
+msgid "IDS_TASKMGR_BUTTON_CLEAR_ALL"
+msgstr "Tyhj. kaikki"
 
-msgid "IDS_WIFI_BODY_ALLSHARE_CAST"
-msgstr "AllShare Cast"
+msgid "IDS_IDLE_SBODY_TAP_HERE_TO_DISABLE_SAFE_MODE_ABB"
+msgstr "Poista turvallisuustila k. tällä."
 
-msgid "IDS_CALL_POP_CALLING_EMERG_ONLY"
+msgid "IDS_IDLE_POP_UNABLE_TO_LAUNCH_PS"
+msgstr "Sovellusta %s ei voi käynnistää."
+
+msgid "IDS_IDLE_MBODY_EMERGENCY_CALLS_ONLY"
 msgstr "Vain hätäpuhelut"
 
-msgid "IDS_QP_BUTTON_ROTATION"
-msgstr "Kierto"
+msgid "IDS_IDLE_BODY_SEARCHING_ING"
+msgstr "Etsitään..."
+
+msgid "IDS_IDLE_BODY_NO_SIM"
+msgstr "Ei SIM-korttia"
+
+msgid "IDS_IDLE_BODY_NO_SERVICE"
+msgstr "Ei palvelua"
 
-msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
+msgid "IDS_IDLE_BODY_INVALID_SIM_CARD"
+msgstr "Virheellinen SIM-kortti"
+
+msgid "IDS_IDLE_BODY_EMERGENCY_CALLS_ONLY"
+msgstr "Vain hätäpuhelut"
+
+msgid "IDS_QP_OPT_OUTDOORS_ABB"
+msgstr "Ulkona"
+
+msgid "IDS_QP_MBODY_SAFE_MODE_ENABLED"
+msgstr "Turvallisuustila käytössä"
+
+msgid "IDS_QP_HEADER_NOTIFICATIONS_HPD_ABB"
 msgstr "Ilmoitukset (%d)"
 
-msgid "IDS_QP_BUTTON_VIBRATION"
+msgid "IDS_QP_HEADER_CLEAR_ALL_ABB"
+msgstr "Poista kaikki"
+
+msgid "IDS_QP_BUTTON_NOTIFICATION"
+msgstr "Ilmoitus"
+
+msgid "IDS_QP_BUTTON_ALWAYS_ASK_ABB"
+msgstr "Kysy aina"
+
+msgid "IDS_QP_BUTTON2_WI_FI"
+msgstr "Wi-Fi"
+
+msgid "IDS_QP_BUTTON2_VIBRATE"
 msgstr "Värinä"
 
-msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
-msgstr "Ääni ja värinä"
+msgid "IDS_QP_BUTTON2_U_POWER_NSAVING_ABB"
+msgstr "Er. teh.\nvirrans."
 
-msgid "IDS_QP_TAB4_AUTO_ROTATION"
-msgstr "Autom. kierto"
+msgid "IDS_QP_BUTTON2_TETHERING"
+msgstr "Yhteys"
 
-msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
-msgstr "Kierron lukitus"
+msgid "IDS_QP_BUTTON2_SOUND_ABB"
+msgstr "Ääni"
 
-msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
-msgstr "Massamuistitila"
+msgid "IDS_QP_BUTTON2_SOUND"
+msgstr "Ääni"
 
-msgid "IDS_QP_BUTTON_DISABLE"
-msgstr "Ei käyt."
+msgid "IDS_QP_BUTTON2_PRIVATE_MODE"
+msgstr "Yksit. tila"
 
-msgid "IDS_QP_BUTTON_ENABLE"
-msgstr "Päälle"
+msgid "IDS_QP_BUTTON2_POWER_N_SAVING"
+msgstr "Virran-\nsäästö"
 
-msgid "IDS_COM_POP_UNSUPPORTED"
-msgstr "Ei tuettu"
+msgid "IDS_QP_BUTTON2_MUTE_ABB"
+msgstr "Mykistä"
 
-msgid "IDS_COM_SK_DISMISS"
-msgstr "Hylkää"
+msgid "IDS_QP_BUTTON2_MOBILE_DATA"
+msgstr "Mobiilidata"
 
-msgid "IDS_COM_POP_PELASE_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
-msgstr "Pääset verkkopalveluihin asettamalla SIM-kortin paikalleen"
+msgid "IDS_QP_BUTTON2_LOCATION_ABB"
+msgstr "Sijainti"
 
-msgid "IDS_COM_BODY_DO_NOT_ASK_AGAIN"
-msgstr "Älä kysy uudelleen"
+msgid "IDS_QP_BUTTON2_FLIGHT_N_MODE"
+msgstr "Lento-\ntila"
 
-msgid "IDS_QP_POP_INSERT_SIM_CARD_AND_RESTART_DEVICE_TO_USE_TETHERING"
-msgstr "Aseta SIM-kortti ja käynnistä laite uudelleen yhteyden jakamista varten"
+msgid "IDS_QP_BUTTON2_BLUETOOTH"
+msgstr "Bluetooth"
 
-msgid "IDS_QP_POP_CONNECTING_VIA_PACKET_DATA_MAY_INCUR_ADDITIONAL_CHARGES_CONTINUE_Q"
-msgstr "Pakettidatan kautta yhdistämisestä voidaan periä lisämaksuja. Jatketaanko?"
+msgid "IDS_QP_BUTTON2_AUTO_ROTATE"
+msgstr "Automaattinen kierto"
 
-msgid "IDS_QP_BODY_AUTO"
-msgstr "Auto"
+msgid "IDS_QP_BUTTON2_ASSISTIVE_NLIGHT"
+msgstr "Apuvalo"
 
-msgid "IDS_QP_TAB_POWER_SAVING"
-msgstr "Virransäästö"
+msgid "IDS_QP_BODY_PM_ABB"
+msgstr "IP"
 
-msgid "IDS_QP_TAB_TETHERING"
-msgstr "Yhteyden jako"
+msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
+msgstr "Ilmoitukset"
 
-msgid "IDS_QP_TAB_MOBILE_DATA"
-msgstr "Mobiilidata"
+msgid "IDS_QP_BODY_AM_ABB"
+msgstr "AP"
 
-msgid "IDS_QP_TAB_DRIVING_MODE"
-msgstr "Ajotila"
+msgid "IDS_ST_TPOP_UNABLE_TO_MAKE_VOICE_CALLS_VIDEO_CALLS_AND_SEND_TEXT_MESSAGES_USING_PS"
+msgstr "Äänipuheluita ja videopuheluita ei voi soittaa eikä tekstiviestejä voi lähettää kortilta %s."
 
-msgid "IDS_COM_POP_UNABLE_TO_CONNECT_TO_MOBILE_NETWORK_WHILE_FLIGHT_MODE_IS_ENABLED_MSG"
-msgstr "Matkapuhelinverkkoihin ei voi ottaa yhteyttä, kun lentotila on käytössä. Muodosta sen sijaan yhteys Wi-Fi-verkon kautta tai poista lentotila käytöstä ja yritä uudelleen"
+msgid "IDS_ST_TPOP_SELECT_SIM_CARD_FOR_OUTGOING_VOICE_CALLS_VIDEO_CALLS_AND_TEXT_MESSAGES"
+msgstr "Valitse SIM-kortti lähteviä äänipuheluita, videopuheluita ja tekstiviestejä varten."
 
-msgid "IDS_QP_POP_WI_FI_TETHERING_CONSUMES_MORE_BATTERY_POWER_AND_INCREASES_YOUR_DATA_USAGE_CONTINUE_Q"
-msgstr "Wi-Fi-yhteyden jakaminen kuluttaa enemmän virtaa ja lisää datan käyttöä. Jatketaanko?"
+msgid "IDS_ST_TPOP_OUTGOING_VOICE_CALLS_VIDEO_CALLS_AND_TEXT_MESSAGES_WILL_BE_MADE_USING_THE_PS_SIM_CARD"
+msgstr "Lähteviin äänipuheluihin, videopuheluihin ja tekstiviesteihin käytetään SIM-korttia %s."
 
-msgid "IDS_QP_POP_DISABLE_TETHERING_TO_USE_WI_FI"
-msgstr "Poista yhteyden jakaminen käytöstä Wi-Fin käyttöä varten"
+msgid "IDS_ST_SK_OK"
+msgstr "OK"
 
-msgid "IDS_QP_POP_TO_ENABLE_POWER_SAVING_MODE_ENABLE_AT_LEAST_ONE_RELEVANT_FUNCTION"
-msgstr "Jos haluat ottaa virransäästötilan käyttöön, ota ainakin yksi olennainen toiminto käyttöön"
+msgid "IDS_ST_SK_NO"
+msgstr "Ei"
 
-msgid "IDS_QP_POP_TURN_OFF_WI_FI_TO_USE_TETHERING"
-msgstr "Poista Wi-Fi käytöstä yhteyden jakamista varten"
+msgid "IDS_ST_POP_UNABLE_TO_INCREASE_BRIGHTNESS_FURTHER_BECAUSE_OF_PHONE_OVERHEATING"
+msgstr "Kirkkautta ei voi lisätä puhelimen ylikuumenemisen vuoksi."
 
-msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
-msgstr "Wi-Fiä ja mobiilitukiasemaa ei voi ottaa käyttöön samaan aikaan. Haluatko poistaa mobiilitukiaseman käytöstä?"
+msgid "IDS_ST_NPBODY_NO_SERVICE"
+msgstr "Ei palvelua"
+
+msgid "IDS_ST_NPBODY_EMERGENCY_CALLS_ONLY_ABB"
+msgstr "Vain hätäpuhelut"
 
-msgid "IDS_ASCAST_HEADER_SCREEN_MIRRORING"
-msgstr "Näytön peilaus"
+msgid "IDS_ST_HEADER_OUTDOOR"
+msgstr "Ulkotila"
 
-msgid "IDS_QP_HEADER_REPLACE_QUICK_SETTING_BUTTON"
-msgstr "Vaihda pika-asetuspainike"
+msgid "IDS_ST_BUTTON2_WI_FI_NTETHERING"
+msgstr "Jaettu\nWi-Fi"
 
-msgid "IDS_QP_HEADER_ADD_QUICK_SETTING_BUTTON"
-msgstr "Lisää pika-asetuspainike"
+msgid "IDS_ST_BUTTON2_WI_FI_ABB"
+msgstr "Wi-Fi"
 
-msgid "IDS_QP_POP_YOU_WILL_NO_LONGER_BE_ABLE_TO_USE_APPLICATIONS_SUCH_AS_INTERNET_NOTI_MSG"
-msgstr "Et enää voi käyttää sovelluksia, kuten Internetiä ja sähköpostia, matkapuhelinverkkojen kautta. Jatketaanko?"
+msgid "IDS_ST_BUTTON2_TORCH_ABB"
+msgstr "Tasku-\nlamppu"
 
-msgid "IDS_QP_BUTTON2_SCREEN_N_MIRRORING"
-msgstr "Screen\nMirroring"
+msgid "IDS_ST_BUTTON2_POWER_NSAVING"
+msgstr "Virran-\nsäästö"
 
-msgid "IDS_COM_BODY_BUTTON_T_TTS"
-msgstr "Painike"
+msgid "IDS_ST_BUTTON2_MOBILE_NDATA"
+msgstr "Mobiili-\ndata"
 
-msgid "IDS_QP_BUTTON2_GPS"
+msgid "IDS_ST_BUTTON2_GPS_ABB"
 msgstr "GPS"
 
-msgid "IDS_QP_BUTTON_NOTIFICATION"
-msgstr "Ilmoitus"
+msgid "IDS_ST_BUTTON2_FLIGHT_NMODE"
+msgstr "Lento-\ntila"
+
+msgid "IDS_ST_BUTTON2_BLUETOOTH_ABB"
+msgstr "Bluetooth"
+
+msgid "IDS_ST_BUTTON2_AUTO_NROTATE"
+msgstr "Autom.\nkierto"
+
+msgid "IDS_ST_BODY_SIM_2"
+msgstr "SIM 2"
+
+msgid "IDS_ST_BODY_SIM_1"
+msgstr "SIM 1"
+
+msgid "IDS_ST_BODY_SCANNING_FOR_MOBILE_NETWORK_ING_ABB"
+msgstr "Haetaan matkapuhelinverkkoa..."
+
+msgid "IDS_ST_BODY_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
+msgstr "Pääset verkkopalveluihin asettamalla SIM-kortin paikalleen."
+
+msgid "IDS_ST_BODY_ALWAYS_ASK_ABB"
+msgstr "Kysy aina"
+
+msgid "IDS_SCP_BODY_UNABLE_TO_CONNECT_TO_MOBILE_NETWORKS_WHILE_FLIGHT_MODE_IS_ENABLED_CONNECT_TO_A_WI_FI_NETWORK_INSTEAD_OR_DISABLE_FLIGHT_MODE_AND_TRY_AGAIN"
+msgstr "Matkapuhelinverkkoihin ei voi yhdistää, kun lentotila on käytössä. Muodosta sen sijaan yhteys Wi-Fi-verkon kautta tai poista lentotila käytöstä ja yritä uudelleen."
 
-msgid "IDS_COM_BUTTON_AGREE"
-msgstr "Hyväksyn"
+msgid "IDS_COM_BODY_SEARCHING"
+msgstr "Haetaan"
 
-msgid "IDS_COM_BUTTON_DISAGREE"
-msgstr "Eri mieltä"
+msgid "IDS_QP_TPOP_UNABLE_TO_OPEN_PS"
+msgstr "Sovellusta %s ei voi avata."
 
-msgid "IDS_ST_BODY_GPS_LOCATION_USE_CONTROLLED_BY_APPLICATIONS_MSG"
-msgstr "Käytettävät sovellukset säätelevät GPS-sijaintia ja sijaintitietojen käyttöä"
+msgid "IDS_QP_OPT_OUTDOORS_M_OUTDOOR_MODE_ABB"
+msgstr "Ulkona"
 
-msgid "IDS_ST_HEADER_USER_CONSENT"
-msgstr "Käyttäjän suostumus"
+msgid "IDS_QP_BUTTON2_PRIVATE_NMODE_ABB"
+msgstr "Yksit.\ntila"
 
diff --git a/po/fr.po b/po/fr.po
new file mode 100644 (file)
index 0000000..264a14a
--- /dev/null
+++ b/po/fr.po
@@ -0,0 +1,186 @@
+msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
+msgstr "Activation simultanée du Wi-Fi et du point d'accès mobile impossible. Désactiver le point d'accès mobile ?"
+
+msgid "IDS_TASKMGR_BUTTON_CLEAR_ALL"
+msgstr "Effacer tout"
+
+msgid "IDS_IDLE_SBODY_TAP_HERE_TO_DISABLE_SAFE_MODE_ABB"
+msgstr "App. pr désact. mode Sécurisé."
+
+msgid "IDS_IDLE_POP_UNABLE_TO_LAUNCH_PS"
+msgstr "Impossible de lancer %s."
+
+msgid "IDS_IDLE_MBODY_EMERGENCY_CALLS_ONLY"
+msgstr "Appels urgence uniquement"
+
+msgid "IDS_IDLE_BODY_SEARCHING_ING"
+msgstr "Recherche..."
+
+msgid "IDS_IDLE_BODY_NO_SIM"
+msgstr "Pas de carte SIM"
+
+msgid "IDS_IDLE_BODY_NO_SERVICE"
+msgstr "Aucun service"
+
+msgid "IDS_IDLE_BODY_INVALID_SIM_CARD"
+msgstr "Carte SIM non valide"
+
+msgid "IDS_IDLE_BODY_EMERGENCY_CALLS_ONLY"
+msgstr "Appels d'urgence uniquement"
+
+msgid "IDS_QP_OPT_OUTDOORS_ABB"
+msgstr "Extér."
+
+msgid "IDS_QP_MBODY_SAFE_MODE_ENABLED"
+msgstr "Mode Sécurisé activé"
+
+msgid "IDS_QP_HEADER_NOTIFICATIONS_HPD_ABB"
+msgstr "Notifications (%d)"
+
+msgid "IDS_QP_HEADER_CLEAR_ALL_ABB"
+msgstr "Eff. tout"
+
+msgid "IDS_QP_BUTTON_NOTIFICATION"
+msgstr "Notific."
+
+msgid "IDS_QP_BUTTON_ALWAYS_ASK_ABB"
+msgstr "Tjrs demander"
+
+msgid "IDS_QP_BUTTON2_WI_FI"
+msgstr "Wi-Fi"
+
+msgid "IDS_QP_BUTTON2_VIBRATE"
+msgstr "Vibreur"
+
+msgid "IDS_QP_BUTTON2_U_POWER_NSAVING_ABB"
+msgstr "Ultra éco\nénergie"
+
+msgid "IDS_QP_BUTTON2_TETHERING"
+msgstr "Modem"
+
+msgid "IDS_QP_BUTTON2_SOUND_ABB"
+msgstr "Son"
+
+msgid "IDS_QP_BUTTON2_SOUND"
+msgstr "Son"
+
+msgid "IDS_QP_BUTTON2_PRIVATE_MODE"
+msgstr "Mode Privé"
+
+msgid "IDS_QP_BUTTON2_POWER_N_SAVING"
+msgstr "Éco.\nénergie"
+
+msgid "IDS_QP_BUTTON2_MUTE_ABB"
+msgstr "Muet"
+
+msgid "IDS_QP_BUTTON2_MOBILE_DATA"
+msgstr "Données\nmobiles"
+
+msgid "IDS_QP_BUTTON2_LOCATION_ABB"
+msgstr "Position"
+
+msgid "IDS_QP_BUTTON2_FLIGHT_N_MODE"
+msgstr "Mode\nHors-ligne"
+
+msgid "IDS_QP_BUTTON2_BLUETOOTH"
+msgstr "Bluetooth"
+
+msgid "IDS_QP_BUTTON2_AUTO_ROTATE"
+msgstr "Rotation auto"
+
+msgid "IDS_QP_BUTTON2_ASSISTIVE_NLIGHT"
+msgstr "Lampe\nde poche"
+
+msgid "IDS_QP_BODY_PM_ABB"
+msgstr "PM"
+
+msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
+msgstr "Notifications"
+
+msgid "IDS_QP_BODY_AM_ABB"
+msgstr "AM"
+
+msgid "IDS_ST_TPOP_UNABLE_TO_MAKE_VOICE_CALLS_VIDEO_CALLS_AND_SEND_TEXT_MESSAGES_USING_PS"
+msgstr "Impossible d'effectuer des appels vocaux ou visio, ni d'envoyer des SMS via %s."
+
+msgid "IDS_ST_TPOP_SELECT_SIM_CARD_FOR_OUTGOING_VOICE_CALLS_VIDEO_CALLS_AND_TEXT_MESSAGES"
+msgstr "Sélectionnez la carte SIM pour les appels vocaux et visio sortants, ainsi que les SMS."
+
+msgid "IDS_ST_TPOP_OUTGOING_VOICE_CALLS_VIDEO_CALLS_AND_TEXT_MESSAGES_WILL_BE_MADE_USING_THE_PS_SIM_CARD"
+msgstr "Les appels vocaux et visio, ainsi que les SMS sortants seront effectués avec la carte SIM %s."
+
+msgid "IDS_ST_SK_OK"
+msgstr "OK"
+
+msgid "IDS_ST_SK_NO"
+msgstr "Non"
+
+msgid "IDS_ST_POP_UNABLE_TO_INCREASE_BRIGHTNESS_FURTHER_BECAUSE_OF_PHONE_OVERHEATING"
+msgstr "Impossible d'augmenter la luminosité en raison d'une surchauffe de l'appareil."
+
+msgid "IDS_ST_NPBODY_NO_SERVICE"
+msgstr "Aucun service"
+
+msgid "IDS_ST_NPBODY_EMERGENCY_CALLS_ONLY_ABB"
+msgstr "Appels d'urgence uniquement"
+
+msgid "IDS_ST_HEADER_OUTDOOR"
+msgstr "Extérieur"
+
+msgid "IDS_ST_BUTTON2_WI_FI_NTETHERING"
+msgstr "Modem\nWi-Fi"
+
+msgid "IDS_ST_BUTTON2_WI_FI_ABB"
+msgstr "Wi-Fi"
+
+msgid "IDS_ST_BUTTON2_TORCH_ABB"
+msgstr "Lampe"
+
+msgid "IDS_ST_BUTTON2_POWER_NSAVING"
+msgstr "Économ.\nénergie"
+
+msgid "IDS_ST_BUTTON2_MOBILE_NDATA"
+msgstr "Données\nmobiles"
+
+msgid "IDS_ST_BUTTON2_GPS_ABB"
+msgstr "GPS"
+
+msgid "IDS_ST_BUTTON2_FLIGHT_NMODE"
+msgstr "Mode\nHs ligne"
+
+msgid "IDS_ST_BUTTON2_BLUETOOTH_ABB"
+msgstr "Bluetooth"
+
+msgid "IDS_ST_BUTTON2_AUTO_NROTATE"
+msgstr "Rotation\nauto"
+
+msgid "IDS_ST_BODY_SIM_2"
+msgstr "SIM 2"
+
+msgid "IDS_ST_BODY_SIM_1"
+msgstr "SIM 1"
+
+msgid "IDS_ST_BODY_SCANNING_FOR_MOBILE_NETWORK_ING_ABB"
+msgstr "Recherche de réseau mobile..."
+
+msgid "IDS_ST_BODY_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
+msgstr "Insérez une carte SIM pour accéder aux services réseau."
+
+msgid "IDS_ST_BODY_ALWAYS_ASK_ABB"
+msgstr "Toujours demander"
+
+msgid "IDS_SCP_BODY_UNABLE_TO_CONNECT_TO_MOBILE_NETWORKS_WHILE_FLIGHT_MODE_IS_ENABLED_CONNECT_TO_A_WI_FI_NETWORK_INSTEAD_OR_DISABLE_FLIGHT_MODE_AND_TRY_AGAIN"
+msgstr "Impossible de se connecter aux réseaux mobiles lorsque le mode Hors-ligne est activé. Connectez-vous plutôt à un réseau Wi-Fi ou désactivez le mode Hors-ligne, puis réessayez."
+
+msgid "IDS_COM_BODY_SEARCHING"
+msgstr "Recherche"
+
+msgid "IDS_QP_TPOP_UNABLE_TO_OPEN_PS"
+msgstr "Impossible d'ouvrir %s."
+
+msgid "IDS_QP_OPT_OUTDOORS_M_OUTDOOR_MODE_ABB"
+msgstr "Extér."
+
+msgid "IDS_QP_BUTTON2_PRIVATE_NMODE_ABB"
+msgstr "Mode\nPrivé"
+
index 083ed7e..779955f 100755 (executable)
-msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
-msgstr "Notifications"
+msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
+msgstr "Activation simultanée de wifi et du point d'accès mobile impossible. Désactiver le point d'accès mobile ?"
 
-msgid "IDS_WIFI_BODY_ALLSHARE_CAST"
-msgstr "AllShare Cast"
+msgid "IDS_TASKMGR_BUTTON_CLEAR_ALL"
+msgstr "Effacer tout"
 
-msgid "IDS_CALL_POP_CALLING_EMERG_ONLY"
-msgstr "Appels d'urgence uniquement"
+msgid "IDS_IDLE_SBODY_TAP_HERE_TO_DISABLE_SAFE_MODE_ABB"
+msgstr "App. pr désact. mode Sécurisé."
+
+msgid "IDS_IDLE_POP_UNABLE_TO_LAUNCH_PS"
+msgstr "Impossible de lancer %s."
+
+msgid "IDS_IDLE_MBODY_EMERGENCY_CALLS_ONLY"
+msgstr "Appels urgence uniquement"
+
+msgid "IDS_IDLE_BODY_SEARCHING_ING"
+msgstr "Recherche..."
+
+msgid "IDS_IDLE_BODY_NO_SIM"
+msgstr "Pas de carte SIM"
+
+msgid "IDS_IDLE_BODY_NO_SERVICE"
+msgstr "Aucun service"
 
-msgid "IDS_QP_BUTTON_ROTATION"
-msgstr "Rotation"
+msgid "IDS_IDLE_BODY_INVALID_SIM_CARD"
+msgstr "Carte SIM non valide."
 
-msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
+msgid "IDS_IDLE_BODY_EMERGENCY_CALLS_ONLY"
+msgstr "Appels d'urgence uniquement."
+
+msgid "IDS_QP_OPT_OUTDOORS_ABB"
+msgstr "Extér."
+
+msgid "IDS_QP_MBODY_SAFE_MODE_ENABLED"
+msgstr "Mode Sécurisé activé"
+
+msgid "IDS_QP_HEADER_NOTIFICATIONS_HPD_ABB"
 msgstr "Notifications (%d)"
 
-msgid "IDS_QP_BUTTON_VIBRATION"
+msgid "IDS_QP_HEADER_CLEAR_ALL_ABB"
+msgstr "Eff. tout"
+
+msgid "IDS_QP_BUTTON_NOTIFICATION"
+msgstr "Notific."
+
+msgid "IDS_QP_BUTTON_ALWAYS_ASK_ABB"
+msgstr "Tjrs demander"
+
+msgid "IDS_QP_BUTTON2_WI_FI"
+msgstr "Wifi"
+
+msgid "IDS_QP_BUTTON2_VIBRATE"
 msgstr "Vibreur"
 
-msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
-msgstr "Son et vibreur"
+msgid "IDS_QP_BUTTON2_U_POWER_NSAVING_ABB"
+msgstr "Ultra éco\nénergie"
 
-msgid "IDS_QP_TAB4_AUTO_ROTATION"
-msgstr "Rotation auto"
+msgid "IDS_QP_BUTTON2_TETHERING"
+msgstr "Modem"
 
-msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
-msgstr "Verr. rotation"
+msgid "IDS_QP_BUTTON2_SOUND_ABB"
+msgstr "Son"
 
-msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
-msgstr "Mode stockage de masse"
+msgid "IDS_QP_BUTTON2_SOUND"
+msgstr "Son"
 
-msgid "IDS_QP_BUTTON_DISABLE"
-msgstr "Désactiver"
+msgid "IDS_QP_BUTTON2_PRIVATE_MODE"
+msgstr "Mode Privé"
 
-msgid "IDS_QP_BUTTON_ENABLE"
-msgstr "Activer"
+msgid "IDS_QP_BUTTON2_POWER_N_SAVING"
+msgstr "Écon.\nd'énergie"
 
-msgid "IDS_COM_POP_UNSUPPORTED"
-msgstr "Non pris en charge"
+msgid "IDS_QP_BUTTON2_MUTE_ABB"
+msgstr "Muet"
 
-msgid "IDS_COM_SK_DISMISS"
-msgstr "Ignorer"
+msgid "IDS_QP_BUTTON2_MOBILE_DATA"
+msgstr "Données\nmobiles"
 
-msgid "IDS_COM_POP_PELASE_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
-msgstr "Insérez une carte SIM pour accéder aux services réseau"
+msgid "IDS_QP_BUTTON2_LOCATION_ABB"
+msgstr "Position"
 
-msgid "IDS_COM_BODY_DO_NOT_ASK_AGAIN"
-msgstr "Ne plus demander"
+msgid "IDS_QP_BUTTON2_FLIGHT_N_MODE"
+msgstr "Mode\nHors-ligne"
 
-msgid "IDS_QP_POP_INSERT_SIM_CARD_AND_RESTART_DEVICE_TO_USE_TETHERING"
-msgstr "Insérez une carte SIM et redémarrez l'appareil pour utiliser le modem"
+msgid "IDS_QP_BUTTON2_BLUETOOTH"
+msgstr "Bluetooth"
 
-msgid "IDS_QP_POP_CONNECTING_VIA_PACKET_DATA_MAY_INCUR_ADDITIONAL_CHARGES_CONTINUE_Q"
-msgstr "La connexion via des données par paquet peut entrainer des frais supplémentaires. Continuer ?"
+msgid "IDS_QP_BUTTON2_AUTO_ROTATE"
+msgstr "Rotation auto"
 
-msgid "IDS_QP_BODY_AUTO"
-msgstr "Auto"
+msgid "IDS_QP_BUTTON2_ASSISTIVE_NLIGHT"
+msgstr "Lampe\nde poche"
 
-msgid "IDS_QP_TAB_POWER_SAVING"
-msgstr "Économie d'énergie"
+msgid "IDS_QP_BODY_PM_ABB"
+msgstr "PM"
 
-msgid "IDS_QP_TAB_TETHERING"
-msgstr "Fonction modem"
+msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
+msgstr "Notifications"
 
-msgid "IDS_QP_TAB_MOBILE_DATA"
-msgstr "Données mobiles"
+msgid "IDS_QP_BODY_AM_ABB"
+msgstr "AM"
 
-msgid "IDS_QP_TAB_DRIVING_MODE"
-msgstr "Mode Voiture"
+msgid "IDS_ST_TPOP_UNABLE_TO_MAKE_VOICE_CALLS_VIDEO_CALLS_AND_SEND_TEXT_MESSAGES_USING_PS"
+msgstr "Impossible d'effectuer des appels vocaux ou vidéos ni d'envoyer des SMS via %s."
 
-msgid "IDS_COM_POP_UNABLE_TO_CONNECT_TO_MOBILE_NETWORK_WHILE_FLIGHT_MODE_IS_ENABLED_MSG"
-msgstr "Impossible de se connecter aux réseaux mobiles lorsque le mode Hors-ligne est activé. Connectez-vous au réseau Wifi à la place ou désactivez le mode Hors-ligne et réessayez"
+msgid "IDS_ST_TPOP_SELECT_SIM_CARD_FOR_OUTGOING_VOICE_CALLS_VIDEO_CALLS_AND_TEXT_MESSAGES"
+msgstr "Sélectionnez la carte SIM pour les appels vocaux et vidéos sortants, ainsi que les SMS."
 
-msgid "IDS_QP_POP_WI_FI_TETHERING_CONSUMES_MORE_BATTERY_POWER_AND_INCREASES_YOUR_DATA_USAGE_CONTINUE_Q"
-msgstr "Le modem Wifi consomme plus d'énergie et augmente l'utilisation des données. Continuer ?"
+msgid "IDS_ST_TPOP_OUTGOING_VOICE_CALLS_VIDEO_CALLS_AND_TEXT_MESSAGES_WILL_BE_MADE_USING_THE_PS_SIM_CARD"
+msgstr "Les appels vocaux et visio, ainsi que les SMS sortants seront effectués avec la carte SIM %s."
 
-msgid "IDS_QP_POP_DISABLE_TETHERING_TO_USE_WI_FI"
-msgstr "Désactivez le modem pour utiliser le Wifi"
+msgid "IDS_ST_SK_OK"
+msgstr "OK"
 
-msgid "IDS_QP_POP_TO_ENABLE_POWER_SAVING_MODE_ENABLE_AT_LEAST_ONE_RELEVANT_FUNCTION"
-msgstr "Pour activer le mode Économie d'énergie, activez au moins une fonction appropriée"
+msgid "IDS_ST_SK_NO"
+msgstr "Non"
 
-msgid "IDS_QP_POP_TURN_OFF_WI_FI_TO_USE_TETHERING"
-msgstr "Désactivez le Wifi pour utiliser le modem"
+msgid "IDS_ST_POP_UNABLE_TO_INCREASE_BRIGHTNESS_FURTHER_BECAUSE_OF_PHONE_OVERHEATING"
+msgstr "Impossible d'augmenter la luminosité en raison d'une surchauffe de l'appareil."
 
-msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
-msgstr "Activation simultanée de wifi et du point d'accès mobile impossible. Désactiver le point d'accès mobile ?"
+msgid "IDS_ST_NPBODY_NO_SERVICE"
+msgstr "Aucun service"
+
+msgid "IDS_ST_NPBODY_EMERGENCY_CALLS_ONLY_ABB"
+msgstr "Appels d'urgence uniquement"
 
-msgid "IDS_ASCAST_HEADER_SCREEN_MIRRORING"
-msgstr "Réplication de l'écran"
+msgid "IDS_ST_HEADER_OUTDOOR"
+msgstr "Extérieur"
 
-msgid "IDS_QP_HEADER_REPLACE_QUICK_SETTING_BUTTON"
-msgstr "Remplacer un bouton de configuration rapide"
+msgid "IDS_ST_BUTTON2_WI_FI_NTETHERING"
+msgstr "Modem\nWifi"
 
-msgid "IDS_QP_HEADER_ADD_QUICK_SETTING_BUTTON"
-msgstr "Ajouter une option de configuration rapide"
+msgid "IDS_ST_BUTTON2_WI_FI_ABB"
+msgstr "Wifi"
 
-msgid "IDS_QP_POP_YOU_WILL_NO_LONGER_BE_ABLE_TO_USE_APPLICATIONS_SUCH_AS_INTERNET_NOTI_MSG"
-msgstr "Vous ne pourrez plus utiliser les applications telles qu'Internet et la messagerie via les réseaux mobiles. Continuer ?"
+msgid "IDS_ST_BUTTON2_TORCH_ABB"
+msgstr "Lampe"
 
-msgid "IDS_QP_BUTTON2_SCREEN_N_MIRRORING"
-msgstr "Screen\nMirroring"
+msgid "IDS_ST_BUTTON2_POWER_NSAVING"
+msgstr "Écon.\nd'énergie"
 
-msgid "IDS_COM_BODY_BUTTON_T_TTS"
-msgstr "Bouton"
+msgid "IDS_ST_BUTTON2_MOBILE_NDATA"
+msgstr "Données\nmobiles"
 
-msgid "IDS_QP_BUTTON2_GPS"
+msgid "IDS_ST_BUTTON2_GPS_ABB"
 msgstr "GPS"
 
-msgid "IDS_QP_BUTTON_NOTIFICATION"
-msgstr "Notific."
+msgid "IDS_ST_BUTTON2_FLIGHT_NMODE"
+msgstr "Mode\nHors-ligne"
+
+msgid "IDS_ST_BUTTON2_BLUETOOTH_ABB"
+msgstr "Bluetooth"
+
+msgid "IDS_ST_BUTTON2_AUTO_NROTATE"
+msgstr "Rotation\nauto"
+
+msgid "IDS_ST_BODY_SIM_2"
+msgstr "SIM 2"
+
+msgid "IDS_ST_BODY_SIM_1"
+msgstr "SIM 1"
+
+msgid "IDS_ST_BODY_SCANNING_FOR_MOBILE_NETWORK_ING_ABB"
+msgstr "Recherche de réseau mobile..."
+
+msgid "IDS_ST_BODY_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
+msgstr "Insérez une carte SIM pour accéder aux services réseau."
+
+msgid "IDS_ST_BODY_ALWAYS_ASK_ABB"
+msgstr "Toujours demander"
+
+msgid "IDS_SCP_BODY_UNABLE_TO_CONNECT_TO_MOBILE_NETWORKS_WHILE_FLIGHT_MODE_IS_ENABLED_CONNECT_TO_A_WI_FI_NETWORK_INSTEAD_OR_DISABLE_FLIGHT_MODE_AND_TRY_AGAIN"
+msgstr "Impossible de se connecter aux réseaux mobiles lorsque le mode Hors-ligne est activé. Connectez-vous plutôt à un réseau Wifi ou désactivez le mode Hors-ligne, puis réessayez."
 
-msgid "IDS_COM_BUTTON_AGREE"
-msgstr "Accepter"
+msgid "IDS_COM_BODY_SEARCHING"
+msgstr "Recherche"
 
-msgid "IDS_COM_BUTTON_DISAGREE"
-msgstr "Refuser"
+msgid "IDS_QP_TPOP_UNABLE_TO_OPEN_PS"
+msgstr "Impossible d'ouvrir %s."
 
-msgid "IDS_ST_BODY_GPS_LOCATION_USE_CONTROLLED_BY_APPLICATIONS_MSG"
-msgstr "La position GPS et l'utilisation des données de votre position sont contrôlées par les applications que vous utilisez"
+msgid "IDS_QP_OPT_OUTDOORS_M_OUTDOOR_MODE_ABB"
+msgstr "Extér."
 
-msgid "IDS_ST_HEADER_USER_CONSENT"
-msgstr "Accord de l'utilisateur"
+msgid "IDS_QP_BUTTON2_PRIVATE_NMODE_ABB"
+msgstr "Mode\nPrivé"
 
diff --git a/po/fr_FR.po b/po/fr_FR.po
deleted file mode 100755 (executable)
index 7990fda..0000000
+++ /dev/null
@@ -1,123 +0,0 @@
-msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
-msgstr "Notifications"
-
-msgid "IDS_WIFI_BODY_ALLSHARE_CAST"
-msgstr "AllShare Cast"
-
-msgid "IDS_CALL_POP_CALLING_EMERG_ONLY"
-msgstr "Appels d'urgence uniquement"
-
-msgid "IDS_QP_BUTTON_ROTATION"
-msgstr "Rotation"
-
-msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
-msgstr "Notifications (%d)"
-
-msgid "IDS_QP_BUTTON_VIBRATION"
-msgstr "Vibreur"
-
-msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
-msgstr "Son et vibreur"
-
-msgid "IDS_QP_TAB4_AUTO_ROTATION"
-msgstr "Rotation auto"
-
-msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
-msgstr "Désactiver\nrotation"
-
-msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
-msgstr "Mode stockage de masse"
-
-msgid "IDS_QP_BUTTON_DISABLE"
-msgstr "Désactiv."
-
-msgid "IDS_QP_BUTTON_ENABLE"
-msgstr "Activer"
-
-msgid "IDS_COM_POP_UNSUPPORTED"
-msgstr "Non pris en charge"
-
-msgid "IDS_COM_SK_DISMISS"
-msgstr "Ignorer"
-
-msgid "IDS_COM_POP_PELASE_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
-msgstr "Insérez une carte SIM pour accéder aux services réseau"
-
-msgid "IDS_COM_BODY_DO_NOT_ASK_AGAIN"
-msgstr "Ne plus demander"
-
-msgid "IDS_QP_POP_INSERT_SIM_CARD_AND_RESTART_DEVICE_TO_USE_TETHERING"
-msgstr "Insérez une carte SIM et redémarrez l'appareil pour utiliser le modem"
-
-msgid "IDS_QP_POP_CONNECTING_VIA_PACKET_DATA_MAY_INCUR_ADDITIONAL_CHARGES_CONTINUE_Q"
-msgstr "Les connexions de données peuvent entraîner des frais supplémentaires. Continuer ?"
-
-msgid "IDS_QP_BODY_AUTO"
-msgstr "Auto."
-
-msgid "IDS_QP_TAB_POWER_SAVING"
-msgstr "Économie d'énergie"
-
-msgid "IDS_QP_TAB_TETHERING"
-msgstr "Fonction modem"
-
-msgid "IDS_QP_TAB_MOBILE_DATA"
-msgstr "Données mobiles"
-
-msgid "IDS_QP_TAB_DRIVING_MODE"
-msgstr "Profil Voiture"
-
-msgid "IDS_COM_POP_UNABLE_TO_CONNECT_TO_MOBILE_NETWORK_WHILE_FLIGHT_MODE_IS_ENABLED_MSG"
-msgstr "Impossible de se connecter aux réseaux mobiles lorsque le mode Hors-ligne est activé. Connectez-vous au réseau Wi-Fi à la place ou désactivez le mode Hors-ligne et réessayez"
-
-msgid "IDS_QP_POP_WI_FI_TETHERING_CONSUMES_MORE_BATTERY_POWER_AND_INCREASES_YOUR_DATA_USAGE_CONTINUE_Q"
-msgstr "Le modem Wi-Fi consomme plus d'énergie et augmente l'utilisation des données. Continuer ?"
-
-msgid "IDS_QP_POP_DISABLE_TETHERING_TO_USE_WI_FI"
-msgstr "Désactivez le modem pour utiliser le Wi-Fi"
-
-msgid "IDS_QP_POP_TO_ENABLE_POWER_SAVING_MODE_ENABLE_AT_LEAST_ONE_RELEVANT_FUNCTION"
-msgstr "Pour activer le mode Économie d'énergie, activez au moins une fonction appropriée"
-
-msgid "IDS_QP_POP_TURN_OFF_WI_FI_TO_USE_TETHERING"
-msgstr "Désactivez le Wi-Fi pour utiliser le modem"
-
-msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
-msgstr "Activation simultanée du Wi-Fi et du point d'accès mobile impossible. Désactiver le point d'accès mobile ?"
-
-msgid "IDS_ASCAST_HEADER_SCREEN_MIRRORING"
-msgstr "AllShare"
-
-msgid "IDS_QP_HEADER_REPLACE_QUICK_SETTING_BUTTON"
-msgstr "Remplacer un bouton de configuration rapide"
-
-msgid "IDS_QP_HEADER_ADD_QUICK_SETTING_BUTTON"
-msgstr "Ajouter une option de configuration rapide"
-
-msgid "IDS_QP_POP_YOU_WILL_NO_LONGER_BE_ABLE_TO_USE_APPLICATIONS_SUCH_AS_INTERNET_NOTI_MSG"
-msgstr "Vous ne pourrez plus utiliser les applications telles qu'Internet et la messagerie via les réseaux mobiles. Continuer ?"
-
-msgid "IDS_QP_BUTTON2_SCREEN_N_MIRRORING"
-msgstr "Screen\nMirroring"
-
-msgid "IDS_COM_BODY_BUTTON_T_TTS"
-msgstr "Touche"
-
-msgid "IDS_QP_BUTTON2_GPS"
-msgstr "GPS"
-
-msgid "IDS_QP_BUTTON_NOTIFICATION"
-msgstr "Notific."
-
-msgid "IDS_COM_BUTTON_AGREE"
-msgstr "Accepter"
-
-msgid "IDS_COM_BUTTON_DISAGREE"
-msgstr "Refuser"
-
-msgid "IDS_ST_BODY_GPS_LOCATION_USE_CONTROLLED_BY_APPLICATIONS_MSG"
-msgstr "La position GPS et l'utilisation des données de votre position sont contrôlées par les applications que vous utilisez"
-
-msgid "IDS_ST_HEADER_USER_CONSENT"
-msgstr "Accord de l'utilisateur"
-
index 6304ff2..4fe6e07 100755 (executable)
--- a/po/ga.po
+++ b/po/ga.po
-msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
-msgstr "Fógraí"
+msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
+msgstr "Ní féidir Wi-Fi agus AP Móibíleach a chur i ngníomh ag an am céanna. Díghníomhachtaigh AP Móibíleach?"
+
+msgid "IDS_TASKMGR_BUTTON_CLEAR_ALL"
+msgstr "Glan gach"
 
-msgid "IDS_WIFI_BODY_ALLSHARE_CAST"
-msgstr "AllShare Cast"
+msgid "IDS_IDLE_SBODY_TAP_HERE_TO_DISABLE_SAFE_MODE_ABB"
+msgstr "Tap. anseo le Mód Sábh. a dhíchumasú"
 
-msgid "IDS_CALL_POP_CALLING_EMERG_ONLY"
+msgid "IDS_IDLE_POP_UNABLE_TO_LAUNCH_PS"
+msgstr "Ní féidir %s a lainseáil."
+
+msgid "IDS_IDLE_MBODY_EMERGENCY_CALLS_ONLY"
 msgstr "Glaonna éigeandála amháin"
 
-msgid "IDS_QP_BUTTON_ROTATION"
-msgstr "Rothlú"
+msgid "IDS_IDLE_BODY_SEARCHING_ING"
+msgstr "Ag cuardach..."
+
+msgid "IDS_IDLE_BODY_NO_SIM"
+msgstr "Níl SIM ann"
+
+msgid "IDS_IDLE_BODY_NO_SERVICE"
+msgstr "Níl seirbhís ann"
+
+msgid "IDS_IDLE_BODY_INVALID_SIM_CARD"
+msgstr "Cárta SIM neamhbhailí."
 
-msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
+msgid "IDS_IDLE_BODY_EMERGENCY_CALLS_ONLY"
+msgstr "Glaonna éigeandála amháin."
+
+msgid "IDS_QP_OPT_OUTDOORS_ABB"
+msgstr "Lasmuigh"
+
+msgid "IDS_QP_MBODY_SAFE_MODE_ENABLED"
+msgstr "Mód sábháilte cumasaithe"
+
+msgid "IDS_QP_HEADER_NOTIFICATIONS_HPD_ABB"
 msgstr "Fógraí (%d)"
 
-msgid "IDS_QP_BUTTON_VIBRATION"
+msgid "IDS_QP_HEADER_CLEAR_ALL_ABB"
+msgstr "Glan gach"
+
+msgid "IDS_QP_BUTTON_NOTIFICATION"
+msgstr "Fógra"
+
+msgid "IDS_QP_BUTTON_ALWAYS_ASK_ABB"
+msgstr "Iarr i gcónaí"
+
+msgid "IDS_QP_BUTTON2_WI_FI"
+msgstr "Wi-Fi"
+
+msgid "IDS_QP_BUTTON2_VIBRATE"
 msgstr "Crith"
 
-msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
-msgstr "Fuaim & crith"
+msgid "IDS_QP_BUTTON2_U_POWER_NSAVING_ABB"
+msgstr "U.coigilt\ncumhachta"
 
-msgid "IDS_QP_TAB4_AUTO_ROTATION"
-msgstr "Uathrothlú"
+msgid "IDS_QP_BUTTON2_TETHERING"
+msgstr "Nascaireacht"
 
-msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
-msgstr "Glas rothl."
+msgid "IDS_QP_BUTTON2_SOUND_ABB"
+msgstr "Fuaim"
 
-msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
-msgstr "Mód ollstórála"
+msgid "IDS_QP_BUTTON2_SOUND"
+msgstr "Fuaim"
 
-msgid "IDS_QP_BUTTON_DISABLE"
-msgstr "Díchumasú"
+msgid "IDS_QP_BUTTON2_PRIVATE_MODE"
+msgstr "Mód príobh."
 
-msgid "IDS_QP_BUTTON_ENABLE"
-msgstr "Cumasaigh"
+msgid "IDS_QP_BUTTON2_POWER_N_SAVING"
+msgstr "Coigilt\nchumh."
 
-msgid "IDS_COM_POP_UNSUPPORTED"
-msgstr "Gan tacú"
+msgid "IDS_QP_BUTTON2_MUTE_ABB"
+msgstr "Balbhaigh"
 
-msgid "IDS_COM_SK_DISMISS"
-msgstr "Ruaig"
+msgid "IDS_QP_BUTTON2_MOBILE_DATA"
+msgstr "Sonraí\nmóibíl."
 
-msgid "IDS_COM_POP_PELASE_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
-msgstr "Ionsáigh cárta SIM le seirbhísí líonra a rochtain"
+msgid "IDS_QP_BUTTON2_LOCATION_ABB"
+msgstr "Suíomh"
 
-msgid "IDS_COM_BODY_DO_NOT_ASK_AGAIN"
-msgstr "Ná hiarr arís"
+msgid "IDS_QP_BUTTON2_FLIGHT_N_MODE"
+msgstr "Mód\neitilte"
 
-msgid "IDS_QP_POP_INSERT_SIM_CARD_AND_RESTART_DEVICE_TO_USE_TETHERING"
-msgstr "Ionsáigh cárta SIM agus atosaigh an gléas le nascaireacht a úsáid"
+msgid "IDS_QP_BUTTON2_BLUETOOTH"
+msgstr "Bluetooth"
 
-msgid "IDS_QP_POP_CONNECTING_VIA_PACKET_DATA_MAY_INCUR_ADDITIONAL_CHARGES_CONTINUE_Q"
-msgstr "Is féidir go ngearrfar táillí breise ar nascadh le sonraí pacáiste. Ar aghaidh?"
+msgid "IDS_QP_BUTTON2_AUTO_ROTATE"
+msgstr "Uathrothlaigh"
 
-msgid "IDS_QP_BODY_AUTO"
-msgstr "Uath-"
+msgid "IDS_QP_BUTTON2_ASSISTIVE_NLIGHT"
+msgstr "Solas\ncúnta"
 
-msgid "IDS_QP_TAB_POWER_SAVING"
-msgstr "Coigilt chumhachta"
+msgid "IDS_QP_BODY_PM_ABB"
+msgstr "IN"
 
-msgid "IDS_QP_TAB_TETHERING"
-msgstr "Ag déanamh teaghráin"
+msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
+msgstr "Fógraí"
 
-msgid "IDS_QP_TAB_MOBILE_DATA"
-msgstr "Sonraí móibíleacha"
+msgid "IDS_QP_BODY_AM_ABB"
+msgstr "RN"
 
-msgid "IDS_QP_TAB_DRIVING_MODE"
-msgstr "Mód tiomána"
+msgid "IDS_ST_TPOP_UNABLE_TO_MAKE_VOICE_CALLS_VIDEO_CALLS_AND_SEND_TEXT_MESSAGES_USING_PS"
+msgstr "Ní féidir glaonna gutha ná glaonna físe a chur ná teachtaireachtaí téacs a sheoladh le %s."
 
-msgid "IDS_COM_POP_UNABLE_TO_CONNECT_TO_MOBILE_NETWORK_WHILE_FLIGHT_MODE_IS_ENABLED_MSG"
-msgstr "Ní féidir nascadh le líonraí móibíleacha agus mód Eitilte cumasaithe. Nasc le líonra Wi-Fi, nó díchumasaigh mód Eitilte agus triail arís é"
+msgid "IDS_ST_TPOP_SELECT_SIM_CARD_FOR_OUTGOING_VOICE_CALLS_VIDEO_CALLS_AND_TEXT_MESSAGES"
+msgstr "Roghnaigh cárta SIM le haghaidh glaonna gutha, glaonna físe agus teachtaireachtaí téacs amach."
 
-msgid "IDS_QP_POP_WI_FI_TETHERING_CONSUMES_MORE_BATTERY_POWER_AND_INCREASES_YOUR_DATA_USAGE_CONTINUE_Q"
-msgstr "Ídíonn nascaireacht Wi-Fi níos mó cumhacht ceallra agus méadaíonn úsáid do shonraí. Ar aghaidh?"
+msgid "IDS_ST_TPOP_OUTGOING_VOICE_CALLS_VIDEO_CALLS_AND_TEXT_MESSAGES_WILL_BE_MADE_USING_THE_PS_SIM_CARD"
+msgstr "Cuirfear glaonna gutha agus físe amach agus seolfar teachtaireachtaí amach le cárta SIM %s."
 
-msgid "IDS_QP_POP_DISABLE_TETHERING_TO_USE_WI_FI"
-msgstr "Díchumasaigh nascaireacht le Wi-Fi a úsáid"
+msgid "IDS_ST_SK_OK"
+msgstr "OK"
 
-msgid "IDS_QP_POP_TO_ENABLE_POWER_SAVING_MODE_ENABLE_AT_LEAST_ONE_RELEVANT_FUNCTION"
-msgstr "Cumasaigh feidhm ábhartha amháin ar a laghad le Mód coigilte cumhachta a chumasú"
+msgid "IDS_ST_SK_NO"
+msgstr "Ná déan é"
 
-msgid "IDS_QP_POP_TURN_OFF_WI_FI_TO_USE_TETHERING"
-msgstr "Cas as Wi-Fi le nascaireacht a úsáid"
+msgid "IDS_ST_POP_UNABLE_TO_INCREASE_BRIGHTNESS_FURTHER_BECAUSE_OF_PHONE_OVERHEATING"
+msgstr "Ní féidir gile a mhéadú tuilleadh de bharr róthéimh."
 
-msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
-msgstr "Ní féidir Wi-Fi agus AP Móibíleach a chur i ngníomh ag an am céanna. Díghníomhachtaigh AP Móibíleach?"
+msgid "IDS_ST_NPBODY_NO_SERVICE"
+msgstr "Níl seirbhís ann"
 
-msgid "IDS_ASCAST_HEADER_SCREEN_MIRRORING"
-msgstr "Scáthánú Scáileáin"
+msgid "IDS_ST_NPBODY_EMERGENCY_CALLS_ONLY_ABB"
+msgstr "Glaonna éigeandála amháin"
+
+msgid "IDS_ST_HEADER_OUTDOOR"
+msgstr "Lasmuigh"
 
-msgid "IDS_QP_HEADER_REPLACE_QUICK_SETTING_BUTTON"
-msgstr "Ionadaigh cnaipe mear-shocruithe"
+msgid "IDS_ST_BUTTON2_WI_FI_NTETHERING"
+msgstr "Nascair.\nWi-Fi"
 
-msgid "IDS_QP_HEADER_ADD_QUICK_SETTING_BUTTON"
-msgstr "Cuir cnaipe mear-shocruithe leis"
+msgid "IDS_ST_BUTTON2_WI_FI_ABB"
+msgstr "Wi-Fi"
 
-msgid "IDS_QP_POP_YOU_WILL_NO_LONGER_BE_ABLE_TO_USE_APPLICATIONS_SUCH_AS_INTERNET_NOTI_MSG"
-msgstr "Ní bheidh tú in ann feidhmchláir amhail Idirlíon agus R-phost a úsáid a thuilleadh le líonraí móibíleacha. Ar aghaidh?"
+msgid "IDS_ST_BUTTON2_TORCH_ABB"
+msgstr "Tóirse"
 
-msgid "IDS_QP_BUTTON2_SCREEN_N_MIRRORING"
-msgstr "Screen\nMirroring"
+msgid "IDS_ST_BUTTON2_POWER_NSAVING"
+msgstr "Coigilt\nchumh."
 
-msgid "IDS_COM_BODY_BUTTON_T_TTS"
-msgstr "Cnaipe"
+msgid "IDS_ST_BUTTON2_MOBILE_NDATA"
+msgstr "Sonraí\nmóibíl."
 
-msgid "IDS_QP_BUTTON2_GPS"
+msgid "IDS_ST_BUTTON2_GPS_ABB"
 msgstr "GPS"
 
-msgid "IDS_QP_BUTTON_NOTIFICATION"
-msgstr "Fógra"
+msgid "IDS_ST_BUTTON2_FLIGHT_NMODE"
+msgstr "Mód\neitilte"
+
+msgid "IDS_ST_BUTTON2_BLUETOOTH_ABB"
+msgstr "Bluetooth"
+
+msgid "IDS_ST_BUTTON2_AUTO_NROTATE"
+msgstr "Uath\nrothlú"
+
+msgid "IDS_ST_BODY_SIM_2"
+msgstr "SIM 2"
+
+msgid "IDS_ST_BODY_SIM_1"
+msgstr "SIM 1"
+
+msgid "IDS_ST_BODY_SCANNING_FOR_MOBILE_NETWORK_ING_ABB"
+msgstr "Scanadh le haghaidh líonra móibíleach..."
+
+msgid "IDS_ST_BODY_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
+msgstr "Ionsáigh cárta SIM le seirbhísí líonra a rochtain"
+
+msgid "IDS_ST_BODY_ALWAYS_ASK_ABB"
+msgstr "Fiafraigh i gcónaí"
+
+msgid "IDS_SCP_BODY_UNABLE_TO_CONNECT_TO_MOBILE_NETWORKS_WHILE_FLIGHT_MODE_IS_ENABLED_CONNECT_TO_A_WI_FI_NETWORK_INSTEAD_OR_DISABLE_FLIGHT_MODE_AND_TRY_AGAIN"
+msgstr "Ní féidir nascadh le líonraí móibíleacha fad is atá Mód eitilte cumasaithe. Nasc le líonra Wi-Fi ina ionad, nó díchumasaigh an Mód eitilte agus triail arís é."
 
-msgid "IDS_COM_BUTTON_AGREE"
-msgstr "Aontaim"
+msgid "IDS_COM_BODY_SEARCHING"
+msgstr "Ag cuardach"
 
-msgid "IDS_COM_BUTTON_DISAGREE"
-msgstr "Ní aontaím"
+msgid "IDS_QP_TPOP_UNABLE_TO_OPEN_PS"
+msgstr "Ní féidir %s a oscailt."
 
-msgid "IDS_ST_BODY_GPS_LOCATION_USE_CONTROLLED_BY_APPLICATIONS_MSG"
-msgstr "Tá suíomh GPS agus úsáid sonraí do shuímh á rialú ag na feidhmchláir a úsáideann tú"
+msgid "IDS_QP_OPT_OUTDOORS_M_OUTDOOR_MODE_ABB"
+msgstr "Amuigh"
 
-msgid "IDS_ST_HEADER_USER_CONSENT"
-msgstr "Toiliú úsáideora"
+msgid "IDS_QP_BUTTON2_PRIVATE_NMODE_ABB"
+msgstr "Mód\npríobh."
 
index 614ff4b..909b852 100755 (executable)
--- a/po/gl.po
+++ b/po/gl.po
-msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
-msgstr "Notificacións"
+msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
+msgstr "O Wi-Fi e AP Móbil non poden activarse ao mesmo tempo. Desactivar AP Móbil?"
+
+msgid "IDS_TASKMGR_BUTTON_CLEAR_ALL"
+msgstr "Borrar todo"
 
-msgid "IDS_WIFI_BODY_ALLSHARE_CAST"
-msgstr "AllShare Cast"
+msgid "IDS_IDLE_SBODY_TAP_HERE_TO_DISABLE_SAFE_MODE_ABB"
+msgstr "Toca aqu.para desac.mod.Seguro."
 
-msgid "IDS_CALL_POP_CALLING_EMERG_ONLY"
+msgid "IDS_IDLE_POP_UNABLE_TO_LAUNCH_PS"
+msgstr "Non se pode iniciar %s"
+
+msgid "IDS_IDLE_MBODY_EMERGENCY_CALLS_ONLY"
 msgstr "Só chamadas de urxencia"
 
-msgid "IDS_QP_BUTTON_ROTATION"
-msgstr "Rotación"
+msgid "IDS_IDLE_BODY_SEARCHING_ING"
+msgstr "Buscando..."
+
+msgid "IDS_IDLE_BODY_NO_SIM"
+msgstr "Non hai SIM"
+
+msgid "IDS_IDLE_BODY_NO_SERVICE"
+msgstr "Sen servizo"
 
-msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
+msgid "IDS_IDLE_BODY_INVALID_SIM_CARD"
+msgstr "Tarxeta SIM non válida"
+
+msgid "IDS_IDLE_BODY_EMERGENCY_CALLS_ONLY"
+msgstr "Só chamadas de urxencia"
+
+msgid "IDS_QP_OPT_OUTDOORS_ABB"
+msgstr "Exterior"
+
+msgid "IDS_QP_MBODY_SAFE_MODE_ENABLED"
+msgstr "Modo Seguro activado"
+
+msgid "IDS_QP_HEADER_NOTIFICATIONS_HPD_ABB"
 msgstr "Notificacións (%d)"
 
-msgid "IDS_QP_BUTTON_VIBRATION"
-msgstr "Vibración"
+msgid "IDS_QP_HEADER_CLEAR_ALL_ABB"
+msgstr "Borr. todo"
 
-msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
-msgstr "Son e vibración"
+msgid "IDS_QP_BUTTON_NOTIFICATION"
+msgstr "Notific."
 
-msgid "IDS_QP_TAB4_AUTO_ROTATION"
-msgstr "Rotación aut"
+msgid "IDS_QP_BUTTON_ALWAYS_ASK_ABB"
+msgstr "Preguntar sempre"
 
-msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
-msgstr "Reloxo de rotación"
+msgid "IDS_QP_BUTTON2_WI_FI"
+msgstr "Wi-Fi"
 
-msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
-msgstr "Modo almacenamento masivo"
+msgid "IDS_QP_BUTTON2_VIBRATE"
+msgstr "Vibrar"
 
-msgid "IDS_QP_BUTTON_DISABLE"
-msgstr "Desactivar"
+msgid "IDS_QP_BUTTON2_U_POWER_NSAVING_ABB"
+msgstr "Aforro\nenerx. u."
 
-msgid "IDS_QP_BUTTON_ENABLE"
-msgstr "Activar"
+msgid "IDS_QP_BUTTON2_TETHERING"
+msgstr "Ancoraxe á rede"
 
-msgid "IDS_COM_POP_UNSUPPORTED"
-msgstr "Non admitido"
+msgid "IDS_QP_BUTTON2_SOUND_ABB"
+msgstr "Son"
 
-msgid "IDS_COM_SK_DISMISS"
-msgstr "Rexeitar"
+msgid "IDS_QP_BUTTON2_SOUND"
+msgstr "Son"
 
-msgid "IDS_COM_POP_PELASE_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
-msgstr "Insira a tarxeta SIM para acceder aos servizos de rede"
+msgid "IDS_QP_BUTTON2_PRIVATE_MODE"
+msgstr "Modo Privado"
 
-msgid "IDS_COM_BODY_DO_NOT_ASK_AGAIN"
-msgstr "Non preguntar outra vez"
+msgid "IDS_QP_BUTTON2_POWER_N_SAVING"
+msgstr "Aforro\nenerxía"
 
-msgid "IDS_QP_POP_INSERT_SIM_CARD_AND_RESTART_DEVICE_TO_USE_TETHERING"
-msgstr "Insire a tarxeta SIM e reinicia o dispositivo para usar a ancoraxe á rede"
+msgid "IDS_QP_BUTTON2_MUTE_ABB"
+msgstr "Silen-\nciar"
 
-msgid "IDS_QP_POP_CONNECTING_VIA_PACKET_DATA_MAY_INCUR_ADDITIONAL_CHARGES_CONTINUE_Q"
-msgstr "Conectarse a través do paquete de datos pode carrexar custos adicionais. Continuar?"
+msgid "IDS_QP_BUTTON2_MOBILE_DATA"
+msgstr "Datos\nmóbiles"
 
-msgid "IDS_QP_BODY_AUTO"
-msgstr "Automático"
+msgid "IDS_QP_BUTTON2_LOCATION_ABB"
+msgstr "Localiz."
 
-msgid "IDS_QP_TAB_POWER_SAVING"
-msgstr "Aforro de enerxía"
+msgid "IDS_QP_BUTTON2_FLIGHT_N_MODE"
+msgstr "Modo\navión"
 
-msgid "IDS_QP_TAB_TETHERING"
-msgstr "Ancoraxe á rede"
+msgid "IDS_QP_BUTTON2_BLUETOOTH"
+msgstr "Bluetooth"
 
-msgid "IDS_QP_TAB_MOBILE_DATA"
-msgstr "Datos móbiles"
+msgid "IDS_QP_BUTTON2_AUTO_ROTATE"
+msgstr "Rotación automática"
 
-msgid "IDS_QP_TAB_DRIVING_MODE"
-msgstr "Modo conducir"
+msgid "IDS_QP_BUTTON2_ASSISTIVE_NLIGHT"
+msgstr "Luz de\nasisten."
 
-msgid "IDS_COM_POP_UNABLE_TO_CONNECT_TO_MOBILE_NETWORK_WHILE_FLIGHT_MODE_IS_ENABLED_MSG"
-msgstr "Non se pode conectar con redes móbiles co modo de avión activado. Conéctate a unha rede Wi-Fi no seu lugar ou desactiva o modo de avión e téntao de novo"
+msgid "IDS_QP_BODY_PM_ABB"
+msgstr "PM"
 
-msgid "IDS_QP_POP_WI_FI_TETHERING_CONSUMES_MORE_BATTERY_POWER_AND_INCREASES_YOUR_DATA_USAGE_CONTINUE_Q"
-msgstr "A ancoraxe á rede Wi-Fi consume máis batería e incrementa o uso de información. Continuar?"
+msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
+msgstr "Notificacións"
 
-msgid "IDS_QP_POP_DISABLE_TETHERING_TO_USE_WI_FI"
-msgstr "Desactiva a ancoraxe á rede para usar a Wi-Fi"
+msgid "IDS_QP_BODY_AM_ABB"
+msgstr "AM"
 
-msgid "IDS_QP_POP_TO_ENABLE_POWER_SAVING_MODE_ENABLE_AT_LEAST_ONE_RELEVANT_FUNCTION"
-msgstr "Para activar o modo de aforro de enerxía, activa polo menos unha función relevante"
+msgid "IDS_ST_TPOP_UNABLE_TO_MAKE_VOICE_CALLS_VIDEO_CALLS_AND_SEND_TEXT_MESSAGES_USING_PS"
+msgstr "Non se poden realizar chamadas de voz, videochamadas nin enviar mensaxes de texto con %s."
 
-msgid "IDS_QP_POP_TURN_OFF_WI_FI_TO_USE_TETHERING"
-msgstr "Desactiva a Wi-Fi para usar a ancoraxe á rede"
+msgid "IDS_ST_TPOP_SELECT_SIM_CARD_FOR_OUTGOING_VOICE_CALLS_VIDEO_CALLS_AND_TEXT_MESSAGES"
+msgstr "Selecciona a tarxeta SIM para as chamadas de voz saíntes, as videochamadas e as mensaxes de texto."
 
-msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
-msgstr "O Wi-Fi e AP Móbil non poden activarse ao mesmo tempo. Desactivar AP Móbil?"
+msgid "IDS_ST_TPOP_OUTGOING_VOICE_CALLS_VIDEO_CALLS_AND_TEXT_MESSAGES_WILL_BE_MADE_USING_THE_PS_SIM_CARD"
+msgstr "As chamadas de voz saíntes, as videochamadas e as mensaxes de texto realizaranse coa tarxeta SIM %s."
+
+msgid "IDS_ST_SK_OK"
+msgstr "Aceptar"
 
-msgid "IDS_ASCAST_HEADER_SCREEN_MIRRORING"
-msgstr "Reflexo da pantalla"
+msgid "IDS_ST_SK_NO"
+msgstr "Non"
 
-msgid "IDS_QP_HEADER_REPLACE_QUICK_SETTING_BUTTON"
-msgstr "Substitúe o botón de axuste rápido"
+msgid "IDS_ST_POP_UNABLE_TO_INCREASE_BRIGHTNESS_FURTHER_BECAUSE_OF_PHONE_OVERHEATING"
+msgstr "Non se pode aumentar máis o brillo debido ao sobrequecemento do teléfono"
 
-msgid "IDS_QP_HEADER_ADD_QUICK_SETTING_BUTTON"
-msgstr "Engade botón de axuste rápido"
+msgid "IDS_ST_NPBODY_NO_SERVICE"
+msgstr "Non hai servizo"
+
+msgid "IDS_ST_NPBODY_EMERGENCY_CALLS_ONLY_ABB"
+msgstr "Só chamadas de urxencia"
 
-msgid "IDS_QP_POP_YOU_WILL_NO_LONGER_BE_ABLE_TO_USE_APPLICATIONS_SUCH_AS_INTERNET_NOTI_MSG"
-msgstr "Non poderás continuar utilizando aplicacións como Internet e Correo electrónico a través de redes móbiles. Desexas continuar?"
+msgid "IDS_ST_HEADER_OUTDOOR"
+msgstr "Exterior"
 
-msgid "IDS_QP_BUTTON2_SCREEN_N_MIRRORING"
-msgstr "Screen\nMirroring"
+msgid "IDS_ST_BUTTON2_WI_FI_NTETHERING"
+msgstr "Ancoraxe\nWi-Fi"
 
-msgid "IDS_COM_BODY_BUTTON_T_TTS"
-msgstr "Botón"
+msgid "IDS_ST_BUTTON2_WI_FI_ABB"
+msgstr "Wi-Fi"
 
-msgid "IDS_QP_BUTTON2_GPS"
+msgid "IDS_ST_BUTTON2_TORCH_ABB"
+msgstr "Lanterna"
+
+msgid "IDS_ST_BUTTON2_POWER_NSAVING"
+msgstr "Aforro\nenerxía"
+
+msgid "IDS_ST_BUTTON2_MOBILE_NDATA"
+msgstr "Datos\nmóbiles"
+
+msgid "IDS_ST_BUTTON2_GPS_ABB"
 msgstr "GPS"
 
-msgid "IDS_QP_BUTTON_NOTIFICATION"
-msgstr "Notific."
+msgid "IDS_ST_BUTTON2_FLIGHT_NMODE"
+msgstr "Modo\nAvión"
+
+msgid "IDS_ST_BUTTON2_BLUETOOTH_ABB"
+msgstr "Bluetooth"
+
+msgid "IDS_ST_BUTTON2_AUTO_NROTATE"
+msgstr "Rotación\nauto."
+
+msgid "IDS_ST_BODY_SIM_2"
+msgstr "SIM 2"
+
+msgid "IDS_ST_BODY_SIM_1"
+msgstr "SIM 1"
+
+msgid "IDS_ST_BODY_SCANNING_FOR_MOBILE_NETWORK_ING_ABB"
+msgstr "Buscando rede móbil..."
+
+msgid "IDS_ST_BODY_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
+msgstr "Insira a tarxeta SIM para acceder aos servizos de rede."
+
+msgid "IDS_ST_BODY_ALWAYS_ASK_ABB"
+msgstr "Preguntar sempre"
+
+msgid "IDS_SCP_BODY_UNABLE_TO_CONNECT_TO_MOBILE_NETWORKS_WHILE_FLIGHT_MODE_IS_ENABLED_CONNECT_TO_A_WI_FI_NETWORK_INSTEAD_OR_DISABLE_FLIGHT_MODE_AND_TRY_AGAIN"
+msgstr "Non se pode conectar con redes móbiles co modo Avión activado. Conéctate a unha rede Wi-Fi no seu lugar ou desactiva o modo Avión e téntao de novo."
 
-msgid "IDS_COM_BUTTON_AGREE"
-msgstr "Acepto"
+msgid "IDS_COM_BODY_SEARCHING"
+msgstr "Buscando"
 
-msgid "IDS_COM_BUTTON_DISAGREE"
-msgstr "Non acepto"
+msgid "IDS_QP_TPOP_UNABLE_TO_OPEN_PS"
+msgstr "Non se pode abrir %s."
 
-msgid "IDS_ST_BODY_GPS_LOCATION_USE_CONTROLLED_BY_APPLICATIONS_MSG"
-msgstr "A localización e o uso dos datos da túa localización están controlados polas aplicacións que empregas"
+msgid "IDS_QP_OPT_OUTDOORS_M_OUTDOOR_MODE_ABB"
+msgstr "Exterio."
 
-msgid "IDS_ST_HEADER_USER_CONSENT"
-msgstr "Consentimento de usuario"
+msgid "IDS_QP_BUTTON2_PRIVATE_NMODE_ABB"
+msgstr "Modo\nPrivado"
 
index 9605936..8b35da1 100755 (executable)
--- a/po/hi.po
+++ b/po/hi.po
-msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
-msgstr "अधिसूचनाएँ"
+msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
+msgstr "एक ही समय में Wi-Fi और मोबाइल AP सक्रिय नहीं कर सकते हैं। मोबाइल AP निष्क्रिय करें?"
+
+msgid "IDS_TASKMGR_BUTTON_CLEAR_ALL"
+msgstr "सभी साफ करें"
+
+msgid "IDS_IDLE_SBODY_TAP_HERE_TO_DISABLE_SAFE_MODE_ABB"
+msgstr "सुरक्षित मोड अक्षम हेतु यहाँ टैप करें।"
+
+msgid "IDS_IDLE_POP_UNABLE_TO_LAUNCH_PS"
+msgstr "%s प्रारंभ करने में अक्षम।"
+
+msgid "IDS_IDLE_MBODY_EMERGENCY_CALLS_ONLY"
+msgstr "केवल आपातकालीन कॉल्स"
+
+msgid "IDS_IDLE_BODY_SEARCHING_ING"
+msgstr "खोज रहा है..."
+
+msgid "IDS_IDLE_BODY_NO_SIM"
+msgstr "कोई SIM नहीं"
 
-msgid "IDS_WIFI_BODY_ALLSHARE_CAST"
-msgstr "AllShare Cast"
+msgid "IDS_IDLE_BODY_NO_SERVICE"
+msgstr "कोई सेवा नहीं"
 
-msgid "IDS_CALL_POP_CALLING_EMERG_ONLY"
-msgstr "केवल आपात कॉलें"
+msgid "IDS_IDLE_BODY_INVALID_SIM_CARD"
+msgstr "अमान्य SIM कार्ड।"
+
+msgid "IDS_IDLE_BODY_EMERGENCY_CALLS_ONLY"
+msgstr "केवल आपातकालीन कॉलें।"
+
+msgid "IDS_QP_OPT_OUTDOORS_ABB"
+msgstr "बाह्य"
+
+msgid "IDS_QP_MBODY_SAFE_MODE_ENABLED"
+msgstr "सुरक्षित मोड सक्षम है"
+
+msgid "IDS_QP_HEADER_NOTIFICATIONS_HPD_ABB"
+msgstr "अधिसूचनाएँ (%d)"
+
+msgid "IDS_QP_HEADER_CLEAR_ALL_ABB"
+msgstr "सभी साफ"
+
+msgid "IDS_QP_BUTTON_NOTIFICATION"
+msgstr "अधिसूचना"
 
-msgid "IDS_QP_BUTTON_ROTATION"
-msgstr "रà¥\8bà¤\9fà¥\87शन"
+msgid "IDS_QP_BUTTON_ALWAYS_ASK_ABB"
+msgstr "हमà¥\87शा à¤ªà¥\82à¤\9bà¥\87à¤\82"
 
-msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
-msgstr "सूचनाएँ (%d)"
+msgid "IDS_QP_BUTTON2_WI_FI"
+msgstr "Wi-Fi"
 
-msgid "IDS_QP_BUTTON_VIBRATION"
+msgid "IDS_QP_BUTTON2_VIBRATE"
 msgstr "कंपन"
 
-msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
-msgstr "साà¤\89à¤\82ड à¤\94र à¤\95à¤\82पन"
+msgid "IDS_QP_BUTTON2_U_POWER_NSAVING_ABB"
+msgstr "à¤\85लà¥\8dà¤\9fà¥\8dरा à¤ªà¥\89वर\nबà¤\9aत"
 
-msgid "IDS_QP_TAB4_AUTO_ROTATION"
-msgstr "à¤\91à¤\9fà¥\8b à¤°à¥\8bà¤\9fà¥\87शन"
+msgid "IDS_QP_BUTTON2_TETHERING"
+msgstr "à¤\9fà¥\87थरिà¤\82à¤\97"
 
-msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
-msgstr "रà¥\8bà¤\9fà¥\87शन à¤²à¥\89à¤\95"
+msgid "IDS_QP_BUTTON2_SOUND_ABB"
+msgstr "धà¥\8dवनि"
 
-msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
-msgstr "मास à¤¸à¥\8dà¤\9fà¥\8bरà¥\87à¤\9c à¤®à¥\8bड"
+msgid "IDS_QP_BUTTON2_SOUND"
+msgstr "धà¥\8dवनि"
 
-msgid "IDS_QP_BUTTON_DISABLE"
-msgstr "à¤\85à¤\95à¥\8dषम à¤\95रà¥\87à¤\82"
+msgid "IDS_QP_BUTTON2_PRIVATE_MODE"
+msgstr "निà¤\9cà¥\80 à¤®à¥\8bड"
 
-msgid "IDS_QP_BUTTON_ENABLE"
-msgstr "सà¤\95à¥\8dषम"
+msgid "IDS_QP_BUTTON2_POWER_N_SAVING"
+msgstr "पà¥\89वर\nबà¤\9aत"
 
-msgid "IDS_COM_POP_UNSUPPORTED"
-msgstr "à¤\85समरà¥\8dथित"
+msgid "IDS_QP_BUTTON2_MUTE_ABB"
+msgstr "मà¥\82à¤\95"
 
-msgid "IDS_COM_SK_DISMISS"
-msgstr "निरसà¥\8dत"
+msgid "IDS_QP_BUTTON2_MOBILE_DATA"
+msgstr "मà¥\8bबाà¤\87ल\nडाà¤\9fा"
 
-msgid "IDS_COM_POP_PELASE_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
-msgstr "नà¥\87à¤\9fवरà¥\8dà¤\95 à¤¸à¥\87वाà¤\8fà¤\81 à¤ªà¥\8dरापà¥\8dत à¤\95रनà¥\87 à¤\95à¥\87 à¤²à¤¿à¤\8f SIM à¤\95ारà¥\8dड à¤¡à¤¾à¤²à¥\87à¤\82"
+msgid "IDS_QP_BUTTON2_LOCATION_ABB"
+msgstr "सà¥\8dथान"
 
-msgid "IDS_COM_BODY_DO_NOT_ASK_AGAIN"
-msgstr "दà¥\8bबारा à¤¨ à¤ªà¥\82à¤\9bà¥\87à¤\82"
+msgid "IDS_QP_BUTTON2_FLIGHT_N_MODE"
+msgstr "फà¥\8dलाà¤\87à¤\9f\nमà¥\8bड"
 
-msgid "IDS_QP_POP_INSERT_SIM_CARD_AND_RESTART_DEVICE_TO_USE_TETHERING"
-msgstr "à¤\9fà¥\87थरिà¤\82à¤\97 à¤\95ा à¤\89पयà¥\8bà¤\97 à¤\95रनà¥\87 à¤\95à¥\87 à¤²à¤¿à¤\8f SIM à¤\95ारà¥\8dड à¤¸à¤®à¥\8dमिलित à¤\95रà¥\87à¤\82 à¤\94र à¤¡à¤¿à¤µà¤¾à¤\87स à¤°à¥\80सà¥\8dà¤\9fारà¥\8dà¤\9f à¤\95रà¥\87à¤\82"
+msgid "IDS_QP_BUTTON2_BLUETOOTH"
+msgstr "बà¥\8dलà¥\82à¤\9fà¥\82थ"
 
-msgid "IDS_QP_POP_CONNECTING_VIA_PACKET_DATA_MAY_INCUR_ADDITIONAL_CHARGES_CONTINUE_Q"
-msgstr "पà¥\88à¤\95à¥\87à¤\9f à¤¡à¤¾à¤\9fा à¤¦à¥\8dवारा à¤\95नà¥\87à¤\95à¥\8dà¤\9f à¤\95रनà¥\87 à¤\95à¥\87 à¤²à¤¿à¤\8f à¤\85तिरिà¤\95à¥\8dत à¤¶à¥\81लà¥\8dà¤\95 à¤²à¤\97 à¤¸à¤\95तà¥\87 à¤¹à¥\88à¤\82। à¤\9cारà¥\80 à¤°à¤\96à¥\87à¤\82?"
+msgid "IDS_QP_BUTTON2_AUTO_ROTATE"
+msgstr "सà¥\8dवत: à¤\98à¥\81माà¤\8fà¤\81"
 
-msgid "IDS_QP_BODY_AUTO"
-msgstr "सà¥\8dवतà¤\83"
+msgid "IDS_QP_BUTTON2_ASSISTIVE_NLIGHT"
+msgstr "सहायà¤\95\nपà¥\8dरà¤\95ाश"
 
-msgid "IDS_QP_TAB_POWER_SAVING"
-msgstr "पॉवर बचत"
+msgid "IDS_QP_BODY_PM_ABB"
+msgstr "PM"
 
-msgid "IDS_QP_TAB_TETHERING"
-msgstr "à¤\9fà¥\87थरिà¤\82à¤\97"
+msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
+msgstr "à¤\85धिसà¥\82à¤\9aनाà¤\8fà¤\81"
 
-msgid "IDS_QP_TAB_MOBILE_DATA"
-msgstr "मोबाइल डाटा"
+msgid "IDS_QP_BODY_AM_ABB"
+msgstr "AM"
 
-msgid "IDS_QP_TAB_DRIVING_MODE"
-msgstr "ड्राइविंग मोड"
+msgid "IDS_ST_TPOP_UNABLE_TO_MAKE_VOICE_CALLS_VIDEO_CALLS_AND_SEND_TEXT_MESSAGES_USING_PS"
+msgstr "%s उपयोग करके वॉइस कॉल्स, वीडियो कॉल्स करने और टेक्स्ट सन्देश भेजने में असमर्थ।"
 
-msgid "IDS_COM_POP_UNABLE_TO_CONNECT_TO_MOBILE_NETWORK_WHILE_FLIGHT_MODE_IS_ENABLED_MSG"
-msgstr "फ़à¥\8dलाà¤\87à¤\9f à¤®à¥\8bड à¤¸à¤\95à¥\8dषम à¤¹à¥\8bनà¥\87 à¤\95à¥\87 à¤¦à¥\8cरान à¤®à¥\8bबाà¤\87ल à¤¨à¥\87à¤\9fवरà¥\8dà¤\95 à¤¸à¥\87 à¤\95नà¥\87à¤\95à¥\8dà¤\9f à¤\95रनà¥\87 à¤®à¥\87à¤\82 à¤\85à¤\95à¥\8dषम। à¤\87सà¤\95à¥\87 à¤¬à¤\9cाय Wi-Fi à¤¨à¥\87à¤\9fवरà¥\8dà¤\95 à¤¸à¥\87 à¤\95नà¥\87à¤\95à¥\8dà¤\9f à¤\95रà¥\87à¤\82, à¤¯à¤¾ à¤«à¤¼à¥\8dलाà¤\87à¤\9f à¤®à¥\8bड à¤\85à¤\95à¥\8dषम à¤\95रà¥\87à¤\82 à¤\94र à¤«à¤¿à¤° à¤¸à¥\87 à¤ªà¥\8dरयास à¤\95रà¥\87à¤\82"
+msgid "IDS_ST_TPOP_SELECT_SIM_CARD_FOR_OUTGOING_VOICE_CALLS_VIDEO_CALLS_AND_TEXT_MESSAGES"
+msgstr "à¤\9cानà¥\87वालà¥\80 à¤µà¥\89à¤\87स à¤\95à¥\89लà¥\8dस, à¤µà¥\80डियà¥\8b à¤\95à¥\89लà¥\8dस à¤\94र à¤\9fà¥\87à¤\95à¥\8dसà¥\8dà¤\9f à¤¸à¤¨à¥\8dदà¥\87शà¥\8bà¤\82 à¤¹à¥\87तà¥\81 SIM à¤\95ारà¥\8dड à¤\9aà¥\81नà¥\87à¤\82।"
 
-msgid "IDS_QP_POP_WI_FI_TETHERING_CONSUMES_MORE_BATTERY_POWER_AND_INCREASES_YOUR_DATA_USAGE_CONTINUE_Q"
-msgstr "Wi-Fi टेथरिंग बैटरी पॉवर की ज्यादा खपत करता है और आपके डाटा उपयोग को बढ़ाता है। जारी रखें?"
+msgid "IDS_ST_TPOP_OUTGOING_VOICE_CALLS_VIDEO_CALLS_AND_TEXT_MESSAGES_WILL_BE_MADE_USING_THE_PS_SIM_CARD"
+msgstr "%s SIM कार्ड का उपयोग करके जानेवाली वॉइस कॉल्स, वीडियो कॉल्स और टेक्स्ट सन्देश किए जाएँगे।"
 
-msgid "IDS_QP_POP_DISABLE_TETHERING_TO_USE_WI_FI"
-msgstr "Wi-Fi का उपयोग करने के लिए टेथरिंग अक्षम करें"
+msgid "IDS_ST_SK_OK"
+msgstr "ओके"
 
-msgid "IDS_QP_POP_TO_ENABLE_POWER_SAVING_MODE_ENABLE_AT_LEAST_ONE_RELEVANT_FUNCTION"
-msgstr "पà¥\89वर à¤¸à¥\87विà¤\82à¤\97 à¤®à¥\8bड à¤¸à¤\95à¥\8dषम à¤\95रनà¥\87 à¤\95à¥\87 à¤²à¤¿à¤\8f, à¤\95म à¤¸à¥\87 à¤\95म à¤\8fà¤\95 à¤¸à¤\82बà¤\82धित à¤«à¤¼à¤\82à¤\95à¥\8dâ\80\8dशन à¤¸à¤\95à¥\8dषम à¤\95रà¥\87ं"
+msgid "IDS_ST_SK_NO"
+msgstr "नहà¥\80ं"
 
-msgid "IDS_QP_POP_TURN_OFF_WI_FI_TO_USE_TETHERING"
-msgstr "à¤\9fà¥\87थरिà¤\82à¤\97 à¤\95ा à¤\89पयà¥\8bà¤\97 à¤\95रनà¥\87 à¤\95à¥\87 à¤²à¤¿à¤\8f Wi-Fi à¤¬à¤\82द à¤\95रà¥\87à¤\82"
+msgid "IDS_ST_POP_UNABLE_TO_INCREASE_BRIGHTNESS_FURTHER_BECAUSE_OF_PHONE_OVERHEATING"
+msgstr "à¤\89पà¤\95रण à¤\85धिà¤\95 à¤\97रà¥\8dम à¤¹à¥\8bनà¥\87 à¤\95à¥\87 à¤\95ारण à¤\9aमà¤\95 à¤¬à¤¢à¤¼à¤¾à¤¨à¥\87 à¤®à¥\87à¤\82 à¤\85à¤\95à¥\8dषम"
 
-msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
-msgstr "एक ही समय में Wi-Fi और Mobile AP सक्रिय नहीं कर सकते हैं। Mobile AP निष्क्रिय करें?"
+msgid "IDS_ST_NPBODY_NO_SERVICE"
+msgstr "कोई सेवा नहीं"
+
+msgid "IDS_ST_NPBODY_EMERGENCY_CALLS_ONLY_ABB"
+msgstr "केवल आपातकालीन कॉल्स"
 
-msgid "IDS_ASCAST_HEADER_SCREEN_MIRRORING"
-msgstr "सà¥\8dà¤\95à¥\8dरà¥\80न à¤®à¤¿à¤°à¤°à¤¿à¤\82à¤\97"
+msgid "IDS_ST_HEADER_OUTDOOR"
+msgstr "बाहà¥\8dय"
 
-msgid "IDS_QP_HEADER_REPLACE_QUICK_SETTING_BUTTON"
-msgstr "त्वरित सेटिंग्स बटन बदलें"
+msgid "IDS_ST_BUTTON2_WI_FI_NTETHERING"
+msgstr "Wi-Fi\nटेथरिंग"
 
-msgid "IDS_QP_HEADER_ADD_QUICK_SETTING_BUTTON"
-msgstr "त्वरित सेटिंग बटन जोड़ें"
+msgid "IDS_ST_BUTTON2_WI_FI_ABB"
+msgstr "Wi-Fi"
 
-msgid "IDS_QP_POP_YOU_WILL_NO_LONGER_BE_ABLE_TO_USE_APPLICATIONS_SUCH_AS_INTERNET_NOTI_MSG"
-msgstr "à¤\85ब à¤\86प à¤®à¥\8bबाà¤\87ल à¤¨à¥\87à¤\9fवरà¥\8dà¤\95à¥\8dस à¤\95à¥\87 à¤¦à¥\8dवारा à¤\87à¤\82à¤\9fरनà¥\87à¤\9f à¤\94र à¤\88मà¥\87ल à¤\9cà¥\88सà¥\80 à¤\90पà¥\8dलà¥\80à¤\95à¥\87शन à¤\95ा à¤\89पयà¥\8bà¤\97 à¤¨à¤¹à¥\80à¤\82 à¤\95र à¤ªà¤¾à¤\8fà¤\81à¤\97à¥\87। à¤\9cारà¥\80 à¤°à¤\96à¥\87à¤\82?"
+msgid "IDS_ST_BUTTON2_TORCH_ABB"
+msgstr "à¤\9fà¥\89रà¥\8dà¤\9a"
 
-msgid "IDS_QP_BUTTON2_SCREEN_N_MIRRORING"
-msgstr "Screen\nMirroring"
+msgid "IDS_ST_BUTTON2_POWER_NSAVING"
+msgstr "पॉवर\nबचत"
 
-msgid "IDS_COM_BODY_BUTTON_T_TTS"
-msgstr "बà¤\9fन"
+msgid "IDS_ST_BUTTON2_MOBILE_NDATA"
+msgstr "मà¥\8bबाà¤\87ल\nडाà¤\9fा"
 
-msgid "IDS_QP_BUTTON2_GPS"
+msgid "IDS_ST_BUTTON2_GPS_ABB"
 msgstr "GPS"
 
-msgid "IDS_QP_BUTTON_NOTIFICATION"
-msgstr "अधिसूचना"
+msgid "IDS_ST_BUTTON2_FLIGHT_NMODE"
+msgstr "फ्लाइट\nमोड"
+
+msgid "IDS_ST_BUTTON2_BLUETOOTH_ABB"
+msgstr "ब्लूटूथ"
+
+msgid "IDS_ST_BUTTON2_AUTO_NROTATE"
+msgstr "स्वतः\nघुमाएँ"
+
+msgid "IDS_ST_BODY_SIM_2"
+msgstr "SIM 2"
+
+msgid "IDS_ST_BODY_SIM_1"
+msgstr "SIM 1"
+
+msgid "IDS_ST_BODY_SCANNING_FOR_MOBILE_NETWORK_ING_ABB"
+msgstr "मोबाइल नेटवर्क हेतु स्कैन कर रहा है..."
+
+msgid "IDS_ST_BODY_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
+msgstr "नेटवर्क सेवाएँ एक्सेस करने के लिए SIM कार्ड इंसर्ट करें।"
+
+msgid "IDS_ST_BODY_ALWAYS_ASK_ABB"
+msgstr "हमेशा पूछें"
+
+msgid "IDS_SCP_BODY_UNABLE_TO_CONNECT_TO_MOBILE_NETWORKS_WHILE_FLIGHT_MODE_IS_ENABLED_CONNECT_TO_A_WI_FI_NETWORK_INSTEAD_OR_DISABLE_FLIGHT_MODE_AND_TRY_AGAIN"
+msgstr "फ्लाइट मोड सक्षम होने के दौरान मोबाइल नेटवर्क्स से कनेक्ट करने में असमर्थ। इसके बजाय Wi-Fi नेटवर्क से कनेक्ट करें या फ्लाइट मोड अक्षम करें और फिर से प्रयास करें।"
 
-msgid "IDS_COM_BUTTON_AGREE"
-msgstr "सहमत"
+msgid "IDS_COM_BODY_SEARCHING"
+msgstr "à¤\96à¥\8bà¤\9c à¤°à¤¹à¤¾ à¤¹à¥\88"
 
-msgid "IDS_COM_BUTTON_DISAGREE"
-msgstr "असहमती"
+msgid "IDS_QP_TPOP_UNABLE_TO_OPEN_PS"
+msgstr "%s खोलने में असमर्थ।"
 
-msgid "IDS_ST_BODY_GPS_LOCATION_USE_CONTROLLED_BY_APPLICATIONS_MSG"
-msgstr "GPS स्थान और आप के स्थान डाटा का उपयोग आप के द्वारा उपयोगित एप्लीकेशंस नियंत्रित करते हैं"
+msgid "IDS_QP_OPT_OUTDOORS_M_OUTDOOR_MODE_ABB"
+msgstr "बाह्य"
 
-msgid "IDS_ST_HEADER_USER_CONSENT"
-msgstr "à¤\89पभà¥\8bà¤\95à¥\8dता à¤¸à¥\8dवà¥\80à¤\95à¥\83ति"
+msgid "IDS_QP_BUTTON2_PRIVATE_NMODE_ABB"
+msgstr "निà¤\9cà¥\80\nमà¥\8bड"
 
index 8fde463..e2fdb64 100755 (executable)
--- a/po/hr.po
+++ b/po/hr.po
-msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
-msgstr "Obavijesti"
+msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
+msgstr "Istodobno ne možete uključiti Wi-Fi i Mobile AP. Isključiti Mobilnu pristupnu točku?"
+
+msgid "IDS_TASKMGR_BUTTON_CLEAR_ALL"
+msgstr "Obriši sve"
 
-msgid "IDS_WIFI_BODY_ALLSHARE_CAST"
-msgstr "AllShare Cast"
+msgid "IDS_IDLE_SBODY_TAP_HERE_TO_DISABLE_SAFE_MODE_ABB"
+msgstr "Isključenje Sigurnog načina."
 
-msgid "IDS_CALL_POP_CALLING_EMERG_ONLY"
+msgid "IDS_IDLE_POP_UNABLE_TO_LAUNCH_PS"
+msgstr "Nemoguće pokrenuti %s."
+
+msgid "IDS_IDLE_MBODY_EMERGENCY_CALLS_ONLY"
 msgstr "Samo SOS pozivi"
 
-msgid "IDS_QP_BUTTON_ROTATION"
-msgstr "Rotacija"
+msgid "IDS_IDLE_BODY_SEARCHING_ING"
+msgstr "Pretraživanje..."
+
+msgid "IDS_IDLE_BODY_NO_SIM"
+msgstr "Nema SIM-a"
+
+msgid "IDS_IDLE_BODY_NO_SERVICE"
+msgstr "Nema usluge"
+
+msgid "IDS_IDLE_BODY_INVALID_SIM_CARD"
+msgstr "Neispravna SIM kartica."
 
-msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
+msgid "IDS_IDLE_BODY_EMERGENCY_CALLS_ONLY"
+msgstr "Samo SOS pozivi."
+
+msgid "IDS_QP_OPT_OUTDOORS_ABB"
+msgstr "Vani"
+
+msgid "IDS_QP_MBODY_SAFE_MODE_ENABLED"
+msgstr "Sigurni način uključen"
+
+msgid "IDS_QP_HEADER_NOTIFICATIONS_HPD_ABB"
 msgstr "Obavijesti (%d)"
 
-msgid "IDS_QP_BUTTON_VIBRATION"
-msgstr "Vibracija"
+msgid "IDS_QP_HEADER_CLEAR_ALL_ABB"
+msgstr "Izbr. sve"
 
-msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
-msgstr "Zvuk i vibracije"
+msgid "IDS_QP_BUTTON_NOTIFICATION"
+msgstr "Obavijest"
 
-msgid "IDS_QP_TAB4_AUTO_ROTATION"
-msgstr "Auto. rotacija"
+msgid "IDS_QP_BUTTON_ALWAYS_ASK_ABB"
+msgstr "Uvijek pitaj"
 
-msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
-msgstr "Zaklj. rotacije"
+msgid "IDS_QP_BUTTON2_WI_FI"
+msgstr "Wi-Fi"
 
-msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
-msgstr "Način masovne memorije"
+msgid "IDS_QP_BUTTON2_VIBRATE"
+msgstr "Vibrac."
 
-msgid "IDS_QP_BUTTON_DISABLE"
-msgstr "Isključi"
+msgid "IDS_QP_BUTTON2_U_POWER_NSAVING_ABB"
+msgstr "Maks. št.\nbater."
 
-msgid "IDS_QP_BUTTON_ENABLE"
-msgstr "Uključi"
+msgid "IDS_QP_BUTTON2_TETHERING"
+msgstr "Dijeljenje veze"
 
-msgid "IDS_COM_POP_UNSUPPORTED"
-msgstr "Nepodržano"
+msgid "IDS_QP_BUTTON2_SOUND_ABB"
+msgstr "Zvuk"
 
-msgid "IDS_COM_SK_DISMISS"
-msgstr "Prekini"
+msgid "IDS_QP_BUTTON2_SOUND"
+msgstr "Zvuk"
 
-msgid "IDS_COM_POP_PELASE_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
-msgstr "Umetnite SIM karticu za pristup mrežnim uslugama"
+msgid "IDS_QP_BUTTON2_PRIVATE_MODE"
+msgstr "Privatni način"
 
-msgid "IDS_COM_BODY_DO_NOT_ASK_AGAIN"
-msgstr "Više ne pitaj"
+msgid "IDS_QP_BUTTON2_POWER_N_SAVING"
+msgstr "Štednja\nbaterije"
 
-msgid "IDS_QP_POP_INSERT_SIM_CARD_AND_RESTART_DEVICE_TO_USE_TETHERING"
-msgstr "Umetnite SIM karticu i pokrenite uređaj da biste koristili dijeljenje"
+msgid "IDS_QP_BUTTON2_MUTE_ABB"
+msgstr "Bešumno"
 
-msgid "IDS_QP_POP_CONNECTING_VIA_PACKET_DATA_MAY_INCUR_ADDITIONAL_CHARGES_CONTINUE_Q"
-msgstr "Spajanje preko paketnih podataka može izazvati dodatne troškove. Nastaviti?"
+msgid "IDS_QP_BUTTON2_MOBILE_DATA"
+msgstr "Mobilni\npodaci"
 
-msgid "IDS_QP_BODY_AUTO"
-msgstr "Auto"
+msgid "IDS_QP_BUTTON2_LOCATION_ABB"
+msgstr "Lokacija"
 
-msgid "IDS_QP_TAB_POWER_SAVING"
-msgstr "Štednja baterije"
+msgid "IDS_QP_BUTTON2_FLIGHT_N_MODE"
+msgstr "Profil\nBez mr."
 
-msgid "IDS_QP_TAB_TETHERING"
-msgstr "Dijeljenje veze"
+msgid "IDS_QP_BUTTON2_BLUETOOTH"
+msgstr "Bluetooth"
 
-msgid "IDS_QP_TAB_MOBILE_DATA"
-msgstr "Mobilni podaci"
+msgid "IDS_QP_BUTTON2_AUTO_ROTATE"
+msgstr "Automatski rotiraj"
 
-msgid "IDS_QP_TAB_DRIVING_MODE"
-msgstr "U vožnji"
+msgid "IDS_QP_BUTTON2_ASSISTIVE_NLIGHT"
+msgstr "Pomoćno\nsvjetlo"
 
-msgid "IDS_COM_POP_UNABLE_TO_CONNECT_TO_MOBILE_NETWORK_WHILE_FLIGHT_MODE_IS_ENABLED_MSG"
-msgstr "Nemoguće spojiti se na mobilne mreže dok je uključen profil Bez mreže. Umjesto toga spojite se na Wi-Fi mrežu ili isključite profil Bez mreže i pokušajte ponovno"
+msgid "IDS_QP_BODY_PM_ABB"
+msgstr "PM"
 
-msgid "IDS_QP_POP_WI_FI_TETHERING_CONSUMES_MORE_BATTERY_POWER_AND_INCREASES_YOUR_DATA_USAGE_CONTINUE_Q"
-msgstr "Wi-Fi dijeljenje povećava potrošnju baterije i količinu prijenosa podataka. Nastavak?"
+msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
+msgstr "Obavijesti"
 
-msgid "IDS_QP_POP_DISABLE_TETHERING_TO_USE_WI_FI"
-msgstr "Isključite dijeljenje da biste koristili Wi-Fi"
+msgid "IDS_QP_BODY_AM_ABB"
+msgstr "AM"
 
-msgid "IDS_QP_POP_TO_ENABLE_POWER_SAVING_MODE_ENABLE_AT_LEAST_ONE_RELEVANT_FUNCTION"
-msgstr "Da biste uključili štednju baterije, uključite najmanje jednu odgovarajuću funkciju"
+msgid "IDS_ST_TPOP_UNABLE_TO_MAKE_VOICE_CALLS_VIDEO_CALLS_AND_SEND_TEXT_MESSAGES_USING_PS"
+msgstr "Nije moguće uspostavljati glasovne pozive, videopozive i slati tekstualne poruke pomoću %s."
 
-msgid "IDS_QP_POP_TURN_OFF_WI_FI_TO_USE_TETHERING"
-msgstr "Isključite Wi-Fi da biste koristili dijeljenje"
+msgid "IDS_ST_TPOP_SELECT_SIM_CARD_FOR_OUTGOING_VOICE_CALLS_VIDEO_CALLS_AND_TEXT_MESSAGES"
+msgstr "Odaberite SIM karticu za odlazne glasovne pozive, videopozive i tekstualne poruke."
 
-msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
-msgstr "Istodobno ne možete uključiti Wi-Fi i Mobile AP. Isključiti Mobilnu pristupnu točku?"
+msgid "IDS_ST_TPOP_OUTGOING_VOICE_CALLS_VIDEO_CALLS_AND_TEXT_MESSAGES_WILL_BE_MADE_USING_THE_PS_SIM_CARD"
+msgstr "Odlazni glasovni pozivi, videopozivi i tekstualne poruke uspostavit će se pomoću %s SIM kartice."
+
+msgid "IDS_ST_SK_OK"
+msgstr "OK"
+
+msgid "IDS_ST_SK_NO"
+msgstr "Ne"
+
+msgid "IDS_ST_POP_UNABLE_TO_INCREASE_BRIGHTNESS_FURTHER_BECAUSE_OF_PHONE_OVERHEATING"
+msgstr "Nemoguće daljnje pojačavanje svjetline jer bi se telefon mogao pregrijati."
 
-msgid "IDS_ASCAST_HEADER_SCREEN_MIRRORING"
-msgstr "Dijeljenje Zaslona"
+msgid "IDS_ST_NPBODY_NO_SERVICE"
+msgstr "Nema usluge"
 
-msgid "IDS_QP_HEADER_REPLACE_QUICK_SETTING_BUTTON"
-msgstr "Zamijeni gumb za brze postavke"
+msgid "IDS_ST_NPBODY_EMERGENCY_CALLS_ONLY_ABB"
+msgstr "Samo hitni pozivi"
 
-msgid "IDS_QP_HEADER_ADD_QUICK_SETTING_BUTTON"
-msgstr "Dodaj gumb za brze postavke"
+msgid "IDS_ST_HEADER_OUTDOOR"
+msgstr "Vani"
 
-msgid "IDS_QP_POP_YOU_WILL_NO_LONGER_BE_ABLE_TO_USE_APPLICATIONS_SUCH_AS_INTERNET_NOTI_MSG"
-msgstr "Nećete više moći koristiti aplikacije kao što su internet i email putem mobilnih mreža. Nastavak?"
+msgid "IDS_ST_BUTTON2_WI_FI_NTETHERING"
+msgstr "Wi-Fi\ndijelj."
 
-msgid "IDS_QP_BUTTON2_SCREEN_N_MIRRORING"
-msgstr "Dijeljenje\nZaslona"
+msgid "IDS_ST_BUTTON2_WI_FI_ABB"
+msgstr "Wi-Fi"
 
-msgid "IDS_COM_BODY_BUTTON_T_TTS"
-msgstr "Tipka"
+msgid "IDS_ST_BUTTON2_TORCH_ABB"
+msgstr "Svjet."
 
-msgid "IDS_QP_BUTTON2_GPS"
+msgid "IDS_ST_BUTTON2_POWER_NSAVING"
+msgstr "Ušteda\nbaterije"
+
+msgid "IDS_ST_BUTTON2_MOBILE_NDATA"
+msgstr "Mobilni\npodaci"
+
+msgid "IDS_ST_BUTTON2_GPS_ABB"
 msgstr "GPS"
 
-msgid "IDS_QP_BUTTON_NOTIFICATION"
-msgstr "Obavijest"
+msgid "IDS_ST_BUTTON2_FLIGHT_NMODE"
+msgstr "Profil\nBez mr."
+
+msgid "IDS_ST_BUTTON2_BLUETOOTH_ABB"
+msgstr "Bluetooth"
+
+msgid "IDS_ST_BUTTON2_AUTO_NROTATE"
+msgstr "Autom.\nzakreni"
+
+msgid "IDS_ST_BODY_SIM_2"
+msgstr "SIM 2"
+
+msgid "IDS_ST_BODY_SIM_1"
+msgstr "SIM 1"
+
+msgid "IDS_ST_BODY_SCANNING_FOR_MOBILE_NETWORK_ING_ABB"
+msgstr "Traženje mobilne mreže..."
+
+msgid "IDS_ST_BODY_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
+msgstr "Umetnite SIM karticu za pristup mrežnim uslugama."
+
+msgid "IDS_ST_BODY_ALWAYS_ASK_ABB"
+msgstr "Uvijek pitaj"
+
+msgid "IDS_SCP_BODY_UNABLE_TO_CONNECT_TO_MOBILE_NETWORKS_WHILE_FLIGHT_MODE_IS_ENABLED_CONNECT_TO_A_WI_FI_NETWORK_INSTEAD_OR_DISABLE_FLIGHT_MODE_AND_TRY_AGAIN"
+msgstr "Nije moguće spojiti se na mobilne mreže dok je uključen profil Bez mreže. Umjesto toga spojite se na Wi-Fi mrežu ili isključite profil Bez mreže i pokušajte ponovno."
 
-msgid "IDS_COM_BUTTON_AGREE"
-msgstr "Prihvaćam"
+msgid "IDS_COM_BODY_SEARCHING"
+msgstr "Traženje"
 
-msgid "IDS_COM_BUTTON_DISAGREE"
-msgstr "Ne prihvaćam"
+msgid "IDS_QP_TPOP_UNABLE_TO_OPEN_PS"
+msgstr "Nemoguće otvoriti %s."
 
-msgid "IDS_ST_BODY_GPS_LOCATION_USE_CONTROLLED_BY_APPLICATIONS_MSG"
-msgstr "GPS lokacija i korištenje vaših podataka o lokaciji kontrolira se aplikacijama koje koristite"
+msgid "IDS_QP_OPT_OUTDOORS_M_OUTDOOR_MODE_ABB"
+msgstr "Vani"
 
-msgid "IDS_ST_HEADER_USER_CONSENT"
-msgstr "Pristanak korisnika"
+msgid "IDS_QP_BUTTON2_PRIVATE_NMODE_ABB"
+msgstr "Privatni\nnačin"
 
index 0b2d821..3579a1d 100755 (executable)
--- a/po/hu.po
+++ b/po/hu.po
-msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
-msgstr "Értesítések"
+msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
+msgstr "A Wi-Fi és a Mobil AP-nem lehet egyszerre aktív. Kikapcsolja a Mobil AP-t?"
+
+msgid "IDS_TASKMGR_BUTTON_CLEAR_ALL"
+msgstr "Össz. Törlése"
+
+msgid "IDS_IDLE_SBODY_TAP_HERE_TO_DISABLE_SAFE_MODE_ABB"
+msgstr "Érintve letiltható a Bizt. mód."
+
+msgid "IDS_IDLE_POP_UNABLE_TO_LAUNCH_PS"
+msgstr "A(z) %s nem indítható el."
+
+msgid "IDS_IDLE_MBODY_EMERGENCY_CALLS_ONLY"
+msgstr "Csak segélyhívás lehetséges."
+
+msgid "IDS_IDLE_BODY_SEARCHING_ING"
+msgstr "Keresés..."
 
-msgid "IDS_WIFI_BODY_ALLSHARE_CAST"
-msgstr "AllShare Cast"
+msgid "IDS_IDLE_BODY_NO_SIM"
+msgstr "Nincs SIM"
 
-msgid "IDS_CALL_POP_CALLING_EMERG_ONLY"
-msgstr "Csak segélyhívás indítható"
+msgid "IDS_IDLE_BODY_NO_SERVICE"
+msgstr "Nincs szolgáltatás"
 
-msgid "IDS_QP_BUTTON_ROTATION"
-msgstr "Forgatás"
+msgid "IDS_IDLE_BODY_INVALID_SIM_CARD"
+msgstr "Érvénytelen SIM-kártya"
 
-msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
+msgid "IDS_IDLE_BODY_EMERGENCY_CALLS_ONLY"
+msgstr "Csak segélyhívás indítható."
+
+msgid "IDS_QP_OPT_OUTDOORS_ABB"
+msgstr "Utca"
+
+msgid "IDS_QP_MBODY_SAFE_MODE_ENABLED"
+msgstr "Bizt. mód engedélyezve"
+
+msgid "IDS_QP_HEADER_NOTIFICATIONS_HPD_ABB"
 msgstr "Értesítések (%d)"
 
-msgid "IDS_QP_BUTTON_VIBRATION"
+msgid "IDS_QP_HEADER_CLEAR_ALL_ABB"
+msgstr "Ö. törlése"
+
+msgid "IDS_QP_BUTTON_NOTIFICATION"
+msgstr "Értesítés"
+
+msgid "IDS_QP_BUTTON_ALWAYS_ASK_ABB"
+msgstr "Rákérdez"
+
+msgid "IDS_QP_BUTTON2_WI_FI"
+msgstr "Wi-Fi"
+
+msgid "IDS_QP_BUTTON2_VIBRATE"
 msgstr "Rezgés"
 
-msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
-msgstr "Hang és rezgés"
+msgid "IDS_QP_BUTTON2_U_POWER_NSAVING_ABB"
+msgstr "Ultra-\ntakarékos"
 
-msgid "IDS_QP_TAB4_AUTO_ROTATION"
-msgstr "Aut. elforg."
+msgid "IDS_QP_BUTTON2_TETHERING"
+msgstr "Internet megosztás"
 
-msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
-msgstr "Tájolás rögz."
+msgid "IDS_QP_BUTTON2_SOUND_ABB"
+msgstr "Hang"
 
-msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
-msgstr "Háttértár mód"
+msgid "IDS_QP_BUTTON2_SOUND"
+msgstr "Hang"
 
-msgid "IDS_QP_BUTTON_DISABLE"
-msgstr "Kikapcsol"
+msgid "IDS_QP_BUTTON2_PRIVATE_MODE"
+msgstr "Privát mód"
 
-msgid "IDS_QP_BUTTON_ENABLE"
-msgstr "Engedélyezés"
+msgid "IDS_QP_BUTTON2_POWER_N_SAVING"
+msgstr "Energia-\ntakarék."
 
-msgid "IDS_COM_POP_UNSUPPORTED"
-msgstr "Nem támogatott"
+msgid "IDS_QP_BUTTON2_MUTE_ABB"
+msgstr "Némítás"
 
-msgid "IDS_COM_SK_DISMISS"
-msgstr "Elutasít"
+msgid "IDS_QP_BUTTON2_MOBILE_DATA"
+msgstr "Mobil\nint.kap."
 
-msgid "IDS_COM_POP_PELASE_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
-msgstr "Hálózati szolgáltatások eléréséhez helyezze be a SIM kártyát"
+msgid "IDS_QP_BUTTON2_LOCATION_ABB"
+msgstr "Hely"
 
-msgid "IDS_COM_BODY_DO_NOT_ASK_AGAIN"
-msgstr "Máskor ne legyen kérdés"
+msgid "IDS_QP_BUTTON2_FLIGHT_N_MODE"
+msgstr "Repülő\nüzemmód"
 
-msgid "IDS_QP_POP_INSERT_SIM_CARD_AND_RESTART_DEVICE_TO_USE_TETHERING"
-msgstr "Az internetmegosztás használatához helyezzen be SIM kártyát, és indítsa újra az eszközt"
+msgid "IDS_QP_BUTTON2_BLUETOOTH"
+msgstr "Bluetooth"
 
-msgid "IDS_QP_POP_CONNECTING_VIA_PACKET_DATA_MAY_INCUR_ADDITIONAL_CHARGES_CONTINUE_Q"
-msgstr "Az adatkapcsolatért a szolgáltató további költségeket számíthat fel. Folytatja?"
+msgid "IDS_QP_BUTTON2_AUTO_ROTATE"
+msgstr "Aut. elforgatás"
 
-msgid "IDS_QP_BODY_AUTO"
-msgstr "Auto."
+msgid "IDS_QP_BUTTON2_ASSISTIVE_NLIGHT"
+msgstr "Segéd-\nfény"
 
-msgid "IDS_QP_TAB_POWER_SAVING"
-msgstr "Energiatakarékosság"
+msgid "IDS_QP_BODY_PM_ABB"
+msgstr "du"
 
-msgid "IDS_QP_TAB_TETHERING"
-msgstr "Internetmegosztás"
+msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
+msgstr "Értesítések"
 
-msgid "IDS_QP_TAB_MOBILE_DATA"
-msgstr "Mobil adatok"
+msgid "IDS_QP_BODY_AM_ABB"
+msgstr "de"
 
-msgid "IDS_QP_TAB_DRIVING_MODE"
-msgstr "Vezetés mód"
+msgid "IDS_ST_TPOP_UNABLE_TO_MAKE_VOICE_CALLS_VIDEO_CALLS_AND_SEND_TEXT_MESSAGES_USING_PS"
+msgstr "A(z) %s segítségével nem indítható hang- vagy videohívás és nem küldhető szöveges üzenet."
 
-msgid "IDS_COM_POP_UNABLE_TO_CONNECT_TO_MOBILE_NETWORK_WHILE_FLIGHT_MODE_IS_ENABLED_MSG"
-msgstr "Amíg a Repülő üzemmód be van kapcsolva, nem lehet a mobilhálózathoz kapcsolódni. Kapcsolódjon Wi-Fi hálózathoz, vagy tiltsa le a Repülő üzemmódot, és próbálja újra"
+msgid "IDS_ST_TPOP_SELECT_SIM_CARD_FOR_OUTGOING_VOICE_CALLS_VIDEO_CALLS_AND_TEXT_MESSAGES"
+msgstr "Válasszon SIM kártyát a kimenő hanghívásokhoz, videohívásokhoz és szöveges üzenetekhez."
 
-msgid "IDS_QP_POP_WI_FI_TETHERING_CONSUMES_MORE_BATTERY_POWER_AND_INCREASES_YOUR_DATA_USAGE_CONTINUE_Q"
-msgstr "A Wi-Fi internetmegosztás használata gyorsan meríti az akkumulátort, és nagyobb adatforgalmat eredményez. Folytatja?"
+msgid "IDS_ST_TPOP_OUTGOING_VOICE_CALLS_VIDEO_CALLS_AND_TEXT_MESSAGES_WILL_BE_MADE_USING_THE_PS_SIM_CARD"
+msgstr "A(z) %s SIM kártyát fogja használni a kimenő hanghívásokhoz, videohívásokhoz és szöveges üzenetekhez."
 
-msgid "IDS_QP_POP_DISABLE_TETHERING_TO_USE_WI_FI"
-msgstr "A Wi-Fi használatához tiltsa le az internetmegosztást"
+msgid "IDS_ST_SK_OK"
+msgstr "OK"
 
-msgid "IDS_QP_POP_TO_ENABLE_POWER_SAVING_MODE_ENABLE_AT_LEAST_ONE_RELEVANT_FUNCTION"
-msgstr "Az Energiatakarékos mód engedélyezéséhez legalább egy releváns funkciót engedélyezzen"
+msgid "IDS_ST_SK_NO"
+msgstr "Nem"
 
-msgid "IDS_QP_POP_TURN_OFF_WI_FI_TO_USE_TETHERING"
-msgstr "Az internetmegosztás használatához kapcsolja ki a Wi-Fi-t"
+msgid "IDS_ST_POP_UNABLE_TO_INCREASE_BRIGHTNESS_FURTHER_BECAUSE_OF_PHONE_OVERHEATING"
+msgstr "A fényerő nem növelhető tovább, a készülék túlmelegedésének elkerülése miatt."
 
-msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
-msgstr "A Wi-Fi és a Mobil AP-nem lehet egyszerre aktív. Kikapcsolja a Mobil AP-t?"
+msgid "IDS_ST_NPBODY_NO_SERVICE"
+msgstr "Nincs szolgáltatás"
+
+msgid "IDS_ST_NPBODY_EMERGENCY_CALLS_ONLY_ABB"
+msgstr "Csak segélyhívás"
 
-msgid "IDS_ASCAST_HEADER_SCREEN_MIRRORING"
-msgstr "Képernyőtükrözés"
+msgid "IDS_ST_HEADER_OUTDOOR"
+msgstr "Utcai"
 
-msgid "IDS_QP_HEADER_REPLACE_QUICK_SETTING_BUTTON"
-msgstr "Gyorsbeállító gomb cseréje"
+msgid "IDS_ST_BUTTON2_WI_FI_NTETHERING"
+msgstr "Wi-Fi\nint.mego."
 
-msgid "IDS_QP_HEADER_ADD_QUICK_SETTING_BUTTON"
-msgstr "Gyorsbeállító gomb hozzáadása"
+msgid "IDS_ST_BUTTON2_WI_FI_ABB"
+msgstr "Wi-Fi"
 
-msgid "IDS_QP_POP_YOU_WILL_NO_LONGER_BE_ABLE_TO_USE_APPLICATIONS_SUCH_AS_INTERNET_NOTI_MSG"
-msgstr "Nem lesz lehetséges az olyan alkalmazások használata a mobilhálózaton keresztül, mint az Internet vagy az E-mail. Folytatja?"
+msgid "IDS_ST_BUTTON2_TORCH_ABB"
+msgstr "Elem-\nlámpa"
 
-msgid "IDS_QP_BUTTON2_SCREEN_N_MIRRORING"
-msgstr "Screen\nMirroring"
+msgid "IDS_ST_BUTTON2_POWER_NSAVING"
+msgstr "Energia-\ntakarék."
 
-msgid "IDS_COM_BODY_BUTTON_T_TTS"
-msgstr "Gomb"
+msgid "IDS_ST_BUTTON2_MOBILE_NDATA"
+msgstr "Mobil\nint.kap."
 
-msgid "IDS_QP_BUTTON2_GPS"
+msgid "IDS_ST_BUTTON2_GPS_ABB"
 msgstr "GPS"
 
-msgid "IDS_QP_BUTTON_NOTIFICATION"
-msgstr "Értesítés"
+msgid "IDS_ST_BUTTON2_FLIGHT_NMODE"
+msgstr "Repülő\nüzemmód"
+
+msgid "IDS_ST_BUTTON2_BLUETOOTH_ABB"
+msgstr "Bluetooth"
+
+msgid "IDS_ST_BUTTON2_AUTO_NROTATE"
+msgstr "Aut. el-\nforgatás"
+
+msgid "IDS_ST_BODY_SIM_2"
+msgstr "2. SIM"
+
+msgid "IDS_ST_BODY_SIM_1"
+msgstr "1. SIM"
+
+msgid "IDS_ST_BODY_SCANNING_FOR_MOBILE_NETWORK_ING_ABB"
+msgstr "Mobilhálózat keresése..."
+
+msgid "IDS_ST_BODY_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
+msgstr "Hálózati szolgáltatások eléréséhez helyezze be a SIM kártyát."
+
+msgid "IDS_ST_BODY_ALWAYS_ASK_ABB"
+msgstr "Rákérdez"
+
+msgid "IDS_SCP_BODY_UNABLE_TO_CONNECT_TO_MOBILE_NETWORKS_WHILE_FLIGHT_MODE_IS_ENABLED_CONNECT_TO_A_WI_FI_NETWORK_INSTEAD_OR_DISABLE_FLIGHT_MODE_AND_TRY_AGAIN"
+msgstr "Amíg a Repülő üzemmód be van kapcsolva, nem lehet a mobilhálózathoz kapcsolódni. Kapcsolódjon Wi-Fi hálózathoz, vagy kapcsolja ki a Repülő üzemmódot, és próbálja újra."
 
-msgid "IDS_COM_BUTTON_AGREE"
-msgstr "Elfogad"
+msgid "IDS_COM_BODY_SEARCHING"
+msgstr "Keresés"
 
-msgid "IDS_COM_BUTTON_DISAGREE"
-msgstr "Elutasít"
+msgid "IDS_QP_TPOP_UNABLE_TO_OPEN_PS"
+msgstr "A(z) %s nem nyitható meg."
 
-msgid "IDS_ST_BODY_GPS_LOCATION_USE_CONTROLLED_BY_APPLICATIONS_MSG"
-msgstr "A GPS helymeghatározást és a pozícióadatot az Ön által használt alkalmazások vezérlik"
+msgid "IDS_QP_OPT_OUTDOORS_M_OUTDOOR_MODE_ABB"
+msgstr "Utcai"
 
-msgid "IDS_ST_HEADER_USER_CONSENT"
-msgstr "Felhasználói beleegyezés"
+msgid "IDS_QP_BUTTON2_PRIVATE_NMODE_ABB"
+msgstr "Privát\nüzemmód"
 
index c68ba32..13c4bbd 100755 (executable)
--- a/po/hy.po
+++ b/po/hy.po
-msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
-msgstr "Ծանուցումներ"
+msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
+msgstr "Wi-Fi-ն ու Mobile AP-ն չեն կարող միաժամանակ ակտիվացվել: Ապաակտիվացնե՞լ Mobile AP-ն:"
+
+msgid "IDS_TASKMGR_BUTTON_CLEAR_ALL"
+msgstr "Մաքրել բոլորը"
+
+msgid "IDS_IDLE_SBODY_TAP_HERE_TO_DISABLE_SAFE_MODE_ABB"
+msgstr "Թակ. այստեղ՝ Անվտ. ռժմ կսց. հր:"
+
+msgid "IDS_IDLE_POP_UNABLE_TO_LAUNCH_PS"
+msgstr "Հնարավոր չէ գործարկել %s-ը:"
+
+msgid "IDS_IDLE_MBODY_EMERGENCY_CALLS_ONLY"
+msgstr "Միայն արտ. իրավիճ. զանգեր"
+
+msgid "IDS_IDLE_BODY_SEARCHING_ING"
+msgstr "Որոնում է..."
+
+msgid "IDS_IDLE_BODY_NO_SIM"
+msgstr "SIM չկա"
 
-msgid "IDS_WIFI_BODY_ALLSHARE_CAST"
-msgstr "AllShare Cast"
+msgid "IDS_IDLE_BODY_NO_SERVICE"
+msgstr "Ծառայություն չկա"
 
-msgid "IDS_CALL_POP_CALLING_EMERG_ONLY"
-msgstr "Միայն հրատապ կանչեր"
+msgid "IDS_IDLE_BODY_INVALID_SIM_CARD"
+msgstr "Անվավեր SIM քարտ:"
 
-msgid "IDS_QP_BUTTON_ROTATION"
-msgstr "Õ\8aÕ¿Õ¿Õ¸Ö\82Õ´"
+msgid "IDS_IDLE_BODY_EMERGENCY_CALLS_ONLY"
+msgstr "Õ\84Õ«Õ¡ÕµÕ¶ Õ°Ö\80Õ¡Õ¿Õ¡Õº Õ¯Õ¡Õ¶Õ¹Õ¥Ö\80:"
 
-msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
+msgid "IDS_QP_OPT_OUTDOORS_ABB"
+msgstr "Դրսում"
+
+msgid "IDS_QP_MBODY_SAFE_MODE_ENABLED"
+msgstr "Անվտանգ ռեժիմ"
+
+msgid "IDS_QP_HEADER_NOTIFICATIONS_HPD_ABB"
 msgstr "Ծանուցումներ (%d)"
 
-msgid "IDS_QP_BUTTON_VIBRATION"
-msgstr "Թրթռում"
+msgid "IDS_QP_HEADER_CLEAR_ALL_ABB"
+msgstr "Մաքրել բլր"
 
-msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
-msgstr "Ձայն և թրթռում"
+msgid "IDS_QP_BUTTON_NOTIFICATION"
+msgstr "Ծանուցում"
 
-msgid "IDS_QP_TAB4_AUTO_ROTATION"
-msgstr "Ինքնապտտում"
+msgid "IDS_QP_BUTTON_ALWAYS_ASK_ABB"
+msgstr "Միշտ հարցնել"
 
-msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
-msgstr "Պտտման կողպում"
+msgid "IDS_QP_BUTTON2_WI_FI"
+msgstr "Wi-Fi"
 
-msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
-msgstr "Ô¶Õ¡Õ¶Õ£Õ¾Õ¡Õ®Õ¡ÕµÕ«Õ¶ ÕºÕ¡Õ°Õ¸Ö\81Õ« Õ¼Õ¥ÕªÕ«Õ´"
+msgid "IDS_QP_BUTTON2_VIBRATE"
+msgstr "Ô¹Ö\80Õ©Õ¼Õ¡Õ¬"
 
-msgid "IDS_QP_BUTTON_DISABLE"
-msgstr "Ô¿Õ¡Õ½Õ¥Ö\81Õ¶Õ¥Õ¬"
+msgid "IDS_QP_BUTTON2_U_POWER_NSAVING_ABB"
+msgstr "Ô·Õ¶Õ¥Ö\80Õ£Õ«Õ¡ÕµÕ«\nÕ£Õ¥Ö\80Õ­Õ¶Õ¡Õµ."
 
-msgid "IDS_QP_BUTTON_ENABLE"
-msgstr "Ակտիվացնլ"
+msgid "IDS_QP_BUTTON2_TETHERING"
+msgstr "Տեղակապում"
 
-msgid "IDS_COM_POP_UNSUPPORTED"
-msgstr "Õ\89Õ½Õ¡Õ¿Õ¡Ö\80Õ¾Õ¸Õ²"
+msgid "IDS_QP_BUTTON2_SOUND_ABB"
+msgstr "Õ\80Õ¶Õ¹ÕµÕ¸Ö\82Õ¶"
 
-msgid "IDS_COM_SK_DISMISS"
-msgstr "Õ\89Õ²Ö\80Õ¯Õ¬"
+msgid "IDS_QP_BUTTON2_SOUND"
+msgstr "Õ\81Õ¡ÕµÕ¶"
 
-msgid "IDS_COM_POP_PELASE_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
-msgstr "Տեղադրեք SIM քարտը՝ ցանցային ծառայություններ մտնելու համար"
+msgid "IDS_QP_BUTTON2_PRIVATE_MODE"
+msgstr "Գաղտնի ռեժիմ"
 
-msgid "IDS_COM_BODY_DO_NOT_ASK_AGAIN"
-msgstr "Ô±ÕµÕ¬Ö\87Õ½ Õ¹Õ°Õ¡Ö\80Ö\81Õ¶Õ¥Õ¬"
+msgid "IDS_QP_BUTTON2_POWER_N_SAVING"
+msgstr "Ô·Õ¶Õ¥Ö\80Õ£.\nsÕ­Õ¶Õ¡ÕµÕ¸Ö\82Õ´"
 
-msgid "IDS_QP_POP_INSERT_SIM_CARD_AND_RESTART_DEVICE_TO_USE_TETHERING"
-msgstr "Մտցնել SIM քարտ և վերագործարկել սարքը՝ տեղակապում օգտագործելու համար"
+msgid "IDS_QP_BUTTON2_MUTE_ABB"
+msgstr "Խլացնել"
 
-msgid "IDS_QP_POP_CONNECTING_VIA_PACKET_DATA_MAY_INCUR_ADDITIONAL_CHARGES_CONTINUE_Q"
-msgstr "Õ\93Õ¡Õ©Õ¥Õ©Õ¡ÕµÕ«Õ¶ Õ¿Õ¾ÕµÕ¡Õ¬Õ¶Õ¥Ö\80Õ« Õ´Õ«Õ»Õ¸Ö\81Õ¸Õ¾ Õ´Õ«Õ¡Ö\81Õ¸Ö\82Õ´Õ¨ Õ¯Õ¡Ö\80Õ¸Õ² Õ§ Õ¬Ö\80Õ¡Ö\81Õ¸Ö\82Ö\81Õ«Õ¹ Õ¾Õ³Õ¡Ö\80 ÕºÕ¡Õ°Õ¡Õ¶Õ»Õ¥Õ¬: Õ\87Õ¡Ö\80Õ¸Ö\82Õ¶Õ¡Õ¯Õ¥Õ\9eÕ¬:"
+msgid "IDS_QP_BUTTON2_MOBILE_DATA"
+msgstr "Õ\87Õ¡Ö\80Õª.\nÕ¿Õ¾ÕµÕ¡Õ¬Õ¶Õ¥Ö\80"
 
-msgid "IDS_QP_BODY_AUTO"
-msgstr "Ավտոմատ"
+msgid "IDS_QP_BUTTON2_LOCATION_ABB"
+msgstr "Տեղը"
 
-msgid "IDS_QP_TAB_POWER_SAVING"
-msgstr "Ô·Õ¶Õ¥Ö\80Õ£Õ«Õ¡ÕµÕ« Õ­Õ¶Õ¡ÕµÕ¸Ö\82մ"
+msgid "IDS_QP_BUTTON2_FLIGHT_N_MODE"
+msgstr "Ô¹Õ¼Õ«Õ¹Ö\84Õ¡ÕµÕ«Õ¶\nÕ¼Õ¥ÕªÕ«մ"
 
-msgid "IDS_QP_TAB_TETHERING"
-msgstr "Տեղակապում"
+msgid "IDS_QP_BUTTON2_BLUETOOTH"
+msgstr "Bluetooth"
 
-msgid "IDS_QP_TAB_MOBILE_DATA"
-msgstr "Շարժական տվյալներ"
+msgid "IDS_QP_BUTTON2_AUTO_ROTATE"
+msgstr "Ինքնապտտում"
 
-msgid "IDS_QP_TAB_DRIVING_MODE"
-msgstr "Õ\8eÕ¡Ö\80Õ´Õ¡Õ¶ Õ¼Õ¥ÕªÕ«Õ´"
+msgid "IDS_QP_BUTTON2_ASSISTIVE_NLIGHT"
+msgstr "Õ\95ÕªÕ¡Õ¶Õ¤Õ¡Õ¯\nÕ¬Õ¸Ö\82ÕµÕ½"
 
-msgid "IDS_COM_POP_UNABLE_TO_CONNECT_TO_MOBILE_NETWORK_WHILE_FLIGHT_MODE_IS_ENABLED_MSG"
-msgstr "Ô±Õ¶Õ°Õ¶Õ¡Ö\80 Õ§ Õ´Õ«Õ¡Õ¶Õ¡Õ¬ Õ·Õ¡Ö\80ÕªÕ¡Õ¯Õ¡Õ¶ Õ¯Õ¡ÕºÕ« Ö\81Õ¡Õ¶Ö\81Õ¥Ö\80Õ«Õ¶, Õ¥Ö\80Õ¢ Ô¹Õ¼Õ«Õ¹Ö\84Õ¡ÕµÕ«Õ¶ Õ¼Õ¥ÕªÕ«Õ´Õ¶ Õ¨Õ¶Õ±Õ¥Õ¼Õ¾Õ¡Õ® Õ§: Õ\93Õ¸Õ­Õ¡Ö\80Õ¥Õ¶Õ¨ Õ´Õ«Õ¡Ö\81Õ¥Ö\84 Wi-Fi Ö\81Õ¡Õ¶Ö\81Õ«Õ¶ Õ¯Õ¡Õ´ Õ¯Õ¡Õ½Õ¥Ö\81Ö\80Õ¥Ö\84 Ô¹Õ¼Õ«Õ¹Ö\84Õ¡ÕµÕ«Õ¶ Õ¼Õ¥ÕªÕ«Õ´Õ¶ Õ¸Ö\82 Õ¶Õ¸Ö\80Õ«Ö\81 Ö\83Õ¸Ö\80Õ±Õ¥Ö\84"
+msgid "IDS_QP_BODY_PM_ABB"
+msgstr "Ô¿Õ\80"
 
-msgid "IDS_QP_POP_WI_FI_TETHERING_CONSUMES_MORE_BATTERY_POWER_AND_INCREASES_YOUR_DATA_USAGE_CONTINUE_Q"
-msgstr "Wi-Fi տեղակապումը մարտկոցի ավելի շատ էներգիա է սպառում և ավելացնում է տվյալների օգտագործումը. շարունակե՞լ:"
+msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
+msgstr "Ծանուցումներ"
 
-msgid "IDS_QP_POP_DISABLE_TETHERING_TO_USE_WI_FI"
-msgstr "Կասեցրեք տեղակապումը՝ Wi-Fi-ից օգտվելու համար"
+msgid "IDS_QP_BODY_AM_ABB"
+msgstr "ԿԱ"
 
-msgid "IDS_QP_POP_TO_ENABLE_POWER_SAVING_MODE_ENABLE_AT_LEAST_ONE_RELEVANT_FUNCTION"
-msgstr "Ô·Õ¶Õ¥Ö\80Õ£Õ«Õ¡ÕµÕ« Õ­Õ¶Õ¡ÕµÕ´Õ¡Õ¶ Õ¼Õ¥ÕªÕ«Õ´Õ¶ Õ¨Õ¶Õ±Õ¥Õ¼Õ¥Õ¬Õ¸Ö\82 Õ°Õ¡Õ´Õ¡Ö\80 Õ¨Õ¶Õ±Õ¥Õ¼Õ¥Ö\84 Õ¡Õ¼Õ¶Õ¾Õ¡Õ¦Õ¶ Õ´Õ¥Õ¯ Õ°Õ¡Õ´Õ¡ÕºÕ¡Õ¿Õ¡Õ½Õ­Õ¡Õ¶ Õ£Õ¸Ö\80Õ®Õ¡Õ¼Õ¸Ö\82ÕµÕ©"
+msgid "IDS_ST_TPOP_UNABLE_TO_MAKE_VOICE_CALLS_VIDEO_CALLS_AND_SEND_TEXT_MESSAGES_USING_PS"
+msgstr "Ô±Õ¶Õ°Õ¶Õ¡Ö\80 Õ§ Õ±Õ¡ÕµÕ¶Õ¡Õ¯Õ¡Õ¶Õ¹Õ¥Ö\80, Õ¿Õ¥Õ½Õ¡Õ¯Õ¡Õ¶Õ¹Õ¥Ö\80 Õ¯Õ¡Õ¿Õ¡Ö\80Õ¥Õ¬ Ö\87 Õ¿Õ¥Ö\84Õ½Õ¿Õ¡ÕµÕ«Õ¶ Õ°Õ¡Õ²Õ¸Ö\80Õ¤Õ¡Õ£Ö\80Õ¸Ö\82Õ©ÕµÕ¸Ö\82Õ¶Õ¶Õ¥Ö\80 Õ¸Ö\82Õ²Õ¡Ö\80Õ¯Õ¥Õ¬ %s-Õ¸Õ¾:"
 
-msgid "IDS_QP_POP_TURN_OFF_WI_FI_TO_USE_TETHERING"
-msgstr "Անջատեք Wi-Fi-ը՝ տեղակապում օգտագործելու համար"
+msgid "IDS_ST_TPOP_SELECT_SIM_CARD_FOR_OUTGOING_VOICE_CALLS_VIDEO_CALLS_AND_TEXT_MESSAGES"
+msgstr "SIM քարտ ընտրեք ելից ձայնականչերի, տեսականչերի և տեքստային հաղորդագրությունների համար:"
 
-msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
-msgstr "Wi-Fi-ն ու Mobile AP-ն չեն կարող միաժամանակ ակտիվացվել: Ապաակտիվացնե՞լ Mobile AP-ն:"
+msgid "IDS_ST_TPOP_OUTGOING_VOICE_CALLS_VIDEO_CALLS_AND_TEXT_MESSAGES_WILL_BE_MADE_USING_THE_PS_SIM_CARD"
+msgstr "Ելից ձայնականչերը, տեսականչերը և տեքստային հաղորդագրությունները կկատարվեն %s SIM քարտով:"
+
+msgid "IDS_ST_SK_OK"
+msgstr "Ընդունել"
+
+msgid "IDS_ST_SK_NO"
+msgstr "Ոչ"
 
-msgid "IDS_ASCAST_HEADER_SCREEN_MIRRORING"
-msgstr "Screen Mirroring"
+msgid "IDS_ST_POP_UNABLE_TO_INCREASE_BRIGHTNESS_FURTHER_BECAUSE_OF_PHONE_OVERHEATING"
+msgstr "Հնարավոր չէ ավելցնել հեռախոսի էկրանի պայծառությունը հեռախոսի գեր տաքանալու պատճառով:"
 
-msgid "IDS_QP_HEADER_REPLACE_QUICK_SETTING_BUTTON"
-msgstr "Փոխարինել արագ դրվածքների կոճակը"
+msgid "IDS_ST_NPBODY_NO_SERVICE"
+msgstr "Ծառայություն չկա"
 
-msgid "IDS_QP_HEADER_ADD_QUICK_SETTING_BUTTON"
-msgstr "Ավելացնել արագ դրվածքների կոճակ"
+msgid "IDS_ST_NPBODY_EMERGENCY_CALLS_ONLY_ABB"
+msgstr "Միայն արտակարգ իրավիճակի կանչեր"
 
-msgid "IDS_QP_POP_YOU_WILL_NO_LONGER_BE_ABLE_TO_USE_APPLICATIONS_SUCH_AS_INTERNET_NOTI_MSG"
-msgstr "Դուք այլևս չեք կարողանա շարժական կապի ցանցերի միջոցով օգտագործել այնպիսի ծրագրեր, ինչպիսիք են Ինտերնետը և Էլփոստը. շարունակե՞լ:"
+msgid "IDS_ST_HEADER_OUTDOOR"
+msgstr "Դրսում"
 
-msgid "IDS_QP_BUTTON2_SCREEN_N_MIRRORING"
-msgstr "Screen\nMirroring"
+msgid "IDS_ST_BUTTON2_WI_FI_NTETHERING"
+msgstr "Wi-Fi\nտեղակապ."
 
-msgid "IDS_COM_BODY_BUTTON_T_TTS"
-msgstr "Կոճակ"
+msgid "IDS_ST_BUTTON2_WI_FI_ABB"
+msgstr "Wi-Fi"
 
-msgid "IDS_QP_BUTTON2_GPS"
+msgid "IDS_ST_BUTTON2_TORCH_ABB"
+msgstr "Լապտեր"
+
+msgid "IDS_ST_BUTTON2_POWER_NSAVING"
+msgstr "Էներգ.\nխնայում"
+
+msgid "IDS_ST_BUTTON2_MOBILE_NDATA"
+msgstr "Շարժական\nտվյալներ"
+
+msgid "IDS_ST_BUTTON2_GPS_ABB"
 msgstr "GPS"
 
-msgid "IDS_QP_BUTTON_NOTIFICATION"
-msgstr "Ծանուցում"
+msgid "IDS_ST_BUTTON2_FLIGHT_NMODE"
+msgstr "Թռիչք.\nռեժիմ"
+
+msgid "IDS_ST_BUTTON2_BLUETOOTH_ABB"
+msgstr "Bluetooth"
+
+msgid "IDS_ST_BUTTON2_AUTO_NROTATE"
+msgstr "Ինքնա-\nպտտում"
+
+msgid "IDS_ST_BODY_SIM_2"
+msgstr "SIM 2"
+
+msgid "IDS_ST_BODY_SIM_1"
+msgstr "SIM 1"
+
+msgid "IDS_ST_BODY_SCANNING_FOR_MOBILE_NETWORK_ING_ABB"
+msgstr "Տեսածրվում է շարժական կապի ցանցի առկայություն..."
+
+msgid "IDS_ST_BODY_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
+msgstr "Տեղադրեք SIM քարտը՝ ցանցային ծառայություններ մտնելու համար:"
+
+msgid "IDS_ST_BODY_ALWAYS_ASK_ABB"
+msgstr "Միշտ հարցնել"
+
+msgid "IDS_SCP_BODY_UNABLE_TO_CONNECT_TO_MOBILE_NETWORKS_WHILE_FLIGHT_MODE_IS_ENABLED_CONNECT_TO_A_WI_FI_NETWORK_INSTEAD_OR_DISABLE_FLIGHT_MODE_AND_TRY_AGAIN"
+msgstr "Անհնար է միանալ շարժական կապի ցանցերին, երբ Թռիչքային ռեժիմն ընձեռված է: Փոխարենը միացեք Wi-Fi ցանցին կամ կասեցրեք Թռիչքային ռեժիմն ու նորից փորձեք:"
 
-msgid "IDS_COM_BUTTON_AGREE"
-msgstr "Õ\80Õ´Õ±Õ¡ÕµÕ¶ Õ¥մ"
+msgid "IDS_COM_BODY_SEARCHING"
+msgstr "Õ\88Ö\80Õ¸Õ¶Õ¸Ö\82մ"
 
-msgid "IDS_COM_BUTTON_DISAGREE"
-msgstr "Ô±Õ¼Õ¡Ö\80Õ¯Õ¥Õ¬"
+msgid "IDS_QP_TPOP_UNABLE_TO_OPEN_PS"
+msgstr "Ô±Õ¶Õ°Õ¶Õ¡Ö\80 Õ§ Õ¢Õ¡Ö\81Õ¥Õ¬ %s-Õ¨:"
 
-msgid "IDS_ST_BODY_GPS_LOCATION_USE_CONTROLLED_BY_APPLICATIONS_MSG"
-msgstr "GPS-ի տեղն ու Ձեր տեղի տվյալները վերահսկվում են Ձեր օգտագործած ծրագրերով"
+msgid "IDS_QP_OPT_OUTDOORS_M_OUTDOOR_MODE_ABB"
+msgstr "Դրսում"
 
-msgid "IDS_ST_HEADER_USER_CONSENT"
-msgstr "Օգտվողի համաձայնություն"
+msgid "IDS_QP_BUTTON2_PRIVATE_NMODE_ABB"
+msgstr "Գաղտ. կապի\nռեժիմ"
 
index f7d48c7..9af931e 100755 (executable)
--- a/po/is.po
+++ b/po/is.po
-msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
-msgstr "Tilkynningar"
+msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
+msgstr "Það er ekki hægt að nota Wi-Fi og farsímaaðgangsstað á sama tíma. Viltu loka farsímaaðgangsstaðnum?"
+
+msgid "IDS_TASKMGR_BUTTON_CLEAR_ALL"
+msgstr "Hreinsa allt"
+
+msgid "IDS_IDLE_SBODY_TAP_HERE_TO_DISABLE_SAFE_MODE_ABB"
+msgstr "Slökkva á öryggisstillingu."
+
+msgid "IDS_IDLE_POP_UNABLE_TO_LAUNCH_PS"
+msgstr "Mistókst að opna %s."
+
+msgid "IDS_IDLE_MBODY_EMERGENCY_CALLS_ONLY"
+msgstr "Aðeins neyðarsímtöl"
+
+msgid "IDS_IDLE_BODY_SEARCHING_ING"
+msgstr "Verið er að leita..."
 
-msgid "IDS_WIFI_BODY_ALLSHARE_CAST"
-msgstr "AllShare Cast"
+msgid "IDS_IDLE_BODY_NO_SIM"
+msgstr "Ekkert SIM-kort"
 
-msgid "IDS_CALL_POP_CALLING_EMERG_ONLY"
-msgstr "Aðeins neyðarhringingar"
+msgid "IDS_IDLE_BODY_NO_SERVICE"
+msgstr "Engin þjónusta"
 
-msgid "IDS_QP_BUTTON_ROTATION"
-msgstr "Snúa"
+msgid "IDS_IDLE_BODY_INVALID_SIM_CARD"
+msgstr "Ógilt SIM-kort."
 
-msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
+msgid "IDS_IDLE_BODY_EMERGENCY_CALLS_ONLY"
+msgstr "Aðeins neyðarhringingar."
+
+msgid "IDS_QP_OPT_OUTDOORS_ABB"
+msgstr "Utandyra"
+
+msgid "IDS_QP_MBODY_SAFE_MODE_ENABLED"
+msgstr "Örugg stilling á"
+
+msgid "IDS_QP_HEADER_NOTIFICATIONS_HPD_ABB"
 msgstr "Tilkynningar (%d)"
 
-msgid "IDS_QP_BUTTON_VIBRATION"
-msgstr "Titringur"
+msgid "IDS_QP_HEADER_CLEAR_ALL_ABB"
+msgstr "Hreinsa"
 
-msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
-msgstr "Hljóð og titringur"
+msgid "IDS_QP_BUTTON_NOTIFICATION"
+msgstr "Tilkynning"
 
-msgid "IDS_QP_TAB4_AUTO_ROTATION"
-msgstr "Sjálfv. snún."
+msgid "IDS_QP_BUTTON_ALWAYS_ASK_ABB"
+msgstr "Spyrja alltaf"
 
-msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
-msgstr "Snún.lás"
+msgid "IDS_QP_BUTTON2_WI_FI"
+msgstr "Wi-Fi"
 
-msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
-msgstr "Gagnageymslustilling"
+msgid "IDS_QP_BUTTON2_VIBRATE"
+msgstr "Titra"
 
-msgid "IDS_QP_BUTTON_DISABLE"
-msgstr "Slökkva"
+msgid "IDS_QP_BUTTON2_U_POWER_NSAVING_ABB"
+msgstr "Ofur-\nsparnaður"
 
-msgid "IDS_QP_BUTTON_ENABLE"
-msgstr "Gera virkt"
+msgid "IDS_QP_BUTTON2_TETHERING"
+msgstr "Tjóðrun"
 
-msgid "IDS_COM_POP_UNSUPPORTED"
-msgstr "Óstutt"
+msgid "IDS_QP_BUTTON2_SOUND_ABB"
+msgstr "Hljóð"
 
-msgid "IDS_COM_SK_DISMISS"
-msgstr "Sleppa"
+msgid "IDS_QP_BUTTON2_SOUND"
+msgstr "Hljóð"
 
-msgid "IDS_COM_POP_PELASE_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
-msgstr "Setjið SIM kort í til að fá aðgang að netþjónustu"
+msgid "IDS_QP_BUTTON2_PRIVATE_MODE"
+msgstr "Einka-\nstilling"
 
-msgid "IDS_COM_BODY_DO_NOT_ASK_AGAIN"
-msgstr "Ekki spyrja aftur"
+msgid "IDS_QP_BUTTON2_POWER_N_SAVING"
+msgstr "Orku-\nsparn."
 
-msgid "IDS_QP_POP_INSERT_SIM_CARD_AND_RESTART_DEVICE_TO_USE_TETHERING"
-msgstr "Settu inn SIM-kort og endurræstu tækið til að nota tjóðrun"
+msgid "IDS_QP_BUTTON2_MUTE_ABB"
+msgstr "Hljóð-\nlaust"
 
-msgid "IDS_QP_POP_CONNECTING_VIA_PACKET_DATA_MAY_INCUR_ADDITIONAL_CHARGES_CONTINUE_Q"
-msgstr "Gjald kann að vera tekið fyrir pakkagagnatengingu. Viltu halda áfram?"
+msgid "IDS_QP_BUTTON2_MOBILE_DATA"
+msgstr "Farsíma-\ngögn"
 
-msgid "IDS_QP_BODY_AUTO"
-msgstr "Sjálfvirkt"
+msgid "IDS_QP_BUTTON2_LOCATION_ABB"
+msgstr "Staður"
 
-msgid "IDS_QP_TAB_POWER_SAVING"
-msgstr "Orkusparnaður"
+msgid "IDS_QP_BUTTON2_FLIGHT_N_MODE"
+msgstr "Flug-\nstilling"
 
-msgid "IDS_QP_TAB_TETHERING"
-msgstr "Sími sem netaðgangsstaður"
+msgid "IDS_QP_BUTTON2_BLUETOOTH"
+msgstr "Bluetooth"
 
-msgid "IDS_QP_TAB_MOBILE_DATA"
-msgstr "Farsímagögn"
+msgid "IDS_QP_BUTTON2_AUTO_ROTATE"
+msgstr "Sjálfv. snúningur"
 
-msgid "IDS_QP_TAB_DRIVING_MODE"
-msgstr "Akstursstilling"
+msgid "IDS_QP_BUTTON2_ASSISTIVE_NLIGHT"
+msgstr "Hjálpar-\nljós"
 
-msgid "IDS_COM_POP_UNABLE_TO_CONNECT_TO_MOBILE_NETWORK_WHILE_FLIGHT_MODE_IS_ENABLED_MSG"
-msgstr "Ekki hægt að tengjast farsímagögnum þegar kveikt er á flugstillingu. Tengdu við Wi-Fit net í staðinn, eða slökktu á flugstillingu og reyndu aftur"
+msgid "IDS_QP_BODY_PM_ABB"
+msgstr "eh"
 
-msgid "IDS_QP_POP_WI_FI_TETHERING_CONSUMES_MORE_BATTERY_POWER_AND_INCREASES_YOUR_DATA_USAGE_CONTINUE_Q"
-msgstr "Wi-Fi tjóðrun notar meiri orku og eykur gagnaflutning. Halda áfram?"
+msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
+msgstr "Tilkynningar"
 
-msgid "IDS_QP_POP_DISABLE_TETHERING_TO_USE_WI_FI"
-msgstr "Slökktu á tjóðrun til að nota Wi-Fi"
+msgid "IDS_QP_BODY_AM_ABB"
+msgstr "fh"
 
-msgid "IDS_QP_POP_TO_ENABLE_POWER_SAVING_MODE_ENABLE_AT_LEAST_ONE_RELEVANT_FUNCTION"
-msgstr "Til að kveikja á orkusparnaðarstillingu þarftu að kveikja á minnst einni tengdri aðgerð"
+msgid "IDS_ST_TPOP_UNABLE_TO_MAKE_VOICE_CALLS_VIDEO_CALLS_AND_SEND_TEXT_MESSAGES_USING_PS"
+msgstr "Ekki er hægt að hringja símtöl, myndsímtöl og senda SMS með %s."
 
-msgid "IDS_QP_POP_TURN_OFF_WI_FI_TO_USE_TETHERING"
-msgstr "Slökktu á Wi-Fi til að nota tjóðrun"
+msgid "IDS_ST_TPOP_SELECT_SIM_CARD_FOR_OUTGOING_VOICE_CALLS_VIDEO_CALLS_AND_TEXT_MESSAGES"
+msgstr "Veldu SIM-kort fyrir hringd símtöl, myndsímtöl og SMS."
 
-msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
-msgstr "Það er ekki hægt að nota Wi-Fi og farsímaaðgangsstað á sama tíma. Viltu loka farsímaaðgangsstaðnum?"
+msgid "IDS_ST_TPOP_OUTGOING_VOICE_CALLS_VIDEO_CALLS_AND_TEXT_MESSAGES_WILL_BE_MADE_USING_THE_PS_SIM_CARD"
+msgstr "SIM-kort %s verður notað fyrir hringd símtöl og myndsímtöl og send textaskilaboð."
+
+msgid "IDS_ST_SK_OK"
+msgstr "Í lagi"
+
+msgid "IDS_ST_SK_NO"
+msgstr "Nei"
+
+msgid "IDS_ST_POP_UNABLE_TO_INCREASE_BRIGHTNESS_FURTHER_BECAUSE_OF_PHONE_OVERHEATING"
+msgstr "Ekki hægt að auka birtastigið meir vegna ofhitnunar í síma."
 
-msgid "IDS_ASCAST_HEADER_SCREEN_MIRRORING"
-msgstr "Skjáspeglun"
+msgid "IDS_ST_NPBODY_NO_SERVICE"
+msgstr "Engin þjónusta"
 
-msgid "IDS_QP_HEADER_REPLACE_QUICK_SETTING_BUTTON"
-msgstr "Skipta flýtistillingahnappi út"
+msgid "IDS_ST_NPBODY_EMERGENCY_CALLS_ONLY_ABB"
+msgstr "Aðeins neyðarsímtöl"
 
-msgid "IDS_QP_HEADER_ADD_QUICK_SETTING_BUTTON"
-msgstr "Bæta við flýtistillingahnappi"
+msgid "IDS_ST_HEADER_OUTDOOR"
+msgstr "Utandyra"
 
-msgid "IDS_QP_POP_YOU_WILL_NO_LONGER_BE_ABLE_TO_USE_APPLICATIONS_SUCH_AS_INTERNET_NOTI_MSG"
-msgstr "Þú munt ekki lengur geta notað forrit eins og netið og tölvupóst í gegnum farsímakerfi. Viltu halda áfram?"
+msgid "IDS_ST_BUTTON2_WI_FI_NTETHERING"
+msgstr "Wi-Fi\ntjóðrun"
 
-msgid "IDS_QP_BUTTON2_SCREEN_N_MIRRORING"
-msgstr "Screen\nMirroring"
+msgid "IDS_ST_BUTTON2_WI_FI_ABB"
+msgstr "Wi-Fi"
 
-msgid "IDS_COM_BODY_BUTTON_T_TTS"
-msgstr "Hnappur"
+msgid "IDS_ST_BUTTON2_TORCH_ABB"
+msgstr "Vasaljós"
 
-msgid "IDS_QP_BUTTON2_GPS"
+msgid "IDS_ST_BUTTON2_POWER_NSAVING"
+msgstr "Orku-\nsparn."
+
+msgid "IDS_ST_BUTTON2_MOBILE_NDATA"
+msgstr "Farsíma-\ngögn"
+
+msgid "IDS_ST_BUTTON2_GPS_ABB"
 msgstr "GPS"
 
-msgid "IDS_QP_BUTTON_NOTIFICATION"
-msgstr "Tilkynning"
+msgid "IDS_ST_BUTTON2_FLIGHT_NMODE"
+msgstr "Flug-\nstilling"
+
+msgid "IDS_ST_BUTTON2_BLUETOOTH_ABB"
+msgstr "Bluetooth"
+
+msgid "IDS_ST_BUTTON2_AUTO_NROTATE"
+msgstr "Sjálfv.\nsnún."
+
+msgid "IDS_ST_BODY_SIM_2"
+msgstr "SIM 2"
+
+msgid "IDS_ST_BODY_SIM_1"
+msgstr "SIM 1"
+
+msgid "IDS_ST_BODY_SCANNING_FOR_MOBILE_NETWORK_ING_ABB"
+msgstr "Leita að farsímakerfi..."
+
+msgid "IDS_ST_BODY_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
+msgstr "Setjið SIM kort í til að fá aðgang að netþjónustu."
+
+msgid "IDS_ST_BODY_ALWAYS_ASK_ABB"
+msgstr "Spyrja alltaf"
+
+msgid "IDS_SCP_BODY_UNABLE_TO_CONNECT_TO_MOBILE_NETWORKS_WHILE_FLIGHT_MODE_IS_ENABLED_CONNECT_TO_A_WI_FI_NETWORK_INSTEAD_OR_DISABLE_FLIGHT_MODE_AND_TRY_AGAIN"
+msgstr "Ekki er hægt að tengjast farsímakerfum þegar kveikt er á flugstillingu. Tengstu Wi-Fi neti í staðinn eða slökktu á flugstillingu og reyndu aftur."
 
-msgid "IDS_COM_BUTTON_AGREE"
-msgstr "Samþykkt"
+msgid "IDS_COM_BODY_SEARCHING"
+msgstr "Leita"
 
-msgid "IDS_COM_BUTTON_DISAGREE"
-msgstr "Hafna"
+msgid "IDS_QP_TPOP_UNABLE_TO_OPEN_PS"
+msgstr "Ekki er hægt að opna %s."
 
-msgid "IDS_ST_BODY_GPS_LOCATION_USE_CONTROLLED_BY_APPLICATIONS_MSG"
-msgstr "GPS-staðsetningu og notkun á staðsetningargögnum þínum er stjórnað af þeim forritum sem þú notar"
+msgid "IDS_QP_OPT_OUTDOORS_M_OUTDOOR_MODE_ABB"
+msgstr "Utandyra"
 
-msgid "IDS_ST_HEADER_USER_CONSENT"
-msgstr "Samþykki notanda"
+msgid "IDS_QP_BUTTON2_PRIVATE_NMODE_ABB"
+msgstr "Einka-\nstilling"
 
index 408c0a9..c30bdd4 100755 (executable)
-msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
-msgstr "Notifiche"
+msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
+msgstr "Impossibile attivare contemporaneamente sia Wi-Fi che Router Wi-Fi. Disattivare Router Wi-Fi?"
+
+msgid "IDS_TASKMGR_BUTTON_CLEAR_ALL"
+msgstr "Cancella tutto"
+
+msgid "IDS_IDLE_SBODY_TAP_HERE_TO_DISABLE_SAFE_MODE_ABB"
+msgstr "Tocca per disatt. mod. emerg."
+
+msgid "IDS_IDLE_POP_UNABLE_TO_LAUNCH_PS"
+msgstr "Impossibile avviare %s."
+
+msgid "IDS_IDLE_MBODY_EMERGENCY_CALLS_ONLY"
+msgstr "Solo emergenza"
+
+msgid "IDS_IDLE_BODY_SEARCHING_ING"
+msgstr "Ricerca..."
 
-msgid "IDS_WIFI_BODY_ALLSHARE_CAST"
-msgstr "AllShare Cast"
+msgid "IDS_IDLE_BODY_NO_SIM"
+msgstr "Nessuna SIM"
 
-msgid "IDS_CALL_POP_CALLING_EMERG_ONLY"
+msgid "IDS_IDLE_BODY_NO_SERVICE"
+msgstr "Nessun servizio"
+
+msgid "IDS_IDLE_BODY_INVALID_SIM_CARD"
+msgstr "Scheda SIM non valida."
+
+msgid "IDS_IDLE_BODY_EMERGENCY_CALLS_ONLY"
 msgstr "Solo chiamate di emergenza"
 
-msgid "IDS_QP_BUTTON_ROTATION"
-msgstr "Ruota"
+msgid "IDS_QP_OPT_OUTDOORS_ABB"
+msgstr "Esterno"
+
+msgid "IDS_QP_MBODY_SAFE_MODE_ENABLED"
+msgstr "Modalità provv. abilitata"
 
-msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
+msgid "IDS_QP_HEADER_NOTIFICATIONS_HPD_ABB"
 msgstr "Notifiche (%d)"
 
-msgid "IDS_QP_BUTTON_VIBRATION"
+msgid "IDS_QP_HEADER_CLEAR_ALL_ABB"
+msgstr "Canc. tutto"
+
+msgid "IDS_QP_BUTTON_NOTIFICATION"
+msgstr "Notifica"
+
+msgid "IDS_QP_BUTTON_ALWAYS_ASK_ABB"
+msgstr "Chiedi sempre"
+
+msgid "IDS_QP_BUTTON2_WI_FI"
+msgstr "Wi-Fi"
+
+msgid "IDS_QP_BUTTON2_VIBRATE"
 msgstr "Vibraz."
 
-msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
-msgstr "Suono e vibraz."
+msgid "IDS_QP_BUTTON2_U_POWER_NSAVING_ABB"
+msgstr "Risp. en.\navanzato"
 
-msgid "IDS_QP_TAB4_AUTO_ROTATION"
-msgstr "Rotazione\nauto"
+msgid "IDS_QP_BUTTON2_TETHERING"
+msgstr "Tethering"
 
-msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
-msgstr "Blocco rotazione"
+msgid "IDS_QP_BUTTON2_SOUND_ABB"
+msgstr "Suono"
 
-msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
-msgstr "Modalità archiv. di massa"
+msgid "IDS_QP_BUTTON2_SOUND"
+msgstr "Suono"
 
-msgid "IDS_QP_BUTTON_DISABLE"
-msgstr "Disattiva"
+msgid "IDS_QP_BUTTON2_PRIVATE_MODE"
+msgstr "Modalità privata"
 
-msgid "IDS_QP_BUTTON_ENABLE"
-msgstr "Attiva"
+msgid "IDS_QP_BUTTON2_POWER_N_SAVING"
+msgstr "Risparmio\nenergia"
 
-msgid "IDS_COM_POP_UNSUPPORTED"
-msgstr "Non supportato"
+msgid "IDS_QP_BUTTON2_MUTE_ABB"
+msgstr "Silenz."
 
-msgid "IDS_COM_SK_DISMISS"
-msgstr "Rifiuta"
+msgid "IDS_QP_BUTTON2_MOBILE_DATA"
+msgstr "Conn.\ndati"
 
-msgid "IDS_COM_POP_PELASE_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
-msgstr "Inserite una scheda SIM per accedere ai servizi di rete"
+msgid "IDS_QP_BUTTON2_LOCATION_ABB"
+msgstr "Posizione"
 
-msgid "IDS_COM_BODY_DO_NOT_ASK_AGAIN"
-msgstr "Non chiedere di nuovo"
+msgid "IDS_QP_BUTTON2_FLIGHT_N_MODE"
+msgstr "Modalità\noffline"
 
-msgid "IDS_QP_POP_INSERT_SIM_CARD_AND_RESTART_DEVICE_TO_USE_TETHERING"
-msgstr "Inserire la scheda SIM e riavviare il dispositivo per utilizzare il tethering"
+msgid "IDS_QP_BUTTON2_BLUETOOTH"
+msgstr "Bluetooth"
 
-msgid "IDS_QP_POP_CONNECTING_VIA_PACKET_DATA_MAY_INCUR_ADDITIONAL_CHARGES_CONTINUE_Q"
-msgstr "La connessione a pacchetti dati può determinare costi aggiuntivi. Continuare?"
+msgid "IDS_QP_BUTTON2_AUTO_ROTATE"
+msgstr "Rotazione automatica"
 
-msgid "IDS_QP_BODY_AUTO"
-msgstr "Auto"
+msgid "IDS_QP_BUTTON2_ASSISTIVE_NLIGHT"
+msgstr "Torcia"
 
-msgid "IDS_QP_TAB_POWER_SAVING"
-msgstr "Risparmio energetico"
+msgid "IDS_QP_BODY_PM_ABB"
+msgstr "PM"
 
-msgid "IDS_QP_TAB_TETHERING"
-msgstr "Tethering"
+msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
+msgstr "Notifiche"
 
-msgid "IDS_QP_TAB_MOBILE_DATA"
-msgstr "Connessione dati"
+msgid "IDS_QP_BODY_AM_ABB"
+msgstr "AM"
 
-msgid "IDS_QP_TAB_DRIVING_MODE"
-msgstr "Modalità alla Guida"
+msgid "IDS_ST_TPOP_UNABLE_TO_MAKE_VOICE_CALLS_VIDEO_CALLS_AND_SEND_TEXT_MESSAGES_USING_PS"
+msgstr "Impossibile effettuare chiamate vocali, video chiamate e inviare messaggi di testo con %s."
 
-msgid "IDS_COM_POP_UNABLE_TO_CONNECT_TO_MOBILE_NETWORK_WHILE_FLIGHT_MODE_IS_ENABLED_MSG"
-msgstr "Impossibile connettersi alle reti mobili se la modalità Offline è attivata. Connettersi alla rete Wi-Fi o disattivare la modalità Offline e riprovare"
+msgid "IDS_ST_TPOP_SELECT_SIM_CARD_FOR_OUTGOING_VOICE_CALLS_VIDEO_CALLS_AND_TEXT_MESSAGES"
+msgstr "Selezionate la scheda SIM per le chiamate vocali, le video chiamate e i messaggi di testo in uscita."
 
-msgid "IDS_QP_POP_WI_FI_TETHERING_CONSUMES_MORE_BATTERY_POWER_AND_INCREASES_YOUR_DATA_USAGE_CONTINUE_Q"
-msgstr "Il tethering Wi-Fi aumenta il consumo della batteria e l'uso dei dati. Continuare?"
+msgid "IDS_ST_TPOP_OUTGOING_VOICE_CALLS_VIDEO_CALLS_AND_TEXT_MESSAGES_WILL_BE_MADE_USING_THE_PS_SIM_CARD"
+msgstr "Per le chiamate vocali, le video chiamate e i messaggi di testo in uscita verrà utilizzata la scheda SIM %s."
 
-msgid "IDS_QP_POP_DISABLE_TETHERING_TO_USE_WI_FI"
-msgstr "Per utilizzare il Wi-Fi, disattivate il tethering"
+msgid "IDS_ST_SK_OK"
+msgstr "OK"
 
-msgid "IDS_QP_POP_TO_ENABLE_POWER_SAVING_MODE_ENABLE_AT_LEAST_ONE_RELEVANT_FUNCTION"
-msgstr "Per attivare la modalità Risparmio energetico, attivate almeno una funzione pertinente"
+msgid "IDS_ST_SK_NO"
+msgstr "No"
 
-msgid "IDS_QP_POP_TURN_OFF_WI_FI_TO_USE_TETHERING"
-msgstr "Per utilizzare il tethering, disattivate il Wi-Fi"
+msgid "IDS_ST_POP_UNABLE_TO_INCREASE_BRIGHTNESS_FURTHER_BECAUSE_OF_PHONE_OVERHEATING"
+msgstr "Impossibile aumentare la luminosità a causa del surriscaldamento del dispositivo."
 
-msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
-msgstr "Impossibile attivare contemporaneamente sia Wi-Fi che Router Wi-Fi. Disattivare Router Wi-Fi?"
+msgid "IDS_ST_NPBODY_NO_SERVICE"
+msgstr "Nessun servizio"
+
+msgid "IDS_ST_NPBODY_EMERGENCY_CALLS_ONLY_ABB"
+msgstr "Solo chiamate di emergenza"
 
-msgid "IDS_ASCAST_HEADER_SCREEN_MIRRORING"
-msgstr "Condivisione schermo"
+msgid "IDS_ST_HEADER_OUTDOOR"
+msgstr "All'aperto"
 
-msgid "IDS_QP_HEADER_REPLACE_QUICK_SETTING_BUTTON"
-msgstr "Sostituisce il pulsante di impostazione rapida"
+msgid "IDS_ST_BUTTON2_WI_FI_NTETHERING"
+msgstr "Tethering\nWi-Fi"
 
-msgid "IDS_QP_HEADER_ADD_QUICK_SETTING_BUTTON"
-msgstr "Aggiungete il pulsante di impostazione rapida"
+msgid "IDS_ST_BUTTON2_WI_FI_ABB"
+msgstr "Wi-Fi"
 
-msgid "IDS_QP_POP_YOU_WILL_NO_LONGER_BE_ABLE_TO_USE_APPLICATIONS_SUCH_AS_INTERNET_NOTI_MSG"
-msgstr "Non potrete più utilizzare applicazioni quali Internet ed E-mail con connessione dati. Continuare?"
+msgid "IDS_ST_BUTTON2_TORCH_ABB"
+msgstr "Torcia"
 
-msgid "IDS_QP_BUTTON2_SCREEN_N_MIRRORING"
-msgstr "Condiv.\nSchermo"
+msgid "IDS_ST_BUTTON2_POWER_NSAVING"
+msgstr "Rispar.\nen. av."
 
-msgid "IDS_COM_BODY_BUTTON_T_TTS"
-msgstr "Pulsante"
+msgid "IDS_ST_BUTTON2_MOBILE_NDATA"
+msgstr "Conness.\ndati"
 
-msgid "IDS_QP_BUTTON2_GPS"
+msgid "IDS_ST_BUTTON2_GPS_ABB"
 msgstr "GPS"
 
-msgid "IDS_QP_BUTTON_NOTIFICATION"
-msgstr "Notifica"
+msgid "IDS_ST_BUTTON2_FLIGHT_NMODE"
+msgstr "Modal.\noffline"
+
+msgid "IDS_ST_BUTTON2_BLUETOOTH_ABB"
+msgstr "Bluetooth"
+
+msgid "IDS_ST_BUTTON2_AUTO_NROTATE"
+msgstr "Rotaz.\nauto"
+
+msgid "IDS_ST_BODY_SIM_2"
+msgstr "SIM 2"
+
+msgid "IDS_ST_BODY_SIM_1"
+msgstr "SIM 1"
+
+msgid "IDS_ST_BODY_SCANNING_FOR_MOBILE_NETWORK_ING_ABB"
+msgstr "Ricerca di reti mobili in corso..."
+
+msgid "IDS_ST_BODY_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
+msgstr "Inserite una scheda SIM per accedere ai servizi di rete."
+
+msgid "IDS_ST_BODY_ALWAYS_ASK_ABB"
+msgstr "Chiedi sempre"
+
+msgid "IDS_SCP_BODY_UNABLE_TO_CONNECT_TO_MOBILE_NETWORKS_WHILE_FLIGHT_MODE_IS_ENABLED_CONNECT_TO_A_WI_FI_NETWORK_INSTEAD_OR_DISABLE_FLIGHT_MODE_AND_TRY_AGAIN"
+msgstr "Impossibile connettersi alle reti mobili se la Modalità offline è attivata. Connettetevi alla rete Wi-Fi o disattivate la Modalità offline e riprovate."
 
-msgid "IDS_COM_BUTTON_AGREE"
-msgstr "Accetto"
+msgid "IDS_COM_BODY_SEARCHING"
+msgstr "Ricerca"
 
-msgid "IDS_COM_BUTTON_DISAGREE"
-msgstr "Rifiuto"
+msgid "IDS_QP_TPOP_UNABLE_TO_OPEN_PS"
+msgstr "Impossibile aprire %s."
 
-msgid "IDS_ST_BODY_GPS_LOCATION_USE_CONTROLLED_BY_APPLICATIONS_MSG"
-msgstr "La posizione GPS e l'uso dei dati sulla posizione sono controllati dalle applicazioni utilizzate"
+msgid "IDS_QP_OPT_OUTDOORS_M_OUTDOOR_MODE_ABB"
+msgstr "All'aperto"
 
-msgid "IDS_ST_HEADER_USER_CONSENT"
-msgstr "Consenso utente"
+msgid "IDS_QP_BUTTON2_PRIVATE_NMODE_ABB"
+msgstr "Modalità\nprivata"
 
index b1c3f0b..70f10da 100755 (executable)
-msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
-msgstr "通知"
-
-msgid "IDS_WIFI_BODY_ALLSHARE_CAST"
-msgstr "AllShare Cast"
+msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
+msgstr "Wi-FiとWi-Fiテザリング両方は同時起動できません。Wi-Fiテザリングを無効にしますか?"
 
-msgid "IDS_CALL_POP_CALLING_EMERG_ONLY"
-msgstr "緊急通報のみ発信可能です。"
+msgid "IDS_TASKMGR_BUTTON_CLEAR_ALL"
+msgstr "全て消去"
 
-msgid "IDS_QP_BUTTON_ROTATION"
-msgstr "回転"
+msgid "IDS_IDLE_SBODY_TAP_HERE_TO_DISABLE_SAFE_MODE_ABB"
+msgstr "セーフモードを無効にするには、ここをタップ"
 
-msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
-msgstr "通知(%d)"
+msgid "IDS_IDLE_POP_UNABLE_TO_LAUNCH_PS"
+msgstr "%sを起動できません。"
 
-msgid "IDS_QP_BUTTON_VIBRATION"
-msgstr "バイブ"
+msgid "IDS_IDLE_MBODY_EMERGENCY_CALLS_ONLY"
+msgstr "緊急通報のみ発信可能"
 
-msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
-msgstr "サウンドとバイブ"
+msgid "IDS_IDLE_BODY_SEARCHING_ING"
+msgstr "検索中..."
 
-msgid "IDS_QP_TAB4_AUTO_ROTATION"
-msgstr "画面回転"
+msgid "IDS_IDLE_BODY_NO_SIM"
+msgstr "SIM未挿入"
 
-msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
-msgstr "回転ロック"
+msgid "IDS_IDLE_BODY_NO_SERVICE"
+msgstr "サービスが利用できません。"
 
-msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
-msgstr "マスストレージモード"
+msgid "IDS_IDLE_BODY_INVALID_SIM_CARD"
+msgstr "無効なSIMカードです。"
 
-msgid "IDS_QP_BUTTON_DISABLE"
-msgstr "ç\84¡å\8a¹"
+msgid "IDS_IDLE_BODY_EMERGENCY_CALLS_ONLY"
+msgstr "ç·\8aæ\80¥é\80\9aå ±ã\81®ã\81¿â\80\8bç\99ºä¿¡å\8f¯è\83½ã\81§ã\81\99ã\80\82"
 
-msgid "IDS_QP_BUTTON_ENABLE"
-msgstr "有効"
+msgid "IDS_QP_OPT_OUTDOORS_ABB"
+msgstr "アウトドア"
 
-msgid "IDS_COM_POP_UNSUPPORTED"
-msgstr "未対応です"
+msgid "IDS_QP_MBODY_SAFE_MODE_ENABLED"
+msgstr "セーフモードが有効"
 
-msgid "IDS_COM_SK_DISMISS"
-msgstr "無効"
+msgid "IDS_QP_HEADER_NOTIFICATIONS_HPD_ABB"
+msgstr "通知(%d件)"
 
-msgid "IDS_COM_POP_PELASE_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
-msgstr "ネットワークサービスを利用するにはSIMカードを挿入してください。"
+msgid "IDS_QP_HEADER_CLEAR_ALL_ABB"
+msgstr "全て消去"
 
-msgid "IDS_COM_BODY_DO_NOT_ASK_AGAIN"
-msgstr "今後表示しない"
+msgid "IDS_QP_BUTTON_NOTIFICATION"
+msgstr "通知"
 
-msgid "IDS_QP_POP_INSERT_SIM_CARD_AND_RESTART_DEVICE_TO_USE_TETHERING"
-msgstr "テザリングを使用するには、SIMカードを挿入し、端末を再起動してください。"
+msgid "IDS_QP_BUTTON_ALWAYS_ASK_ABB"
+msgstr "毎回確認"
 
-msgid "IDS_QP_POP_CONNECTING_VIA_PACKET_DATA_MAY_INCUR_ADDITIONAL_CHARGES_CONTINUE_Q"
-msgstr "モバイルデータ接続では、高額の料金が発生する場合があります。続行しますか?"
+msgid "IDS_QP_BUTTON2_WI_FI"
+msgstr "Wi-Fi"
 
-msgid "IDS_QP_BODY_AUTO"
-msgstr "自動"
+msgid "IDS_QP_BUTTON2_VIBRATE"
+msgstr "バイブ"
 
-msgid "IDS_QP_TAB_POWER_SAVING"
-msgstr "省電力"
+msgid "IDS_QP_BUTTON2_U_POWER_NSAVING_ABB"
+msgstr "ウルトラ\n省電力モード"
 
-msgid "IDS_QP_TAB_TETHERING"
+msgid "IDS_QP_BUTTON2_TETHERING"
 msgstr "テザリング"
 
-msgid "IDS_QP_TAB_MOBILE_DATA"
+msgid "IDS_QP_BUTTON2_SOUND_ABB"
+msgstr "サウンド"
+
+msgid "IDS_QP_BUTTON2_SOUND"
+msgstr "サウンド"
+
+msgid "IDS_QP_BUTTON2_PRIVATE_MODE"
+msgstr "プライベートモード"
+
+msgid "IDS_QP_BUTTON2_POWER_N_SAVING"
+msgstr "省電力\nモード"
+
+msgid "IDS_QP_BUTTON2_MUTE_ABB"
+msgstr "消音"
+
+msgid "IDS_QP_BUTTON2_MOBILE_DATA"
 msgstr "モバイル​データ"
 
-msgid "IDS_QP_TAB_DRIVING_MODE"
-msgstr "クルマモード"
+msgid "IDS_QP_BUTTON2_LOCATION_ABB"
+msgstr "位置情報"
 
-msgid "IDS_COM_POP_UNABLE_TO_CONNECT_TO_MOBILE_NETWORK_WHILE_FLIGHT_MODE_IS_ENABLED_MSG"
-msgstr "機内モードが有効な間は、モバイルネットワークに接続できません。代わりにWi-Fiネットワークに接続するか、機内モードを無効にして、再度実行してください。"
+msgid "IDS_QP_BUTTON2_FLIGHT_N_MODE"
+msgstr "機内モード"
 
-msgid "IDS_QP_POP_WI_FI_TETHERING_CONSUMES_MORE_BATTERY_POWER_AND_INCREASES_YOUR_DATA_USAGE_CONTINUE_Q"
-msgstr "Wi-Fiテザリングはバッテリーをより多く消費し、データ使用量が増加します。続行しますか?"
+msgid "IDS_QP_BUTTON2_BLUETOOTH"
+msgstr "Bluetooth"
 
-msgid "IDS_QP_POP_DISABLE_TETHERING_TO_USE_WI_FI"
-msgstr "Wi-Fiを使用するには、テザリングを無効にしてください。"
+msgid "IDS_QP_BUTTON2_AUTO_ROTATE"
+msgstr "自動回転"
 
-msgid "IDS_QP_POP_TO_ENABLE_POWER_SAVING_MODE_ENABLE_AT_LEAST_ONE_RELEVANT_FUNCTION"
-msgstr "省電力モードを有効にするには、少なくとも1つの関連機能を選択してください。"
+msgid "IDS_QP_BUTTON2_ASSISTIVE_NLIGHT"
+msgstr "補助\nライト"
 
-msgid "IDS_QP_POP_TURN_OFF_WI_FI_TO_USE_TETHERING"
-msgstr "テザリングを使用するには、Wi-FiをOFFにしてください。"
+msgid "IDS_QP_BODY_PM_ABB"
+msgstr "PM"
 
-msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
-msgstr "Wi-FiとWi-Fiテザリング両方は同時起動できません。Wi-Fiテザリングを無効にしますか?"
+msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
+msgstr "通知"
+
+msgid "IDS_QP_BODY_AM_ABB"
+msgstr "AM"
 
-msgid "IDS_ASCAST_HEADER_SCREEN_MIRRORING"
-msgstr "Screen Mirroring"
+msgid "IDS_ST_TPOP_UNABLE_TO_MAKE_VOICE_CALLS_VIDEO_CALLS_AND_SEND_TEXT_MESSAGES_USING_PS"
+msgstr "%sを使用して音声通話やビデオコールを発信、およびテキストメッセージを送信することはできません。"
 
-msgid "IDS_QP_HEADER_REPLACE_QUICK_SETTING_BUTTON"
-msgstr "クイック設定ボタンを置き換え"
+msgid "IDS_ST_TPOP_SELECT_SIM_CARD_FOR_OUTGOING_VOICE_CALLS_VIDEO_CALLS_AND_TEXT_MESSAGES"
+msgstr "音声通話とビデオコールの発信、およびテキストメッセージの送信に使用するSIMカードを選択してください。"
 
-msgid "IDS_QP_HEADER_ADD_QUICK_SETTING_BUTTON"
-msgstr "クイック設定ボタンを追加"
+msgid "IDS_ST_TPOP_OUTGOING_VOICE_CALLS_VIDEO_CALLS_AND_TEXT_MESSAGES_WILL_BE_MADE_USING_THE_PS_SIM_CARD"
+msgstr "%s SIMカードを使用して、音声電話やビデオコールの発信、およびテキストメッセージの送信を行います。"
 
-msgid "IDS_QP_POP_YOU_WILL_NO_LONGER_BE_ABLE_TO_USE_APPLICATIONS_SUCH_AS_INTERNET_NOTI_MSG"
-msgstr "モバイルネットワークで、ブラウザやEメールなどのアプリケーションが使用できなくなります。続行しますか?"
+msgid "IDS_ST_SK_OK"
+msgstr "OK"
 
-msgid "IDS_QP_BUTTON2_SCREEN_N_MIRRORING"
-msgstr "Screen\nMirroring"
+msgid "IDS_ST_SK_NO"
+msgstr "いいえ"
 
-msgid "IDS_COM_BODY_BUTTON_T_TTS"
-msgstr "ボタン"
+msgid "IDS_ST_POP_UNABLE_TO_INCREASE_BRIGHTNESS_FURTHER_BECAUSE_OF_PHONE_OVERHEATING"
+msgstr "端末が過熱しているため、これ以上明るさを上げることができません。"
 
-msgid "IDS_QP_BUTTON2_GPS"
+msgid "IDS_ST_NPBODY_NO_SERVICE"
+msgstr "サービスが利用できません"
+
+msgid "IDS_ST_NPBODY_EMERGENCY_CALLS_ONLY_ABB"
+msgstr "緊急通報のみ発信可能です"
+
+msgid "IDS_ST_HEADER_OUTDOOR"
+msgstr "アウトドアモード"
+
+msgid "IDS_ST_BUTTON2_WI_FI_NTETHERING"
+msgstr "Wi-Fi\nテザリング"
+
+msgid "IDS_ST_BUTTON2_WI_FI_ABB"
+msgstr "Wi-Fi"
+
+msgid "IDS_ST_BUTTON2_TORCH_ABB"
+msgstr "トーチ"
+
+msgid "IDS_ST_BUTTON2_POWER_NSAVING"
+msgstr "省電力\nモード"
+
+msgid "IDS_ST_BUTTON2_MOBILE_NDATA"
+msgstr "モバイル\nデータ"
+
+msgid "IDS_ST_BUTTON2_GPS_ABB"
 msgstr "GPS"
 
-msgid "IDS_QP_BUTTON_NOTIFICATION"
-msgstr "通知"
+msgid "IDS_ST_BUTTON2_FLIGHT_NMODE"
+msgstr "機内\nモード"
+
+msgid "IDS_ST_BUTTON2_BLUETOOTH_ABB"
+msgstr "Bluetooth"
+
+msgid "IDS_ST_BUTTON2_AUTO_NROTATE"
+msgstr "自動\n回転"
+
+msgid "IDS_ST_BODY_SIM_2"
+msgstr "SIM2"
+
+msgid "IDS_ST_BODY_SIM_1"
+msgstr "SIM1"
+
+msgid "IDS_ST_BODY_SCANNING_FOR_MOBILE_NETWORK_ING_ABB"
+msgstr "モバイルネットワークをスキャン中..."
+
+msgid "IDS_ST_BODY_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
+msgstr "ネットワークサービスを利用するにはSIMカードを挿入してください。"
+
+msgid "IDS_ST_BODY_ALWAYS_ASK_ABB"
+msgstr "毎回確認"
+
+msgid "IDS_SCP_BODY_UNABLE_TO_CONNECT_TO_MOBILE_NETWORKS_WHILE_FLIGHT_MODE_IS_ENABLED_CONNECT_TO_A_WI_FI_NETWORK_INSTEAD_OR_DISABLE_FLIGHT_MODE_AND_TRY_AGAIN"
+msgstr "機内モードが有効な間は、モバイルネットワークに接続できません。Wi-Fiネットワークに接続するか、機内モードを無効にし、再度実行してください。"
 
-msgid "IDS_COM_BUTTON_AGREE"
-msgstr "同意"
+msgid "IDS_COM_BODY_SEARCHING"
+msgstr "検索しています。"
 
-msgid "IDS_COM_BUTTON_DISAGREE"
-msgstr "同意しない"
+msgid "IDS_QP_TPOP_UNABLE_TO_OPEN_PS"
+msgstr "%sを起動できません。"
 
-msgid "IDS_ST_BODY_GPS_LOCATION_USE_CONTROLLED_BY_APPLICATIONS_MSG"
-msgstr "GPSからの位置情報取得は、使用するアプリケーションによって管理されます。"
+msgid "IDS_QP_OPT_OUTDOORS_M_OUTDOOR_MODE_ABB"
+msgstr "アウトドア"
 
-msgid "IDS_ST_HEADER_USER_CONSENT"
-msgstr "ユーザー同意"
+msgid "IDS_QP_BUTTON2_PRIVATE_NMODE_ABB"
+msgstr "プライベート\nモード"
 
index b594ea9..169952a 100755 (executable)
--- a/po/ka.po
+++ b/po/ka.po
-msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
-msgstr "შეტყობინებები"
+msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
+msgstr "Wi-Fi და Mobile AP ვერ გააქტიურდება ერთიდაიმავე დროს. გამოირთოს Mobile AP?"
 
-msgid "IDS_WIFI_BODY_ALLSHARE_CAST"
-msgstr "AllShare Cast"
+msgid "IDS_TASKMGR_BUTTON_CLEAR_ALL"
+msgstr "ყველას წაშლა"
 
-msgid "IDS_CALL_POP_CALLING_EMERG_ONLY"
-msgstr "მხოლოდ გადაუდებელი ზარები"
+msgid "IDS_IDLE_SBODY_TAP_HERE_TO_DISABLE_SAFE_MODE_ABB"
+msgstr "შეხებით გამორთეთ უსაფრთხო რეჟ."
+
+msgid "IDS_IDLE_POP_UNABLE_TO_LAUNCH_PS"
+msgstr "ვერ გაიხსნება %s."
+
+msgid "IDS_IDLE_MBODY_EMERGENCY_CALLS_ONLY"
+msgstr "მხოლოდ საგანგებო ზარები"
+
+msgid "IDS_IDLE_BODY_SEARCHING_ING"
+msgstr "იძებნება..."
+
+msgid "IDS_IDLE_BODY_NO_SIM"
+msgstr "SIM არაა"
 
-msgid "IDS_QP_BUTTON_ROTATION"
-msgstr "á\83\91á\83 á\83£á\83\9cá\83\95á\83\90"
+msgid "IDS_IDLE_BODY_NO_SERVICE"
+msgstr "á\83\9bá\83\9dá\83\9bá\83¡á\83\90á\83®á\83£á\83 á\83\94á\83\91á\83\90 á\83\90á\83  á\83\90á\83 á\83\98á\83¡"
 
-msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
+msgid "IDS_IDLE_BODY_INVALID_SIM_CARD"
+msgstr "SIM ბარათი უმოქმედოა."
+
+msgid "IDS_IDLE_BODY_EMERGENCY_CALLS_ONLY"
+msgstr "მხოლოდ გადაუდებელი ზარები."
+
+msgid "IDS_QP_OPT_OUTDOORS_ABB"
+msgstr "გარეთ"
+
+msgid "IDS_QP_MBODY_SAFE_MODE_ENABLED"
+msgstr "საგანგებო რეჟიმი ჩართულია"
+
+msgid "IDS_QP_HEADER_NOTIFICATIONS_HPD_ABB"
 msgstr "შეტყობინებები (%d)"
 
-msgid "IDS_QP_BUTTON_VIBRATION"
+msgid "IDS_QP_HEADER_CLEAR_ALL_ABB"
+msgstr "წაშლა"
+
+msgid "IDS_QP_BUTTON_NOTIFICATION"
+msgstr "შეტყობინება"
+
+msgid "IDS_QP_BUTTON_ALWAYS_ASK_ABB"
+msgstr "ყოველთვის მკითხე"
+
+msgid "IDS_QP_BUTTON2_WI_FI"
+msgstr "Wi-Fi"
+
+msgid "IDS_QP_BUTTON2_VIBRATE"
 msgstr "ვიბრაცია"
 
-msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
-msgstr "á\83®á\83\9bá\83\90 á\83\93á\83\90 á\83\95á\83\98á\83\91á\83 á\83\90á\83ªá\83\98ა"
+msgid "IDS_QP_BUTTON2_U_POWER_NSAVING_ABB"
+msgstr "á\83\94á\83\9cá\83\94á\83 á\83\92á\83\98á\83\98á\83¡\ná\83\93á\83\90á\83\96á\83\9dá\83\92á\83\95ა"
 
-msgid "IDS_QP_TAB4_AUTO_ROTATION"
-msgstr "á\83\90á\83\95á\83¢á\83\9d. á\83\9bá\83\9dá\83\91á\83 á\83£á\83\9cá\83\94á\83\91á\83\90"
+msgid "IDS_QP_BUTTON2_TETHERING"
+msgstr "á\83\9bá\83\9dá\83\91á\83\98á\83\9aá\83£á\83 á\83\98 á\83\98á\83\9cá\83¢á\83\94á\83 á\83\9cá\83\94á\83¢á\83\98"
 
-msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
-msgstr "á\83\91á\83 á\83£á\83\9cá\83\95á\83\98á\83¡ á\83\93á\83\90á\83\91á\83\9aá\83\9dá\83\99á\83\95ა"
+msgid "IDS_QP_BUTTON2_SOUND_ABB"
+msgstr "á\83®á\83\9bა"
 
-msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
-msgstr "á\83\9bá\83\90á\83¡á\83\98á\83£á\83 á\83\98 á\83\9bá\83\94á\83®á\83¡á\83\98á\83\94á\83 á\83\94á\83\91á\83\98á\83¡ á\83 á\83\94á\83\9f."
+msgid "IDS_QP_BUTTON2_SOUND"
+msgstr "á\83®á\83\9bá\83\90"
 
-msgid "IDS_QP_BUTTON_DISABLE"
-msgstr "á\83\92á\83\90á\83\9bá\83\9dá\83 á\83\97á\83\95á\83\90"
+msgid "IDS_QP_BUTTON2_PRIVATE_MODE"
+msgstr "á\83\9eá\83\94á\83 á\83¡á\83\9dá\83\9cá\83\90á\83\9aá\83£á\83 á\83\98 á\83 á\83\94á\83\9f."
 
-msgid "IDS_QP_BUTTON_ENABLE"
-msgstr "á\83\92á\83\90á\83\90á\83¥á\83¢á\83\98á\83£á\83 á\83\94á\83\91ა"
+msgid "IDS_QP_BUTTON2_POWER_N_SAVING"
+msgstr "á\83\93á\83\90á\83\96á\83\9dá\83\92á\83\94á\83\97\ná\83\94á\83\9cá\83\94á\83 á\83\92á\83\98ა"
 
-msgid "IDS_COM_POP_UNSUPPORTED"
-msgstr "á\83\92á\83\90á\83£á\83\97á\83\95á\83\90á\83\9aá\83\98á\83¡á\83¬á\83\98á\83\9cá\83\94á\83\91á\83\94á\83\9aá\83\98"
+msgid "IDS_QP_BUTTON2_MUTE_ABB"
+msgstr "á\83£á\83®á\83\9bá\83\9d"
 
-msgid "IDS_COM_SK_DISMISS"
-msgstr "á\83£á\83\90á\83 á\83§á\83\9dá\83¤á\83\90"
+msgid "IDS_QP_BUTTON2_MOBILE_DATA"
+msgstr "á\83\9bá\83\9dá\83\91á\83\98á\83\9a.\ná\83\9bá\83\9dá\83\9cá\83\90á\83ªá\83\94á\83\9b."
 
-msgid "IDS_COM_POP_PELASE_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
-msgstr "á\83¥á\83¡á\83\94á\83\9aá\83\98á\83¡ á\83\9bá\83\9dá\83\9bá\83¡á\83\90á\83®á\83£á\83 á\83\94á\83\91á\83\98á\83¡ á\83\9bá\83\98á\83¡á\83\90á\83¦á\83\94á\83\91á\83\90á\83\93 á\83©á\83\90á\83¡á\83\95á\83\98á\83\97 SIM á\83\91á\83\90á\83 á\83\90á\83\97á\83\98"
+msgid "IDS_QP_BUTTON2_LOCATION_ABB"
+msgstr "á\83\9aá\83\9dá\83\99á\83\90á\83ªá\83\98á\83\90"
 
-msgid "IDS_COM_BODY_DO_NOT_ASK_AGAIN"
-msgstr "á\83\90á\83¦á\83\90á\83  á\83\9bá\83\99á\83\98á\83\97á\83®á\83\9d"
+msgid "IDS_QP_BUTTON2_FLIGHT_N_MODE"
+msgstr "á\83¤á\83 á\83\94á\83\9cá\83\98á\83¡\ná\83 á\83\94á\83\9fá\83\98á\83\9bá\83\98"
 
-msgid "IDS_QP_POP_INSERT_SIM_CARD_AND_RESTART_DEVICE_TO_USE_TETHERING"
-msgstr "ჩადეთ SIM და გადატვირთეთ აპარატი, რომ გამოიყენოთ მობილური ინტერნეტი კომპიუტერში"
+msgid "IDS_QP_BUTTON2_BLUETOOTH"
+msgstr "Bluetooth"
 
-msgid "IDS_QP_POP_CONNECTING_VIA_PACKET_DATA_MAY_INCUR_ADDITIONAL_CHARGES_CONTINUE_Q"
-msgstr "á\83\9bá\83\9dá\83\9cá\83\90á\83ªá\83\94á\83\9bá\83\97á\83\90 á\83\9eá\83\90á\83\99á\83\94á\83¢á\83\98á\83\97 á\83\99á\83\90á\83\95á\83¨á\83\98á\83 á\83\98á\83¡á\83\97á\83\95á\83\98á\83¡ á\83¨á\83\94á\83\98á\83«á\83\9aá\83\94á\83\91á\83\90 á\83\93á\83\90á\83\9bá\83\90á\83¢á\83\94á\83\91á\83\98á\83\97á\83\98 á\83\92á\83\90á\83\93á\83\90á\83¡á\83\90á\83®á\83\90á\83\93á\83\98 á\83\98á\83§á\83\9dá\83¡. á\83\92á\83\90á\83\9cá\83\90á\83\92á\83 á\83«á\83\9dá\83\91á\83\97?"
+msgid "IDS_QP_BUTTON2_AUTO_ROTATE"
+msgstr "á\83\90á\83\95á\83¢á\83\9dá\83\9bá\83\90á\83¢á\83£á\83 á\83\98 á\83\91á\83 á\83£á\83\9cá\83\95á\83\90"
 
-msgid "IDS_QP_BODY_AUTO"
-msgstr "á\83\90á\83\95á\83¢á\83\9dá\83\9bá\83\90á\83¢á\83£რი"
+msgid "IDS_QP_BUTTON2_ASSISTIVE_NLIGHT"
+msgstr "á\83\93á\83\90á\83\9bá\83®á\83\9bá\83\90á\83 á\83\94\ná\83¤á\83\90á\83\9cá\83\90რი"
 
-msgid "IDS_QP_TAB_POWER_SAVING"
-msgstr "ენერგიის დაზოგვა"
+msgid "IDS_QP_BODY_PM_ABB"
+msgstr "PM"
 
-msgid "IDS_QP_TAB_TETHERING"
-msgstr "á\83\9bá\83\98á\83\91á\83\9bá\83\90"
+msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
+msgstr "á\83¨á\83\94á\83¢á\83§á\83\9dá\83\91á\83\98á\83\9cá\83\94á\83\91á\83\94á\83\91á\83\98"
 
-msgid "IDS_QP_TAB_MOBILE_DATA"
-msgstr "მობილური მონაცემები"
+msgid "IDS_QP_BODY_AM_ABB"
+msgstr "AM"
 
-msgid "IDS_QP_TAB_DRIVING_MODE"
-msgstr "მანქანის მართვის რეჟიმი"
+msgid "IDS_ST_TPOP_UNABLE_TO_MAKE_VOICE_CALLS_VIDEO_CALLS_AND_SEND_TEXT_MESSAGES_USING_PS"
+msgstr "%s–ის საშუალებით ვერ გაგზავნით ხმოვან ზარებს, ვიდეო ზარებს და.ტექსტურ წერილებს."
 
-msgid "IDS_COM_POP_UNABLE_TO_CONNECT_TO_MOBILE_NETWORK_WHILE_FLIGHT_MODE_IS_ENABLED_MSG"
-msgstr "á\83\9bá\83\9dá\83\91á\83\98á\83\9aá\83£á\83  á\83¥á\83¡á\83\94á\83\9aá\83\94á\83\91á\83¡ á\83\95á\83\94á\83  á\83\93á\83\90á\83£á\83\99á\83\90á\83\95á\83¨á\83\98á\83 á\83\93á\83\94á\83\91á\83\98á\83\97, á\83¡á\83\90á\83\9cá\83\90á\83\9b á\83©á\83\90á\83 á\83\97á\83£á\83\9aá\83\98á\83\90 á\83¤á\83 á\83\94á\83\9cá\83\98á\83¡ á\83 á\83\94á\83\9fá\83\98á\83\9bá\83\98. á\83¡á\83\90á\83\9cá\83\90á\83ªá\83\95á\83\9aá\83\9dá\83\93, á\83\93á\83\90á\83£á\83\99á\83\90á\83\95á\83¨á\83\98á\83 á\83\93á\83\98á\83\97 Wi-Fi á\83¥á\83¡á\83\94á\83\9aá\83¡, á\83\90á\83\9c á\83\92á\83\90á\83\9bá\83\9dá\83 á\83\97á\83\94á\83\97 á\83¤á\83 á\83\94á\83\9cá\83\98á\83¡ á\83 á\83\94á\83\9fá\83\98á\83\9bá\83\98 á\83\93á\83\90 á\83\98á\83¡á\83\94á\83\95 á\83ªá\83\90á\83\93á\83\94á\83\97"
+msgid "IDS_ST_TPOP_SELECT_SIM_CARD_FOR_OUTGOING_VOICE_CALLS_VIDEO_CALLS_AND_TEXT_MESSAGES"
+msgstr "á\83\90á\83\98á\83 á\83©á\83\98á\83\94á\83\97 SIM á\83\91á\83\90á\83 á\83\90á\83\97á\83\98 á\83\92á\83\90á\83\9bá\83\90á\83\95á\83\90á\83\9aá\83\98 á\83®á\83\9bá\83\9dá\83\95á\83\90á\83\9cá\83\98 á\83\96á\83\90á\83 á\83\94á\83\91á\83\98á\83¡á\83\97á\83\95á\83\98á\83¡, á\83\95á\83\98á\83\93á\83\94á\83\9d á\83\96á\83\90á\83 á\83\94á\83\91á\83\98á\83¡á\83\97á\83\95á\83\98á\83¡ á\83\93á\83\90 á\83¢á\83\94á\83¥á\83¡á\83¢á\83£á\83 á\83\98 á\83¬á\83\94á\83 á\83\98á\83\9aá\83\94á\83\91á\83\98á\83¡á\83\97á\83\98á\83¡."
 
-msgid "IDS_QP_POP_WI_FI_TETHERING_CONSUMES_MORE_BATTERY_POWER_AND_INCREASES_YOUR_DATA_USAGE_CONTINUE_Q"
-msgstr "Wi-Fi მობილური ინტერნეტი ხარჯავს უფო მეტ ენერგიას და ზრდის მონაცემთა გამოყენებას. განაგრძობთ?"
+msgid "IDS_ST_TPOP_OUTGOING_VOICE_CALLS_VIDEO_CALLS_AND_TEXT_MESSAGES_WILL_BE_MADE_USING_THE_PS_SIM_CARD"
+msgstr "გამავალი ხმოვანი ზარები, ვიდეო ზარები და ტექსტური შეტყობინებები განხორციელდება %s SIM ბარათით."
 
-msgid "IDS_QP_POP_DISABLE_TETHERING_TO_USE_WI_FI"
-msgstr "á\83\92á\83\90á\83\9bá\83\9dá\83 á\83\97á\83\94á\83\97 á\83\9bá\83\9dá\83\91á\83\98á\83\9aá\83£á\83 á\83\98 á\83\98á\83\9cá\83¢á\83\94á\83 á\83\9cá\83\94á\83¢á\83\98 á\83\99á\83\9dá\83\9bá\83\9eá\83\98á\83£á\83¢á\83\94á\83 á\83¨á\83\98, á\83 á\83\9dá\83\9b á\83©á\83\90á\83 á\83\97á\83\9dá\83\97 Wi-Fi"
+msgid "IDS_ST_SK_OK"
+msgstr "á\83\99á\83\98"
 
-msgid "IDS_QP_POP_TO_ENABLE_POWER_SAVING_MODE_ENABLE_AT_LEAST_ONE_RELEVANT_FUNCTION"
-msgstr "á\83\94á\83\9cá\83\94á\83 á\83\92á\83\98á\83\98á\83¡ á\83\93á\83\90á\83\96á\83\9dá\83\92á\83\95á\83\98á\83¡ á\83 á\83\94á\83\9fá\83\98á\83\9bá\83\98á\83¡ á\83\92á\83\90á\83¡á\83\90á\83\90á\83¥á\83¢á\83\98á\83£á\83 á\83\94á\83\91á\83\9aá\83\90á\83\93, á\83©á\83\90á\83 á\83\97á\83\94á\83\97 á\83\9bá\83\98á\83\9cá\83\98á\83\9bá\83£á\83\9b á\83\94á\83 á\83\97á\83\98 á\83¨á\83\94á\83¡á\83\90á\83\91á\83\90á\83\9bá\83\98á\83¡á\83\98 á\83¤á\83£á\83\9cá\83¥á\83ªá\83\98ა"
+msgid "IDS_ST_SK_NO"
+msgstr "á\83\90á\83 ა"
 
-msgid "IDS_QP_POP_TURN_OFF_WI_FI_TO_USE_TETHERING"
-msgstr "á\83\92á\83\90á\83\9bá\83\9dá\83 á\83\97á\83\94á\83\97 Wi-Fi, á\83 á\83\9dá\83\9b á\83\92á\83\90á\83\9bá\83\9dá\83\98á\83§á\83\94á\83\9cá\83\9dá\83\97 á\83\9bá\83\9dá\83\91á\83\98á\83\9aá\83£á\83 á\83\98 á\83\98á\83\9cá\83¢á\83\94á\83 á\83\9cá\83\94á\83¢á\83\98 á\83\99á\83\9dá\83\9bá\83\9eá\83\98á\83£á\83¢á\83\94á\83 á\83¨á\83\98"
+msgid "IDS_ST_POP_UNABLE_TO_INCREASE_BRIGHTNESS_FURTHER_BECAUSE_OF_PHONE_OVERHEATING"
+msgstr "á\83\92á\83\90á\83\9cá\83\90á\83\97á\83\94á\83\91á\83£á\83\9aá\83\9dá\83\91á\83\90á\83¡ á\83\95á\83\94á\83¦á\83\90á\83  á\83\92á\83\90á\83\96á\83 á\83\93á\83\98á\83\97, á\83¢á\83\94á\83\9aá\83\94á\83¤á\83\9dá\83\9cá\83\98á\83¡ á\83\92á\83\90á\83\93á\83\90á\83®á\83£á\83 á\83\94á\83\91á\83\98á\83¡ á\83¡á\83\90á\83¨á\83\98á\83¨á\83 á\83\9dá\83\94á\83\91á\83\98á\83¡ á\83\92á\83\90á\83\9bá\83\9d."
 
-msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
-msgstr "Wi-Fi და Mobile AP ვერ გააქტიურდება ერთიდაიმავე დროს. გამოირთოს Mobile AP?"
+msgid "IDS_ST_NPBODY_NO_SERVICE"
+msgstr "სერვისი არ არის"
 
-msgid "IDS_ASCAST_HEADER_SCREEN_MIRRORING"
-msgstr "Screen Mirroring"
+msgid "IDS_ST_NPBODY_EMERGENCY_CALLS_ONLY_ABB"
+msgstr "მხოლოდ გადაუდებელი ზარები"
+
+msgid "IDS_ST_HEADER_OUTDOOR"
+msgstr "გარეთ"
 
-msgid "IDS_QP_HEADER_REPLACE_QUICK_SETTING_BUTTON"
-msgstr "პარამეტრების სწრაფი დაყენების ღილაკის გამოცვლა"
+msgid "IDS_ST_BUTTON2_WI_FI_NTETHERING"
+msgstr "Wi-Fi\nწერტილი"
 
-msgid "IDS_QP_HEADER_ADD_QUICK_SETTING_BUTTON"
-msgstr "პარამეტრების სწრაფი დაყენების ღილაკის დამატება"
+msgid "IDS_ST_BUTTON2_WI_FI_ABB"
+msgstr "Wi-Fi"
 
-msgid "IDS_QP_POP_YOU_WILL_NO_LONGER_BE_ABLE_TO_USE_APPLICATIONS_SUCH_AS_INTERNET_NOTI_MSG"
-msgstr "á\83\9bá\83\9dá\83\91á\83\98á\83\9aá\83£á\83 á\83\98 á\83¥á\83¡á\83\94á\83\9aá\83\94á\83\91á\83\98á\83\97 á\83\95á\83\94á\83¦á\83\90á\83  á\83¨á\83\94á\83«á\83\9aá\83\94á\83\91á\83\97 á\83\98á\83¡á\83\94á\83\97á\83\98 á\83\9eá\83 á\83\9dá\83\92á\83 á\83\90á\83\9bá\83\94á\83\91á\83\98á\83¡ á\83\92á\83\90á\83\9bá\83\9dá\83§á\83\94á\83\9cá\83\94á\83\91á\83\90á\83¡, á\83 á\83\9dá\83\92á\83\9dá\83 á\83\98á\83ªá\83\90á\83\90 á\83\98á\83\9cá\83¢á\83\94á\83 á\83\9cá\83\94á\83¢á\83\98 á\83\93á\83\90 á\83\94á\83\9a\83¤á\83\9dá\83¡á\83¢á\83\90. á\83\92á\83\90á\83\9cá\83\90á\83\92á\83 á\83«á\83\9dá\83\91á\83\97?"
+msgid "IDS_ST_BUTTON2_TORCH_ABB"
+msgstr "á\83¤á\83\90á\83\9cá\83\90á\83 á\83\98"
 
-msgid "IDS_QP_BUTTON2_SCREEN_N_MIRRORING"
-msgstr "Screen\nMirroring"
+msgid "IDS_ST_BUTTON2_POWER_NSAVING"
+msgstr "ენერგიის\nდაზოგვა"
 
-msgid "IDS_COM_BODY_BUTTON_T_TTS"
-msgstr "á\83¦á\83\98á\83\9aá\83\90á\83\99á\83\98"
+msgid "IDS_ST_BUTTON2_MOBILE_NDATA"
+msgstr "á\83\9bá\83\9dá\83\91á\83\98á\83\9aá\83£á\83 á\83\98\ná\83\9bá\83\9dá\83\9cá\83\90á\83ªá\83\94á\83\9b."
 
-msgid "IDS_QP_BUTTON2_GPS"
+msgid "IDS_ST_BUTTON2_GPS_ABB"
 msgstr "GPS"
 
-msgid "IDS_QP_BUTTON_NOTIFICATION"
-msgstr "შეტყობინება"
+msgid "IDS_ST_BUTTON2_FLIGHT_NMODE"
+msgstr "ფრენის\nრეჟიმი"
+
+msgid "IDS_ST_BUTTON2_BLUETOOTH_ABB"
+msgstr "Bluetooth"
+
+msgid "IDS_ST_BUTTON2_AUTO_NROTATE"
+msgstr "ავტო\nბრუნვა"
+
+msgid "IDS_ST_BODY_SIM_2"
+msgstr "SIM 2"
+
+msgid "IDS_ST_BODY_SIM_1"
+msgstr "SIM 1"
+
+msgid "IDS_ST_BODY_SCANNING_FOR_MOBILE_NETWORK_ING_ABB"
+msgstr "იძებნება მობილური ქსელი..."
+
+msgid "IDS_ST_BODY_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
+msgstr "ქსელის მომსახურების მისაღებად ჩასვით SIM ბარათი."
+
+msgid "IDS_ST_BODY_ALWAYS_ASK_ABB"
+msgstr "ნებართვით"
+
+msgid "IDS_SCP_BODY_UNABLE_TO_CONNECT_TO_MOBILE_NETWORKS_WHILE_FLIGHT_MODE_IS_ENABLED_CONNECT_TO_A_WI_FI_NETWORK_INSTEAD_OR_DISABLE_FLIGHT_MODE_AND_TRY_AGAIN"
+msgstr "მობილურ ქსელებთან დაკავშირება შეუძლებელია, სანამ აქტიურია ფრენის რეჟიმი. სანაცვლოდ, დაუკავშირდით Wi-Fi ქსელს, ან გამორთეთ ფრენის რეჟიმი და ისევ სცადეთ."
 
-msgid "IDS_COM_BUTTON_AGREE"
-msgstr "á\83\97á\83\90á\83\9cá\83®á\83\9bá\83\9dბა"
+msgid "IDS_COM_BODY_SEARCHING"
+msgstr "á\83\98á\83«á\83\94á\83\91á\83\9cá\83\94ბა"
 
-msgid "IDS_COM_BUTTON_DISAGREE"
-msgstr "არ ვეთანხმები"
+msgid "IDS_QP_TPOP_UNABLE_TO_OPEN_PS"
+msgstr "%s ვერ იხსნება."
 
-msgid "IDS_ST_BODY_GPS_LOCATION_USE_CONTROLLED_BY_APPLICATIONS_MSG"
-msgstr "GPS ლოკაცია და თქვენი ლოკაციის მონაცემების გამოყენება იმართება თქვენს მიერ გამოყენებული პროგრამების მიერ"
+msgid "IDS_QP_OPT_OUTDOORS_M_OUTDOOR_MODE_ABB"
+msgstr "გარეთ"
 
-msgid "IDS_ST_HEADER_USER_CONSENT"
-msgstr "á\83\9bá\83\9dá\83\9bá\83®á\83\9bá\83\90á\83 á\83\94á\83\91á\83\9aá\83\98á\83¡ á\83\97á\83\90á\83\9cá\83®á\83\9bá\83\9dá\83\91á\83\90"
+msgid "IDS_QP_BUTTON2_PRIVATE_NMODE_ABB"
+msgstr "á\83\9eá\83\98á\83 á\83\90á\83\93á\83\98\ná\83 á\83\94á\83\9fá\83\98á\83\9bá\83\98"
 
index 755b80a..03b4aa6 100755 (executable)
--- a/po/kk.po
+++ b/po/kk.po
-msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
-msgstr "Хабарландыру"
+msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
+msgstr "Wi-Fi және Mobile AP екеуін де бір уақытта іске қосу мүмкін емес. Mobile AP мүмкіндігін өшіру керек пе?"
+
+msgid "IDS_TASKMGR_BUTTON_CLEAR_ALL"
+msgstr "Барлығын өшіру"
+
+msgid "IDS_IDLE_SBODY_TAP_HERE_TO_DISABLE_SAFE_MODE_ABB"
+msgstr "Қау.реж.өш.ү/н мына жерді түрт."
+
+msgid "IDS_IDLE_POP_UNABLE_TO_LAUNCH_PS"
+msgstr "%s іске қосу мүмкін емес."
+
+msgid "IDS_IDLE_MBODY_EMERGENCY_CALLS_ONLY"
+msgstr "Тек төтенше қоңыраулар"
+
+msgid "IDS_IDLE_BODY_SEARCHING_ING"
+msgstr "Іздеуде...."
+
+msgid "IDS_IDLE_BODY_NO_SIM"
+msgstr "SIM жоқ"
 
-msgid "IDS_WIFI_BODY_ALLSHARE_CAST"
-msgstr "AllShare Cast"
+msgid "IDS_IDLE_BODY_NO_SERVICE"
+msgstr "Қызмет жоқ"
 
-msgid "IDS_CALL_POP_CALLING_EMERG_ONLY"
-msgstr "Тек Ð¶ÐµÐ´ÐµÐ» Ò\9bоңÑ\8bÑ\80аÑ\83  Ò¯Ñ\88Ñ\96н"
+msgid "IDS_IDLE_BODY_INVALID_SIM_CARD"
+msgstr "Ð\96аÑ\80амÑ\81Ñ\8bз SIM ÐºÐ°Ñ\80Ñ\82а."
 
-msgid "IDS_QP_BUTTON_ROTATION"
-msgstr "Ð\91Ò±Ñ\80Ñ\83"
+msgid "IDS_IDLE_BODY_EMERGENCY_CALLS_ONLY"
+msgstr "Тек Ð¶ÐµÐ´ÐµÐ» Ò\9bоңÑ\8bÑ\80аÑ\83  Ò¯Ñ\88Ñ\96н."
 
-msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
-msgstr "Ð\9cÓ\99лÑ\96мдемелеÑ\80 (%d)"
+msgid "IDS_QP_OPT_OUTDOORS_ABB"
+msgstr "СÑ\8bÑ\80Ñ\82Ñ\82а"
 
-msgid "IDS_QP_BUTTON_VIBRATION"
+msgid "IDS_QP_MBODY_SAFE_MODE_ENABLED"
+msgstr "Қауіпсіз реж.іске қосылды"
+
+msgid "IDS_QP_HEADER_NOTIFICATIONS_HPD_ABB"
+msgstr "Хабарландырулар (%d)"
+
+msgid "IDS_QP_HEADER_CLEAR_ALL_ABB"
+msgstr "Барл.өшіру"
+
+msgid "IDS_QP_BUTTON_NOTIFICATION"
+msgstr "Хабарландыру"
+
+msgid "IDS_QP_BUTTON_ALWAYS_ASK_ABB"
+msgstr "Әрқашан сұрау"
+
+msgid "IDS_QP_BUTTON2_WI_FI"
+msgstr "Wi-Fi"
+
+msgid "IDS_QP_BUTTON2_VIBRATE"
 msgstr "Діріл"
 
-msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
-msgstr "Ð\94Ñ\8bбÑ\8bÑ\81 Ð¶Ó\99не Ð´Ñ\96Ñ\80Ñ\96л"
+msgid "IDS_QP_BUTTON2_U_POWER_NSAVING_ABB"
+msgstr "Ул. Ò\9bÑ\83аÑ\82\nÑ\81аÒ\9bÑ\82алÑ\83Ñ\8b"
 
-msgid "IDS_QP_TAB4_AUTO_ROTATION"
-msgstr "Ð\90вÑ\82о Ð±Ò±Ñ\80у"
+msgid "IDS_QP_BUTTON2_TETHERING"
+msgstr "ШекÑ\82еу"
 
-msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
-msgstr "Ð\91Ò±Ñ\80Ñ\83дÑ\8b Ò\9bұлÑ\8bпÑ\82аÑ\83"
+msgid "IDS_QP_BUTTON2_SOUND_ABB"
+msgstr "Ð\94Ñ\8bбÑ\8bÑ\81"
 
-msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
-msgstr "Ð\96алпÑ\8b Ñ\81аÒ\9bÑ\82аÑ\83 Ñ\80ежимÑ\96"
+msgid "IDS_QP_BUTTON2_SOUND"
+msgstr "Ð\94Ñ\8bбÑ\8bÑ\81"
 
-msgid "IDS_QP_BUTTON_DISABLE"
-msgstr "Өшіру"
+msgid "IDS_QP_BUTTON2_PRIVATE_MODE"
+msgstr "Жеке режим"
 
-msgid "IDS_QP_BUTTON_ENABLE"
-msgstr "Қосу"
+msgid "IDS_QP_BUTTON2_POWER_N_SAVING"
+msgstr "Қуат\nүнемдеу"
 
-msgid "IDS_COM_POP_UNSUPPORTED"
-msgstr "Қолдаусыз"
+msgid "IDS_QP_BUTTON2_MUTE_ABB"
+msgstr "Дыбысты\nөшіру"
 
-msgid "IDS_COM_SK_DISMISS"
-msgstr "Ò\9aабÑ\8bлдамаÑ\83"
+msgid "IDS_QP_BUTTON2_MOBILE_DATA"
+msgstr "Ò°Ñ\8fлÑ\8b\nдеÑ\80екÑ\82еÑ\80"
 
-msgid "IDS_COM_POP_PELASE_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
-msgstr "Ð\96елÑ\96 Ò\9bÑ\8bзмеÑ\82Ñ\82еÑ\80Ñ\96не Ó©Ñ\82Ñ\83 Ò¯Ñ\88Ñ\96н SIM ÐºÐ°Ñ\80Ñ\82аÑ\81Ñ\8bна Ñ\81алÑ\83"
+msgid "IDS_QP_BUTTON2_LOCATION_ABB"
+msgstr "Ð\9eÑ\80нÑ\8b"
 
-msgid "IDS_COM_BODY_DO_NOT_ASK_AGAIN"
-msgstr "Ò\9aайÑ\82адан Ñ\81Ò±Ñ\80амаңÑ\8bз"
+msgid "IDS_QP_BUTTON2_FLIGHT_N_MODE"
+msgstr "Ò°Ñ\88Ñ\83\nÑ\80ежимÑ\96"
 
-msgid "IDS_QP_POP_INSERT_SIM_CARD_AND_RESTART_DEVICE_TO_USE_TETHERING"
-msgstr "SIM картасын салып, байланыстыруды пайдалану үшін құрылғыны өшіріп қосыңыз"
+msgid "IDS_QP_BUTTON2_BLUETOOTH"
+msgstr "Bluetooth"
 
-msgid "IDS_QP_POP_CONNECTING_VIA_PACKET_DATA_MAY_INCUR_ADDITIONAL_CHARGES_CONTINUE_Q"
-msgstr "Ð\9fакеÑ\82 Ð´ÐµÑ\80екÑ\82еÑ\80Ñ\96 Ð°Ñ\80Ò\9bÑ\8bлÑ\8b Ò\9bоÑ\81Ñ\8bлÑ\83Ò\93а Ò\9bоÑ\81Ñ\8bмÑ\88а Ð°Ò\9bÑ\8bлаÑ\80дÑ\8bÒ£ Ð°Ð»Ñ\8bнÑ\83Ñ\8b Ð¼Ò¯Ð¼ÐºÑ\96н. Ð\96алÒ\93аÑ\81Ñ\82Ñ\8bÑ\80Ñ\83 ÐºÐµÑ\80ек Ð¿Ðµ?"
+msgid "IDS_QP_BUTTON2_AUTO_ROTATE"
+msgstr "Ð\90вÑ\82о Ð±Ò±Ñ\80Ñ\83"
 
-msgid "IDS_QP_BODY_AUTO"
-msgstr "Ð\90вÑ\82о"
+msgid "IDS_QP_BUTTON2_ASSISTIVE_NLIGHT"
+msgstr "Ð\9aөмекÑ\88Ñ\96\nÑ\88ам"
 
-msgid "IDS_QP_TAB_POWER_SAVING"
-msgstr "Қуат үнемдеу"
+msgid "IDS_QP_BODY_PM_ABB"
+msgstr "TK"
 
-msgid "IDS_QP_TAB_TETHERING"
-msgstr "ШекÑ\82еу"
+msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
+msgstr "ХабаÑ\80ландÑ\8bÑ\80у"
 
-msgid "IDS_QP_TAB_MOBILE_DATA"
-msgstr "Ұялы деректер"
+msgid "IDS_QP_BODY_AM_ABB"
+msgstr "ТД"
 
-msgid "IDS_QP_TAB_DRIVING_MODE"
-msgstr "Жүргізу режимі"
+msgid "IDS_ST_TPOP_UNABLE_TO_MAKE_VOICE_CALLS_VIDEO_CALLS_AND_SEND_TEXT_MESSAGES_USING_PS"
+msgstr "%s пайдалану арқылы дауыстық қоңыраулар мен бейне қоңырауларын жасау және мәтіндік хабарларды жібері мүмкін емес."
 
-msgid "IDS_COM_POP_UNABLE_TO_CONNECT_TO_MOBILE_NETWORK_WHILE_FLIGHT_MODE_IS_ENABLED_MSG"
-msgstr "Ұшу режимі қосылғанда ұялы байланыс желілеріне қосылу мүмкін емес. Оның орнына Wi-Fi желісіне қосылыңыз немесе ұшу режимін өшіріңіз, сосын әрекетті қайталап көріңіз"
+msgid "IDS_ST_TPOP_SELECT_SIM_CARD_FOR_OUTGOING_VOICE_CALLS_VIDEO_CALLS_AND_TEXT_MESSAGES"
+msgstr "Шығыс дауыстық қоңыраулары, бейне қоңыраулары және мәтіндік хабарлар үшін SIM картасын таңдаңыз."
 
-msgid "IDS_QP_POP_WI_FI_TETHERING_CONSUMES_MORE_BATTERY_POWER_AND_INCREASES_YOUR_DATA_USAGE_CONTINUE_Q"
-msgstr "Wi-Fi байланыстыру батарея зарядын көп пайдаланып, деректеріңіздің пайдаланылуын арттырады. Жалғастыру керек пе?"
+msgid "IDS_ST_TPOP_OUTGOING_VOICE_CALLS_VIDEO_CALLS_AND_TEXT_MESSAGES_WILL_BE_MADE_USING_THE_PS_SIM_CARD"
+msgstr "Шығыс дауыстық қоңыраулар, бейне қоңыраулар мен мәтіндік хабарлар %s SIM картасын пайдаланып жасалады."
 
-msgid "IDS_QP_POP_DISABLE_TETHERING_TO_USE_WI_FI"
-msgstr "Wi-Fi пайдалану үшін байланыстыруды өшіріңіз"
+msgid "IDS_ST_SK_OK"
+msgstr "OK"
 
-msgid "IDS_QP_POP_TO_ENABLE_POWER_SAVING_MODE_ENABLE_AT_LEAST_ONE_RELEVANT_FUNCTION"
-msgstr "Қуат үнемдеу режимін қосу үшін кемінде бір тиісті функцияны қосыңыз"
+msgid "IDS_ST_SK_NO"
+msgstr "Жоқ"
 
-msgid "IDS_QP_POP_TURN_OFF_WI_FI_TO_USE_TETHERING"
-msgstr "Ð\91айланÑ\8bÑ\81Ñ\82Ñ\8bÑ\80Ñ\83дÑ\8b Ð¿Ð°Ð¹Ð´Ð°Ð»Ð°Ð½Ñ\83 Ò¯Ñ\88Ñ\96н Wi-Fi Ó©Ñ\88Ñ\96Ñ\80Ñ\96Ò£Ñ\96з"
+msgid "IDS_ST_POP_UNABLE_TO_INCREASE_BRIGHTNESS_FURTHER_BECAUSE_OF_PHONE_OVERHEATING"
+msgstr "Ð\96аÑ\80Ñ\8bÒ\9bÑ\82Ñ\8bÒ\9bÑ\82Ñ\8b Ð¾Ð´Ð°Ð½ Ð°Ñ\80Ñ\8b ÐºÓ©Ð±ÐµÐ¹Ñ\82Ñ\83 Ð¼Ò¯Ð¼ÐºÑ\96н ÐµÐ¼ÐµÑ\81, Ñ\81ебебÑ\96 Ñ\82елеÑ\84он Ò\9bÑ\8bзÑ\8bп ÐºÐµÑ\82Ñ\82Ñ\96."
 
-msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
-msgstr "Wi-Fi және Mobile AP екеуін де бір уақытта іске қосу мүмкін емес. Mobile AP мүмкіндігін өшіру керек пе?"
+msgid "IDS_ST_NPBODY_NO_SERVICE"
+msgstr "Қызмет жоқ"
 
-msgid "IDS_ASCAST_HEADER_SCREEN_MIRRORING"
-msgstr "Screen Mirroring"
+msgid "IDS_ST_NPBODY_EMERGENCY_CALLS_ONLY_ABB"
+msgstr "Тек төтенше қоңыраулар ғана"
 
-msgid "IDS_QP_HEADER_REPLACE_QUICK_SETTING_BUTTON"
-msgstr "Ð\96Ñ\8bлдам Ð¿Ð°Ñ\80амеÑ\82Ñ\80 Ñ\82үймеÑ\81Ñ\96н Ð°Ñ\83Ñ\8bÑ\81Ñ\82Ñ\8bÑ\80Ñ\83"
+msgid "IDS_ST_HEADER_OUTDOOR"
+msgstr "Ð\9aÓ©Ñ\88еде"
 
-msgid "IDS_QP_HEADER_ADD_QUICK_SETTING_BUTTON"
-msgstr "Жылдам параметр түймесін қосу"
+msgid "IDS_ST_BUTTON2_WI_FI_NTETHERING"
+msgstr "Wi-Fi\nбайланыстыру"
 
-msgid "IDS_QP_POP_YOU_WILL_NO_LONGER_BE_ABLE_TO_USE_APPLICATIONS_SUCH_AS_INTERNET_NOTI_MSG"
-msgstr "Интернет және электрондық пошта сияқты бағдарламаларды ұялы байланыс желілері арқылы енді пайдалана алмайсыз. Жалғастыру керек пе?"
+msgid "IDS_ST_BUTTON2_WI_FI_ABB"
+msgstr "Wi-Fi"
 
-msgid "IDS_QP_BUTTON2_SCREEN_N_MIRRORING"
-msgstr "Screen\nMirroring"
+msgid "IDS_ST_BUTTON2_TORCH_ABB"
+msgstr "Шам"
 
-msgid "IDS_COM_BODY_BUTTON_T_TTS"
-msgstr "Түйме"
+msgid "IDS_ST_BUTTON2_POWER_NSAVING"
+msgstr "Қуат\nүнемдеу"
 
-msgid "IDS_QP_BUTTON2_GPS"
+msgid "IDS_ST_BUTTON2_MOBILE_NDATA"
+msgstr "Ұялы\nдеректер"
+
+msgid "IDS_ST_BUTTON2_GPS_ABB"
 msgstr "GPS"
 
-msgid "IDS_QP_BUTTON_NOTIFICATION"
-msgstr "Хабарландыру"
+msgid "IDS_ST_BUTTON2_FLIGHT_NMODE"
+msgstr "Ұшу\nрежимі"
+
+msgid "IDS_ST_BUTTON2_BLUETOOTH_ABB"
+msgstr "Bluetooth"
+
+msgid "IDS_ST_BUTTON2_AUTO_NROTATE"
+msgstr "Авто\nбұру"
+
+msgid "IDS_ST_BODY_SIM_2"
+msgstr "SIM 2"
+
+msgid "IDS_ST_BODY_SIM_1"
+msgstr "SIM 1"
+
+msgid "IDS_ST_BODY_SCANNING_FOR_MOBILE_NETWORK_ING_ABB"
+msgstr "Ұялы желіні қарап шығуда..."
+
+msgid "IDS_ST_BODY_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
+msgstr "Желі қызметтеріне өту үшін SIM картасына салу."
+
+msgid "IDS_ST_BODY_ALWAYS_ASK_ABB"
+msgstr "Әрқашан сұрау"
+
+msgid "IDS_SCP_BODY_UNABLE_TO_CONNECT_TO_MOBILE_NETWORKS_WHILE_FLIGHT_MODE_IS_ENABLED_CONNECT_TO_A_WI_FI_NETWORK_INSTEAD_OR_DISABLE_FLIGHT_MODE_AND_TRY_AGAIN"
+msgstr "Ұшу режимі қосылғанда, ұялы желілерге қосылу мүмкін емес. Оның орнына Wi-Fi желісіне қосылыңыз немесе ұшу режимін өшіріңіз, сосын әрекетті қайталап көріңіз."
 
-msgid "IDS_COM_BUTTON_AGREE"
-msgstr "Ð\9aелÑ\96Ñ\81емÑ\96н"
+msgid "IDS_COM_BODY_SEARCHING"
+msgstr "Ð\86здеÑ\83"
 
-msgid "IDS_COM_BUTTON_DISAGREE"
-msgstr "Келіспеу"
+msgid "IDS_QP_TPOP_UNABLE_TO_OPEN_PS"
+msgstr "%s ашу мүмкін емес."
 
-msgid "IDS_ST_BODY_GPS_LOCATION_USE_CONTROLLED_BY_APPLICATIONS_MSG"
-msgstr "GPS орны және орын деректерін пайдалану қолданыстағы бағдарламалармен бақыланады"
+msgid "IDS_QP_OPT_OUTDOORS_M_OUTDOOR_MODE_ABB"
+msgstr "Сыртта"
 
-msgid "IDS_ST_HEADER_USER_CONSENT"
-msgstr "Ð\9fайдаланÑ\83Ñ\88Ñ\8b ÐºÐµÐ»Ñ\96Ñ\81Ñ\96мÑ\96"
+msgid "IDS_QP_BUTTON2_PRIVATE_NMODE_ABB"
+msgstr "Ð\96еке\nÑ\80ежим"
 
index a666674..ff6941c 100755 (executable)
+msgid "IDS_IDLE_POP_UNABLE_TO_LAUNCH_PS"
+msgstr "%s을(를) 실행할 수 없습니다."
+
+msgid "IDS_ST_SK_OK"
+msgstr "확인"
+
+msgid "IDS_QP_BUTTON_NOTIFICATION"
+msgstr "알림"
+
 msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
 msgstr "알림"
 
-msgid "IDS_WIFI_BODY_ALLSHARE_CAST"
-msgstr "AllShare Cast"
+msgid "IDS_ST_BODY_SIM_1"
+msgstr "SIM 카드1"
 
-msgid "IDS_CALL_POP_CALLING_EMERG_ONLY"
-msgstr "긴급전화만 가능합니다"
+msgid "IDS_ST_BODY_SIM_2"
+msgstr "SIM 카드2"
 
-msgid "IDS_QP_BUTTON_ROTATION"
-msgstr "í\9a\8cì \84"
+msgid "IDS_ST_BODY_ALWAYS_ASK_ABB"
+msgstr "í\95­ì\83\81 ë¬»ê¸°"
 
-msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
-msgstr "알림(%d개)"
+msgid "IDS_ST_POP_UNABLE_TO_INCREASE_BRIGHTNESS_FURTHER_BECAUSE_OF_PHONE_OVERHEATING"
+msgstr "디바이스 온도가 높아져 밝기를 더 높일 수 없습니다."
 
-msgid "IDS_QP_BUTTON_VIBRATION"
-msgstr "진동"
+msgid "IDS_ST_BODY_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
+msgstr "네트워크 서비스를 이용하려면 SIM 카드를 삽입하세요."
 
-msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
-msgstr "ì\86\8c리 ë°\8f\nì§\84ë\8f\99"
+msgid "IDS_ST_SK_NO"
+msgstr "ì\95\84ë\8b\88ì\9a\94"
 
-msgid "IDS_QP_TAB4_AUTO_ROTATION"
-msgstr "자동 회전"
+msgid "IDS_TASKMGR_BUTTON_CLEAR_ALL"
+msgstr "모두 삭제"
+
+msgid "IDS_IDLE_BODY_NO_SERVICE"
+msgstr "서비스 지역이 아닙니다"
+
+msgid "IDS_IDLE_BODY_EMERGENCY_CALLS_ONLY"
+msgstr "긴급전화만 가능합니다."
+
+msgid "IDS_IDLE_BODY_SEARCHING_ING"
+msgstr "검색 중..."
+
+msgid "IDS_IDLE_BODY_INVALID_SIM_CARD"
+msgstr "SIM 카드가 바르지 않습니다."
+
+msgid "IDS_IDLE_BODY_NO_SIM"
+msgstr "SIM 카드가 없습니다"
+
+msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
+msgstr "Wi-Fi와 모바일 AP를 동시에 실행할 수 없습니다. 모바일 AP를 해제할까요?"
+
+msgid "IDS_ST_TPOP_OUTGOING_VOICE_CALLS_VIDEO_CALLS_AND_TEXT_MESSAGES_WILL_BE_MADE_USING_THE_PS_SIM_CARD"
+msgstr "음성통화, 영상통화를 걸고 문자 메시지를 보낼 때 SIM%s 카드를 사용합니다."
 
-msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
-msgstr "회전 잠금"
+msgid "IDS_ST_TPOP_SELECT_SIM_CARD_FOR_OUTGOING_VOICE_CALLS_VIDEO_CALLS_AND_TEXT_MESSAGES"
+msgstr "음성통화, 영상통화를 걸고 문자 메시지를 보낼 때 SIM 카드를 선택합니다."
 
-msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
-msgstr "이동식 메모리 모드"
+msgid "IDS_ST_TPOP_UNABLE_TO_MAKE_VOICE_CALLS_VIDEO_CALLS_AND_SEND_TEXT_MESSAGES_USING_PS"
+msgstr "%s를 사용하여 음성통화, 영상통화를 걸고 문자 메시지를 보낼 수 없습니다."
 
-msgid "IDS_QP_BUTTON_DISABLE"
-msgstr "차단"
+msgid "IDS_SCP_BODY_UNABLE_TO_CONNECT_TO_MOBILE_NETWORKS_WHILE_FLIGHT_MODE_IS_ENABLED_CONNECT_TO_A_WI_FI_NETWORK_INSTEAD_OR_DISABLE_FLIGHT_MODE_AND_TRY_AGAIN"
+msgstr "[비행기 탑승 모드] 실행 중에는 모바일 네트워크에 연결할 수 없습니다. Wi-Fi 네트워크에 연결하거나 [비행기 탑승 모드]를 해제한 후 다시 시도하세요."
 
-msgid "IDS_QP_BUTTON_ENABLE"
-msgstr "허용"
+msgid "IDS_IDLE_MBODY_EMERGENCY_CALLS_ONLY"
+msgstr "긴급전화만 가능"
 
-msgid "IDS_COM_POP_UNSUPPORTED"
-msgstr "ì§\80ì\9b\90ë\90\98ì§\80 ì\95\8aì\8aµë\8b\88ë\8b¤"
+msgid "IDS_QP_HEADER_NOTIFICATIONS_HPD_ABB"
+msgstr "ì\95\8c림(%d)"
 
-msgid "IDS_COM_SK_DISMISS"
-msgstr "제"
+msgid "IDS_QP_HEADER_CLEAR_ALL_ABB"
+msgstr "모두 삭제"
 
-msgid "IDS_COM_POP_PELASE_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
-msgstr "네트워크 서비스를 이용하려면 SIM을 삽입하세요"
+msgid "IDS_QP_BUTTON_ALWAYS_ASK_ABB"
+msgstr "항상 묻기"
 
-msgid "IDS_COM_BODY_DO_NOT_ASK_AGAIN"
-msgstr "다시 묻지 않기"
+msgid "IDS_QP_BODY_AM_ABB"
+msgstr "오전"
 
-msgid "IDS_QP_POP_INSERT_SIM_CARD_AND_RESTART_DEVICE_TO_USE_TETHERING"
-msgstr "테더링을 이용하려면 SIM 카드를 삽입하고 디바이스를 다시 시작하세요"
+msgid "IDS_QP_BODY_PM_ABB"
+msgstr "오후"
 
-msgid "IDS_QP_POP_CONNECTING_VIA_PACKET_DATA_MAY_INCUR_ADDITIONAL_CHARGES_CONTINUE_Q"
-msgstr "패킷 데이터로 연결하면 요금이 발생할 수 있습니다. 계속할까요?"
+msgid "IDS_QP_BUTTON2_WI_FI"
+msgstr "Wi-Fi"
 
-msgid "IDS_QP_BODY_AUTO"
-msgstr "자동"
+msgid "IDS_QP_BUTTON2_MOBILE_DATA"
+msgstr "모바일\n데이터"
 
-msgid "IDS_QP_TAB_POWER_SAVING"
+msgid "IDS_QP_BUTTON2_SOUND"
+msgstr "소리"
+
+msgid "IDS_QP_BUTTON2_ASSISTIVE_NLIGHT"
+msgstr "보조 조명"
+
+msgid "IDS_QP_BUTTON2_BLUETOOTH"
+msgstr "블루투스"
+
+msgid "IDS_QP_BUTTON2_POWER_N_SAVING"
 msgstr "절전 모드"
 
-msgid "IDS_QP_TAB_TETHERING"
+msgid "IDS_QP_BUTTON2_AUTO_ROTATE"
+msgstr "자동 회전"
+
+msgid "IDS_QP_BUTTON2_LOCATION_ABB"
+msgstr "위치"
+
+msgid "IDS_QP_BUTTON2_TETHERING"
 msgstr "테더링"
 
-msgid "IDS_QP_TAB_MOBILE_DATA"
-msgstr "모ë°\94ì\9d¼ ë\8d°ì\9d´í\84°"
+msgid "IDS_QP_BUTTON2_FLIGHT_N_MODE"
+msgstr "ë¹\84í\96\89기\ní\83\91ì\8a¹ ëª¨ë\93\9c"
 
-msgid "IDS_QP_TAB_DRIVING_MODE"
-msgstr "ì\9a´ì \84 ëª¨ë\93\9c"
+msgid "IDS_ST_NPBODY_NO_SERVICE"
+msgstr "ì\84\9cë¹\84ì\8a¤ë¥¼ ì\82¬ì\9a©í\95  ì\88\98 ì\97\86ì\8aµë\8b\88ë\8b¤"
 
-msgid "IDS_COM_POP_UNABLE_TO_CONNECT_TO_MOBILE_NETWORK_WHILE_FLIGHT_MODE_IS_ENABLED_MSG"
-msgstr "비행기 탑승 모드가 실행 중에는 모바일 네트워크에 연결할 수 없습니다. Wi-Fi 네트워크에 연결하거나 비행기 탑승 모드를 해제한 후 다시 시도하세요."
+msgid "IDS_ST_NPBODY_EMERGENCY_CALLS_ONLY_ABB"
+msgstr "긴급전화만 가능합니다"
 
-msgid "IDS_QP_POP_WI_FI_TETHERING_CONSUMES_MORE_BATTERY_POWER_AND_INCREASES_YOUR_DATA_USAGE_CONTINUE_Q"
-msgstr "Wi-Fi 테더링을 사용하면 배터리가 많이 소모되며 데이터 사용량이 증가합니다. 계속할까요?"
+msgid "IDS_ST_BODY_SCANNING_FOR_MOBILE_NETWORK_ING_ABB"
+msgstr "모바일 네트워크 찾는 중..."
 
-msgid "IDS_QP_POP_DISABLE_TETHERING_TO_USE_WI_FI"
-msgstr "Wi-Fi를 사용하려면 테더링을 끄세요"
+msgid "IDS_ST_BUTTON2_WI_FI_ABB"
+msgstr "Wi-Fi"
 
-msgid "IDS_QP_POP_TO_ENABLE_POWER_SAVING_MODE_ENABLE_AT_LEAST_ONE_RELEVANT_FUNCTION"
-msgstr "절전 모드를 실행하려면 최소 하나 이상의 관련 기능을 선택하세요"
+msgid "IDS_ST_BUTTON2_MOBILE_NDATA"
+msgstr "모바일\n데이터"
 
-msgid "IDS_QP_POP_TURN_OFF_WI_FI_TO_USE_TETHERING"
-msgstr "테더링을 사용하려면 Wi-Fi를 끄세요"
+msgid "IDS_ST_BUTTON2_TORCH_ABB"
+msgstr "손전등"
 
-msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
-msgstr "Wi-Fi와 모바일 AP를 동시에 실행할 수 없습니다. 모바일 AP를 해제할까요?"
+msgid "IDS_ST_BUTTON2_BLUETOOTH_ABB"
+msgstr "블루투스"
 
-msgid "IDS_ASCAST_HEADER_SCREEN_MIRRORING"
-msgstr "Screen Mirroring"
+msgid "IDS_ST_BUTTON2_POWER_NSAVING"
+msgstr "절전\n모드"
 
-msgid "IDS_QP_HEADER_REPLACE_QUICK_SETTING_BUTTON"
-msgstr "빠른 설정 버튼 교체"
+msgid "IDS_ST_BUTTON2_AUTO_NROTATE"
+msgstr "자동\n회전"
 
-msgid "IDS_QP_HEADER_ADD_QUICK_SETTING_BUTTON"
-msgstr "빠른 설정 버튼 추가"
+msgid "IDS_ST_BUTTON2_GPS_ABB"
+msgstr "GPS"
 
-msgid "IDS_QP_POP_YOU_WILL_NO_LONGER_BE_ABLE_TO_USE_APPLICATIONS_SUCH_AS_INTERNET_NOTI_MSG"
-msgstr "모바일 네트워크를 통해 인터넷, 이메일 등의 애플리케이션을 사용할 수 없게 됩니다. 계속할까요?"
+msgid "IDS_ST_BUTTON2_WI_FI_NTETHERING"
+msgstr "Wi-Fi\n테더링"
 
-msgid "IDS_QP_BUTTON2_SCREEN_N_MIRRORING"
-msgstr "Screen\nMirroring"
+msgid "IDS_ST_BUTTON2_FLIGHT_NMODE"
+msgstr "비행기\n탑승 모드"
 
-msgid "IDS_COM_BODY_BUTTON_T_TTS"
-msgstr "버튼"
+msgid "IDS_QP_BUTTON2_SOUND_ABB"
+msgstr "소리"
 
-msgid "IDS_QP_BUTTON2_GPS"
-msgstr "GPS"
+msgid "IDS_QP_BUTTON2_VIBRATE"
+msgstr "진동"
 
-msgid "IDS_QP_BUTTON_NOTIFICATION"
-msgstr "알림"
+msgid "IDS_QP_BUTTON2_MUTE_ABB"
+msgstr "무음"
+
+msgid "IDS_QP_BUTTON2_U_POWER_NSAVING_ABB"
+msgstr "초절전\n모드"
+
+msgid "IDS_QP_BUTTON2_PRIVATE_MODE"
+msgstr "프라이빗 모드"
 
-msgid "IDS_COM_BUTTON_AGREE"
-msgstr "동의"
+msgid "IDS_ST_HEADER_OUTDOOR"
+msgstr "야외 모드"
 
-msgid "IDS_COM_BUTTON_DISAGREE"
-msgstr "동의 안 함"
+msgid "IDS_QP_OPT_OUTDOORS_ABB"
+msgstr "야외"
 
-msgid "IDS_ST_BODY_GPS_LOCATION_USE_CONTROLLED_BY_APPLICATIONS_MSG"
-msgstr "GPS 위치와 위치 정보 사용은 사용 중인 애플리케이션의 통제를 받습니다"
+msgid "IDS_QP_MBODY_SAFE_MODE_ENABLED"
+msgstr "안전 모드 실행"
 
-msgid "IDS_ST_HEADER_USER_CONSENT"
-msgstr "사용자 동의"
+msgid "IDS_IDLE_SBODY_TAP_HERE_TO_DISABLE_SAFE_MODE_ABB"
+msgstr "[안전 모드]를 해제하려면 여기를 누르세요."
 
index ecfc8be..a666b4b 100755 (executable)
--- a/po/lt.po
+++ b/po/lt.po
-msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
-msgstr "Pranešimai"
+msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
+msgstr "Tuo pat metu negalima suaktyvinti ir „Wi-Fi“, ir „Mobile AP“. Išjungti „Mobile AP“?"
+
+msgid "IDS_TASKMGR_BUTTON_CLEAR_ALL"
+msgstr "Valyti viską"
 
-msgid "IDS_WIFI_BODY_ALLSHARE_CAST"
-msgstr "AllShare Cast"
+msgid "IDS_IDLE_SBODY_TAP_HERE_TO_DISABLE_SAFE_MODE_ABB"
+msgstr "Bakst. čia išj. saugųjį režimą."
 
-msgid "IDS_CALL_POP_CALLING_EMERG_ONLY"
+msgid "IDS_IDLE_POP_UNABLE_TO_LAUNCH_PS"
+msgstr "Negalima paleisti %s."
+
+msgid "IDS_IDLE_MBODY_EMERGENCY_CALLS_ONLY"
 msgstr "Tik pagalbos skambučiai"
 
-msgid "IDS_QP_BUTTON_ROTATION"
-msgstr "Rotacija"
+msgid "IDS_IDLE_BODY_SEARCHING_ING"
+msgstr "Ieškoma..."
+
+msgid "IDS_IDLE_BODY_NO_SIM"
+msgstr "Nėra SIM"
+
+msgid "IDS_IDLE_BODY_NO_SERVICE"
+msgstr "Paslauga neteikiama"
+
+msgid "IDS_IDLE_BODY_INVALID_SIM_CARD"
+msgstr "Netinkama SIM kortelė."
 
-msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
+msgid "IDS_IDLE_BODY_EMERGENCY_CALLS_ONLY"
+msgstr "Tik pagalbos skambučiai."
+
+msgid "IDS_QP_OPT_OUTDOORS_ABB"
+msgstr "Lauke"
+
+msgid "IDS_QP_MBODY_SAFE_MODE_ENABLED"
+msgstr "Įjungtas saugus režimas"
+
+msgid "IDS_QP_HEADER_NOTIFICATIONS_HPD_ABB"
 msgstr "Pranešimai (%d)"
 
-msgid "IDS_QP_BUTTON_VIBRATION"
-msgstr "Vibracija"
+msgid "IDS_QP_HEADER_CLEAR_ALL_ABB"
+msgstr "Viską išv."
 
-msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
-msgstr "Garsas ir vibrac."
+msgid "IDS_QP_BUTTON_NOTIFICATION"
+msgstr "Pranešimas"
 
-msgid "IDS_QP_TAB4_AUTO_ROTATION"
-msgstr "Aut. suk."
+msgid "IDS_QP_BUTTON_ALWAYS_ASK_ABB"
+msgstr "Visada klausti"
 
-msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
-msgstr "Sukamasis užraktas"
+msgid "IDS_QP_BUTTON2_WI_FI"
+msgstr "„Wi-Fi“"
 
-msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
-msgstr "Duomenų saugyklos režimas"
+msgid "IDS_QP_BUTTON2_VIBRATE"
+msgstr "Vibruoti"
 
-msgid "IDS_QP_BUTTON_DISABLE"
-msgstr "Išjungti"
+msgid "IDS_QP_BUTTON2_U_POWER_NSAVING_ABB"
+msgstr "Ypat.en.\ntaupymas"
 
-msgid "IDS_QP_BUTTON_ENABLE"
-msgstr "Įjungti"
+msgid "IDS_QP_BUTTON2_TETHERING"
+msgstr "Siejama"
 
-msgid "IDS_COM_POP_UNSUPPORTED"
-msgstr "Nepalaikoma"
+msgid "IDS_QP_BUTTON2_SOUND_ABB"
+msgstr "Garsas"
 
-msgid "IDS_COM_SK_DISMISS"
-msgstr "Nutraukti"
+msgid "IDS_QP_BUTTON2_SOUND"
+msgstr "Garsas"
 
-msgid "IDS_COM_POP_PELASE_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
-msgstr "Įdėkite SIM kortelę, kad galėtumėte  naudotis tinklo paslaugomis"
+msgid "IDS_QP_BUTTON2_PRIVATE_MODE"
+msgstr "Asmeninis režim."
 
-msgid "IDS_COM_BODY_DO_NOT_ASK_AGAIN"
-msgstr "Neklauskite dar kartą"
+msgid "IDS_QP_BUTTON2_POWER_N_SAVING"
+msgstr "Energ.\ntaupymas"
 
-msgid "IDS_QP_POP_INSERT_SIM_CARD_AND_RESTART_DEVICE_TO_USE_TETHERING"
-msgstr "Norėdami naudoti siejimą, įdėkite SIM kortelę ir paleiskite įrenginį iš naujo"
+msgid "IDS_QP_BUTTON2_MUTE_ABB"
+msgstr "Tildyti"
 
-msgid "IDS_QP_POP_CONNECTING_VIA_PACKET_DATA_MAY_INCUR_ADDITIONAL_CHARGES_CONTINUE_Q"
-msgstr "Jungiantis paketinių duomenų perdavimo ryšiu gali būti taikomi papildomi mokesčiai. Tęsti?"
+msgid "IDS_QP_BUTTON2_MOBILE_DATA"
+msgstr "Mob.\nduomenys"
 
-msgid "IDS_QP_BODY_AUTO"
-msgstr "Automatinis"
+msgid "IDS_QP_BUTTON2_LOCATION_ABB"
+msgstr "Vieta"
 
-msgid "IDS_QP_TAB_POWER_SAVING"
-msgstr "Energijos taupymas"
+msgid "IDS_QP_BUTTON2_FLIGHT_N_MODE"
+msgstr "Skrydžio\nrežim."
 
-msgid "IDS_QP_TAB_TETHERING"
-msgstr "Siejama"
+msgid "IDS_QP_BUTTON2_BLUETOOTH"
+msgstr "„Bluetooth“"
+
+msgid "IDS_QP_BUTTON2_AUTO_ROTATE"
+msgstr "Automatinis sukimas"
+
+msgid "IDS_QP_BUTTON2_ASSISTIVE_NLIGHT"
+msgstr "Pagalb.\nlemputė"
 
-msgid "IDS_QP_TAB_MOBILE_DATA"
-msgstr "Mobilieji duomenys"
+msgid "IDS_QP_BODY_PM_ABB"
+msgstr "PM"
 
-msgid "IDS_QP_TAB_DRIVING_MODE"
-msgstr "Vairavimo režimas"
+msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
+msgstr "Pranešimai"
 
-msgid "IDS_COM_POP_UNABLE_TO_CONNECT_TO_MOBILE_NETWORK_WHILE_FLIGHT_MODE_IS_ENABLED_MSG"
-msgstr "Neįmanoma prisijungti prie mobiliųjų tinklų, kol įjungtas skrydžio režimas. Vietoj to prisijunkite prie „Wi-Fi“ tinklo arba išjunkite skrydžio režimą ir pabandykite dar kartą"
+msgid "IDS_QP_BODY_AM_ABB"
+msgstr "AM"
 
-msgid "IDS_QP_POP_WI_FI_TETHERING_CONSUMES_MORE_BATTERY_POWER_AND_INCREASES_YOUR_DATA_USAGE_CONTINUE_Q"
-msgstr "Esant įjungtam „Wi-Fi“ siejimui, suvartojama daugiau akumuliatoriaus energijos ir padidėja duomenų naudojimas. Tęsti?"
+msgid "IDS_ST_TPOP_UNABLE_TO_MAKE_VOICE_CALLS_VIDEO_CALLS_AND_SEND_TEXT_MESSAGES_USING_PS"
+msgstr "Neįmanoma atlikti balso ir vaizdo skambučių bei siųsti teksto žinučių naudojant %s."
 
-msgid "IDS_QP_POP_DISABLE_TETHERING_TO_USE_WI_FI"
-msgstr "Išjunkite siejimą, kad galėtumėte naudoti „Wi-Fi“"
+msgid "IDS_ST_TPOP_SELECT_SIM_CARD_FOR_OUTGOING_VOICE_CALLS_VIDEO_CALLS_AND_TEXT_MESSAGES"
+msgstr "Pasirinkite SIM kortelę išeinantiems balso ir vaizdo skambučiams bei teksto žinutėms."
 
-msgid "IDS_QP_POP_TO_ENABLE_POWER_SAVING_MODE_ENABLE_AT_LEAST_ONE_RELEVANT_FUNCTION"
-msgstr "Jei norite įjungti energijos taupymo režimą, suaktyvinkite bent vieną atitinkamą funkciją"
+msgid "IDS_ST_TPOP_OUTGOING_VOICE_CALLS_VIDEO_CALLS_AND_TEXT_MESSAGES_WILL_BE_MADE_USING_THE_PS_SIM_CARD"
+msgstr "Išeinantys balso skambučiai, vaizdo skambučiai ir teksto žinutės bus atliekami naudojant %s SIM kortelę."
 
-msgid "IDS_QP_POP_TURN_OFF_WI_FI_TO_USE_TETHERING"
-msgstr "Išjunkite „Wi-Fi“, kad galėtumėte naudoti siejimą"
+msgid "IDS_ST_SK_OK"
+msgstr "Gerai"
 
-msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
-msgstr "Tuo pat metu negalima suaktyvinti ir „Wi-Fi“, ir „Mobile AP“. Išjungti „Mobile AP“?"
+msgid "IDS_ST_SK_NO"
+msgstr "Ne"
 
-msgid "IDS_ASCAST_HEADER_SCREEN_MIRRORING"
-msgstr "Screen Mirroring"
+msgid "IDS_ST_POP_UNABLE_TO_INCREASE_BRIGHTNESS_FURTHER_BECAUSE_OF_PHONE_OVERHEATING"
+msgstr "Neįmanoma padidinti šviesumo dėl telefono perkaitimo."
 
-msgid "IDS_QP_HEADER_REPLACE_QUICK_SETTING_BUTTON"
-msgstr "Pakeisti greitojo nustatymo mygtuką"
+msgid "IDS_ST_NPBODY_NO_SERVICE"
+msgstr "Paslauga neteikiama"
 
-msgid "IDS_QP_HEADER_ADD_QUICK_SETTING_BUTTON"
-msgstr "Pridėti greitojo nustatymo mygtuką"
+msgid "IDS_ST_NPBODY_EMERGENCY_CALLS_ONLY_ABB"
+msgstr "Tik pagalbos skambučiai"
 
-msgid "IDS_QP_POP_YOU_WILL_NO_LONGER_BE_ABLE_TO_USE_APPLICATIONS_SUCH_AS_INTERNET_NOTI_MSG"
-msgstr "Daugiau nebegalėsite per mobiliuosius tinklus naudotis tokiomis programomis kaip internetas ir el. paštas. Tęsti?"
+msgid "IDS_ST_HEADER_OUTDOOR"
+msgstr "Laukas"
 
-msgid "IDS_QP_BUTTON2_SCREEN_N_MIRRORING"
-msgstr "Screen\nMirroring"
+msgid "IDS_ST_BUTTON2_WI_FI_NTETHERING"
+msgstr "Wi-Fi\nsiejimas"
 
-msgid "IDS_COM_BODY_BUTTON_T_TTS"
-msgstr "Mygtukas"
+msgid "IDS_ST_BUTTON2_WI_FI_ABB"
+msgstr "Wi-Fi"
 
-msgid "IDS_QP_BUTTON2_GPS"
+msgid "IDS_ST_BUTTON2_TORCH_ABB"
+msgstr "Žibintu-\nvėlis"
+
+msgid "IDS_ST_BUTTON2_POWER_NSAVING"
+msgstr "Energij.\ntaup."
+
+msgid "IDS_ST_BUTTON2_MOBILE_NDATA"
+msgstr "Mobil.\nduom."
+
+msgid "IDS_ST_BUTTON2_GPS_ABB"
 msgstr "GPS"
 
-msgid "IDS_QP_BUTTON_NOTIFICATION"
-msgstr "Pranešimas"
+msgid "IDS_ST_BUTTON2_FLIGHT_NMODE"
+msgstr "Skryd.\nrežimas"
+
+msgid "IDS_ST_BUTTON2_BLUETOOTH_ABB"
+msgstr "Bluetooth"
+
+msgid "IDS_ST_BUTTON2_AUTO_NROTATE"
+msgstr "Autom.\npasukim."
+
+msgid "IDS_ST_BODY_SIM_2"
+msgstr "SIM 2"
+
+msgid "IDS_ST_BODY_SIM_1"
+msgstr "SIM 1"
+
+msgid "IDS_ST_BODY_SCANNING_FOR_MOBILE_NETWORK_ING_ABB"
+msgstr "Ieškoma mobiliojo tinklo..."
+
+msgid "IDS_ST_BODY_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
+msgstr "Įdėkite SIM kortelę, kad galėtumėte  naudotis tinklo paslaugomis."
+
+msgid "IDS_ST_BODY_ALWAYS_ASK_ABB"
+msgstr "Visada klausti"
+
+msgid "IDS_SCP_BODY_UNABLE_TO_CONNECT_TO_MOBILE_NETWORKS_WHILE_FLIGHT_MODE_IS_ENABLED_CONNECT_TO_A_WI_FI_NETWORK_INSTEAD_OR_DISABLE_FLIGHT_MODE_AND_TRY_AGAIN"
+msgstr "Neįmanoma prisijungti prie mobiliųjų tinklų, kol įjungtas skrydžio režimas. Prisijunkite prie „Wi-Fi“ tinklo arba išjunkite skrydžio režimą ir bandykite dar kartą."
 
-msgid "IDS_COM_BUTTON_AGREE"
-msgstr "Sutikti"
+msgid "IDS_COM_BODY_SEARCHING"
+msgstr "Ieškoma"
 
-msgid "IDS_COM_BUTTON_DISAGREE"
-msgstr "Nesutikti"
+msgid "IDS_QP_TPOP_UNABLE_TO_OPEN_PS"
+msgstr "Neįmanoma atidaryti %s."
 
-msgid "IDS_ST_BODY_GPS_LOCATION_USE_CONTROLLED_BY_APPLICATIONS_MSG"
-msgstr "Vietos nustatymą naudojant GPS ir jūsų vietos duomenis kontroliuoja jūsų naudojamos programos"
+msgid "IDS_QP_OPT_OUTDOORS_M_OUTDOOR_MODE_ABB"
+msgstr "Lauke"
 
-msgid "IDS_ST_HEADER_USER_CONSENT"
-msgstr "Naudotojo sutikimas"
+msgid "IDS_QP_BUTTON2_PRIVATE_NMODE_ABB"
+msgstr "Asmen.\nrežimas"
 
index e050d2b..8f47d9b 100755 (executable)
--- a/po/lv.po
+++ b/po/lv.po
-msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
-msgstr "Paziņojumi"
+msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
+msgstr "Vienlaikus nevar aktivizēt Wi-Fi un Mobile AP. Vai deaktivizēt Mobile AP?"
+
+msgid "IDS_TASKMGR_BUTTON_CLEAR_ALL"
+msgstr "Notīrīt visu"
 
-msgid "IDS_WIFI_BODY_ALLSHARE_CAST"
-msgstr "AllShare Cast"
+msgid "IDS_IDLE_SBODY_TAP_HERE_TO_DISABLE_SAFE_MODE_ABB"
+msgstr "Piesk.šeit, lai izsl.drošo rež."
 
-msgid "IDS_CALL_POP_CALLING_EMERG_ONLY"
+msgid "IDS_IDLE_POP_UNABLE_TO_LAUNCH_PS"
+msgstr "Nevar palaist %s."
+
+msgid "IDS_IDLE_MBODY_EMERGENCY_CALLS_ONLY"
 msgstr "Tikai ārkārtas zvani"
 
-msgid "IDS_QP_BUTTON_ROTATION"
-msgstr "Pagrieš."
+msgid "IDS_IDLE_BODY_SEARCHING_ING"
+msgstr "Meklē..."
+
+msgid "IDS_IDLE_BODY_NO_SIM"
+msgstr "Nav SIM"
+
+msgid "IDS_IDLE_BODY_NO_SERVICE"
+msgstr "Nav pakalpojuma"
+
+msgid "IDS_IDLE_BODY_INVALID_SIM_CARD"
+msgstr "Nederīga SIM karte."
 
-msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
+msgid "IDS_IDLE_BODY_EMERGENCY_CALLS_ONLY"
+msgstr "Tikai ārkārtas zvani."
+
+msgid "IDS_QP_OPT_OUTDOORS_ABB"
+msgstr "Ārā"
+
+msgid "IDS_QP_MBODY_SAFE_MODE_ENABLED"
+msgstr "Aktivizēts drošais režīms"
+
+msgid "IDS_QP_HEADER_NOTIFICATIONS_HPD_ABB"
 msgstr "Paziņojumi (%d)"
 
-msgid "IDS_QP_BUTTON_VIBRATION"
-msgstr "Vibrācija"
+msgid "IDS_QP_HEADER_CLEAR_ALL_ABB"
+msgstr "Not. visu"
 
-msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
-msgstr "Skaņa un vibrācija"
+msgid "IDS_QP_BUTTON_NOTIFICATION"
+msgstr "Paziņojums"
 
-msgid "IDS_QP_TAB4_AUTO_ROTATION"
-msgstr "Autom. pagriezt"
+msgid "IDS_QP_BUTTON_ALWAYS_ASK_ABB"
+msgstr "Vienmēr jautāt"
 
-msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
-msgstr "Pagr. bloķ."
+msgid "IDS_QP_BUTTON2_WI_FI"
+msgstr "Wi-Fi"
 
-msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
-msgstr "Lielapjoma atmiņas režīms"
+msgid "IDS_QP_BUTTON2_VIBRATE"
+msgstr "Vibrēt"
 
-msgid "IDS_QP_BUTTON_DISABLE"
-msgstr "Deaktiviz."
+msgid "IDS_QP_BUTTON2_U_POWER_NSAVING_ABB"
+msgstr "Īp.\nenerģ. taup."
 
-msgid "IDS_QP_BUTTON_ENABLE"
-msgstr "Aktivizēt"
+msgid "IDS_QP_BUTTON2_TETHERING"
+msgstr "Piesaiste"
 
-msgid "IDS_COM_POP_UNSUPPORTED"
-msgstr "Neatbalstīts"
+msgid "IDS_QP_BUTTON2_SOUND_ABB"
+msgstr "Skaņa"
 
-msgid "IDS_COM_SK_DISMISS"
-msgstr "Noraidīt"
+msgid "IDS_QP_BUTTON2_SOUND"
+msgstr "Skaņa"
 
-msgid "IDS_COM_POP_PELASE_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
-msgstr "Lai piekļūtu tīkla pakalpojumiem, ievietojiet SIM karti"
+msgid "IDS_QP_BUTTON2_PRIVATE_MODE"
+msgstr "Privātais režīms"
 
-msgid "IDS_COM_BODY_DO_NOT_ASK_AGAIN"
-msgstr "Vairs nevaicāt"
+msgid "IDS_QP_BUTTON2_POWER_N_SAVING"
+msgstr "Enerģijas\ntaup."
 
-msgid "IDS_QP_POP_INSERT_SIM_CARD_AND_RESTART_DEVICE_TO_USE_TETHERING"
-msgstr "Lai lietotu piesaisti, Ievietojiet SIM karti un restartējiet tālruni"
+msgid "IDS_QP_BUTTON2_MUTE_ABB"
+msgstr "Izslēgt skaņu"
 
-msgid "IDS_QP_POP_CONNECTING_VIA_PACKET_DATA_MAY_INCUR_ADDITIONAL_CHARGES_CONTINUE_Q"
-msgstr "Par savienojuma izveidi, izmantojot pakešu datus, var tikt piemērota papildu maksa. Vai turpināt?"
+msgid "IDS_QP_BUTTON2_MOBILE_DATA"
+msgstr "Mobilie\ndati"
 
-msgid "IDS_QP_BODY_AUTO"
-msgstr "Automātiski"
+msgid "IDS_QP_BUTTON2_LOCATION_ABB"
+msgstr "Lokācija"
 
-msgid "IDS_QP_TAB_POWER_SAVING"
-msgstr "Enerģijas taupīšana"
+msgid "IDS_QP_BUTTON2_FLIGHT_N_MODE"
+msgstr "Lidojuma\nrežīms"
 
-msgid "IDS_QP_TAB_TETHERING"
-msgstr "Ierīces piesaiste tālrunim"
+msgid "IDS_QP_BUTTON2_BLUETOOTH"
+msgstr "Bluetooth"
 
-msgid "IDS_QP_TAB_MOBILE_DATA"
-msgstr "Mobilie dati"
+msgid "IDS_QP_BUTTON2_AUTO_ROTATE"
+msgstr "Automātiskā pagrieš."
 
-msgid "IDS_QP_TAB_DRIVING_MODE"
-msgstr "Braukšanas režīms"
+msgid "IDS_QP_BUTTON2_ASSISTIVE_NLIGHT"
+msgstr "Pap.\napgaism."
 
-msgid "IDS_COM_POP_UNABLE_TO_CONNECT_TO_MOBILE_NETWORK_WHILE_FLIGHT_MODE_IS_ENABLED_MSG"
-msgstr "Nevar izveidot savienojumu ar mobilajiem tīkliem, kamēr ir aktivizēts lidojuma režīms. Tā vietā izveidojiet savienojumu ar Wi-Fi tīklu vai deaktivizējiet lidojuma režīmu un mēģiniet vēlreiz"
+msgid "IDS_QP_BODY_PM_ABB"
+msgstr "PM"
 
-msgid "IDS_QP_POP_WI_FI_TETHERING_CONSUMES_MORE_BATTERY_POWER_AND_INCREASES_YOUR_DATA_USAGE_CONTINUE_Q"
-msgstr "Wi-Fi piesaiste patērē daudz akumulatora enerģijas un palielina datu lietošanas apjomu. Vai turpināt?"
+msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
+msgstr "Paziņojumi"
 
-msgid "IDS_QP_POP_DISABLE_TETHERING_TO_USE_WI_FI"
-msgstr "Lai izmantotu Wi-Fi, deaktivizējiet piesaisti"
+msgid "IDS_QP_BODY_AM_ABB"
+msgstr "AM"
 
-msgid "IDS_QP_POP_TO_ENABLE_POWER_SAVING_MODE_ENABLE_AT_LEAST_ONE_RELEVANT_FUNCTION"
-msgstr "Lai aktivizētu enerģijas taupīšanas režīmu, aktivizējiet vismaz vienu atbilstošu funkciju"
+msgid "IDS_ST_TPOP_UNABLE_TO_MAKE_VOICE_CALLS_VIDEO_CALLS_AND_SEND_TEXT_MESSAGES_USING_PS"
+msgstr "Balss zvanus, videozvanus un īsziņu nosūtīšanu nevar veikt, izmantojot %s."
 
-msgid "IDS_QP_POP_TURN_OFF_WI_FI_TO_USE_TETHERING"
-msgstr "Lai izmantotu piesaisti, izslēdziet Wi-Fi"
+msgid "IDS_ST_TPOP_SELECT_SIM_CARD_FOR_OUTGOING_VOICE_CALLS_VIDEO_CALLS_AND_TEXT_MESSAGES"
+msgstr "Izvēlieties SIM karti izejošajiem balss zvaniem, videozvaniem un īsziņām."
 
-msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
-msgstr "Vienlaikus nevar aktivizēt Wi-Fi un Mobile AP. Vai deaktivizēt Mobile AP?"
+msgid "IDS_ST_TPOP_OUTGOING_VOICE_CALLS_VIDEO_CALLS_AND_TEXT_MESSAGES_WILL_BE_MADE_USING_THE_PS_SIM_CARD"
+msgstr "Izejošie balss zvani un videozvani, kā arī īsziņu sūtīšana tiks veikta, izmantojot SIM karti %s."
+
+msgid "IDS_ST_SK_OK"
+msgstr "Labi"
+
+msgid "IDS_ST_SK_NO"
+msgstr "Nē"
 
-msgid "IDS_ASCAST_HEADER_SCREEN_MIRRORING"
-msgstr "Screen Mirroring"
+msgid "IDS_ST_POP_UNABLE_TO_INCREASE_BRIGHTNESS_FURTHER_BECAUSE_OF_PHONE_OVERHEATING"
+msgstr "Nav iespējams vairāk palielināt spilgtumu dēļ tālruņa pārkaršanas."
 
-msgid "IDS_QP_HEADER_REPLACE_QUICK_SETTING_BUTTON"
-msgstr "Aizstāt ātro iestatījumu pogu"
+msgid "IDS_ST_NPBODY_NO_SERVICE"
+msgstr "Nav pakalpojuma"
+
+msgid "IDS_ST_NPBODY_EMERGENCY_CALLS_ONLY_ABB"
+msgstr "Tikai ārkārtas zvani"
 
-msgid "IDS_QP_HEADER_ADD_QUICK_SETTING_BUTTON"
-msgstr "Pievienot ātro iestatījumu pogu"
+msgid "IDS_ST_HEADER_OUTDOOR"
+msgstr "Ārā"
 
-msgid "IDS_QP_POP_YOU_WILL_NO_LONGER_BE_ABLE_TO_USE_APPLICATIONS_SUCH_AS_INTERNET_NOTI_MSG"
-msgstr "Jūs vairs nevarēsit lietot atsevišķas programmas, piemēram, interneta pārlūkprogrammas un e-pastu, izmantojot mobilos tīklus. Vai turpināt?"
+msgid "IDS_ST_BUTTON2_WI_FI_NTETHERING"
+msgstr "Wi-Fi\npies."
 
-msgid "IDS_QP_BUTTON2_SCREEN_N_MIRRORING"
-msgstr "Screen\nMirroring"
+msgid "IDS_ST_BUTTON2_WI_FI_ABB"
+msgstr "Wi-Fi"
 
-msgid "IDS_COM_BODY_BUTTON_T_TTS"
-msgstr "Poga"
+msgid "IDS_ST_BUTTON2_TORCH_ABB"
+msgstr "Lukturis"
 
-msgid "IDS_QP_BUTTON2_GPS"
+msgid "IDS_ST_BUTTON2_POWER_NSAVING"
+msgstr "Enerģ.\ntaup."
+
+msgid "IDS_ST_BUTTON2_MOBILE_NDATA"
+msgstr "Mobilie\ndati"
+
+msgid "IDS_ST_BUTTON2_GPS_ABB"
 msgstr "GPS"
 
-msgid "IDS_QP_BUTTON_NOTIFICATION"
-msgstr "Paziņojums"
+msgid "IDS_ST_BUTTON2_FLIGHT_NMODE"
+msgstr "Lidojuma\nrežīms"
+
+msgid "IDS_ST_BUTTON2_BLUETOOTH_ABB"
+msgstr "Bluetooth"
+
+msgid "IDS_ST_BUTTON2_AUTO_NROTATE"
+msgstr "Autom.\npagriezt"
+
+msgid "IDS_ST_BODY_SIM_2"
+msgstr "SIM 2"
+
+msgid "IDS_ST_BODY_SIM_1"
+msgstr "SIM 1"
+
+msgid "IDS_ST_BODY_SCANNING_FOR_MOBILE_NETWORK_ING_ABB"
+msgstr "Meklē mobilo tīklu..."
+
+msgid "IDS_ST_BODY_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
+msgstr "Lai piekļūtu tīkla pakalpojumiem, ievietojiet SIM karti."
+
+msgid "IDS_ST_BODY_ALWAYS_ASK_ABB"
+msgstr "Vienmēr jautāt"
+
+msgid "IDS_SCP_BODY_UNABLE_TO_CONNECT_TO_MOBILE_NETWORKS_WHILE_FLIGHT_MODE_IS_ENABLED_CONNECT_TO_A_WI_FI_NETWORK_INSTEAD_OR_DISABLE_FLIGHT_MODE_AND_TRY_AGAIN"
+msgstr "Nevar izveidot savienojumu ar mobilajiem tīkliem, kamēr ir aktivizēts lidojuma režīms. Tā vietā izveidojiet savienojumu ar Wi-Fi tīklu vai deaktivizējiet lidojuma režīmu un mēģiniet vēlreiz."
 
-msgid "IDS_COM_BUTTON_AGREE"
-msgstr "Piekrist"
+msgid "IDS_COM_BODY_SEARCHING"
+msgstr "Meklē"
 
-msgid "IDS_COM_BUTTON_DISAGREE"
-msgstr "Nepiekrītu"
+msgid "IDS_QP_TPOP_UNABLE_TO_OPEN_PS"
+msgstr "Nevar atvērt programmu %s."
 
-msgid "IDS_ST_BODY_GPS_LOCATION_USE_CONTROLLED_BY_APPLICATIONS_MSG"
-msgstr "GPS atrašanās vietu un jūsu atrašanās vietas datu izmantošanu pārvalda jūsu lietotās programmas"
+msgid "IDS_QP_OPT_OUTDOORS_M_OUTDOOR_MODE_ABB"
+msgstr "Ārā"
 
-msgid "IDS_ST_HEADER_USER_CONSENT"
-msgstr "Lietotāja piekrišana"
+msgid "IDS_QP_BUTTON2_PRIVATE_NMODE_ABB"
+msgstr "Priv.\nrežīms"
 
index 6d0c588..f99bfdd 100755 (executable)
--- a/po/mk.po
+++ b/po/mk.po
-msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
-msgstr "Известувања"
+msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
+msgstr "Не може истовремено да се активни и Wi-Fi и мобилна пристапна точка. Да се исклучи мобилната пристапна точка?"
+
+msgid "IDS_TASKMGR_BUTTON_CLEAR_ALL"
+msgstr "Бриши сѐ"
 
-msgid "IDS_WIFI_BODY_ALLSHARE_CAST"
-msgstr "AllShare Cast"
+msgid "IDS_IDLE_SBODY_TAP_HERE_TO_DISABLE_SAFE_MODE_ABB"
+msgstr "Допр.тука за искл.Безбед.режим."
 
-msgid "IDS_CALL_POP_CALLING_EMERG_ONLY"
+msgid "IDS_IDLE_POP_UNABLE_TO_LAUNCH_PS"
+msgstr "Не може да се активира %s."
+
+msgid "IDS_IDLE_MBODY_EMERGENCY_CALLS_ONLY"
 msgstr "Само итни повици"
 
-msgid "IDS_QP_BUTTON_ROTATION"
-msgstr "Заврт."
+msgid "IDS_IDLE_BODY_SEARCHING_ING"
+msgstr "Пребарување..."
+
+msgid "IDS_IDLE_BODY_NO_SIM"
+msgstr "Нема SIM"
+
+msgid "IDS_IDLE_BODY_NO_SERVICE"
+msgstr "Нема услуга"
+
+msgid "IDS_IDLE_BODY_INVALID_SIM_CARD"
+msgstr "Неважечка SIM-картичка."
 
-msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
+msgid "IDS_IDLE_BODY_EMERGENCY_CALLS_ONLY"
+msgstr "Само итни повици."
+
+msgid "IDS_QP_OPT_OUTDOORS_ABB"
+msgstr "Надвор"
+
+msgid "IDS_QP_MBODY_SAFE_MODE_ENABLED"
+msgstr "Безбедн. режим е вклучен"
+
+msgid "IDS_QP_HEADER_NOTIFICATIONS_HPD_ABB"
 msgstr "Известувања (%d)"
 
-msgid "IDS_QP_BUTTON_VIBRATION"
+msgid "IDS_QP_HEADER_CLEAR_ALL_ABB"
+msgstr "Избриши сѐ"
+
+msgid "IDS_QP_BUTTON_NOTIFICATION"
+msgstr "Извест."
+
+msgid "IDS_QP_BUTTON_ALWAYS_ASK_ABB"
+msgstr "Прашувај секогаш"
+
+msgid "IDS_QP_BUTTON2_WI_FI"
+msgstr "Wi-Fi"
+
+msgid "IDS_QP_BUTTON2_VIBRATE"
 msgstr "Вибрации"
 
-msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
-msgstr "Ð\97вÑ\83к Ð¸ Ð²Ð¸Ð±Ñ\80аÑ\86ии"
+msgid "IDS_QP_BUTTON2_U_POWER_NSAVING_ABB"
+msgstr "УлÑ\82\88Ñ\82ед.\nенеÑ\80гиÑ\98а"
 
-msgid "IDS_QP_TAB4_AUTO_ROTATION"
-msgstr "Ð\90вÑ\82ом. Ð²Ñ\80Ñ\82ење"
+msgid "IDS_QP_BUTTON2_TETHERING"
+msgstr "Ð\9fовÑ\80зÑ\83вање"
 
-msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
-msgstr "Ð\97акл. Ð²Ñ\80Ñ\82еÑ\9aе"
+msgid "IDS_QP_BUTTON2_SOUND_ABB"
+msgstr "Ð\97вÑ\83к"
 
-msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
-msgstr "Режим Ð·Ð° Ð½Ð°Ð´Ð²Ð¾Ñ\80. Ð¼ÐµÐ¼Ð¾Ñ\80иÑ\98а"
+msgid "IDS_QP_BUTTON2_SOUND"
+msgstr "Ð\97вÑ\83к"
 
-msgid "IDS_QP_BUTTON_DISABLE"
-msgstr "Ð\98Ñ\81клÑ\83Ñ\87и"
+msgid "IDS_QP_BUTTON2_PRIVATE_MODE"
+msgstr "Ð\9fÑ\80иваÑ\82ен Ñ\80ежим"
 
-msgid "IDS_QP_BUTTON_ENABLE"
-msgstr "Ð\92клÑ\83Ñ\87и"
+msgid "IDS_QP_BUTTON2_POWER_N_SAVING"
+msgstr "ШÑ\82едеÑ\9aе\nенеÑ\80гиÑ\98а"
 
-msgid "IDS_COM_POP_UNSUPPORTED"
-msgstr "Ð\9dеподдÑ\80жано"
+msgid "IDS_QP_BUTTON2_MUTE_ABB"
+msgstr "Ð\98Ñ\81клÑ\83Ñ\87и Ð·Ð²Ñ\83к"
 
-msgid "IDS_COM_SK_DISMISS"
-msgstr "Ð\9eÑ\82кажи"
+msgid "IDS_QP_BUTTON2_MOBILE_DATA"
+msgstr "Ð\9cобилни\nподаÑ\82оÑ\86и"
 
-msgid "IDS_COM_POP_PELASE_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
-msgstr "Ð\92меÑ\82неÑ\82е SIM-каÑ\80Ñ\82иÑ\87ка Ð·Ð° Ð´Ð° Ð¿Ñ\80иÑ\81Ñ\82апиÑ\82е ÐºÐ¾Ð½ Ð¼Ñ\80ежниÑ\82е Ñ\83Ñ\81лÑ\83ги"
+msgid "IDS_QP_BUTTON2_LOCATION_ABB"
+msgstr "Ð\9bокаÑ\86иÑ\98а"
 
-msgid "IDS_COM_BODY_DO_NOT_ASK_AGAIN"
-msgstr "Ð\9dе Ð¿Ñ\80аÑ\88Ñ\83ваÑ\98 Ð²ÐµÑ\9cе"
+msgid "IDS_QP_BUTTON2_FLIGHT_N_MODE"
+msgstr "Режим\nза Ð»ÐµÑ\82ало"
 
-msgid "IDS_QP_POP_INSERT_SIM_CARD_AND_RESTART_DEVICE_TO_USE_TETHERING"
-msgstr "Вметнете SIM-картичка и рестартирајте го уредот за да го користите делењето"
+msgid "IDS_QP_BUTTON2_BLUETOOTH"
+msgstr "Bluetooth"
 
-msgid "IDS_QP_POP_CONNECTING_VIA_PACKET_DATA_MAY_INCUR_ADDITIONAL_CHARGES_CONTINUE_Q"
-msgstr "Ð\97а Ð¿Ð¾Ð²Ñ\80зÑ\83ваÑ\9aе Ð¿Ñ\80екÑ\83 Ð¿Ð°ÐºÐµÑ\82ни Ð¿Ð¾Ð´Ð°Ñ\82оÑ\86и Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ñ\81е Ð½Ð°Ð¿Ð»Ð°Ñ\9cа Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ\82елно. Ð¡ÐµÐ¿Ð°Ðº Ð¿Ñ\80одолжи?"
+msgid "IDS_QP_BUTTON2_AUTO_ROTATE"
+msgstr "Ð\90вÑ\82омаÑ\82Ñ\81ко Ð²Ñ\80Ñ\82еÑ\9aе"
 
-msgid "IDS_QP_BODY_AUTO"
-msgstr "Ð\90вÑ\82омаÑ\82Ñ\81ки"
+msgid "IDS_QP_BUTTON2_ASSISTIVE_NLIGHT"
+msgstr "Ð\9fомоÑ\88но\nÑ\81веÑ\82ло"
 
-msgid "IDS_QP_TAB_POWER_SAVING"
-msgstr "Штедење енергија"
+msgid "IDS_QP_BODY_PM_ABB"
+msgstr "PM"
 
-msgid "IDS_QP_TAB_TETHERING"
-msgstr "СподелÑ\83ваÑ\9aе"
+msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
+msgstr "Ð\98звеÑ\81Ñ\82Ñ\83ваÑ\9aа"
 
-msgid "IDS_QP_TAB_MOBILE_DATA"
-msgstr "Мобилни податоци"
+msgid "IDS_QP_BODY_AM_ABB"
+msgstr "AM"
 
-msgid "IDS_QP_TAB_DRIVING_MODE"
-msgstr "Режим Ð·Ð° Ð²Ð¾Ð·ÐµÑ\9aе"
+msgid "IDS_ST_TPOP_UNABLE_TO_MAKE_VOICE_CALLS_VIDEO_CALLS_AND_SEND_TEXT_MESSAGES_USING_PS"
+msgstr "Ð\9dе Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ñ\81е Ñ\83паÑ\82Ñ\83вааÑ\82 Ð³Ð¾Ð²Ð¾Ñ\80ни Ð¿Ð¾Ð²Ð¸Ñ\86и, Ð²Ð¸Ð´ÐµÐ¾ Ð¿Ð¾Ð²Ð¸Ñ\86и Ð¸ Ñ\82екÑ\81Ñ\82Ñ\83ални Ð¿Ð¾Ñ\80аки Ñ\81о %s."
 
-msgid "IDS_COM_POP_UNABLE_TO_CONNECT_TO_MOBILE_NETWORK_WHILE_FLIGHT_MODE_IS_ENABLED_MSG"
-msgstr "Ð\9dе Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ñ\81е Ð¿Ð¾Ð²Ñ\80зе Ñ\81о Ð¼Ð¾Ð±Ð¸Ð»Ð½Ð¸ Ð¼Ñ\80ежи Ð´Ð¾Ð´ÐµÐºÐ° Ðµ Ð²ÐºÐ»Ñ\83Ñ\87ен Ñ\80ежим Ð·Ð° Ð»ÐµÑ\82ало. Ð\9fовÑ\80зеÑ\82е Ñ\81е Ñ\81о Ð¼Ñ\80ежа Wi-Fi Ð¸Ð»Ð¸ Ð¸Ñ\81клÑ\83Ñ\87еÑ\82е Ð³Ð¾ Ñ\80ежимоÑ\82 Ð·Ð° Ð»ÐµÑ\82ало Ð¸ Ð¾Ð±Ð¸Ð´ÐµÑ\82е Ñ\81е Ð¿Ð¾Ð²Ñ\82оÑ\80но"
+msgid "IDS_ST_TPOP_SELECT_SIM_CARD_FOR_OUTGOING_VOICE_CALLS_VIDEO_CALLS_AND_TEXT_MESSAGES"
+msgstr "Ð\98збеÑ\80еÑ\82е SIM-каÑ\80Ñ\82иÑ\87ка Ð·Ð° Ð¿Ð¾Ñ\98довниÑ\82е Ð³Ð¾Ð²Ð¾Ñ\80ни Ð¿Ð¾Ð²Ð¸Ñ\86и, Ð²Ð¸Ð´ÐµÐ¾ Ð¿Ð¾Ð²Ð¸Ñ\86иÑ\82е Ð¸ Ñ\82екÑ\81Ñ\82Ñ\83алниÑ\82е Ð¿Ð¾Ñ\80аки."
 
-msgid "IDS_QP_POP_WI_FI_TETHERING_CONSUMES_MORE_BATTERY_POWER_AND_INCREASES_YOUR_DATA_USAGE_CONTINUE_Q"
-msgstr "Ð\94елеÑ\9aеÑ\82о Wi-Fi Ñ\82Ñ\80оÑ\88и Ð¿Ð¾Ð²ÐµÑ\9cе Ð±Ð°Ñ\82еÑ\80иÑ\98а Ð¸ Ð³Ð¾ Ð·Ð³Ð¾Ð»ÐµÐ¼Ñ\83ва ÐºÐ¾Ñ\80иÑ\81Ñ\82еÑ\9aеÑ\82о Ð¿Ð¾Ð´Ð°Ñ\82оÑ\86и. Ð¡ÐµÐ¿Ð°Ðº Ð¿Ñ\80одолжи?"
+msgid "IDS_ST_TPOP_OUTGOING_VOICE_CALLS_VIDEO_CALLS_AND_TEXT_MESSAGES_WILL_BE_MADE_USING_THE_PS_SIM_CARD"
+msgstr "Ð\9fоÑ\98довниÑ\82е Ð³Ð¾Ð²Ð¾Ñ\80ни Ð¿Ð¾Ð²Ð¸Ñ\86и, Ð²Ð¸Ð´ÐµÐ¾ Ð¿Ð¾Ð²Ð¸Ñ\86иÑ\82е Ð¸ Ñ\82екÑ\81Ñ\82Ñ\83алниÑ\82е Ð¿Ð¾Ñ\80аки Ñ\9cе Ñ\81е Ñ\83паÑ\82Ñ\83вааÑ\82 Ñ\81о SIM-каÑ\80Ñ\82иÑ\87каÑ\82а %s."
 
-msgid "IDS_QP_POP_DISABLE_TETHERING_TO_USE_WI_FI"
-msgstr "Исклучете делење за да користите Wi-Fi"
+msgid "IDS_ST_SK_OK"
+msgstr "OK"
 
-msgid "IDS_QP_POP_TO_ENABLE_POWER_SAVING_MODE_ENABLE_AT_LEAST_ONE_RELEVANT_FUNCTION"
-msgstr "Ð\97а Ð´Ð° Ð²ÐºÐ»Ñ\83Ñ\87иÑ\82е Ð ÐµÐ¶Ð¸Ð¼ Ð·Ð° Ñ\88Ñ\82едеÑ\9aе ÐµÐ½ÐµÑ\80гиÑ\98а, Ð²ÐºÐ»Ñ\83Ñ\87еÑ\82е Ð±Ð°Ñ\80ем ÐµÐ´Ð½Ð° Ñ\80елеванÑ\82на Ñ\84Ñ\83нкÑ\86иÑ\98а"
+msgid "IDS_ST_SK_NO"
+msgstr "Ð\9dе"
 
-msgid "IDS_QP_POP_TURN_OFF_WI_FI_TO_USE_TETHERING"
-msgstr "Ð\98Ñ\81клÑ\83Ñ\87еÑ\82е Ð³Ð¾ Wi-Fi Ð·Ð° Ð´Ð° ÐºÐ¾Ñ\80иÑ\81Ñ\82иÑ\82е Ð´ÐµÐ»ÐµÑ\9aе"
+msgid "IDS_ST_POP_UNABLE_TO_INCREASE_BRIGHTNESS_FURTHER_BECAUSE_OF_PHONE_OVERHEATING"
+msgstr "Ð\9dе Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ñ\81е Ð·Ð³Ð¾Ð»ÐµÐ¼Ð¸ Ð¾Ñ\81веÑ\82леноÑ\81Ñ\82а Ð¿Ð¾Ð²ÐµÑ\9cе Ð¿Ð¾Ñ\80ади Ð¿Ñ\80егÑ\80еваÑ\9aе Ð½Ð° Ñ\82елеÑ\84оноÑ\82."
 
-msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
-msgstr "Не може истовремено да се активни и Wi-Fi и мобилна пристапна точка. Да се исклучи мобилната пристапна точка?"
+msgid "IDS_ST_NPBODY_NO_SERVICE"
+msgstr "Нема услуга"
 
-msgid "IDS_ASCAST_HEADER_SCREEN_MIRRORING"
-msgstr "Одразување екран"
+msgid "IDS_ST_NPBODY_EMERGENCY_CALLS_ONLY_ABB"
+msgstr "Само итни повици"
+
+msgid "IDS_ST_HEADER_OUTDOOR"
+msgstr "Надвор"
 
-msgid "IDS_QP_HEADER_REPLACE_QUICK_SETTING_BUTTON"
-msgstr "Ð\97амени ÐºÐ¾Ð¿Ñ\87е Ð·Ð° Ð±Ñ\80зо Ð¿Ð¾Ñ\81Ñ\82авÑ\83ваÑ\9aе"
+msgid "IDS_ST_BUTTON2_WI_FI_NTETHERING"
+msgstr "Сподел.\nWi-Fi"
 
-msgid "IDS_QP_HEADER_ADD_QUICK_SETTING_BUTTON"
-msgstr "Додавање копче за брзо поставување"
+msgid "IDS_ST_BUTTON2_WI_FI_ABB"
+msgstr "Wi-Fi"
 
-msgid "IDS_QP_POP_YOU_WILL_NO_LONGER_BE_ABLE_TO_USE_APPLICATIONS_SUCH_AS_INTERNET_NOTI_MSG"
-msgstr "Ð\92еÑ\9cе Ð½ÐµÐ¼Ð° Ð´Ð° Ð¼Ð¾Ð¶ÐµÑ\82е Ð´Ð° ÐºÐ¾Ñ\80иÑ\81Ñ\82иÑ\82е Ð°Ð¿Ð»Ð¸ÐºÐ°Ñ\86ии ÐºÐ°ÐºÐ¾ Ð¸Ð½Ñ\82еÑ\80неÑ\82 Ð¸ Email Ð¿Ñ\80екÑ\83 Ð¼Ð¾Ð±Ð¸Ð»Ð½Ð¸ Ð¼Ñ\80ежи. Ð\9fÑ\80одолжи?"
+msgid "IDS_ST_BUTTON2_TORCH_ABB"
+msgstr "СвеÑ\82илка"
 
-msgid "IDS_QP_BUTTON2_SCREEN_N_MIRRORING"
-msgstr "Screen\nMirroring"
+msgid "IDS_ST_BUTTON2_POWER_NSAVING"
+msgstr "Штед.\nенергија"
 
-msgid "IDS_COM_BODY_BUTTON_T_TTS"
-msgstr "Ð\9aопÑ\87е"
+msgid "IDS_ST_BUTTON2_MOBILE_NDATA"
+msgstr "Ð\9cоб.\nподаÑ\82оÑ\86и"
 
-msgid "IDS_QP_BUTTON2_GPS"
+msgid "IDS_ST_BUTTON2_GPS_ABB"
 msgstr "GPS"
 
-msgid "IDS_QP_BUTTON_NOTIFICATION"
-msgstr "Извест."
+msgid "IDS_ST_BUTTON2_FLIGHT_NMODE"
+msgstr "Авионски\nрежим"
+
+msgid "IDS_ST_BUTTON2_BLUETOOTH_ABB"
+msgstr "Bluetooth"
+
+msgid "IDS_ST_BUTTON2_AUTO_NROTATE"
+msgstr "Автом.\nвртење"
+
+msgid "IDS_ST_BODY_SIM_2"
+msgstr "SIM 2"
+
+msgid "IDS_ST_BODY_SIM_1"
+msgstr "SIM 1"
+
+msgid "IDS_ST_BODY_SCANNING_FOR_MOBILE_NETWORK_ING_ABB"
+msgstr "Се скенира за мобилни мрежи..."
+
+msgid "IDS_ST_BODY_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
+msgstr "Вметнете SIM-картичка за да пристапите кон мрежните услуги."
+
+msgid "IDS_ST_BODY_ALWAYS_ASK_ABB"
+msgstr "Прашувај секогаш"
+
+msgid "IDS_SCP_BODY_UNABLE_TO_CONNECT_TO_MOBILE_NETWORKS_WHILE_FLIGHT_MODE_IS_ENABLED_CONNECT_TO_A_WI_FI_NETWORK_INSTEAD_OR_DISABLE_FLIGHT_MODE_AND_TRY_AGAIN"
+msgstr "Не може да се поврзе со мобилни мрежи додека е вклучен режим за летање. Поврзете се со мрежа Wi-Fi место тоа или исклучете го режимот за летање и обидете се повторно."
 
-msgid "IDS_COM_BUTTON_AGREE"
-msgstr "Ð\94обÑ\80о"
+msgid "IDS_COM_BODY_SEARCHING"
+msgstr "Се Ð¿Ñ\80ебаÑ\80Ñ\83ва"
 
-msgid "IDS_COM_BUTTON_DISAGREE"
-msgstr "Не се согласувам"
+msgid "IDS_QP_TPOP_UNABLE_TO_OPEN_PS"
+msgstr "Не може да се отвори %s."
 
-msgid "IDS_ST_BODY_GPS_LOCATION_USE_CONTROLLED_BY_APPLICATIONS_MSG"
-msgstr "Ð\9bокаÑ\86иÑ\98аÑ\82а GPS Ð¸ ÐºÐ¾Ñ\80иÑ\81Ñ\82еÑ\9aеÑ\82о Ð½Ð° Ð¿Ð¾Ð´Ð°Ñ\82оÑ\86иÑ\82е Ð·Ð° Ð²Ð°Ñ\88аÑ\82а Ð»Ð¾ÐºÐ°Ñ\86иÑ\98а Ð³Ð¸ ÐºÐ¾Ð½Ñ\82Ñ\80олиÑ\80ааÑ\82 Ð°Ð¿Ð»Ð¸ÐºÐ°Ñ\86ииÑ\82е Ñ\88Ñ\82о Ð³Ð¸ ÐºÐ¾Ñ\80иÑ\81Ñ\82иÑ\82е"
+msgid "IDS_QP_OPT_OUTDOORS_M_OUTDOOR_MODE_ABB"
+msgstr "Ð\9dадвоÑ\80"
 
-msgid "IDS_ST_HEADER_USER_CONSENT"
-msgstr "СоглаÑ\81ноÑ\81Ñ\82 Ð½Ð° ÐºÐ¾Ñ\80иÑ\81никоÑ\82"
+msgid "IDS_QP_BUTTON2_PRIVATE_NMODE_ABB"
+msgstr "Ð\9fÑ\80иваÑ\82ен\nÑ\80ежим"
 
index bce7d41..76ee916 100755 (executable)
--- a/po/nb.po
+++ b/po/nb.po
-msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
-msgstr "Varsler"
+msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
+msgstr "Både Wi-Fi og mobilt tilgangspunkt kan ikke aktiveres samtidig. Deaktivere mobilt tilgangspunkt?"
+
+msgid "IDS_TASKMGR_BUTTON_CLEAR_ALL"
+msgstr "Tøm alle"
 
-msgid "IDS_WIFI_BODY_ALLSHARE_CAST"
-msgstr "AllShare Cast"
+msgid "IDS_IDLE_SBODY_TAP_HERE_TO_DISABLE_SAFE_MODE_ABB"
+msgstr "Trykk for deaktiv. Sikkerh.mod."
 
-msgid "IDS_CALL_POP_CALLING_EMERG_ONLY"
+msgid "IDS_IDLE_POP_UNABLE_TO_LAUNCH_PS"
+msgstr "Kan ikke starte %s."
+
+msgid "IDS_IDLE_MBODY_EMERGENCY_CALLS_ONLY"
 msgstr "Kun nødanrop"
 
-msgid "IDS_QP_BUTTON_ROTATION"
-msgstr "Rotasjon"
+msgid "IDS_IDLE_BODY_SEARCHING_ING"
+msgstr "Søker..."
 
-msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
-msgstr "Varsler (%d)"
+msgid "IDS_IDLE_BODY_NO_SIM"
+msgstr "Mangler SIM-kort"
 
-msgid "IDS_QP_BUTTON_VIBRATION"
-msgstr "Vibrasjon"
+msgid "IDS_IDLE_BODY_NO_SERVICE"
+msgstr "Nettverk mangler"
 
-msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
-msgstr "Lyd og vibrasjon"
+msgid "IDS_IDLE_BODY_INVALID_SIM_CARD"
+msgstr "Ugyldig SIM-kort."
 
-msgid "IDS_QP_TAB4_AUTO_ROTATION"
-msgstr "Auto- rotasjon"
+msgid "IDS_IDLE_BODY_EMERGENCY_CALLS_ONLY"
+msgstr "Kun nødanrop"
 
-msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
-msgstr "Rotasjons-lås"
+msgid "IDS_QP_OPT_OUTDOORS_ABB"
+msgstr "Utendørs"
 
-msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
-msgstr "Masselagringsmodus"
+msgid "IDS_QP_MBODY_SAFE_MODE_ENABLED"
+msgstr "Sikkerhetsmodus aktivert"
 
-msgid "IDS_QP_BUTTON_DISABLE"
-msgstr "Deaktiver"
+msgid "IDS_QP_HEADER_NOTIFICATIONS_HPD_ABB"
+msgstr "Varsler (%d)"
 
-msgid "IDS_QP_BUTTON_ENABLE"
-msgstr "Aktiver"
+msgid "IDS_QP_HEADER_CLEAR_ALL_ABB"
+msgstr "Slett alt"
 
-msgid "IDS_COM_POP_UNSUPPORTED"
-msgstr "Støttes ikke"
+msgid "IDS_QP_BUTTON_NOTIFICATION"
+msgstr "Varsel"
+
+msgid "IDS_QP_BUTTON_ALWAYS_ASK_ABB"
+msgstr "Spør alltid"
+
+msgid "IDS_QP_BUTTON2_WI_FI"
+msgstr "Wi-Fi"
 
-msgid "IDS_COM_SK_DISMISS"
-msgstr "Stopp"
+msgid "IDS_QP_BUTTON2_VIBRATE"
+msgstr "Vibrer"
 
-msgid "IDS_COM_POP_PELASE_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
-msgstr "Sett inn SIM-kort for å få tilgang til nettverkstjenester"
+msgid "IDS_QP_BUTTON2_U_POWER_NSAVING_ABB"
+msgstr "U. strøm-\nsparing"
 
-msgid "IDS_COM_BODY_DO_NOT_ASK_AGAIN"
-msgstr "Ikke spør på nytt"
+msgid "IDS_QP_BUTTON2_TETHERING"
+msgstr "Internett-deling"
 
-msgid "IDS_QP_POP_INSERT_SIM_CARD_AND_RESTART_DEVICE_TO_USE_TETHERING"
-msgstr "Sett inn SIM-kort og start enheten på nytt for å bruke Internettdeling"
+msgid "IDS_QP_BUTTON2_SOUND_ABB"
+msgstr "Lyd"
 
-msgid "IDS_QP_POP_CONNECTING_VIA_PACKET_DATA_MAY_INCUR_ADDITIONAL_CHARGES_CONTINUE_Q"
-msgstr "Ved tilkobling via pakkedata kan det oppstå ekstra kostnader. Fortsette?"
+msgid "IDS_QP_BUTTON2_SOUND"
+msgstr "Lyd"
 
-msgid "IDS_QP_BODY_AUTO"
-msgstr "Auto"
+msgid "IDS_QP_BUTTON2_PRIVATE_MODE"
+msgstr "Privat-\nmodus"
 
-msgid "IDS_QP_TAB_POWER_SAVING"
+msgid "IDS_QP_BUTTON2_POWER_N_SAVING"
 msgstr "Strøm-\nsparing"
 
-msgid "IDS_QP_TAB_TETHERING"
-msgstr "Internettdeling"
+msgid "IDS_QP_BUTTON2_MUTE_ABB"
+msgstr "Demp"
 
-msgid "IDS_QP_TAB_MOBILE_DATA"
-msgstr "Mobildata"
+msgid "IDS_QP_BUTTON2_MOBILE_DATA"
+msgstr "Mobil-\ndata"
 
-msgid "IDS_QP_TAB_DRIVING_MODE"
-msgstr "Kjøremodus"
+msgid "IDS_QP_BUTTON2_LOCATION_ABB"
+msgstr "Posisjon"
 
-msgid "IDS_COM_POP_UNABLE_TO_CONNECT_TO_MOBILE_NETWORK_WHILE_FLIGHT_MODE_IS_ENABLED_MSG"
-msgstr "Kan ikke koble til mobilnettverk mens Offlinemodus er aktivert. Koble til Wi-Fi-nettverk i stedet, eller deaktiver Offlinemodus og prøv på nytt"
+msgid "IDS_QP_BUTTON2_FLIGHT_N_MODE"
+msgstr "Fly-\nmodus"
 
-msgid "IDS_QP_POP_WI_FI_TETHERING_CONSUMES_MORE_BATTERY_POWER_AND_INCREASES_YOUR_DATA_USAGE_CONTINUE_Q"
-msgstr "Wi-Fi-Internettdeling forbruker mer batteristrøm og øker databruken. Fortsette?"
+msgid "IDS_QP_BUTTON2_BLUETOOTH"
+msgstr "Bluetooth"
 
-msgid "IDS_QP_POP_DISABLE_TETHERING_TO_USE_WI_FI"
-msgstr "Deaktiver Internettdeling for å bruke Wi-Fi"
+msgid "IDS_QP_BUTTON2_AUTO_ROTATE"
+msgstr "Automatisk rotasjon"
 
-msgid "IDS_QP_POP_TO_ENABLE_POWER_SAVING_MODE_ENABLE_AT_LEAST_ONE_RELEVANT_FUNCTION"
-msgstr "For å aktivere strømsparingsmodus må du aktivere minst én relevant funksjon"
+msgid "IDS_QP_BUTTON2_ASSISTIVE_NLIGHT"
+msgstr "Hjelpe\nlys"
 
-msgid "IDS_QP_POP_TURN_OFF_WI_FI_TO_USE_TETHERING"
-msgstr "Slå av Wi-Fi for å bruke Internettdeling"
+msgid "IDS_QP_BODY_PM_ABB"
+msgstr "PM"
 
-msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
-msgstr "Både Wi-Fi og mobilt tilgangspunkt kan ikke aktiveres samtidig. Deaktivere mobilt tilgangspunkt?"
+msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
+msgstr "Varsler"
+
+msgid "IDS_QP_BODY_AM_ABB"
+msgstr "AM"
+
+msgid "IDS_ST_TPOP_UNABLE_TO_MAKE_VOICE_CALLS_VIDEO_CALLS_AND_SEND_TEXT_MESSAGES_USING_PS"
+msgstr "Kan ikke foreta taleanrop, videoanrop og sende tekstmeldinger ved å bruke %s."
 
-msgid "IDS_ASCAST_HEADER_SCREEN_MIRRORING"
-msgstr "Screen Mirroring"
+msgid "IDS_ST_TPOP_SELECT_SIM_CARD_FOR_OUTGOING_VOICE_CALLS_VIDEO_CALLS_AND_TEXT_MESSAGES"
+msgstr "Velg SIM-kort for utgående taleanrop, videoanrop og tekstmeldinger."
 
-msgid "IDS_QP_HEADER_REPLACE_QUICK_SETTING_BUTTON"
-msgstr "Bytt ut hurtiginnstillingsknapp"
+msgid "IDS_ST_TPOP_OUTGOING_VOICE_CALLS_VIDEO_CALLS_AND_TEXT_MESSAGES_WILL_BE_MADE_USING_THE_PS_SIM_CARD"
+msgstr "Utgående taleanrop, videoanrop og tekstmeldinger blir gjort ved å bruke SIM-kortet for %s."
 
-msgid "IDS_QP_HEADER_ADD_QUICK_SETTING_BUTTON"
-msgstr "Legg til en hurtiginnstillingsknapp"
+msgid "IDS_ST_SK_OK"
+msgstr "OK"
 
-msgid "IDS_QP_POP_YOU_WILL_NO_LONGER_BE_ABLE_TO_USE_APPLICATIONS_SUCH_AS_INTERNET_NOTI_MSG"
-msgstr "Du vil ikke lenger kunne bruke programmer som Internett og E-post via mobilnettverk. Fortsette?"
+msgid "IDS_ST_SK_NO"
+msgstr "Nei"
 
-msgid "IDS_QP_BUTTON2_SCREEN_N_MIRRORING"
-msgstr "Screen\nMirroring"
+msgid "IDS_ST_POP_UNABLE_TO_INCREASE_BRIGHTNESS_FURTHER_BECAUSE_OF_PHONE_OVERHEATING"
+msgstr "Kan ikke øke lysstyrken mer på grunn av at telefonen kan overopphetes."
 
-msgid "IDS_COM_BODY_BUTTON_T_TTS"
-msgstr "Knapp"
+msgid "IDS_ST_NPBODY_NO_SERVICE"
+msgstr "Ingen tjeneste"
 
-msgid "IDS_QP_BUTTON2_GPS"
+msgid "IDS_ST_NPBODY_EMERGENCY_CALLS_ONLY_ABB"
+msgstr "Kun nødanrop"
+
+msgid "IDS_ST_HEADER_OUTDOOR"
+msgstr "Utendørs"
+
+msgid "IDS_ST_BUTTON2_WI_FI_NTETHERING"
+msgstr "Wi-Fi-\nInt.deling"
+
+msgid "IDS_ST_BUTTON2_WI_FI_ABB"
+msgstr "Wi-Fi"
+
+msgid "IDS_ST_BUTTON2_TORCH_ABB"
+msgstr "Lomme\n-lykt"
+
+msgid "IDS_ST_BUTTON2_POWER_NSAVING"
+msgstr "Strøm-\nsparing"
+
+msgid "IDS_ST_BUTTON2_MOBILE_NDATA"
+msgstr "Mobil-\ndata"
+
+msgid "IDS_ST_BUTTON2_GPS_ABB"
 msgstr "GPS"
 
-msgid "IDS_QP_BUTTON_NOTIFICATION"
-msgstr "Varsel"
+msgid "IDS_ST_BUTTON2_FLIGHT_NMODE"
+msgstr "Fly-\nmodus"
+
+msgid "IDS_ST_BUTTON2_BLUETOOTH_ABB"
+msgstr "Bluetooth"
+
+msgid "IDS_ST_BUTTON2_AUTO_NROTATE"
+msgstr "Auto.\nrotasjon"
+
+msgid "IDS_ST_BODY_SIM_2"
+msgstr "SIM 2"
+
+msgid "IDS_ST_BODY_SIM_1"
+msgstr "SIM 1"
+
+msgid "IDS_ST_BODY_SCANNING_FOR_MOBILE_NETWORK_ING_ABB"
+msgstr "Søker etter mobilnett..."
+
+msgid "IDS_ST_BODY_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
+msgstr "Sett inn SIM-kort for å få tilgang til nettverkstjenester."
+
+msgid "IDS_ST_BODY_ALWAYS_ASK_ABB"
+msgstr "Spør alltid"
+
+msgid "IDS_SCP_BODY_UNABLE_TO_CONNECT_TO_MOBILE_NETWORKS_WHILE_FLIGHT_MODE_IS_ENABLED_CONNECT_TO_A_WI_FI_NETWORK_INSTEAD_OR_DISABLE_FLIGHT_MODE_AND_TRY_AGAIN"
+msgstr "Kan ikke koble til mobilnett mens Flymodus er aktivert. Koble til et Wi-Fi-nettverk i stedet, eller deaktiver Flymodus, og prøv på nytt."
 
-msgid "IDS_COM_BUTTON_AGREE"
-msgstr "Godkjenn"
+msgid "IDS_COM_BODY_SEARCHING"
+msgstr "Søker"
 
-msgid "IDS_COM_BUTTON_DISAGREE"
-msgstr "Uenig"
+msgid "IDS_QP_TPOP_UNABLE_TO_OPEN_PS"
+msgstr "Kan ikke åpne %s."
 
-msgid "IDS_ST_BODY_GPS_LOCATION_USE_CONTROLLED_BY_APPLICATIONS_MSG"
-msgstr "GPS-plassering og bruk av dine plasseringsdata kontrolleres av programmene du bruker"
+msgid "IDS_QP_OPT_OUTDOORS_M_OUTDOOR_MODE_ABB"
+msgstr "Ute"
 
-msgid "IDS_ST_HEADER_USER_CONSENT"
-msgstr "Brukertillatelse"
+msgid "IDS_QP_BUTTON2_PRIVATE_NMODE_ABB"
+msgstr "Privat-\nmodus"
 
diff --git a/po/nl.po b/po/nl.po
new file mode 100644 (file)
index 0000000..1a6baf8
--- /dev/null
+++ b/po/nl.po
@@ -0,0 +1,186 @@
+msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
+msgstr "Wi-Fi en mobiel access point kunnen niet tegelijkertijd zijn geactiveerd. Mobiel access point uitschakelen?"
+
+msgid "IDS_TASKMGR_BUTTON_CLEAR_ALL"
+msgstr "Wis alles"
+
+msgid "IDS_IDLE_SBODY_TAP_HERE_TO_DISABLE_SAFE_MODE_ABB"
+msgstr "Tik voor Veilige modus uit."
+
+msgid "IDS_IDLE_POP_UNABLE_TO_LAUNCH_PS"
+msgstr "Kan %s niet starten."
+
+msgid "IDS_IDLE_MBODY_EMERGENCY_CALLS_ONLY"
+msgstr "Alleen noodoproepen"
+
+msgid "IDS_IDLE_BODY_SEARCHING_ING"
+msgstr "Zoeken..."
+
+msgid "IDS_IDLE_BODY_NO_SIM"
+msgstr "Geen SIM"
+
+msgid "IDS_IDLE_BODY_NO_SERVICE"
+msgstr "Geen netwerk"
+
+msgid "IDS_IDLE_BODY_INVALID_SIM_CARD"
+msgstr "Ongeldige SIM-kaart."
+
+msgid "IDS_IDLE_BODY_EMERGENCY_CALLS_ONLY"
+msgstr "Alleen noodoproepen."
+
+msgid "IDS_QP_OPT_OUTDOORS_ABB"
+msgstr "Buiten"
+
+msgid "IDS_QP_MBODY_SAFE_MODE_ENABLED"
+msgstr "Veilige modus aan"
+
+msgid "IDS_QP_HEADER_NOTIFICATIONS_HPD_ABB"
+msgstr "Meldingen (%d)"
+
+msgid "IDS_QP_HEADER_CLEAR_ALL_ABB"
+msgstr "Alles wissen"
+
+msgid "IDS_QP_BUTTON_NOTIFICATION"
+msgstr "Melding"
+
+msgid "IDS_QP_BUTTON_ALWAYS_ASK_ABB"
+msgstr "Altijd vragen"
+
+msgid "IDS_QP_BUTTON2_WI_FI"
+msgstr "Wi-Fi"
+
+msgid "IDS_QP_BUTTON2_VIBRATE"
+msgstr "Trillen"
+
+msgid "IDS_QP_BUTTON2_U_POWER_NSAVING_ABB"
+msgstr "Ext spaar\n-stand"
+
+msgid "IDS_QP_BUTTON2_TETHERING"
+msgstr "Tethering"
+
+msgid "IDS_QP_BUTTON2_SOUND_ABB"
+msgstr "Geluid"
+
+msgid "IDS_QP_BUTTON2_SOUND"
+msgstr "Melodie"
+
+msgid "IDS_QP_BUTTON2_PRIVATE_MODE"
+msgstr "Privé-\nstand"
+
+msgid "IDS_QP_BUTTON2_POWER_N_SAVING"
+msgstr "Spaar-\nstand"
+
+msgid "IDS_QP_BUTTON2_MUTE_ABB"
+msgstr "Dempen"
+
+msgid "IDS_QP_BUTTON2_MOBILE_DATA"
+msgstr "Mobiele\ngegevens"
+
+msgid "IDS_QP_BUTTON2_LOCATION_ABB"
+msgstr "Locatie"
+
+msgid "IDS_QP_BUTTON2_FLIGHT_N_MODE"
+msgstr "Vliegtuig-\nstand"
+
+msgid "IDS_QP_BUTTON2_BLUETOOTH"
+msgstr "Bluetooth"
+
+msgid "IDS_QP_BUTTON2_AUTO_ROTATE"
+msgstr "Automatisch draaien"
+
+msgid "IDS_QP_BUTTON2_ASSISTIVE_NLIGHT"
+msgstr "Hulp-\nlamp"
+
+msgid "IDS_QP_BODY_PM_ABB"
+msgstr "PM"
+
+msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
+msgstr "Meldingen"
+
+msgid "IDS_QP_BODY_AM_ABB"
+msgstr "AM"
+
+msgid "IDS_ST_TPOP_UNABLE_TO_MAKE_VOICE_CALLS_VIDEO_CALLS_AND_SEND_TEXT_MESSAGES_USING_PS"
+msgstr "Kan geen uitgaande spraakoproepen en video-oproepen doen en geen SMS-berichten verzenden met %s."
+
+msgid "IDS_ST_TPOP_SELECT_SIM_CARD_FOR_OUTGOING_VOICE_CALLS_VIDEO_CALLS_AND_TEXT_MESSAGES"
+msgstr "Selecteer SIM-kaart voor uitgaande spraakoproepen, video-oproepen en SMS-berichten."
+
+msgid "IDS_ST_TPOP_OUTGOING_VOICE_CALLS_VIDEO_CALLS_AND_TEXT_MESSAGES_WILL_BE_MADE_USING_THE_PS_SIM_CARD"
+msgstr "Uitgaande spraakoproepen, video-oproepen en SMS-berichten worden gemaakt met de SIM-kaart voor %s."
+
+msgid "IDS_ST_SK_OK"
+msgstr "OK"
+
+msgid "IDS_ST_SK_NO"
+msgstr "Nee"
+
+msgid "IDS_ST_POP_UNABLE_TO_INCREASE_BRIGHTNESS_FURTHER_BECAUSE_OF_PHONE_OVERHEATING"
+msgstr "Kan de helderheid niet verder verhogen, omdat de telefoon dan te warm wordt."
+
+msgid "IDS_ST_NPBODY_NO_SERVICE"
+msgstr "Geen netwerk"
+
+msgid "IDS_ST_NPBODY_EMERGENCY_CALLS_ONLY_ABB"
+msgstr "Alleen noodoproepen"
+
+msgid "IDS_ST_HEADER_OUTDOOR"
+msgstr "Buiten"
+
+msgid "IDS_ST_BUTTON2_WI_FI_NTETHERING"
+msgstr "Wi-Fi\ntethering"
+
+msgid "IDS_ST_BUTTON2_WI_FI_ABB"
+msgstr "Wi-Fi"
+
+msgid "IDS_ST_BUTTON2_TORCH_ABB"
+msgstr "Zaklamp"
+
+msgid "IDS_ST_BUTTON2_POWER_NSAVING"
+msgstr "Spaar-\nstand"
+
+msgid "IDS_ST_BUTTON2_MOBILE_NDATA"
+msgstr "Mobiele\ngegevens"
+
+msgid "IDS_ST_BUTTON2_GPS_ABB"
+msgstr "GPS"
+
+msgid "IDS_ST_BUTTON2_FLIGHT_NMODE"
+msgstr "Vliegt.-\nstand"
+
+msgid "IDS_ST_BUTTON2_BLUETOOTH_ABB"
+msgstr "Bluetooth"
+
+msgid "IDS_ST_BUTTON2_AUTO_NROTATE"
+msgstr "Autom.\ndraaien"
+
+msgid "IDS_ST_BODY_SIM_2"
+msgstr "SIM 2"
+
+msgid "IDS_ST_BODY_SIM_1"
+msgstr "SIM 1"
+
+msgid "IDS_ST_BODY_SCANNING_FOR_MOBILE_NETWORK_ING_ABB"
+msgstr "Zoeken naar mobiel netwerk..."
+
+msgid "IDS_ST_BODY_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
+msgstr "Plaats de SIM-kaart voor netwerkdiensten."
+
+msgid "IDS_ST_BODY_ALWAYS_ASK_ABB"
+msgstr "Altijd vragen"
+
+msgid "IDS_SCP_BODY_UNABLE_TO_CONNECT_TO_MOBILE_NETWORKS_WHILE_FLIGHT_MODE_IS_ENABLED_CONNECT_TO_A_WI_FI_NETWORK_INSTEAD_OR_DISABLE_FLIGHT_MODE_AND_TRY_AGAIN"
+msgstr "Kan niet verbinden met mobiele netwerken als Vliegtuigstand is ingeschakeld. Maak in plaats daarvan verbinding via een Wi-Fi-netwerk of schakel Vliegtuigstand uit en probeer het opnieuw."
+
+msgid "IDS_COM_BODY_SEARCHING"
+msgstr "Zoeken"
+
+msgid "IDS_QP_TPOP_UNABLE_TO_OPEN_PS"
+msgstr "Kan %s niet openen."
+
+msgid "IDS_QP_OPT_OUTDOORS_M_OUTDOOR_MODE_ABB"
+msgstr "Buiten"
+
+msgid "IDS_QP_BUTTON2_PRIVATE_NMODE_ABB"
+msgstr "Privé-\nstand"
+
diff --git a/po/nl_NL.po b/po/nl_NL.po
deleted file mode 100755 (executable)
index 03688d7..0000000
+++ /dev/null
@@ -1,123 +0,0 @@
-msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
-msgstr "Meldingen"
-
-msgid "IDS_WIFI_BODY_ALLSHARE_CAST"
-msgstr "AllShare Cast"
-
-msgid "IDS_CALL_POP_CALLING_EMERG_ONLY"
-msgstr "Alleen noodoproepen"
-
-msgid "IDS_QP_BUTTON_ROTATION"
-msgstr "Rotatie"
-
-msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
-msgstr "Meldingen (%d)"
-
-msgid "IDS_QP_BUTTON_VIBRATION"
-msgstr "Trillen"
-
-msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
-msgstr "Geluid en trillen"
-
-msgid "IDS_QP_TAB4_AUTO_ROTATION"
-msgstr "Autom. draaien"
-
-msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
-msgstr "Rotatie vergrend."
-
-msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
-msgstr "Massaopslagmodus"
-
-msgid "IDS_QP_BUTTON_DISABLE"
-msgstr "Uitzetten"
-
-msgid "IDS_QP_BUTTON_ENABLE"
-msgstr "Aanzetten"
-
-msgid "IDS_COM_POP_UNSUPPORTED"
-msgstr "Niet ondersteund"
-
-msgid "IDS_COM_SK_DISMISS"
-msgstr "Uitzetten"
-
-msgid "IDS_COM_POP_PELASE_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
-msgstr "Plaats de SIM-kaart voor netwerkdiensten"
-
-msgid "IDS_COM_BODY_DO_NOT_ASK_AGAIN"
-msgstr "Niet nogmaals vragen"
-
-msgid "IDS_QP_POP_INSERT_SIM_CARD_AND_RESTART_DEVICE_TO_USE_TETHERING"
-msgstr "SIM-kaart plaatsen en apparaat opnieuw opstarten om tethering te gebruiken"
-
-msgid "IDS_QP_POP_CONNECTING_VIA_PACKET_DATA_MAY_INCUR_ADDITIONAL_CHARGES_CONTINUE_Q"
-msgstr "Aan verbinding via pakketgegevens zijn mogelijk extra kosten verbonden. Doorgaan?"
-
-msgid "IDS_QP_BODY_AUTO"
-msgstr "Automatisch"
-
-msgid "IDS_QP_TAB_POWER_SAVING"
-msgstr "Spaarstand"
-
-msgid "IDS_QP_TAB_TETHERING"
-msgstr "Tethering"
-
-msgid "IDS_QP_TAB_MOBILE_DATA"
-msgstr "Mobiele gegevens"
-
-msgid "IDS_QP_TAB_DRIVING_MODE"
-msgstr "Autostand"
-
-msgid "IDS_COM_POP_UNABLE_TO_CONNECT_TO_MOBILE_NETWORK_WHILE_FLIGHT_MODE_IS_ENABLED_MSG"
-msgstr "Kan niet verbinden met mobiele netwerken als Vliegtuigstand is ingeschakeld. Maak in plaats daarvan verbinding via Wi-Fi-netwerk of schakel Vliegtuigstand uit en probeer het opnieuw"
-
-msgid "IDS_QP_POP_WI_FI_TETHERING_CONSUMES_MORE_BATTERY_POWER_AND_INCREASES_YOUR_DATA_USAGE_CONTINUE_Q"
-msgstr "Wi-Fi-tethering verbruikt meer voeding en verhoogt uw gegevensgebruik. Doorgaan?"
-
-msgid "IDS_QP_POP_DISABLE_TETHERING_TO_USE_WI_FI"
-msgstr "Tethering uitschakelen om Wi-Fi te gebruiken"
-
-msgid "IDS_QP_POP_TO_ENABLE_POWER_SAVING_MODE_ENABLE_AT_LEAST_ONE_RELEVANT_FUNCTION"
-msgstr "Schakel ten minste één relevante functie in om de spaarstand in te schakelen"
-
-msgid "IDS_QP_POP_TURN_OFF_WI_FI_TO_USE_TETHERING"
-msgstr "Wi-Fi uitschakelen om tethering te gebruiken"
-
-msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
-msgstr "Wi-Fi en mobiel access point kunnen niet tegelijkertijd zijn geactiveerd. Mobiel access point uitschakelen?"
-
-msgid "IDS_ASCAST_HEADER_SCREEN_MIRRORING"
-msgstr "Screen Mirroring"
-
-msgid "IDS_QP_HEADER_REPLACE_QUICK_SETTING_BUTTON"
-msgstr "Snelle instelknop vervangen"
-
-msgid "IDS_QP_HEADER_ADD_QUICK_SETTING_BUTTON"
-msgstr "Snelle instelknop toevoegen"
-
-msgid "IDS_QP_POP_YOU_WILL_NO_LONGER_BE_ABLE_TO_USE_APPLICATIONS_SUCH_AS_INTERNET_NOTI_MSG"
-msgstr "U kunt niet langer applicaties als internet en E-mail gebruiken via mobiele netwerken. Doorgaan?"
-
-msgid "IDS_QP_BUTTON2_SCREEN_N_MIRRORING"
-msgstr "Screen\nMirroring"
-
-msgid "IDS_COM_BODY_BUTTON_T_TTS"
-msgstr "Knop"
-
-msgid "IDS_QP_BUTTON2_GPS"
-msgstr "GPS"
-
-msgid "IDS_QP_BUTTON_NOTIFICATION"
-msgstr "Melding"
-
-msgid "IDS_COM_BUTTON_AGREE"
-msgstr "Akkoord"
-
-msgid "IDS_COM_BUTTON_DISAGREE"
-msgstr "Niet akkoord"
-
-msgid "IDS_ST_BODY_GPS_LOCATION_USE_CONTROLLED_BY_APPLICATIONS_MSG"
-msgstr "GPS-locatie en gebruik van uw locatiegegevens worden geregeld door de gebruikte applicaties"
-
-msgid "IDS_ST_HEADER_USER_CONSENT"
-msgstr "Toestemming gebruiker"
-
index 14b9acf..d5a365f 100755 (executable)
--- a/po/pl.po
+++ b/po/pl.po
-msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
-msgstr "Powiadomienia"
+msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
+msgstr "Sieć Wi-Fi i Router Wi-Fi nie mogą być uruchomione jednocześnie. Wyłączyć Router Wi-Fi?"
+
+msgid "IDS_TASKMGR_BUTTON_CLEAR_ALL"
+msgstr "Wyczyść wszys."
 
-msgid "IDS_WIFI_BODY_ALLSHARE_CAST"
-msgstr "AllShare Cast"
+msgid "IDS_IDLE_SBODY_TAP_HERE_TO_DISABLE_SAFE_MODE_ABB"
+msgstr "Dotk. tutaj, aby wył. tr. bezp."
 
-msgid "IDS_CALL_POP_CALLING_EMERG_ONLY"
+msgid "IDS_IDLE_POP_UNABLE_TO_LAUNCH_PS"
+msgstr "Nie można uruchomić %s."
+
+msgid "IDS_IDLE_MBODY_EMERGENCY_CALLS_ONLY"
 msgstr "Tylko połączenia alarmowe"
 
-msgid "IDS_QP_BUTTON_ROTATION"
-msgstr "Obrót"
+msgid "IDS_IDLE_BODY_SEARCHING_ING"
+msgstr "Wyszukiwanie..."
+
+msgid "IDS_IDLE_BODY_NO_SIM"
+msgstr "Brak karty SIM"
+
+msgid "IDS_IDLE_BODY_NO_SERVICE"
+msgstr "Brak sieci"
+
+msgid "IDS_IDLE_BODY_INVALID_SIM_CARD"
+msgstr "Nieprawidłowa karta SIM"
 
-msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
+msgid "IDS_IDLE_BODY_EMERGENCY_CALLS_ONLY"
+msgstr "Tylko połączenia alarmowe."
+
+msgid "IDS_QP_OPT_OUTDOORS_ABB"
+msgstr "Na zewn."
+
+msgid "IDS_QP_MBODY_SAFE_MODE_ENABLED"
+msgstr "Tryb bezpieczny włączony"
+
+msgid "IDS_QP_HEADER_NOTIFICATIONS_HPD_ABB"
 msgstr "Powiadomienia (%d)"
 
-msgid "IDS_QP_BUTTON_VIBRATION"
+msgid "IDS_QP_HEADER_CLEAR_ALL_ABB"
+msgstr "Czysz.wsz."
+
+msgid "IDS_QP_BUTTON_NOTIFICATION"
+msgstr "Powiadom."
+
+msgid "IDS_QP_BUTTON_ALWAYS_ASK_ABB"
+msgstr "Zawsze pytaj"
+
+msgid "IDS_QP_BUTTON2_WI_FI"
+msgstr "Wi-Fi"
+
+msgid "IDS_QP_BUTTON2_VIBRATE"
 msgstr "Wibracja"
 
-msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
-msgstr "Dźwięk i wibracja"
+msgid "IDS_QP_BUTTON2_U_POWER_NSAVING_ABB"
+msgstr "B. nisk.\nzuż. en."
 
-msgid "IDS_QP_TAB4_AUTO_ROTATION"
-msgstr "Automat. obrót"
+msgid "IDS_QP_BUTTON2_TETHERING"
+msgstr "Router"
 
-msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
-msgstr "Blokada obrotu"
+msgid "IDS_QP_BUTTON2_SOUND_ABB"
+msgstr "Dźwięk"
 
-msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
-msgstr "Tryb pamięci masowej"
+msgid "IDS_QP_BUTTON2_SOUND"
+msgstr "Dźwięk"
 
-msgid "IDS_QP_BUTTON_DISABLE"
-msgstr "Wyłącz"
+msgid "IDS_QP_BUTTON2_PRIVATE_MODE"
+msgstr "Tryb prywatny"
 
-msgid "IDS_QP_BUTTON_ENABLE"
-msgstr "Włącz"
+msgid "IDS_QP_BUTTON2_POWER_N_SAVING"
+msgstr "Oszcz.\nenergii"
 
-msgid "IDS_COM_POP_UNSUPPORTED"
-msgstr "Nieobsługiwane"
+msgid "IDS_QP_BUTTON2_MUTE_ABB"
+msgstr "Wycisz"
 
-msgid "IDS_COM_SK_DISMISS"
-msgstr "Porzuć"
+msgid "IDS_QP_BUTTON2_MOBILE_DATA"
+msgstr "Dane\nkomórkowe"
 
-msgid "IDS_COM_POP_PELASE_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
-msgstr "Włóż kartę SIM, aby uzyskać dostęp do usług sieciowych"
+msgid "IDS_QP_BUTTON2_LOCATION_ABB"
+msgstr "Lokalizacja"
 
-msgid "IDS_COM_BODY_DO_NOT_ASK_AGAIN"
-msgstr "Nie pokazuj ponownie"
+msgid "IDS_QP_BUTTON2_FLIGHT_N_MODE"
+msgstr "Tryb\nOffline"
 
-msgid "IDS_QP_POP_INSERT_SIM_CARD_AND_RESTART_DEVICE_TO_USE_TETHERING"
-msgstr "Włóż kartę SIM i uruchom urządzenie ponownie, aby korzystać z udostępniania"
+msgid "IDS_QP_BUTTON2_BLUETOOTH"
+msgstr "Bluetooth"
 
-msgid "IDS_QP_POP_CONNECTING_VIA_PACKET_DATA_MAY_INCUR_ADDITIONAL_CHARGES_CONTINUE_Q"
-msgstr "Połączenie przez sieć może spowodować naliczenie dodatkowych opłat. Kontynuować?"
+msgid "IDS_QP_BUTTON2_AUTO_ROTATE"
+msgstr "Automatyczny obrót"
 
-msgid "IDS_QP_BODY_AUTO"
-msgstr "Automatyczny"
+msgid "IDS_QP_BUTTON2_ASSISTIVE_NLIGHT"
+msgstr "Lat. dla\nniedow."
 
-msgid "IDS_QP_TAB_POWER_SAVING"
-msgstr "Oszczędzanie energii"
+msgid "IDS_QP_BODY_PM_ABB"
+msgstr "PM"
 
-msgid "IDS_QP_TAB_TETHERING"
-msgstr "Udost. poł. internetowego"
+msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
+msgstr "Powiadomienia"
 
-msgid "IDS_QP_TAB_MOBILE_DATA"
-msgstr "Sieć komórkowa"
+msgid "IDS_QP_BODY_AM_ABB"
+msgstr "AM"
 
-msgid "IDS_QP_TAB_DRIVING_MODE"
-msgstr "Tryb Samochód"
+msgid "IDS_ST_TPOP_UNABLE_TO_MAKE_VOICE_CALLS_VIDEO_CALLS_AND_SEND_TEXT_MESSAGES_USING_PS"
+msgstr "Nie można wykonywać połączeń głosowych, połączeń wideo i wysyłać SMS przy użyciu %s."
 
-msgid "IDS_COM_POP_UNABLE_TO_CONNECT_TO_MOBILE_NETWORK_WHILE_FLIGHT_MODE_IS_ENABLED_MSG"
-msgstr "Kiedy tryb Offline jest włączony, nie można korzystać z sieci komórkowych. Połącz się z siecią Wi-Fi lub wyłącz tryb Offline i spróbuj ponownie"
+msgid "IDS_ST_TPOP_SELECT_SIM_CARD_FOR_OUTGOING_VOICE_CALLS_VIDEO_CALLS_AND_TEXT_MESSAGES"
+msgstr "Wybierz kartę SIM dla wychodzących połączeń głosowych, połączeń wideo i SMS."
 
-msgid "IDS_QP_POP_WI_FI_TETHERING_CONSUMES_MORE_BATTERY_POWER_AND_INCREASES_YOUR_DATA_USAGE_CONTINUE_Q"
-msgstr "Router Wi-Fi zwiększa zużycie baterii i danych. Kontynuować?"
+msgid "IDS_ST_TPOP_OUTGOING_VOICE_CALLS_VIDEO_CALLS_AND_TEXT_MESSAGES_WILL_BE_MADE_USING_THE_PS_SIM_CARD"
+msgstr "Dla wychodzących połączeń głosowych, połączeń wideo i SMS będzie używana karta SIM %s."
 
-msgid "IDS_QP_POP_DISABLE_TETHERING_TO_USE_WI_FI"
-msgstr "Wyłącz router, aby korzystać z sieci Wi-Fi"
+msgid "IDS_ST_SK_OK"
+msgstr "OK"
 
-msgid "IDS_QP_POP_TO_ENABLE_POWER_SAVING_MODE_ENABLE_AT_LEAST_ONE_RELEVANT_FUNCTION"
-msgstr "Aby włączyć tryb Oszczędzanie energii, włącz przynajmniej jedną związaną z nim funkcję"
+msgid "IDS_ST_SK_NO"
+msgstr "Nie"
 
-msgid "IDS_QP_POP_TURN_OFF_WI_FI_TO_USE_TETHERING"
-msgstr "Wyłącz sieć Wi-Fi, aby korzystać z routera"
+msgid "IDS_ST_POP_UNABLE_TO_INCREASE_BRIGHTNESS_FURTHER_BECAUSE_OF_PHONE_OVERHEATING"
+msgstr "Nie można zwiększyć jasności z uwagi na możliwość przegrzania urządzenia."
 
-msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
-msgstr "Sieć Wi-Fi i Router Wi-Fi nie mogą być uruchomione jednocześnie. Wyłączyć Router Wi-Fi?"
+msgid "IDS_ST_NPBODY_NO_SERVICE"
+msgstr "Brak sieci"
 
-msgid "IDS_ASCAST_HEADER_SCREEN_MIRRORING"
-msgstr "Odbicie lustrzane ekranu"
+msgid "IDS_ST_NPBODY_EMERGENCY_CALLS_ONLY_ABB"
+msgstr "Tylko połączenia alarmowe"
+
+msgid "IDS_ST_HEADER_OUTDOOR"
+msgstr "Na zewnątrz"
 
-msgid "IDS_QP_HEADER_REPLACE_QUICK_SETTING_BUTTON"
-msgstr "Zamień przycisk ustawień szybkiego panelu"
+msgid "IDS_ST_BUTTON2_WI_FI_NTETHERING"
+msgstr "Wi-Fi\nrouter"
 
-msgid "IDS_QP_HEADER_ADD_QUICK_SETTING_BUTTON"
-msgstr "Dodawanie przycisku ustawień szybkiego panelu"
+msgid "IDS_ST_BUTTON2_WI_FI_ABB"
+msgstr "Wi-Fi"
 
-msgid "IDS_QP_POP_YOU_WILL_NO_LONGER_BE_ABLE_TO_USE_APPLICATIONS_SUCH_AS_INTERNET_NOTI_MSG"
-msgstr "Nie będzie już możliwe korzystanie z takich aplikacji jak przeglądarka czy poczta e-mail za pośrednictwem sieci telefonii komórkowej. Kontynuować?"
+msgid "IDS_ST_BUTTON2_TORCH_ABB"
+msgstr "Latarka"
 
-msgid "IDS_QP_BUTTON2_SCREEN_N_MIRRORING"
-msgstr "Screen\nMirroring"
+msgid "IDS_ST_BUTTON2_POWER_NSAVING"
+msgstr "Oszcz.\nenergii"
 
-msgid "IDS_COM_BODY_BUTTON_T_TTS"
-msgstr "Przycisk"
+msgid "IDS_ST_BUTTON2_MOBILE_NDATA"
+msgstr "Dane\nkomórk."
 
-msgid "IDS_QP_BUTTON2_GPS"
+msgid "IDS_ST_BUTTON2_GPS_ABB"
 msgstr "GPS"
 
-msgid "IDS_QP_BUTTON_NOTIFICATION"
-msgstr "Powiadom."
+msgid "IDS_ST_BUTTON2_FLIGHT_NMODE"
+msgstr "Tryb\nOffline"
+
+msgid "IDS_ST_BUTTON2_BLUETOOTH_ABB"
+msgstr "Bluetooth"
+
+msgid "IDS_ST_BUTTON2_AUTO_NROTATE"
+msgstr "Obróć\nautom."
+
+msgid "IDS_ST_BODY_SIM_2"
+msgstr "SIM 2"
+
+msgid "IDS_ST_BODY_SIM_1"
+msgstr "SIM 1"
+
+msgid "IDS_ST_BODY_SCANNING_FOR_MOBILE_NETWORK_ING_ABB"
+msgstr "Wyszukiwanie sieci komórkowych..."
+
+msgid "IDS_ST_BODY_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
+msgstr "Włóż kartę SIM, aby uzyskać dostęp do usług sieciowych."
+
+msgid "IDS_ST_BODY_ALWAYS_ASK_ABB"
+msgstr "Zawsze pytaj"
+
+msgid "IDS_SCP_BODY_UNABLE_TO_CONNECT_TO_MOBILE_NETWORKS_WHILE_FLIGHT_MODE_IS_ENABLED_CONNECT_TO_A_WI_FI_NETWORK_INSTEAD_OR_DISABLE_FLIGHT_MODE_AND_TRY_AGAIN"
+msgstr "Kiedy tryb Offline jest włączony, nie można korzystać z sieci komórkowych. Połącz się z siecią Wi-Fi lub wyłącz tryb Offline i spróbuj ponownie."
 
-msgid "IDS_COM_BUTTON_AGREE"
-msgstr "Akceptuję"
+msgid "IDS_COM_BODY_SEARCHING"
+msgstr "Wyszukiwanie"
 
-msgid "IDS_COM_BUTTON_DISAGREE"
-msgstr "Brak zgody"
+msgid "IDS_QP_TPOP_UNABLE_TO_OPEN_PS"
+msgstr "Nie można otworzyć aplikacji %s."
 
-msgid "IDS_ST_BODY_GPS_LOCATION_USE_CONTROLLED_BY_APPLICATIONS_MSG"
-msgstr "Lokalizacja GPS oraz wykorzystanie danych dotyczących Twojej lokalizacji są kontrolowane przez używane aplikacje"
+msgid "IDS_QP_OPT_OUTDOORS_M_OUTDOOR_MODE_ABB"
+msgstr "Na zewn."
 
-msgid "IDS_ST_HEADER_USER_CONSENT"
-msgstr "Zgoda użytkownika"
+msgid "IDS_QP_BUTTON2_PRIVATE_NMODE_ABB"
+msgstr "Tryb\nprywatny"
 
index 2a2be69..5aceb97 100755 (executable)
-msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
-msgstr "Notificações"
+msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
+msgstr "Impossível utilizar Wi-Fi ou AllShare com o Roteador Wi-Fi simultaneamente. Desativar o Roteador Wi-Fi?"
 
-msgid "IDS_WIFI_BODY_ALLSHARE_CAST"
-msgstr "AllShare Cast"
+msgid "IDS_TASKMGR_BUTTON_CLEAR_ALL"
+msgstr "Limpar tudo"
 
-msgid "IDS_CALL_POP_CALLING_EMERG_ONLY"
-msgstr "Somente chamadas de emergência"
+msgid "IDS_IDLE_SBODY_TAP_HERE_TO_DISABLE_SAFE_MODE_ABB"
+msgstr "Toque aqui desat. M. Emerg."
+
+msgid "IDS_IDLE_POP_UNABLE_TO_LAUNCH_PS"
+msgstr "Impossível iniciar %s."
+
+msgid "IDS_IDLE_MBODY_EMERGENCY_CALLS_ONLY"
+msgstr "Apenas cham. emergência"
+
+msgid "IDS_IDLE_BODY_SEARCHING_ING"
+msgstr "Procurando..."
+
+msgid "IDS_IDLE_BODY_NO_SIM"
+msgstr "Sem Cartão SIM"
+
+msgid "IDS_IDLE_BODY_NO_SERVICE"
+msgstr "Sem serviço"
 
-msgid "IDS_QP_BUTTON_ROTATION"
-msgstr "Rotação"
+msgid "IDS_IDLE_BODY_INVALID_SIM_CARD"
+msgstr "Cartão SIM inválido."
 
-msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
+msgid "IDS_IDLE_BODY_EMERGENCY_CALLS_ONLY"
+msgstr "Somente chamadas de emergência."
+
+msgid "IDS_QP_OPT_OUTDOORS_ABB"
+msgstr "Externo"
+
+msgid "IDS_QP_MBODY_SAFE_MODE_ENABLED"
+msgstr "Modo de Segurança ativado"
+
+msgid "IDS_QP_HEADER_NOTIFICATIONS_HPD_ABB"
 msgstr "Notificações (%d)"
 
-msgid "IDS_QP_BUTTON_VIBRATION"
-msgstr "Vibração"
+msgid "IDS_QP_HEADER_CLEAR_ALL_ABB"
+msgstr "Apag. tudo"
 
-msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
-msgstr "Som e vibração"
+msgid "IDS_QP_BUTTON_NOTIFICATION"
+msgstr "Notific."
 
-msgid "IDS_QP_TAB4_AUTO_ROTATION"
-msgstr "Rotação autom."
+msgid "IDS_QP_BUTTON_ALWAYS_ASK_ABB"
+msgstr "Perguntar sempre"
 
-msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
-msgstr "Bloquear rotação"
+msgid "IDS_QP_BUTTON2_WI_FI"
+msgstr "Wi-Fi"
 
-msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
-msgstr "Modo de armaz. em massa"
+msgid "IDS_QP_BUTTON2_VIBRATE"
+msgstr "Vibrar"
 
-msgid "IDS_QP_BUTTON_DISABLE"
-msgstr "Desativar"
+msgid "IDS_QP_BUTTON2_U_POWER_NSAVING_ABB"
+msgstr "Ultra\neconomia"
 
-msgid "IDS_QP_BUTTON_ENABLE"
-msgstr "Ativar"
+msgid "IDS_QP_BUTTON2_TETHERING"
+msgstr "Ancoragem"
 
-msgid "IDS_COM_POP_UNSUPPORTED"
-msgstr "Não suportado"
+msgid "IDS_QP_BUTTON2_SOUND_ABB"
+msgstr "Som"
 
-msgid "IDS_COM_SK_DISMISS"
-msgstr "Cancelar"
+msgid "IDS_QP_BUTTON2_SOUND"
+msgstr "Som"
 
-msgid "IDS_COM_POP_PELASE_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
-msgstr "Insira um cartão SIM para acessar serviços de rede"
+msgid "IDS_QP_BUTTON2_PRIVATE_MODE"
+msgstr "Modo Privado"
 
-msgid "IDS_COM_BODY_DO_NOT_ASK_AGAIN"
-msgstr "Não perguntar mais"
+msgid "IDS_QP_BUTTON2_POWER_N_SAVING"
+msgstr "Econ. de\nenergia"
 
-msgid "IDS_QP_POP_INSERT_SIM_CARD_AND_RESTART_DEVICE_TO_USE_TETHERING"
-msgstr "Insira o cartão SIM e reinicie o dispositivo para usar a ancoragem"
+msgid "IDS_QP_BUTTON2_MUTE_ABB"
+msgstr "Silêncio"
 
-msgid "IDS_QP_POP_CONNECTING_VIA_PACKET_DATA_MAY_INCUR_ADDITIONAL_CHARGES_CONTINUE_Q"
-msgstr "O acesso à rede através de pacotes de dados pode implicar em cobrança de taxas adicionais. Continuar?"
+msgid "IDS_QP_BUTTON2_MOBILE_DATA"
+msgstr "Dados\nmóveis"
 
-msgid "IDS_QP_BODY_AUTO"
-msgstr "Automático"
+msgid "IDS_QP_BUTTON2_LOCATION_ABB"
+msgstr "Local"
 
-msgid "IDS_QP_TAB_POWER_SAVING"
-msgstr "Economia de energia"
+msgid "IDS_QP_BUTTON2_FLIGHT_N_MODE"
+msgstr "Modo\nOffline"
 
-msgid "IDS_QP_TAB_TETHERING"
-msgstr "Ancoragem"
+msgid "IDS_QP_BUTTON2_BLUETOOTH"
+msgstr "Bluetooth"
 
-msgid "IDS_QP_TAB_MOBILE_DATA"
-msgstr "Dados móveis"
+msgid "IDS_QP_BUTTON2_AUTO_ROTATE"
+msgstr "Rotação automática"
 
-msgid "IDS_QP_TAB_DRIVING_MODE"
-msgstr "Modo de condução"
+msgid "IDS_QP_BUTTON2_ASSISTIVE_NLIGHT"
+msgstr "Luz\nauxiliar"
 
-msgid "IDS_COM_POP_UNABLE_TO_CONNECT_TO_MOBILE_NETWORK_WHILE_FLIGHT_MODE_IS_ENABLED_MSG"
-msgstr "Não é possível conectar-se à rede de dados móveis enquanto o modo Offline está ativado. Conecte-se à rede Wi-Fi ou desative o modo Offline e tente novamente"
+msgid "IDS_QP_BODY_PM_ABB"
+msgstr "PM"
 
-msgid "IDS_QP_POP_WI_FI_TETHERING_CONSUMES_MORE_BATTERY_POWER_AND_INCREASES_YOUR_DATA_USAGE_CONTINUE_Q"
-msgstr "A ancoragem Wi-Fi consome mais bateria e aumenta o seu uso de dados. Continuar?"
+msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
+msgstr "Notificações"
 
-msgid "IDS_QP_POP_DISABLE_TETHERING_TO_USE_WI_FI"
-msgstr "Desativar compartilhamento de rede via Wi-Fi"
+msgid "IDS_QP_BODY_AM_ABB"
+msgstr "AM"
 
-msgid "IDS_QP_POP_TO_ENABLE_POWER_SAVING_MODE_ENABLE_AT_LEAST_ONE_RELEVANT_FUNCTION"
-msgstr "Para ativar o modo de Economia de energia, ative pelo menos uma função relevante"
+msgid "IDS_ST_TPOP_UNABLE_TO_MAKE_VOICE_CALLS_VIDEO_CALLS_AND_SEND_TEXT_MESSAGES_USING_PS"
+msgstr "Não é possível realizar chamadas de voz, videochamadas e enviar mensagens de texto usando %s."
 
-msgid "IDS_QP_POP_TURN_OFF_WI_FI_TO_USE_TETHERING"
-msgstr "Desligar Wi-Fi para usar compartilhamento de rede"
+msgid "IDS_ST_TPOP_SELECT_SIM_CARD_FOR_OUTGOING_VOICE_CALLS_VIDEO_CALLS_AND_TEXT_MESSAGES"
+msgstr "Selecione o chip para chamada de voz realizadas, videochamadas e mensagens de texto."
 
-msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
-msgstr "Impossível utilizar Wi-Fi ou AllShare com o Roteador Wi-Fi simultaneamente. Desativar o Roteador Wi-Fi?"
+msgid "IDS_ST_TPOP_OUTGOING_VOICE_CALLS_VIDEO_CALLS_AND_TEXT_MESSAGES_WILL_BE_MADE_USING_THE_PS_SIM_CARD"
+msgstr "As chamada de voz realizadas, videochamadas e mensagens de texto serão feitas usando o cartão SIM %s."
+
+msgid "IDS_ST_SK_OK"
+msgstr "OK"
 
-msgid "IDS_ASCAST_HEADER_SCREEN_MIRRORING"
-msgstr "Espelhamento de tela"
+msgid "IDS_ST_SK_NO"
+msgstr "Não"
 
-msgid "IDS_QP_HEADER_REPLACE_QUICK_SETTING_BUTTON"
-msgstr "Substituir botão de configuração rápida"
+msgid "IDS_ST_POP_UNABLE_TO_INCREASE_BRIGHTNESS_FURTHER_BECAUSE_OF_PHONE_OVERHEATING"
+msgstr "Impossível aumentar mais o nível do brilho devido ao superaquecimento do telefone."
 
-msgid "IDS_QP_HEADER_ADD_QUICK_SETTING_BUTTON"
-msgstr "Adicionar botão de configuração rápida"
+msgid "IDS_ST_NPBODY_NO_SERVICE"
+msgstr "Sem serviço"
+
+msgid "IDS_ST_NPBODY_EMERGENCY_CALLS_ONLY_ABB"
+msgstr "Somente chamadas de emergência"
 
-msgid "IDS_QP_POP_YOU_WILL_NO_LONGER_BE_ABLE_TO_USE_APPLICATIONS_SUCH_AS_INTERNET_NOTI_MSG"
-msgstr "Você não será mais capaz de usar aplicativos como a Internet e E-mail através de redes móveis. Continuar?"
+msgid "IDS_ST_HEADER_OUTDOOR"
+msgstr "Externo"
 
-msgid "IDS_QP_BUTTON2_SCREEN_N_MIRRORING"
-msgstr "Screen\nMirroring"
+msgid "IDS_ST_BUTTON2_WI_FI_NTETHERING"
+msgstr "Roteam.\nWi-Fi"
 
-msgid "IDS_COM_BODY_BUTTON_T_TTS"
-msgstr "Botão"
+msgid "IDS_ST_BUTTON2_WI_FI_ABB"
+msgstr "Wi-Fi"
 
-msgid "IDS_QP_BUTTON2_GPS"
+msgid "IDS_ST_BUTTON2_TORCH_ABB"
+msgstr "Lanterna"
+
+msgid "IDS_ST_BUTTON2_POWER_NSAVING"
+msgstr "Econ.\nenergia"
+
+msgid "IDS_ST_BUTTON2_MOBILE_NDATA"
+msgstr "Dados\nmóveis"
+
+msgid "IDS_ST_BUTTON2_GPS_ABB"
 msgstr "GPS"
 
-msgid "IDS_QP_BUTTON_NOTIFICATION"
-msgstr "Notific."
+msgid "IDS_ST_BUTTON2_FLIGHT_NMODE"
+msgstr "Modo\nOffline"
+
+msgid "IDS_ST_BUTTON2_BLUETOOTH_ABB"
+msgstr "Bluetooth"
+
+msgid "IDS_ST_BUTTON2_AUTO_NROTATE"
+msgstr "Rotação\nautom."
+
+msgid "IDS_ST_BODY_SIM_2"
+msgstr "SIM 2"
+
+msgid "IDS_ST_BODY_SIM_1"
+msgstr "SIM 1"
+
+msgid "IDS_ST_BODY_SCANNING_FOR_MOBILE_NETWORK_ING_ABB"
+msgstr "Buscando por rede móvel..."
+
+msgid "IDS_ST_BODY_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
+msgstr "Insira um cartão SIM para acessar serviços de rede."
+
+msgid "IDS_ST_BODY_ALWAYS_ASK_ABB"
+msgstr "Perguntar sempre"
+
+msgid "IDS_SCP_BODY_UNABLE_TO_CONNECT_TO_MOBILE_NETWORKS_WHILE_FLIGHT_MODE_IS_ENABLED_CONNECT_TO_A_WI_FI_NETWORK_INSTEAD_OR_DISABLE_FLIGHT_MODE_AND_TRY_AGAIN"
+msgstr "Não é possível conectar-se à rede de dados móveis enquanto o Modo Offline estiver ativado. Conecte-se a uma rede Wi-Fi ou desative o Modo Offline e tente novamente."
 
-msgid "IDS_COM_BUTTON_AGREE"
-msgstr "Concordo"
+msgid "IDS_COM_BODY_SEARCHING"
+msgstr "Procurando"
 
-msgid "IDS_COM_BUTTON_DISAGREE"
-msgstr "Discordo"
+msgid "IDS_QP_TPOP_UNABLE_TO_OPEN_PS"
+msgstr "Não é possível abrir %s."
 
-msgid "IDS_ST_BODY_GPS_LOCATION_USE_CONTROLLED_BY_APPLICATIONS_MSG"
-msgstr "A localização GPS e a utilização dos seus dados de localização são controlados pelas aplicações utilizadas"
+msgid "IDS_QP_OPT_OUTDOORS_M_OUTDOOR_MODE_ABB"
+msgstr "Externo"
 
-msgid "IDS_ST_HEADER_USER_CONSENT"
-msgstr "Consentimento do usuário"
+msgid "IDS_QP_BUTTON2_PRIVATE_NMODE_ABB"
+msgstr "Modo\nPrivado"
 
index 55751cc..11282e8 100755 (executable)
-msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
-msgstr "Notificações"
+msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
+msgstr "Impossível activar Wi-Fi e PA Móvel em simultâneo. Desactivar PA Móvel?"
+
+msgid "IDS_TASKMGR_BUTTON_CLEAR_ALL"
+msgstr "Limpar tudo"
+
+msgid "IDS_IDLE_SBODY_TAP_HERE_TO_DISABLE_SAFE_MODE_ABB"
+msgstr "Toq aqui p desact Modo seguro."
+
+msgid "IDS_IDLE_POP_UNABLE_TO_LAUNCH_PS"
+msgstr "Impossível iniciar %s."
+
+msgid "IDS_IDLE_MBODY_EMERGENCY_CALLS_ONLY"
+msgstr "Só chamadas de emergência"
+
+msgid "IDS_IDLE_BODY_SEARCHING_ING"
+msgstr "A procurar..."
 
-msgid "IDS_WIFI_BODY_ALLSHARE_CAST"
-msgstr "AllShare Cast"
+msgid "IDS_IDLE_BODY_NO_SIM"
+msgstr "Sem SIM"
 
-msgid "IDS_CALL_POP_CALLING_EMERG_ONLY"
-msgstr "Apenas chamadas de emergência"
+msgid "IDS_IDLE_BODY_NO_SERVICE"
+msgstr "Sem serviço"
 
-msgid "IDS_QP_BUTTON_ROTATION"
-msgstr "Rotação"
+msgid "IDS_IDLE_BODY_INVALID_SIM_CARD"
+msgstr "Cartão SIM inválido."
 
-msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
+msgid "IDS_IDLE_BODY_EMERGENCY_CALLS_ONLY"
+msgstr "Apenas chamadas de emergência."
+
+msgid "IDS_QP_OPT_OUTDOORS_ABB"
+msgstr "Exterior"
+
+msgid "IDS_QP_MBODY_SAFE_MODE_ENABLED"
+msgstr "Modo seguro activado"
+
+msgid "IDS_QP_HEADER_NOTIFICATIONS_HPD_ABB"
 msgstr "Notificações (%d)"
 
-msgid "IDS_QP_BUTTON_VIBRATION"
-msgstr "Vibração"
+msgid "IDS_QP_HEADER_CLEAR_ALL_ABB"
+msgstr "Limpar td"
 
-msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
-msgstr "Som e vibração"
+msgid "IDS_QP_BUTTON_NOTIFICATION"
+msgstr "Notificaç"
 
-msgid "IDS_QP_TAB4_AUTO_ROTATION"
-msgstr "Rotação autom."
+msgid "IDS_QP_BUTTON_ALWAYS_ASK_ABB"
+msgstr "Perguntar sempre"
 
-msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
-msgstr "Bloqueio rotação"
+msgid "IDS_QP_BUTTON2_WI_FI"
+msgstr "Wi Fi"
 
-msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
-msgstr "Modo armazenamento massa"
+msgid "IDS_QP_BUTTON2_VIBRATE"
+msgstr "Vibrar"
 
-msgid "IDS_QP_BUTTON_DISABLE"
-msgstr "Desactivar"
+msgid "IDS_QP_BUTTON2_U_POWER_NSAVING_ABB"
+msgstr "U. econ.\nenergia"
 
-msgid "IDS_QP_BUTTON_ENABLE"
-msgstr "Activar"
+msgid "IDS_QP_BUTTON2_TETHERING"
+msgstr "Partilha de Internet"
+
+msgid "IDS_QP_BUTTON2_SOUND_ABB"
+msgstr "Som"
 
-msgid "IDS_COM_POP_UNSUPPORTED"
-msgstr "Não suportado"
+msgid "IDS_QP_BUTTON2_SOUND"
+msgstr "Som"
 
-msgid "IDS_COM_SK_DISMISS"
-msgstr "Cancelar"
+msgid "IDS_QP_BUTTON2_PRIVATE_MODE"
+msgstr "Modo privado"
 
-msgid "IDS_COM_POP_PELASE_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
-msgstr "Insira o cartão SIM para aceder aos serviços de rede"
+msgid "IDS_QP_BUTTON2_POWER_N_SAVING"
+msgstr "Econ.\nenergia"
 
-msgid "IDS_COM_BODY_DO_NOT_ASK_AGAIN"
-msgstr "Não voltar a perguntar"
+msgid "IDS_QP_BUTTON2_MUTE_ABB"
+msgstr "Silen\nciar"
 
-msgid "IDS_QP_POP_INSERT_SIM_CARD_AND_RESTART_DEVICE_TO_USE_TETHERING"
-msgstr "Inserir cartão SIM e reiniciar o dispositivo para utilizar a ancoragem"
+msgid "IDS_QP_BUTTON2_MOBILE_DATA"
+msgstr "Dados\nmóveis"
 
-msgid "IDS_QP_POP_CONNECTING_VIA_PACKET_DATA_MAY_INCUR_ADDITIONAL_CHARGES_CONTINUE_Q"
-msgstr "O acesso à rede através de pacotes de dados pode implicar a cobrança de taxas adicionais. Continuar?"
+msgid "IDS_QP_BUTTON2_LOCATION_ABB"
+msgstr "GPS"
 
-msgid "IDS_QP_BODY_AUTO"
-msgstr "Automático"
+msgid "IDS_QP_BUTTON2_FLIGHT_N_MODE"
+msgstr "Modo\nde voo"
 
-msgid "IDS_QP_TAB_POWER_SAVING"
-msgstr "Economia de energia"
+msgid "IDS_QP_BUTTON2_BLUETOOTH"
+msgstr "Bluetooth"
 
-msgid "IDS_QP_TAB_TETHERING"
-msgstr "Partilha de Internet"
+msgid "IDS_QP_BUTTON2_AUTO_ROTATE"
+msgstr "Rotação automática"
 
-msgid "IDS_QP_TAB_MOBILE_DATA"
-msgstr "Dados móveis"
+msgid "IDS_QP_BUTTON2_ASSISTIVE_NLIGHT"
+msgstr "Luz\nauxiliar"
 
-msgid "IDS_QP_TAB_DRIVING_MODE"
-msgstr "Modo de condução"
+msgid "IDS_QP_BODY_PM_ABB"
+msgstr "PM"
 
-msgid "IDS_COM_POP_UNABLE_TO_CONNECT_TO_MOBILE_NETWORK_WHILE_FLIGHT_MODE_IS_ENABLED_MSG"
-msgstr "Impossível ligar às redes móveis enquanto o modo de Voo está activado. Ligue à rede Wi-Fi em substituição ou desactive o modo de Voo e tente novamente"
+msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
+msgstr "Notificações"
 
-msgid "IDS_QP_POP_WI_FI_TETHERING_CONSUMES_MORE_BATTERY_POWER_AND_INCREASES_YOUR_DATA_USAGE_CONTINUE_Q"
-msgstr "A ancoragem Wi-Fi consome mais bateria e aumenta a utilização de dados. Continuar?"
+msgid "IDS_QP_BODY_AM_ABB"
+msgstr "AM"
 
-msgid "IDS_QP_POP_DISABLE_TETHERING_TO_USE_WI_FI"
-msgstr "Desactive a ancoragem para utilizar o Wi-Fi"
+msgid "IDS_ST_TPOP_UNABLE_TO_MAKE_VOICE_CALLS_VIDEO_CALLS_AND_SEND_TEXT_MESSAGES_USING_PS"
+msgstr "Impossível fazer chamadas de voz, chamadas de vídeo e enviar mensagens de texto com %s."
 
-msgid "IDS_QP_POP_TO_ENABLE_POWER_SAVING_MODE_ENABLE_AT_LEAST_ONE_RELEVANT_FUNCTION"
-msgstr "Para activar o Modo de economia de energia, active pelo menos uma função relevante"
+msgid "IDS_ST_TPOP_SELECT_SIM_CARD_FOR_OUTGOING_VOICE_CALLS_VIDEO_CALLS_AND_TEXT_MESSAGES"
+msgstr "Seleccione um cartão SIM para as chamadas de voz efectuadas, chamadas de vídeo e mensagens de texto."
 
-msgid "IDS_QP_POP_TURN_OFF_WI_FI_TO_USE_TETHERING"
-msgstr "Desligar o Wi-Fi para utilizar a ancoragem"
+msgid "IDS_ST_TPOP_OUTGOING_VOICE_CALLS_VIDEO_CALLS_AND_TEXT_MESSAGES_WILL_BE_MADE_USING_THE_PS_SIM_CARD"
+msgstr "As chamadas de voz, as chamadas de vídeo efectuadas e as mensagens de texto a enviar serão feitas com o cartão SIM %s."
 
-msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
-msgstr "Impossível activar Wi-Fi e PA Móvel em simultâneo. Desactivar PA Móvel?"
+msgid "IDS_ST_SK_OK"
+msgstr "OK"
+
+msgid "IDS_ST_SK_NO"
+msgstr "Não"
 
-msgid "IDS_ASCAST_HEADER_SCREEN_MIRRORING"
-msgstr "Espelhamento do ecrã"
+msgid "IDS_ST_POP_UNABLE_TO_INCREASE_BRIGHTNESS_FURTHER_BECAUSE_OF_PHONE_OVERHEATING"
+msgstr "Impossível aumentar mais o brilho devido ao sobreaquecimento do telefone."
 
-msgid "IDS_QP_HEADER_REPLACE_QUICK_SETTING_BUTTON"
-msgstr "Substituir botão de definição rápida"
+msgid "IDS_ST_NPBODY_NO_SERVICE"
+msgstr "Sem serviço"
 
-msgid "IDS_QP_HEADER_ADD_QUICK_SETTING_BUTTON"
-msgstr "Adicionar botão de definição rápida"
+msgid "IDS_ST_NPBODY_EMERGENCY_CALLS_ONLY_ABB"
+msgstr "Só chamadas de emergência"
 
-msgid "IDS_QP_POP_YOU_WILL_NO_LONGER_BE_ABLE_TO_USE_APPLICATIONS_SUCH_AS_INTERNET_NOTI_MSG"
-msgstr "Deixará de poder utilizar aplicações, tais como Internet e E-mail através de redes móveis. Continuar?"
+msgid "IDS_ST_HEADER_OUTDOOR"
+msgstr "Exterior"
 
-msgid "IDS_QP_BUTTON2_SCREEN_N_MIRRORING"
-msgstr "Screen\nMirroring"
+msgid "IDS_ST_BUTTON2_WI_FI_NTETHERING"
+msgstr "Ancorag.\nWi-Fi"
 
-msgid "IDS_COM_BODY_BUTTON_T_TTS"
-msgstr "Tecla"
+msgid "IDS_ST_BUTTON2_WI_FI_ABB"
+msgstr "Wi-Fi"
 
-msgid "IDS_QP_BUTTON2_GPS"
+msgid "IDS_ST_BUTTON2_TORCH_ABB"
+msgstr "Lanterna"
+
+msgid "IDS_ST_BUTTON2_POWER_NSAVING"
+msgstr "Economia\nenergia"
+
+msgid "IDS_ST_BUTTON2_MOBILE_NDATA"
+msgstr "Dados\nmóveis"
+
+msgid "IDS_ST_BUTTON2_GPS_ABB"
 msgstr "GPS"
 
-msgid "IDS_QP_BUTTON_NOTIFICATION"
-msgstr "Notificaç"
+msgid "IDS_ST_BUTTON2_FLIGHT_NMODE"
+msgstr "Modo\nde voo"
+
+msgid "IDS_ST_BUTTON2_BLUETOOTH_ABB"
+msgstr "Bluetooth"
+
+msgid "IDS_ST_BUTTON2_AUTO_NROTATE"
+msgstr "Rotação\nauto."
+
+msgid "IDS_ST_BODY_SIM_2"
+msgstr "SIM 2"
+
+msgid "IDS_ST_BODY_SIM_1"
+msgstr "SIM 1"
+
+msgid "IDS_ST_BODY_SCANNING_FOR_MOBILE_NETWORK_ING_ABB"
+msgstr "A pesquisar rede móvel..."
+
+msgid "IDS_ST_BODY_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
+msgstr "Insira o cartão SIM para aceder aos serviços de rede."
+
+msgid "IDS_ST_BODY_ALWAYS_ASK_ABB"
+msgstr "Perguntar sempre"
+
+msgid "IDS_SCP_BODY_UNABLE_TO_CONNECT_TO_MOBILE_NETWORKS_WHILE_FLIGHT_MODE_IS_ENABLED_CONNECT_TO_A_WI_FI_NETWORK_INSTEAD_OR_DISABLE_FLIGHT_MODE_AND_TRY_AGAIN"
+msgstr "Impossível ligar às redes móveis enquanto o modo de Voo está activado. Em alternativa, ligue a uma rede Wi-Fi ou desactive o modo de Voo e tente novamente."
 
-msgid "IDS_COM_BUTTON_AGREE"
-msgstr "Concordo"
+msgid "IDS_COM_BODY_SEARCHING"
+msgstr "A procurar"
 
-msgid "IDS_COM_BUTTON_DISAGREE"
-msgstr "Discordo"
+msgid "IDS_QP_TPOP_UNABLE_TO_OPEN_PS"
+msgstr "Impossível abrir %s."
 
-msgid "IDS_ST_BODY_GPS_LOCATION_USE_CONTROLLED_BY_APPLICATIONS_MSG"
-msgstr "A localização GPS e a utilização dos seus dados de localização são controlados pelas aplicações utilizadas"
+msgid "IDS_QP_OPT_OUTDOORS_M_OUTDOOR_MODE_ABB"
+msgstr "Exterior"
 
-msgid "IDS_ST_HEADER_USER_CONSENT"
-msgstr "Consentimento do utilizador"
+msgid "IDS_QP_BUTTON2_PRIVATE_NMODE_ABB"
+msgstr "Modo\nprivado"
 
index 66afbd2..0cf4e64 100755 (executable)
--- a/po/ro.po
+++ b/po/ro.po
-msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
-msgstr "Notificări"
+msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
+msgstr "Wi-Fi şi PA mobil nu pot fi activate simultan. Dezactivaţi PA mobil?"
+
+msgid "IDS_TASKMGR_BUTTON_CLEAR_ALL"
+msgstr "Şterg. totală"
+
+msgid "IDS_IDLE_SBODY_TAP_HERE_TO_DISABLE_SAFE_MODE_ABB"
+msgstr "At. aici pt. dez. Mod. sigur."
+
+msgid "IDS_IDLE_POP_UNABLE_TO_LAUNCH_PS"
+msgstr "Imposibil de lansat %s"
+
+msgid "IDS_IDLE_MBODY_EMERGENCY_CALLS_ONLY"
+msgstr "Numai apeluri de urgenţă"
 
-msgid "IDS_WIFI_BODY_ALLSHARE_CAST"
-msgstr "AllShare Cast"
+msgid "IDS_IDLE_BODY_SEARCHING_ING"
+msgstr "Căutare..."
 
-msgid "IDS_CALL_POP_CALLING_EMERG_ONLY"
+msgid "IDS_IDLE_BODY_NO_SIM"
+msgstr "Fără SIM"
+
+msgid "IDS_IDLE_BODY_NO_SERVICE"
+msgstr "Nici un serviciu"
+
+msgid "IDS_IDLE_BODY_INVALID_SIM_CARD"
+msgstr "Cartelă SIM incorectă"
+
+msgid "IDS_IDLE_BODY_EMERGENCY_CALLS_ONLY"
 msgstr "Numai apeluri de urgenţă"
 
-msgid "IDS_QP_BUTTON_ROTATION"
-msgstr "Rotire"
+msgid "IDS_QP_OPT_OUTDOORS_ABB"
+msgstr "Exterior"
 
-msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
+msgid "IDS_QP_MBODY_SAFE_MODE_ENABLED"
+msgstr "S-a activ. Mod. siguranţă"
+
+msgid "IDS_QP_HEADER_NOTIFICATIONS_HPD_ABB"
 msgstr "Notificări (%d)"
 
-msgid "IDS_QP_BUTTON_VIBRATION"
-msgstr "Vibraţie"
+msgid "IDS_QP_HEADER_CLEAR_ALL_ABB"
+msgstr "Şter. tot"
 
-msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
-msgstr "Sunet şi vibraţie"
+msgid "IDS_QP_BUTTON_NOTIFICATION"
+msgstr "Notificare"
 
-msgid "IDS_QP_TAB4_AUTO_ROTATION"
-msgstr "Rotire auto."
+msgid "IDS_QP_BUTTON_ALWAYS_ASK_ABB"
+msgstr "Întreabă mereu"
 
-msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
-msgstr "Blocare rotire"
+msgid "IDS_QP_BUTTON2_WI_FI"
+msgstr "Wi-Fi"
 
-msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
-msgstr "Mod de stocare în masă"
+msgid "IDS_QP_BUTTON2_VIBRATE"
+msgstr "Vibraţii"
 
-msgid "IDS_QP_BUTTON_DISABLE"
-msgstr "Dezactiv."
+msgid "IDS_QP_BUTTON2_U_POWER_NSAVING_ABB"
+msgstr "Ec. max.\nenergie"
 
-msgid "IDS_QP_BUTTON_ENABLE"
-msgstr "Activare"
+msgid "IDS_QP_BUTTON2_TETHERING"
+msgstr "Furn. acces internet"
 
-msgid "IDS_COM_POP_UNSUPPORTED"
-msgstr "Neacceptat"
+msgid "IDS_QP_BUTTON2_SOUND_ABB"
+msgstr "Sunet"
 
-msgid "IDS_COM_SK_DISMISS"
-msgstr "Oprire"
+msgid "IDS_QP_BUTTON2_SOUND"
+msgstr "Sunet"
 
-msgid "IDS_COM_POP_PELASE_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
-msgstr "Introduceţi cartela SIM pentru a accesa serviciile de reţea"
+msgid "IDS_QP_BUTTON2_PRIVATE_MODE"
+msgstr "Modul Privat"
 
-msgid "IDS_COM_BODY_DO_NOT_ASK_AGAIN"
-msgstr "Nu întreba din nou"
+msgid "IDS_QP_BUTTON2_POWER_N_SAVING"
+msgstr "Econom.\nenergie"
 
-msgid "IDS_QP_POP_INSERT_SIM_CARD_AND_RESTART_DEVICE_TO_USE_TETHERING"
-msgstr "Introduceţi cartela SIM şi reporniţi dispozitivul pentru a utiliza furnizarea accesului la Internet"
+msgid "IDS_QP_BUTTON2_MUTE_ABB"
+msgstr "Silenţ."
 
-msgid "IDS_QP_POP_CONNECTING_VIA_PACKET_DATA_MAY_INCUR_ADDITIONAL_CHARGES_CONTINUE_Q"
-msgstr "Conectarea folosind pachetele de date poate genera costuri suplimentare. Continuaţi?"
+msgid "IDS_QP_BUTTON2_MOBILE_DATA"
+msgstr "Date\nmobile"
 
-msgid "IDS_QP_BODY_AUTO"
-msgstr "Automat"
+msgid "IDS_QP_BUTTON2_LOCATION_ABB"
+msgstr "Locaţie"
 
-msgid "IDS_QP_TAB_POWER_SAVING"
-msgstr "Economisire energie"
+msgid "IDS_QP_BUTTON2_FLIGHT_N_MODE"
+msgstr "Mod\nAvion"
 
-msgid "IDS_QP_TAB_TETHERING"
-msgstr "Tethering"
+msgid "IDS_QP_BUTTON2_BLUETOOTH"
+msgstr "Bluetooth"
 
-msgid "IDS_QP_TAB_MOBILE_DATA"
-msgstr "Date mobile"
+msgid "IDS_QP_BUTTON2_AUTO_ROTATE"
+msgstr "Rotire automată"
 
-msgid "IDS_QP_TAB_DRIVING_MODE"
-msgstr "Mod la volan"
+msgid "IDS_QP_BUTTON2_ASSISTIVE_NLIGHT"
+msgstr "Lumină\najutor"
 
-msgid "IDS_COM_POP_UNABLE_TO_CONNECT_TO_MOBILE_NETWORK_WHILE_FLIGHT_MODE_IS_ENABLED_MSG"
-msgstr "Imposibil de conectat la reţelele mobile când modul Avion este activat. Conectaţi-vă utilizând reţeaua Wi-Fi sau dezactivaţi modul Avion şi încercaţi din nou"
+msgid "IDS_QP_BODY_PM_ABB"
+msgstr "pm"
 
-msgid "IDS_QP_POP_WI_FI_TETHERING_CONSUMES_MORE_BATTERY_POWER_AND_INCREASES_YOUR_DATA_USAGE_CONTINUE_Q"
-msgstr "Furnizarea accesului la Internet prin Wi-Fi consumă mai mult din energia bateriei şi creşte volumul de date utilizat. Continuaţi?"
+msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
+msgstr "Notificări"
 
-msgid "IDS_QP_POP_DISABLE_TETHERING_TO_USE_WI_FI"
-msgstr "Dezact. furnizarea accesului la internet pt. a utiliza Wi-Fi"
+msgid "IDS_QP_BODY_AM_ABB"
+msgstr "am"
 
-msgid "IDS_QP_POP_TO_ENABLE_POWER_SAVING_MODE_ENABLE_AT_LEAST_ONE_RELEVANT_FUNCTION"
-msgstr "Pentru activarea modului Economisire energie, activaţi cel puţin o funcţie relevantă"
+msgid "IDS_ST_TPOP_UNABLE_TO_MAKE_VOICE_CALLS_VIDEO_CALLS_AND_SEND_TEXT_MESSAGES_USING_PS"
+msgstr "Nu se pot efectua apeluri vocale şi video şi nu se pot trimite mesaje text utilizând %s."
 
-msgid "IDS_QP_POP_TURN_OFF_WI_FI_TO_USE_TETHERING"
-msgstr "Opriţi Wi-Fi pentru a utiliza furnizarea accesului la internet"
+msgid "IDS_ST_TPOP_SELECT_SIM_CARD_FOR_OUTGOING_VOICE_CALLS_VIDEO_CALLS_AND_TEXT_MESSAGES"
+msgstr "Selectaţi o cartelă SIM pentru apelurile vocale şi video efectuate şi pentru mesajele text."
 
-msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
-msgstr "Wi-Fi şi PA mobil nu pot fi activate simultan. Dezactivaţi PA mobil?"
+msgid "IDS_ST_TPOP_OUTGOING_VOICE_CALLS_VIDEO_CALLS_AND_TEXT_MESSAGES_WILL_BE_MADE_USING_THE_PS_SIM_CARD"
+msgstr "Se va utiliza cartela SIM %s pentru apelurile vocale şi video de ieşire şi mesajele text trimise."
+
+msgid "IDS_ST_SK_OK"
+msgstr "OK"
+
+msgid "IDS_ST_SK_NO"
+msgstr "Nu"
 
-msgid "IDS_ASCAST_HEADER_SCREEN_MIRRORING"
-msgstr "Oglindire ecran"
+msgid "IDS_ST_POP_UNABLE_TO_INCREASE_BRIGHTNESS_FURTHER_BECAUSE_OF_PHONE_OVERHEATING"
+msgstr "Imposibil de mărit luminozitatea deoarece telefonul este supraîncălzit"
 
-msgid "IDS_QP_HEADER_REPLACE_QUICK_SETTING_BUTTON"
-msgstr "Înlocuiţi butonul pentru setare rapidă"
+msgid "IDS_ST_NPBODY_NO_SERVICE"
+msgstr "În afara ariei de acoperire"
+
+msgid "IDS_ST_NPBODY_EMERGENCY_CALLS_ONLY_ABB"
+msgstr "Numai apeluri de urgenţă"
 
-msgid "IDS_QP_HEADER_ADD_QUICK_SETTING_BUTTON"
-msgstr "Adăugaţi un buton pentru setare rapidă"
+msgid "IDS_ST_HEADER_OUTDOOR"
+msgstr "Exterior"
 
-msgid "IDS_QP_POP_YOU_WILL_NO_LONGER_BE_ABLE_TO_USE_APPLICATIONS_SUCH_AS_INTERNET_NOTI_MSG"
-msgstr "Nu veţi mai putea utiliza aplicaţii precum Internetul şi E-mailul prin intermediul reţelelor mobile. Continuaţi?"
+msgid "IDS_ST_BUTTON2_WI_FI_NTETHERING"
+msgstr "Tethering\nWi-Fi"
 
-msgid "IDS_QP_BUTTON2_SCREEN_N_MIRRORING"
-msgstr "Duplicare\nEcran"
+msgid "IDS_ST_BUTTON2_WI_FI_ABB"
+msgstr "Wi-Fi"
 
-msgid "IDS_COM_BODY_BUTTON_T_TTS"
-msgstr "Buton"
+msgid "IDS_ST_BUTTON2_TORCH_ABB"
+msgstr "Lanternă"
 
-msgid "IDS_QP_BUTTON2_GPS"
+msgid "IDS_ST_BUTTON2_POWER_NSAVING"
+msgstr "Econom.\nenergie"
+
+msgid "IDS_ST_BUTTON2_MOBILE_NDATA"
+msgstr "Date\nmobile"
+
+msgid "IDS_ST_BUTTON2_GPS_ABB"
 msgstr "GPS"
 
-msgid "IDS_QP_BUTTON_NOTIFICATION"
-msgstr "Notificare"
+msgid "IDS_ST_BUTTON2_FLIGHT_NMODE"
+msgstr "Modul\nAvion"
+
+msgid "IDS_ST_BUTTON2_BLUETOOTH_ABB"
+msgstr "Bluetooth"
+
+msgid "IDS_ST_BUTTON2_AUTO_NROTATE"
+msgstr "Rotire\nautomată"
+
+msgid "IDS_ST_BODY_SIM_2"
+msgstr "SIM 2"
+
+msgid "IDS_ST_BODY_SIM_1"
+msgstr "SIM 1"
+
+msgid "IDS_ST_BODY_SCANNING_FOR_MOBILE_NETWORK_ING_ABB"
+msgstr "Se caută reţeaua mobilă..."
+
+msgid "IDS_ST_BODY_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
+msgstr "Introduceţi cartela SIM pentru a accesa serviciile de reţea."
+
+msgid "IDS_ST_BODY_ALWAYS_ASK_ABB"
+msgstr "Solicită întotdeauna"
+
+msgid "IDS_SCP_BODY_UNABLE_TO_CONNECT_TO_MOBILE_NETWORKS_WHILE_FLIGHT_MODE_IS_ENABLED_CONNECT_TO_A_WI_FI_NETWORK_INSTEAD_OR_DISABLE_FLIGHT_MODE_AND_TRY_AGAIN"
+msgstr "Imposibil de conectat la reţelele mobile când modul Avion este activat. Conectaţi-vă la reţeaua Wi-Fi sau dezactivaţi modul Avion şi încercaţi din nou."
 
-msgid "IDS_COM_BUTTON_AGREE"
-msgstr "De acord"
+msgid "IDS_COM_BODY_SEARCHING"
+msgstr "Se caută"
 
-msgid "IDS_COM_BUTTON_DISAGREE"
-msgstr "Refuzare"
+msgid "IDS_QP_TPOP_UNABLE_TO_OPEN_PS"
+msgstr "%s nu se poate deschide."
 
-msgid "IDS_ST_BODY_GPS_LOCATION_USE_CONTROLLED_BY_APPLICATIONS_MSG"
-msgstr "Locaţia GPS şi utilizarea datelor locaţiei dvs. sunt controlate de aplicaţiile pe care le utilizaţi"
+msgid "IDS_QP_OPT_OUTDOORS_M_OUTDOOR_MODE_ABB"
+msgstr "Exterior"
 
-msgid "IDS_ST_HEADER_USER_CONSENT"
-msgstr "Consimţământ utilizator"
+msgid "IDS_QP_BUTTON2_PRIVATE_NMODE_ABB"
+msgstr "Mod\nPrivat"
 
index 6f0ab3d..c00a884 100755 (executable)
-msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
-msgstr "Уведомления"
+msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
+msgstr "Нельзя активировать одновременно Wi-Fi и Mobile AP. Отключить Mobile AP?"
+
+msgid "IDS_TASKMGR_BUTTON_CLEAR_ALL"
+msgstr "Очистить все"
 
-msgid "IDS_WIFI_BODY_ALLSHARE_CAST"
-msgstr "AllShare Cast"
+msgid "IDS_IDLE_SBODY_TAP_HERE_TO_DISABLE_SAFE_MODE_ABB"
+msgstr "Наж. для откл. безопас. режима."
 
-msgid "IDS_CALL_POP_CALLING_EMERG_ONLY"
+msgid "IDS_IDLE_POP_UNABLE_TO_LAUNCH_PS"
+msgstr "Невозможно запустить %s."
+
+msgid "IDS_IDLE_MBODY_EMERGENCY_CALLS_ONLY"
 msgstr "Только экстренные вызовы"
 
-msgid "IDS_QP_BUTTON_ROTATION"
-msgstr "Поворот"
+msgid "IDS_IDLE_BODY_SEARCHING_ING"
+msgstr "Поиск..."
+
+msgid "IDS_IDLE_BODY_NO_SIM"
+msgstr "Нет SIM-карты"
+
+msgid "IDS_IDLE_BODY_NO_SERVICE"
+msgstr "Нет сети"
+
+msgid "IDS_IDLE_BODY_INVALID_SIM_CARD"
+msgstr "Неправильная SIM-карта."
 
-msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
+msgid "IDS_IDLE_BODY_EMERGENCY_CALLS_ONLY"
+msgstr "Только экстренные вызовы."
+
+msgid "IDS_QP_OPT_OUTDOORS_ABB"
+msgstr "На улице"
+
+msgid "IDS_QP_MBODY_SAFE_MODE_ENABLED"
+msgstr "Безопасный режим включен"
+
+msgid "IDS_QP_HEADER_NOTIFICATIONS_HPD_ABB"
 msgstr "Уведомления (%d)"
 
-msgid "IDS_QP_BUTTON_VIBRATION"
+msgid "IDS_QP_HEADER_CLEAR_ALL_ABB"
+msgstr "Очист. все"
+
+msgid "IDS_QP_BUTTON_NOTIFICATION"
+msgstr "Уведомление"
+
+msgid "IDS_QP_BUTTON_ALWAYS_ASK_ABB"
+msgstr "Всегда спраш."
+
+msgid "IDS_QP_BUTTON2_WI_FI"
+msgstr "Wi-Fi"
+
+msgid "IDS_QP_BUTTON2_VIBRATE"
 msgstr "Вибрация"
 
-msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
-msgstr "Ð\97вÑ\83к Ð¸ Ð²Ð¸Ð±Ñ\80аÑ\86ия"
+msgid "IDS_QP_BUTTON2_U_POWER_NSAVING_ABB"
+msgstr "Ð\9cакÑ\81.\nÑ\8dкономия"
 
-msgid "IDS_QP_TAB4_AUTO_ROTATION"
-msgstr "Ð\90вÑ\82о Ð¿Ð¾Ð²Ð¾Ñ\80оÑ\82"
+msgid "IDS_QP_BUTTON2_TETHERING"
+msgstr "Ð\9cодем"
 
-msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
-msgstr "Ð\91локиÑ\80. Ð¿Ð¾Ð²Ð¾Ñ\80оÑ\82"
+msgid "IDS_QP_BUTTON2_SOUND_ABB"
+msgstr "Ð\97вÑ\83к"
 
-msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
-msgstr "Режим Ñ\81Ñ\8aемного Ñ\83Ñ\81Ñ\82Ñ\80ойÑ\81Ñ\82ва"
+msgid "IDS_QP_BUTTON2_SOUND"
+msgstr "Ð\97вÑ\83к"
 
-msgid "IDS_QP_BUTTON_DISABLE"
-msgstr "Ð\92Ñ\8bкл."
+msgid "IDS_QP_BUTTON2_PRIVATE_MODE"
+msgstr "Ð\9fÑ\80иваÑ\82. Ñ\80ежим"
 
-msgid "IDS_QP_BUTTON_ENABLE"
-msgstr "Ð\92клÑ\8eÑ\87иÑ\82Ñ\8c"
+msgid "IDS_QP_BUTTON2_POWER_N_SAVING"
+msgstr "ЭкономиÑ\8f\nÑ\8dнеÑ\80гии"
 
-msgid "IDS_COM_POP_UNSUPPORTED"
-msgstr "Ð\9dе Ð¿Ð¾Ð´Ð´ÐµÑ\80живаеÑ\82Ñ\81Ñ\8f"
+msgid "IDS_QP_BUTTON2_MUTE_ABB"
+msgstr "Ð\9eÑ\82кл.\nзвÑ\83к"
 
-msgid "IDS_COM_SK_DISMISS"
-msgstr "Ð\9eÑ\82мениÑ\82Ñ\8c"
+msgid "IDS_QP_BUTTON2_MOBILE_DATA"
+msgstr "Ð\9cобил.\nданнÑ\8bе"
 
-msgid "IDS_COM_POP_PELASE_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
-msgstr "Ð\92Ñ\81Ñ\82авÑ\8cÑ\82е SIM-каÑ\80Ñ\82Ñ\83 Ð´Ð»Ñ\8f Ð´Ð¾Ñ\81Ñ\82Ñ\83па Ðº Ñ\83Ñ\81лÑ\83гам Ñ\81еÑ\82и"
+msgid "IDS_QP_BUTTON2_LOCATION_ABB"
+msgstr "Ð\93еоданнÑ\8bе"
 
-msgid "IDS_COM_BODY_DO_NOT_ASK_AGAIN"
-msgstr "Ð\91олÑ\8cÑ\88е Ð½Ðµ Ñ\81пÑ\80аÑ\88иваÑ\82Ñ\8c"
+msgid "IDS_QP_BUTTON2_FLIGHT_N_MODE"
+msgstr "Ð\90вÑ\82ономн.\nÑ\80ежим"
 
-msgid "IDS_QP_POP_INSERT_SIM_CARD_AND_RESTART_DEVICE_TO_USE_TETHERING"
-msgstr "Чтобы воспользоваться модемом, вставьте SIM-карту и перезагрузите устройство"
+msgid "IDS_QP_BUTTON2_BLUETOOTH"
+msgstr "Bluetooth"
 
-msgid "IDS_QP_POP_CONNECTING_VIA_PACKET_DATA_MAY_INCUR_ADDITIONAL_CHARGES_CONTINUE_Q"
-msgstr "Ð\97а Ð¿ÐµÑ\80едаÑ\87Ñ\83 Ð´Ð°Ð½Ð½Ñ\8bÑ\85 Ð¼Ð¾Ð¶ÐµÑ\82 Ð²Ð·Ð¸Ð¼Ð°Ñ\82Ñ\8cÑ\81Ñ\8f Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ\82елÑ\8cнаÑ\8f Ð¿Ð»Ð°Ñ\82а Ð² Ñ\81ооÑ\82веÑ\82Ñ\81Ñ\82вии Ñ\81 Ñ\82аÑ\80иÑ\84нÑ\8bм Ð¿Ð»Ð°Ð½Ð¾Ð¼. Ð\9fÑ\80одолжиÑ\82Ñ\8c?"
+msgid "IDS_QP_BUTTON2_AUTO_ROTATE"
+msgstr "Ð\90вÑ\82оповоÑ\80оÑ\82"
 
-msgid "IDS_QP_BODY_AUTO"
-msgstr "Ð\90вÑ\82о"
+msgid "IDS_QP_BUTTON2_ASSISTIVE_NLIGHT"
+msgstr "Ð\9fодÑ\81веÑ\82."
 
-msgid "IDS_QP_TAB_POWER_SAVING"
-msgstr "Экономия энергии"
+msgid "IDS_QP_BODY_PM_ABB"
+msgstr "PM"
 
-msgid "IDS_QP_TAB_TETHERING"
-msgstr "Ð\9cодем"
+msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
+msgstr "УведомлениÑ\8f"
 
-msgid "IDS_QP_TAB_MOBILE_DATA"
-msgstr "Мобильные данные"
+msgid "IDS_QP_BODY_AM_ABB"
+msgstr "AM"
 
-msgid "IDS_QP_TAB_DRIVING_MODE"
-msgstr "Режим Ð\92ождение"
+msgid "IDS_ST_TPOP_UNABLE_TO_MAKE_VOICE_CALLS_VIDEO_CALLS_AND_SEND_TEXT_MESSAGES_USING_PS"
+msgstr "Ð\9dевозможно Ð²Ñ\8bполнÑ\8fÑ\82Ñ\8c Ð³Ð¾Ð»Ð¾Ñ\81овÑ\8bе Ð²Ñ\8bзовÑ\8b Ð¸ Ð²Ð¸Ð´ÐµÐ¾Ð²Ñ\8bзовÑ\8b, Ð° Ñ\82акже Ð¾Ñ\82пÑ\80авлÑ\8fÑ\82Ñ\8c Ñ\82екÑ\81Ñ\82овÑ\8bе Ñ\81ообÑ\89ениÑ\8f Ñ\81 Ð¿Ð¾Ð¼Ð¾Ñ\89Ñ\8cÑ\8e %s."
 
-msgid "IDS_COM_POP_UNABLE_TO_CONNECT_TO_MOBILE_NETWORK_WHILE_FLIGHT_MODE_IS_ENABLED_MSG"
-msgstr "Ð\9dевозможно Ð¿Ð¾Ð´ÐºÐ»Ñ\8eÑ\87иÑ\82Ñ\8cÑ\81Ñ\8f Ðº Ð¼Ð¾Ð±Ð¸Ð»Ñ\8cной Ñ\81еÑ\82и Ð² Ð°Ð²Ñ\82ономном Ñ\80ежиме. Ð\9fодклÑ\8eÑ\87иÑ\82еÑ\81Ñ\8c Ðº Ñ\81еÑ\82и Wi-Fi Ð¸Ð»Ð¸ Ð¾Ñ\82клÑ\8eÑ\87иÑ\82е Ð°Ð²Ñ\82ономнÑ\8bй Ñ\80ежим Ð¸ Ð¿Ð¾Ð²Ñ\82оÑ\80иÑ\82е Ð¿Ð¾Ð¿Ñ\8bÑ\82кÑ\83"
+msgid "IDS_ST_TPOP_SELECT_SIM_CARD_FOR_OUTGOING_VOICE_CALLS_VIDEO_CALLS_AND_TEXT_MESSAGES"
+msgstr "Ð\92Ñ\8bбеÑ\80иÑ\82е SIM-каÑ\80Ñ\82Ñ\83 Ð´Ð»Ñ\8f Ð¸Ñ\81Ñ\85одÑ\8fÑ\89иÑ\85 Ð³Ð¾Ð»Ð¾Ñ\81овÑ\8bÑ\85 Ð²Ñ\8bзовов, Ð²Ð¸Ð´ÐµÐ¾Ð²Ñ\8bзовов Ð¸ Ñ\82екÑ\81Ñ\82овÑ\8bÑ\85 Ñ\81ообÑ\89ений."
 
-msgid "IDS_QP_POP_WI_FI_TETHERING_CONSUMES_MORE_BATTERY_POWER_AND_INCREASES_YOUR_DATA_USAGE_CONTINUE_Q"
-msgstr "Ð\9fÑ\80и Ð¸Ñ\81полÑ\8cзовании Ð¼Ð¾Ð´ÐµÐ¼Ð° Wi-Fi Ð±Ñ\8bÑ\81Ñ\82Ñ\80о Ñ\80аÑ\81Ñ\85одÑ\83еÑ\82Ñ\81Ñ\8f Ð·Ð°Ñ\80Ñ\8fд Ð±Ð°Ñ\82аÑ\80еи Ð¸ Ñ\83велиÑ\87иваеÑ\82Ñ\81Ñ\8f Ð¾Ð±Ñ\8aем Ð¿ÐµÑ\80едаваемÑ\8bÑ\85 Ð´Ð°Ð½Ð½Ñ\8bÑ\85. Ð\9fÑ\80одолжиÑ\82Ñ\8c?"
+msgid "IDS_ST_TPOP_OUTGOING_VOICE_CALLS_VIDEO_CALLS_AND_TEXT_MESSAGES_WILL_BE_MADE_USING_THE_PS_SIM_CARD"
+msgstr "Ð\94лÑ\8f Ð¸Ñ\81Ñ\85одÑ\8fÑ\89иÑ\85 Ð³Ð¾Ð»Ð¾Ñ\81овÑ\8bÑ\85 Ð²Ñ\8bзовов, Ð²Ð¸Ð´ÐµÐ¾Ð²Ñ\8bзовов Ð¸ Ñ\82екÑ\81Ñ\82овÑ\8bÑ\85 Ñ\81ообÑ\89ений Ð±Ñ\83деÑ\82 Ð¸Ñ\81полÑ\8cзоваÑ\82Ñ\8cÑ\81Ñ\8f SIM-каÑ\80Ñ\82а %s."
 
-msgid "IDS_QP_POP_DISABLE_TETHERING_TO_USE_WI_FI"
-msgstr "Отключите модем для использования Wi-Fi"
+msgid "IDS_ST_SK_OK"
+msgstr "OK"
 
-msgid "IDS_QP_POP_TO_ENABLE_POWER_SAVING_MODE_ENABLE_AT_LEAST_ONE_RELEVANT_FUNCTION"
-msgstr "ЧÑ\82обÑ\8b Ð¸Ñ\81полÑ\8cзоваÑ\82Ñ\8c Ñ\80ежим Ñ\8dнеÑ\80гоÑ\81беÑ\80ежениÑ\8f, Ð²ÐºÐ»Ñ\8eÑ\87иÑ\82е Ð¿Ð¾ ÐºÑ\80айней Ð¼ÐµÑ\80е Ð¾Ð´Ð½Ñ\83 Ñ\84Ñ\83нкÑ\86иÑ\8e"
+msgid "IDS_ST_SK_NO"
+msgstr "Ð\9dеÑ\82"
 
-msgid "IDS_QP_POP_TURN_OFF_WI_FI_TO_USE_TETHERING"
-msgstr "Ð\9eÑ\82клÑ\8eÑ\87иÑ\82е Wi-Fi, Ñ\87Ñ\82обÑ\8b Ð¸Ñ\81полÑ\8cзоваÑ\82Ñ\8c Ð¼Ð¾Ð´ÐµÐ¼"
+msgid "IDS_ST_POP_UNABLE_TO_INCREASE_BRIGHTNESS_FURTHER_BECAUSE_OF_PHONE_OVERHEATING"
+msgstr "Ð\9dевозможно Ñ\83велиÑ\87иÑ\82Ñ\8c Ñ\8fÑ\80коÑ\81Ñ\82Ñ\8c Ð¸Ð·-за Ð¿ÐµÑ\80егÑ\80ева Ñ\83Ñ\81Ñ\82Ñ\80ойÑ\81Ñ\82ва."
 
-msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
-msgstr "Нельзя активировать одновременно Wi-Fi и Mobile AP. Отключить Mobile AP?"
+msgid "IDS_ST_NPBODY_NO_SERVICE"
+msgstr "Нет сети"
+
+msgid "IDS_ST_NPBODY_EMERGENCY_CALLS_ONLY_ABB"
+msgstr "Только экстренные вызовы"
 
-msgid "IDS_ASCAST_HEADER_SCREEN_MIRRORING"
-msgstr "Screen Mirroring"
+msgid "IDS_ST_HEADER_OUTDOOR"
+msgstr "На улице"
 
-msgid "IDS_QP_HEADER_REPLACE_QUICK_SETTING_BUTTON"
-msgstr "Ð\97амениÑ\82Ñ\8c ÐºÐ½Ð¾Ð¿ÐºÑ\83 Ð±Ñ\8bÑ\81Ñ\82Ñ\80Ñ\8bÑ\85 Ð½Ð°Ñ\81Ñ\82Ñ\80оек"
+msgid "IDS_ST_BUTTON2_WI_FI_NTETHERING"
+msgstr "Ð\9cодем\nWi-Fi"
 
-msgid "IDS_QP_HEADER_ADD_QUICK_SETTING_BUTTON"
-msgstr "Добавить кнопку быстрых настроек"
+msgid "IDS_ST_BUTTON2_WI_FI_ABB"
+msgstr "Wi-Fi"
 
-msgid "IDS_QP_POP_YOU_WILL_NO_LONGER_BE_ABLE_TO_USE_APPLICATIONS_SUCH_AS_INTERNET_NOTI_MSG"
-msgstr "Ð\92Ñ\8b Ð±Ð¾Ð»Ñ\8cÑ\88е Ð½Ðµ Ñ\81можеÑ\82е Ð¸Ñ\81полÑ\8cзоваÑ\82Ñ\8c Ð\98нÑ\82еÑ\80неÑ\82, Ñ\8dлекÑ\82Ñ\80оннÑ\83Ñ\8e Ð¿Ð¾Ñ\87Ñ\82Ñ\83 Ð¸ Ð´Ñ\80Ñ\83гие Ð¿Ñ\80иложениÑ\8f Ñ\87еÑ\80ез Ð¼Ð¾Ð±Ð¸Ð»Ñ\8cнÑ\83Ñ\8e Ñ\81еÑ\82Ñ\8c. Ð\9fÑ\80одолжиÑ\82Ñ\8c?"
+msgid "IDS_ST_BUTTON2_TORCH_ABB"
+msgstr "ФонаÑ\80ик"
 
-msgid "IDS_QP_BUTTON2_SCREEN_N_MIRRORING"
-msgstr "Screen\nMirroring"
+msgid "IDS_ST_BUTTON2_POWER_NSAVING"
+msgstr "Экономия\nэнергии"
 
-msgid "IDS_COM_BODY_BUTTON_T_TTS"
-msgstr "Ð\9aнопка"
+msgid "IDS_ST_BUTTON2_MOBILE_NDATA"
+msgstr "Ð\9cоб.\nданнÑ\8bе"
 
-msgid "IDS_QP_BUTTON2_GPS"
+msgid "IDS_ST_BUTTON2_GPS_ABB"
 msgstr "GPS"
 
-msgid "IDS_QP_BUTTON_NOTIFICATION"
-msgstr "Уведомление"
+msgid "IDS_ST_BUTTON2_FLIGHT_NMODE"
+msgstr "Автон.\nрежим"
+
+msgid "IDS_ST_BUTTON2_BLUETOOTH_ABB"
+msgstr "Bluetooth"
+
+msgid "IDS_ST_BUTTON2_AUTO_NROTATE"
+msgstr "Авто-\nповорот"
+
+msgid "IDS_ST_BODY_SIM_2"
+msgstr "SIM 2"
+
+msgid "IDS_ST_BODY_SIM_1"
+msgstr "SIM 1"
+
+msgid "IDS_ST_BODY_SCANNING_FOR_MOBILE_NETWORK_ING_ABB"
+msgstr "Поиск мобильной сети..."
+
+msgid "IDS_ST_BODY_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
+msgstr "Вставьте SIM-карту для доступа к услугам сети."
+
+msgid "IDS_ST_BODY_ALWAYS_ASK_ABB"
+msgstr "Всегда спрашивать"
+
+msgid "IDS_SCP_BODY_UNABLE_TO_CONNECT_TO_MOBILE_NETWORKS_WHILE_FLIGHT_MODE_IS_ENABLED_CONNECT_TO_A_WI_FI_NETWORK_INSTEAD_OR_DISABLE_FLIGHT_MODE_AND_TRY_AGAIN"
+msgstr "Невозможно подключиться к мобильной сети в автономном режиме. Подключитесь к сети Wi-Fi или отключите автономный режим и повторите попытку."
 
-msgid "IDS_COM_BUTTON_AGREE"
-msgstr "Принять"
+msgid "IDS_COM_BODY_SEARCHING"
+msgstr "Поиск"
 
-msgid "IDS_COM_BUTTON_DISAGREE"
-msgstr "Ð\9eÑ\82казаÑ\82Ñ\8cÑ\81Ñ\8f"
+msgid "IDS_QP_TPOP_UNABLE_TO_OPEN_PS"
+msgstr "Ð\9dе Ñ\83далоÑ\81Ñ\8c Ð¾Ñ\82кÑ\80Ñ\8bÑ\82Ñ\8c %s."
 
-msgid "IDS_ST_BODY_GPS_LOCATION_USE_CONTROLLED_BY_APPLICATIONS_MSG"
-msgstr "GPS-данные о местоположении и их применение контролируются используемыми приложениями"
+msgid "IDS_QP_OPT_OUTDOORS_M_OUTDOOR_MODE_ABB"
+msgstr "На улице"
 
-msgid "IDS_ST_HEADER_USER_CONSENT"
-msgstr "СоглаÑ\81ие Ð¿Ð¾Ð»Ñ\8cзоваÑ\82елÑ\8f"
+msgid "IDS_QP_BUTTON2_PRIVATE_NMODE_ABB"
+msgstr "Ð\9fÑ\80иваÑ\82нÑ\8bй\nÑ\80ежим"
 
index 34ce768..08c9b86 100755 (executable)
--- a/po/sk.po
+++ b/po/sk.po
-msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
-msgstr "Oznámenia"
+msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
+msgstr "Wi-Fi a mobilný prístupový bod sa nedajú aktivovať súčasne. Deaktivovať mobilný prístupový bod?"
+
+msgid "IDS_TASKMGR_BUTTON_CLEAR_ALL"
+msgstr "Vymazať všetko"
+
+msgid "IDS_IDLE_SBODY_TAP_HERE_TO_DISABLE_SAFE_MODE_ABB"
+msgstr "Ťukn. sem vypn. bezpečný režim."
+
+msgid "IDS_IDLE_POP_UNABLE_TO_LAUNCH_PS"
+msgstr "Nedá sa spustiť %s."
+
+msgid "IDS_IDLE_MBODY_EMERGENCY_CALLS_ONLY"
+msgstr "Iba tiesňové volania"
+
+msgid "IDS_IDLE_BODY_SEARCHING_ING"
+msgstr "Hľadanie..."
 
-msgid "IDS_WIFI_BODY_ALLSHARE_CAST"
-msgstr "AllShare Cast"
+msgid "IDS_IDLE_BODY_NO_SIM"
+msgstr "Žiadna SIM"
 
-msgid "IDS_CALL_POP_CALLING_EMERG_ONLY"
-msgstr "Len tiesňové volania"
+msgid "IDS_IDLE_BODY_NO_SERVICE"
+msgstr "Žiadna služba"
 
-msgid "IDS_QP_BUTTON_ROTATION"
-msgstr "Otočenie"
+msgid "IDS_IDLE_BODY_INVALID_SIM_CARD"
+msgstr "Neplatná SIM karta."
 
-msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
+msgid "IDS_IDLE_BODY_EMERGENCY_CALLS_ONLY"
+msgstr "Len tiesňové volania."
+
+msgid "IDS_QP_OPT_OUTDOORS_ABB"
+msgstr "Vonku"
+
+msgid "IDS_QP_MBODY_SAFE_MODE_ENABLED"
+msgstr "Bezpečný režim je zapnutý"
+
+msgid "IDS_QP_HEADER_NOTIFICATIONS_HPD_ABB"
 msgstr "Oznámenia (%d)"
 
-msgid "IDS_QP_BUTTON_VIBRATION"
-msgstr "Vibrácia"
+msgid "IDS_QP_HEADER_CLEAR_ALL_ABB"
+msgstr "Vymaz. vš."
 
-msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
-msgstr "Zvuk a vibrácia"
+msgid "IDS_QP_BUTTON_NOTIFICATION"
+msgstr "Oznámenie"
 
-msgid "IDS_QP_TAB4_AUTO_ROTATION"
-msgstr "Autom. otáčanie"
+msgid "IDS_QP_BUTTON_ALWAYS_ASK_ABB"
+msgstr "Vždy sa pýtať"
 
-msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
-msgstr "Zamknutie otáčania"
+msgid "IDS_QP_BUTTON2_WI_FI"
+msgstr "Wi-Fi"
 
-msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
-msgstr "Režim veľkokapac. pamäte"
+msgid "IDS_QP_BUTTON2_VIBRATE"
+msgstr "Vibrovať"
 
-msgid "IDS_QP_BUTTON_DISABLE"
-msgstr "Zakázať"
+msgid "IDS_QP_BUTTON2_U_POWER_NSAVING_ABB"
+msgstr "Extrémne\nšetrenie"
 
-msgid "IDS_QP_BUTTON_ENABLE"
-msgstr "Povoliť"
+msgid "IDS_QP_BUTTON2_TETHERING"
+msgstr "Zdieľanie pripojenia"
+
+msgid "IDS_QP_BUTTON2_SOUND_ABB"
+msgstr "Zvuk"
 
-msgid "IDS_COM_POP_UNSUPPORTED"
-msgstr "Nie je podporované"
+msgid "IDS_QP_BUTTON2_SOUND"
+msgstr "Zvuk"
 
-msgid "IDS_COM_SK_DISMISS"
-msgstr "Odmietnuť"
+msgid "IDS_QP_BUTTON2_PRIVATE_MODE"
+msgstr "Súkromný režim"
 
-msgid "IDS_COM_POP_PELASE_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
-msgstr "Vložte SIM kartu na prístup k službám siete"
+msgid "IDS_QP_BUTTON2_POWER_N_SAVING"
+msgstr "Šetren.\nenergie"
 
-msgid "IDS_COM_BODY_DO_NOT_ASK_AGAIN"
-msgstr "Už sa nepýtať"
+msgid "IDS_QP_BUTTON2_MUTE_ABB"
+msgstr "Stíšiť"
 
-msgid "IDS_QP_POP_INSERT_SIM_CARD_AND_RESTART_DEVICE_TO_USE_TETHERING"
-msgstr "Pred použitím zdieľania pripojenia vložte kartu SIM a reštartujte zariadenie"
+msgid "IDS_QP_BUTTON2_MOBILE_DATA"
+msgstr "Mobilné\ndáta"
 
-msgid "IDS_QP_POP_CONNECTING_VIA_PACKET_DATA_MAY_INCUR_ADDITIONAL_CHARGES_CONTINUE_Q"
-msgstr "Paketové dátové pripojenie môže vyžadovať ďalšie poplatky. Pokračovať?"
+msgid "IDS_QP_BUTTON2_LOCATION_ABB"
+msgstr "GPS"
 
-msgid "IDS_QP_BODY_AUTO"
-msgstr "Automaticky"
+msgid "IDS_QP_BUTTON2_FLIGHT_N_MODE"
+msgstr "Letový\nrežim"
 
-msgid "IDS_QP_TAB_POWER_SAVING"
-msgstr "Šetrenie energie"
+msgid "IDS_QP_BUTTON2_BLUETOOTH"
+msgstr "Bluetooth"
 
-msgid "IDS_QP_TAB_TETHERING"
-msgstr "Zdieľanie pripojenia"
+msgid "IDS_QP_BUTTON2_AUTO_ROTATE"
+msgstr "Automat. otáčanie"
 
-msgid "IDS_QP_TAB_MOBILE_DATA"
-msgstr "Mobilné dáta"
+msgid "IDS_QP_BUTTON2_ASSISTIVE_NLIGHT"
+msgstr "Pomocné\nsvetlo"
 
-msgid "IDS_QP_TAB_DRIVING_MODE"
-msgstr "Jazdný režim"
+msgid "IDS_QP_BODY_PM_ABB"
+msgstr "pp"
 
-msgid "IDS_COM_POP_UNABLE_TO_CONNECT_TO_MOBILE_NETWORK_WHILE_FLIGHT_MODE_IS_ENABLED_MSG"
-msgstr "Keď je zapnutý letový režim, nedá sa pripojiť k mobilným sieťam. Pripojte sa namiesto toho k sieti Wi-Fi alebo vypnite letový režim a skúste to znova"
+msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
+msgstr "Oznámenia"
 
-msgid "IDS_QP_POP_WI_FI_TETHERING_CONSUMES_MORE_BATTERY_POWER_AND_INCREASES_YOUR_DATA_USAGE_CONTINUE_Q"
-msgstr "Zdieľanie pripojenia Wi-Fi spotrebúva viac energie batérie a zvyšuje používanie dátových prenosov. Pokračovať?"
+msgid "IDS_QP_BODY_AM_ABB"
+msgstr "dp"
 
-msgid "IDS_QP_POP_DISABLE_TETHERING_TO_USE_WI_FI"
-msgstr "Pred použitím siete Wi-Fi vypnite zdieľanie pripojenia"
+msgid "IDS_ST_TPOP_UNABLE_TO_MAKE_VOICE_CALLS_VIDEO_CALLS_AND_SEND_TEXT_MESSAGES_USING_PS"
+msgstr "%s neumožňuje uskutočňovať hlasové hovory, videohovory a odosielať textové správy."
 
-msgid "IDS_QP_POP_TO_ENABLE_POWER_SAVING_MODE_ENABLE_AT_LEAST_ONE_RELEVANT_FUNCTION"
-msgstr "Ak chcete zapnúť režim šetrenia energie, zapnite aspoň jednu relevantnú funkciu"
+msgid "IDS_ST_TPOP_SELECT_SIM_CARD_FOR_OUTGOING_VOICE_CALLS_VIDEO_CALLS_AND_TEXT_MESSAGES"
+msgstr "Vyberte kartu SIM pre odchádzajúce hlasové hovory, videohovory a textové správy."
 
-msgid "IDS_QP_POP_TURN_OFF_WI_FI_TO_USE_TETHERING"
-msgstr "Pred použitím zdieľania pripojenia vypnite sieť Wi-Fi"
+msgid "IDS_ST_TPOP_OUTGOING_VOICE_CALLS_VIDEO_CALLS_AND_TEXT_MESSAGES_WILL_BE_MADE_USING_THE_PS_SIM_CARD"
+msgstr "Odchádzajúce hlasové hovory, videohovory a textové správy sa budú uskutočňovať pomocou karty SIM %s."
 
-msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
-msgstr "Wi-Fi a mobilný prístupový bod sa nedajú aktivovať súčasne. Deaktivovať mobilný prístupový bod?"
+msgid "IDS_ST_SK_OK"
+msgstr "OK"
+
+msgid "IDS_ST_SK_NO"
+msgstr "Nie"
 
-msgid "IDS_ASCAST_HEADER_SCREEN_MIRRORING"
-msgstr "Zrkadlenie obrazovky"
+msgid "IDS_ST_POP_UNABLE_TO_INCREASE_BRIGHTNESS_FURTHER_BECAUSE_OF_PHONE_OVERHEATING"
+msgstr "Kvôli prehrievaniu zariadenia nemožno teraz ďalej zvyšovať jas displeja."
 
-msgid "IDS_QP_HEADER_REPLACE_QUICK_SETTING_BUTTON"
-msgstr "Nahradiť tlačidlo rýchleho nastavenia"
+msgid "IDS_ST_NPBODY_NO_SERVICE"
+msgstr "Žiadna služba"
 
-msgid "IDS_QP_HEADER_ADD_QUICK_SETTING_BUTTON"
-msgstr "Pridajte tlačidlo rýchleho nastavenia"
+msgid "IDS_ST_NPBODY_EMERGENCY_CALLS_ONLY_ABB"
+msgstr "Iba tiesňové volania"
 
-msgid "IDS_QP_POP_YOU_WILL_NO_LONGER_BE_ABLE_TO_USE_APPLICATIONS_SUCH_AS_INTERNET_NOTI_MSG"
-msgstr "Nebudete viac môcť používať aplikácie ako Internet a E-mail cez mobilné siete. Pokračovať?"
+msgid "IDS_ST_HEADER_OUTDOOR"
+msgstr "Vonku"
 
-msgid "IDS_QP_BUTTON2_SCREEN_N_MIRRORING"
-msgstr "Screen\nMirroring"
+msgid "IDS_ST_BUTTON2_WI_FI_NTETHERING"
+msgstr "Zdieľať\nWi-Fi"
 
-msgid "IDS_COM_BODY_BUTTON_T_TTS"
-msgstr "Tlačidlo"
+msgid "IDS_ST_BUTTON2_WI_FI_ABB"
+msgstr "Wi-Fi"
 
-msgid "IDS_QP_BUTTON2_GPS"
+msgid "IDS_ST_BUTTON2_TORCH_ABB"
+msgstr "Baterka"
+
+msgid "IDS_ST_BUTTON2_POWER_NSAVING"
+msgstr "Šetrenie\nenergie"
+
+msgid "IDS_ST_BUTTON2_MOBILE_NDATA"
+msgstr "Mobilné\ndát. pr."
+
+msgid "IDS_ST_BUTTON2_GPS_ABB"
 msgstr "GPS"
 
-msgid "IDS_QP_BUTTON_NOTIFICATION"
-msgstr "Oznámenie"
+msgid "IDS_ST_BUTTON2_FLIGHT_NMODE"
+msgstr "Letový\nrežim"
+
+msgid "IDS_ST_BUTTON2_BLUETOOTH_ABB"
+msgstr "Bluetooth"
+
+msgid "IDS_ST_BUTTON2_AUTO_NROTATE"
+msgstr "Automat.\notáčanie"
+
+msgid "IDS_ST_BODY_SIM_2"
+msgstr "SIM 2"
+
+msgid "IDS_ST_BODY_SIM_1"
+msgstr "SIM 1"
+
+msgid "IDS_ST_BODY_SCANNING_FOR_MOBILE_NETWORK_ING_ABB"
+msgstr "Vyhľadáva sa mobilná sieť..."
+
+msgid "IDS_ST_BODY_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
+msgstr "Vložte SIM kartu na prístup k službám siete."
+
+msgid "IDS_ST_BODY_ALWAYS_ASK_ABB"
+msgstr "Vždy sa pýtať"
+
+msgid "IDS_SCP_BODY_UNABLE_TO_CONNECT_TO_MOBILE_NETWORKS_WHILE_FLIGHT_MODE_IS_ENABLED_CONNECT_TO_A_WI_FI_NETWORK_INSTEAD_OR_DISABLE_FLIGHT_MODE_AND_TRY_AGAIN"
+msgstr "Keď je zapnutý letový režim, nedá sa pripojiť k mobilným sieťam. Pripojte sa namiesto toho k sieti Wi-Fi alebo vypnite letový režim a skúste to znova."
 
-msgid "IDS_COM_BUTTON_AGREE"
-msgstr "Súhlasím"
+msgid "IDS_COM_BODY_SEARCHING"
+msgstr "Hľadá sa"
 
-msgid "IDS_COM_BUTTON_DISAGREE"
-msgstr "Nesúhlasím"
+msgid "IDS_QP_TPOP_UNABLE_TO_OPEN_PS"
+msgstr "Súbor %s sa nedá otvoriť."
 
-msgid "IDS_ST_BODY_GPS_LOCATION_USE_CONTROLLED_BY_APPLICATIONS_MSG"
-msgstr "Polohu GPS a používanie údajov o vašej polohe ovládajú aplikácie, ktoré používate"
+msgid "IDS_QP_OPT_OUTDOORS_M_OUTDOOR_MODE_ABB"
+msgstr "Vonku"
 
-msgid "IDS_ST_HEADER_USER_CONSENT"
-msgstr "Súhlas používateľa"
+msgid "IDS_QP_BUTTON2_PRIVATE_NMODE_ABB"
+msgstr "Súkromný\nrežim"
 
index c397cbd..4e2e8bd 100755 (executable)
--- a/po/sl.po
+++ b/po/sl.po
-msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
-msgstr "Obvestila"
+msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
+msgstr "Wi-Fi in mobilna DT ne moreta biti vklopljeni hkrati. Izklopim mobilno DT?"
+
+msgid "IDS_TASKMGR_BUTTON_CLEAR_ALL"
+msgstr "Počisti vse"
 
-msgid "IDS_WIFI_BODY_ALLSHARE_CAST"
-msgstr "AllShare Cast"
+msgid "IDS_IDLE_SBODY_TAP_HERE_TO_DISABLE_SAFE_MODE_ABB"
+msgstr "Prit. tu, da onem. varni način."
 
-msgid "IDS_CALL_POP_CALLING_EMERG_ONLY"
+msgid "IDS_IDLE_POP_UNABLE_TO_LAUNCH_PS"
+msgstr "Ni mogoče zagnati %s."
+
+msgid "IDS_IDLE_MBODY_EMERGENCY_CALLS_ONLY"
 msgstr "Samo klici v sili"
 
-msgid "IDS_QP_BUTTON_ROTATION"
-msgstr "Zasuk"
+msgid "IDS_IDLE_BODY_SEARCHING_ING"
+msgstr "Iščem"
+
+msgid "IDS_IDLE_BODY_NO_SIM"
+msgstr "Ni SIM"
+
+msgid "IDS_IDLE_BODY_NO_SERVICE"
+msgstr "Ni storitve"
+
+msgid "IDS_IDLE_BODY_INVALID_SIM_CARD"
+msgstr "Neveljavna kartica SIM."
 
-msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
+msgid "IDS_IDLE_BODY_EMERGENCY_CALLS_ONLY"
+msgstr "Samo klici v sili."
+
+msgid "IDS_QP_OPT_OUTDOORS_ABB"
+msgstr "Zunaj"
+
+msgid "IDS_QP_MBODY_SAFE_MODE_ENABLED"
+msgstr "Varni način je omogočen"
+
+msgid "IDS_QP_HEADER_NOTIFICATIONS_HPD_ABB"
 msgstr "Obvestila (%d)"
 
-msgid "IDS_QP_BUTTON_VIBRATION"
-msgstr "Vibr."
+msgid "IDS_QP_HEADER_CLEAR_ALL_ABB"
+msgstr "Počis. vse"
 
-msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
-msgstr "Zvok in vibrir."
+msgid "IDS_QP_BUTTON_NOTIFICATION"
+msgstr "Obvestilo"
 
-msgid "IDS_QP_TAB4_AUTO_ROTATION"
-msgstr "Samodej. vrtenje"
+msgid "IDS_QP_BUTTON_ALWAYS_ASK_ABB"
+msgstr "Vedno vprašaj"
 
-msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
-msgstr "Zaklep. sukanja"
+msgid "IDS_QP_BUTTON2_WI_FI"
+msgstr "Wi-Fi"
 
-msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
-msgstr "Način shranjevanja"
+msgid "IDS_QP_BUTTON2_VIBRATE"
+msgstr "Vibrir-\nanje"
 
-msgid "IDS_QP_BUTTON_DISABLE"
-msgstr "Onemogoči"
+msgid "IDS_QP_BUTTON2_U_POWER_NSAVING_ABB"
+msgstr "Izr. var.\nz ener."
 
-msgid "IDS_QP_BUTTON_ENABLE"
-msgstr "Omogoči"
+msgid "IDS_QP_BUTTON2_TETHERING"
+msgstr "Skup. raba interneta"
 
-msgid "IDS_COM_POP_UNSUPPORTED"
-msgstr "Ni podprto"
+msgid "IDS_QP_BUTTON2_SOUND_ABB"
+msgstr "Zvok"
 
-msgid "IDS_COM_SK_DISMISS"
-msgstr "Opusti"
+msgid "IDS_QP_BUTTON2_SOUND"
+msgstr "Zvok"
 
-msgid "IDS_COM_POP_PELASE_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
-msgstr "Za dostop do omrežnih storitev vstavite kartico SIM"
+msgid "IDS_QP_BUTTON2_PRIVATE_MODE"
+msgstr "Zasebni način"
 
-msgid "IDS_COM_BODY_DO_NOT_ASK_AGAIN"
-msgstr "Ne vprašaj znova"
+msgid "IDS_QP_BUTTON2_POWER_N_SAVING"
+msgstr "Varč.\nz energ."
 
-msgid "IDS_QP_POP_INSERT_SIM_CARD_AND_RESTART_DEVICE_TO_USE_TETHERING"
-msgstr "Vstavite kartico SIM in znova zaženite napravo, če želite uporabljati telefon kot modem"
+msgid "IDS_QP_BUTTON2_MUTE_ABB"
+msgstr "Izklop zvoka"
 
-msgid "IDS_QP_POP_CONNECTING_VIA_PACKET_DATA_MAY_INCUR_ADDITIONAL_CHARGES_CONTINUE_Q"
-msgstr "Povezovanje preko paketnega prenosa podatkov lahko povzroči dodatne stroške. Nadaljujem?"
+msgid "IDS_QP_BUTTON2_MOBILE_DATA"
+msgstr "Mobilni\npodatki"
 
-msgid "IDS_QP_BODY_AUTO"
-msgstr "Samodejno"
+msgid "IDS_QP_BUTTON2_LOCATION_ABB"
+msgstr "Lokacija"
 
-msgid "IDS_QP_TAB_POWER_SAVING"
-msgstr "Varčevanje z energijo"
+msgid "IDS_QP_BUTTON2_FLIGHT_N_MODE"
+msgstr "Način\nletenja"
 
-msgid "IDS_QP_TAB_TETHERING"
-msgstr "Tethering"
+msgid "IDS_QP_BUTTON2_BLUETOOTH"
+msgstr "Bluetooth"
 
-msgid "IDS_QP_TAB_MOBILE_DATA"
-msgstr "Mobilni podatki"
+msgid "IDS_QP_BUTTON2_AUTO_ROTATE"
+msgstr "Samodejno zavrti"
 
-msgid "IDS_QP_TAB_DRIVING_MODE"
-msgstr "Način vožnje"
+msgid "IDS_QP_BUTTON2_ASSISTIVE_NLIGHT"
+msgstr "Pomožna\nlučka"
 
-msgid "IDS_COM_POP_UNABLE_TO_CONNECT_TO_MOBILE_NETWORK_WHILE_FLIGHT_MODE_IS_ENABLED_MSG"
-msgstr "Ko je omogočen način letenja, povezava z mobilnimi omrežji ni mogoča. Povežite se z omrežjem Wi-Fi ali onemogočite način letenja in poskusite znova"
+msgid "IDS_QP_BODY_PM_ABB"
+msgstr "po"
 
-msgid "IDS_QP_POP_WI_FI_TETHERING_CONSUMES_MORE_BATTERY_POWER_AND_INCREASES_YOUR_DATA_USAGE_CONTINUE_Q"
-msgstr "Uporaba telefona kot modema prek omrežja Wi-Fi porabi več baterije in poveča uporabo podatkov. Želite nadaljevati?"
+msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
+msgstr "Obvestila"
 
-msgid "IDS_QP_POP_DISABLE_TETHERING_TO_USE_WI_FI"
-msgstr "Za uporabo Wi-Fi onemogočite uporabo telefona kot modema"
+msgid "IDS_QP_BODY_AM_ABB"
+msgstr "do"
 
-msgid "IDS_QP_POP_TO_ENABLE_POWER_SAVING_MODE_ENABLE_AT_LEAST_ONE_RELEVANT_FUNCTION"
-msgstr "Če želite omogočiti Način za varčevanje z energijo, morate omogočiti vsaj eno ustrezno funkcijo"
+msgid "IDS_ST_TPOP_UNABLE_TO_MAKE_VOICE_CALLS_VIDEO_CALLS_AND_SEND_TEXT_MESSAGES_USING_PS"
+msgstr "Kartice %s ni mogoče uporabljati za glasovne klice, video klice in pošiljanje besedilnih sporočil."
 
-msgid "IDS_QP_POP_TURN_OFF_WI_FI_TO_USE_TETHERING"
-msgstr "Izklopite Wi-Fi, če želite uporabljati telefon kot modem"
+msgid "IDS_ST_TPOP_SELECT_SIM_CARD_FOR_OUTGOING_VOICE_CALLS_VIDEO_CALLS_AND_TEXT_MESSAGES"
+msgstr "Izberite kartico SIM za odhodne glasovne klice, video klice in besedilna sporočila."
 
-msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
-msgstr "Wi-Fi in mobilna DT ne moreta biti vklopljeni hkrati. Izklopim mobilno DT?"
+msgid "IDS_ST_TPOP_OUTGOING_VOICE_CALLS_VIDEO_CALLS_AND_TEXT_MESSAGES_WILL_BE_MADE_USING_THE_PS_SIM_CARD"
+msgstr "Za odhodne glasovne klice, video klice in besedilna sporočila bo uporabljena kartica SIM %s."
+
+msgid "IDS_ST_SK_OK"
+msgstr "V redu"
+
+msgid "IDS_ST_SK_NO"
+msgstr "Ne"
 
-msgid "IDS_ASCAST_HEADER_SCREEN_MIRRORING"
-msgstr "Zrcaljenje zaslona"
+msgid "IDS_ST_POP_UNABLE_TO_INCREASE_BRIGHTNESS_FURTHER_BECAUSE_OF_PHONE_OVERHEATING"
+msgstr "Svetlosti ni mogoče povečati zaradi morebitnega pregrevanja telefona."
 
-msgid "IDS_QP_HEADER_REPLACE_QUICK_SETTING_BUTTON"
-msgstr "Spremenite gumb za hitre nastavitve"
+msgid "IDS_ST_NPBODY_NO_SERVICE"
+msgstr "Ni signala"
+
+msgid "IDS_ST_NPBODY_EMERGENCY_CALLS_ONLY_ABB"
+msgstr "Samo klici v sili"
 
-msgid "IDS_QP_HEADER_ADD_QUICK_SETTING_BUTTON"
-msgstr "Dodaj gumb za hitre nastavitve"
+msgid "IDS_ST_HEADER_OUTDOOR"
+msgstr "Na prostem"
 
-msgid "IDS_QP_POP_YOU_WILL_NO_LONGER_BE_ABLE_TO_USE_APPLICATIONS_SUCH_AS_INTERNET_NOTI_MSG"
-msgstr "Programov, kot so internet in e-pošta ne boste mogli več uporabljati prek mobilnih omrežij. Želite nadaljevati?"
+msgid "IDS_ST_BUTTON2_WI_FI_NTETHERING"
+msgstr "Privez.\nWi-Fi"
 
-msgid "IDS_QP_BUTTON2_SCREEN_N_MIRRORING"
-msgstr "Screen\nMirroring"
+msgid "IDS_ST_BUTTON2_WI_FI_ABB"
+msgstr "Wi-Fi"
 
-msgid "IDS_COM_BODY_BUTTON_T_TTS"
-msgstr "Gumb"
+msgid "IDS_ST_BUTTON2_TORCH_ABB"
+msgstr "Svetilka"
 
-msgid "IDS_QP_BUTTON2_GPS"
+msgid "IDS_ST_BUTTON2_POWER_NSAVING"
+msgstr "Varč.\nz energ."
+
+msgid "IDS_ST_BUTTON2_MOBILE_NDATA"
+msgstr "Mobilni\npodatki"
+
+msgid "IDS_ST_BUTTON2_GPS_ABB"
 msgstr "GPS"
 
-msgid "IDS_QP_BUTTON_NOTIFICATION"
-msgstr "Obvestilo"
+msgid "IDS_ST_BUTTON2_FLIGHT_NMODE"
+msgstr "Način\nletenja"
+
+msgid "IDS_ST_BUTTON2_BLUETOOTH_ABB"
+msgstr "Bluetooth"
+
+msgid "IDS_ST_BUTTON2_AUTO_NROTATE"
+msgstr "Samodej.\nzavrti"
+
+msgid "IDS_ST_BODY_SIM_2"
+msgstr "Kartica SIM 2"
+
+msgid "IDS_ST_BODY_SIM_1"
+msgstr "Kartica SIM 1"
+
+msgid "IDS_ST_BODY_SCANNING_FOR_MOBILE_NETWORK_ING_ABB"
+msgstr "Iskanje mobilnih omrežij ..."
+
+msgid "IDS_ST_BODY_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
+msgstr "Za dostop do omrežnih storitev vstavite kartico SIM."
+
+msgid "IDS_ST_BODY_ALWAYS_ASK_ABB"
+msgstr "Vedno vprašaj"
+
+msgid "IDS_SCP_BODY_UNABLE_TO_CONNECT_TO_MOBILE_NETWORKS_WHILE_FLIGHT_MODE_IS_ENABLED_CONNECT_TO_A_WI_FI_NETWORK_INSTEAD_OR_DISABLE_FLIGHT_MODE_AND_TRY_AGAIN"
+msgstr "Ko je omogočen način letenja, povezava z mobilnimi omrežji ni mogoča. Povežite se z omrežjem Wi-Fi ali onemogočite način letenja in poskusite znova."
 
-msgid "IDS_COM_BUTTON_AGREE"
-msgstr "Sprejmem"
+msgid "IDS_COM_BODY_SEARCHING"
+msgstr "Iščem"
 
-msgid "IDS_COM_BUTTON_DISAGREE"
-msgstr "Se ne strinjam"
+msgid "IDS_QP_TPOP_UNABLE_TO_OPEN_PS"
+msgstr "Aplikacije %s ni mogoče odpreti."
 
-msgid "IDS_ST_BODY_GPS_LOCATION_USE_CONTROLLED_BY_APPLICATIONS_MSG"
-msgstr "Lokacijo GPS in uporabo vaših podatkov o lokaciji nadzorujejo programi, ki jih uporabljate"
+msgid "IDS_QP_OPT_OUTDOORS_M_OUTDOOR_MODE_ABB"
+msgstr "Zunaj"
 
-msgid "IDS_ST_HEADER_USER_CONSENT"
-msgstr "Uporabniško soglasje"
+msgid "IDS_QP_BUTTON2_PRIVATE_NMODE_ABB"
+msgstr "Zasebni\nnačin"
 
index ed4ae69..c54b3ad 100755 (executable)
--- a/po/sr.po
+++ b/po/sr.po
-msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
-msgstr "Obaveštenja"
+msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
+msgstr "Wi-Fi i mobilna pristupna tačka se ne mogu uključiti istovremeno. Isključi mobilnu pristupnu tačku?"
 
-msgid "IDS_WIFI_BODY_ALLSHARE_CAST"
-msgstr "AllShare Cast"
+msgid "IDS_TASKMGR_BUTTON_CLEAR_ALL"
+msgstr "Obriši sve"
 
-msgid "IDS_CALL_POP_CALLING_EMERG_ONLY"
-msgstr "Samo pozivi u hitnim slučajevima"
+msgid "IDS_IDLE_SBODY_TAP_HERE_TO_DISABLE_SAFE_MODE_ABB"
+msgstr "Kucni tu za onem. Bezb. režima."
+
+msgid "IDS_IDLE_POP_UNABLE_TO_LAUNCH_PS"
+msgstr "Nemoguće pokrenuti %s."
+
+msgid "IDS_IDLE_MBODY_EMERGENCY_CALLS_ONLY"
+msgstr "Samo poz. u hit. slučaj."
+
+msgid "IDS_IDLE_BODY_SEARCHING_ING"
+msgstr "Pretraga..."
+
+msgid "IDS_IDLE_BODY_NO_SIM"
+msgstr "Nema SIM kartice"
+
+msgid "IDS_IDLE_BODY_NO_SERVICE"
+msgstr "Nema prijema"
 
-msgid "IDS_QP_BUTTON_ROTATION"
-msgstr "Rotacija"
+msgid "IDS_IDLE_BODY_INVALID_SIM_CARD"
+msgstr "Neispravna SIM kartica."
 
-msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
+msgid "IDS_IDLE_BODY_EMERGENCY_CALLS_ONLY"
+msgstr "Samo pozivi u hitnim slučajevima."
+
+msgid "IDS_QP_OPT_OUTDOORS_ABB"
+msgstr "Napolju"
+
+msgid "IDS_QP_MBODY_SAFE_MODE_ENABLED"
+msgstr "Bezbedni režim omogućen"
+
+msgid "IDS_QP_HEADER_NOTIFICATIONS_HPD_ABB"
 msgstr "Obaveštenja (%d)"
 
-msgid "IDS_QP_BUTTON_VIBRATION"
-msgstr "Vibracija"
+msgid "IDS_QP_HEADER_CLEAR_ALL_ABB"
+msgstr "Obriši sve"
 
-msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
-msgstr "Zvuk i vibracija"
+msgid "IDS_QP_BUTTON_NOTIFICATION"
+msgstr "Obavešt."
 
-msgid "IDS_QP_TAB4_AUTO_ROTATION"
-msgstr "Autom. rotacija"
+msgid "IDS_QP_BUTTON_ALWAYS_ASK_ABB"
+msgstr "Uvek pitaj"
 
-msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
-msgstr "Zaklj. pri rotac."
+msgid "IDS_QP_BUTTON2_WI_FI"
+msgstr "Wi-Fi"
 
-msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
-msgstr "Režim masovne memorije"
+msgid "IDS_QP_BUTTON2_VIBRATE"
+msgstr "Vibra-\ncija"
 
-msgid "IDS_QP_BUTTON_DISABLE"
-msgstr "Onemogući"
+msgid "IDS_QP_BUTTON2_U_POWER_NSAVING_ABB"
+msgstr "Izu. ušt.\nenerg."
 
-msgid "IDS_QP_BUTTON_ENABLE"
-msgstr "Omogući"
+msgid "IDS_QP_BUTTON2_TETHERING"
+msgstr "Vezivanje"
 
-msgid "IDS_COM_POP_UNSUPPORTED"
-msgstr "Nepodržano"
+msgid "IDS_QP_BUTTON2_SOUND_ABB"
+msgstr "Zvuk"
 
-msgid "IDS_COM_SK_DISMISS"
-msgstr "Odbaci"
+msgid "IDS_QP_BUTTON2_SOUND"
+msgstr "Zvuk"
 
-msgid "IDS_COM_POP_PELASE_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
-msgstr "Ubaci SIM karticu za pristup mrežnim uslugama"
+msgid "IDS_QP_BUTTON2_PRIVATE_MODE"
+msgstr "Privatni režim"
 
-msgid "IDS_COM_BODY_DO_NOT_ASK_AGAIN"
-msgstr "Ne pitaj ponovo"
+msgid "IDS_QP_BUTTON2_POWER_N_SAVING"
+msgstr "Ušteda\nenergije"
 
-msgid "IDS_QP_POP_INSERT_SIM_CARD_AND_RESTART_DEVICE_TO_USE_TETHERING"
-msgstr "Ubaci SIM karticu i restartuj uređaj da bi koristio/la vezivanje"
+msgid "IDS_QP_BUTTON2_MUTE_ABB"
+msgstr "Isklju-\nčen ton"
 
-msgid "IDS_QP_POP_CONNECTING_VIA_PACKET_DATA_MAY_INCUR_ADDITIONAL_CHARGES_CONTINUE_Q"
-msgstr "Povezivanje putem paketnih podataka može izazvati dodatne troškove. Nastavak?"
+msgid "IDS_QP_BUTTON2_MOBILE_DATA"
+msgstr "Mobilni\npodaci"
 
-msgid "IDS_QP_BODY_AUTO"
-msgstr "Automatski"
+msgid "IDS_QP_BUTTON2_LOCATION_ABB"
+msgstr "Lokacija"
 
-msgid "IDS_QP_TAB_POWER_SAVING"
-msgstr "Štednja energije"
+msgid "IDS_QP_BUTTON2_FLIGHT_N_MODE"
+msgstr "Profil\nletenja"
 
-msgid "IDS_QP_TAB_TETHERING"
-msgstr "Vezivanje"
+msgid "IDS_QP_BUTTON2_BLUETOOTH"
+msgstr "Bluetooth"
 
-msgid "IDS_QP_TAB_MOBILE_DATA"
-msgstr "Podaci za mob. uređaje"
+msgid "IDS_QP_BUTTON2_AUTO_ROTATE"
+msgstr "Automatski rotiraj"
 
-msgid "IDS_QP_TAB_DRIVING_MODE"
-msgstr "Režim vožnje"
+msgid "IDS_QP_BUTTON2_ASSISTIVE_NLIGHT"
+msgstr "Pomoćno\nsvetlo"
 
-msgid "IDS_COM_POP_UNABLE_TO_CONNECT_TO_MOBILE_NETWORK_WHILE_FLIGHT_MODE_IS_ENABLED_MSG"
-msgstr "Povezivanje na mobilne mreže nije moguć kada je omogućen režim letenja. Umesto toga, poveži se na Wi-Fi mrežu ili onemogući režim letenja i pokušaj ponovo"
+msgid "IDS_QP_BODY_PM_ABB"
+msgstr "PM"
 
-msgid "IDS_QP_POP_WI_FI_TETHERING_CONSUMES_MORE_BATTERY_POWER_AND_INCREASES_YOUR_DATA_USAGE_CONTINUE_Q"
-msgstr "Wi-Fi vezivanje troši više energije i povećava upotrebu podataka. Nastaviti?"
+msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
+msgstr "Obaveštenja"
 
-msgid "IDS_QP_POP_DISABLE_TETHERING_TO_USE_WI_FI"
-msgstr "Onemogući vezivanje da bi koristio/la Wi-Fi"
+msgid "IDS_QP_BODY_AM_ABB"
+msgstr "AM"
 
-msgid "IDS_QP_POP_TO_ENABLE_POWER_SAVING_MODE_ENABLE_AT_LEAST_ONE_RELEVANT_FUNCTION"
-msgstr "Da bi omogućio/la režim štednje energije, omogući barem jednu važnu funkciju"
+msgid "IDS_ST_TPOP_UNABLE_TO_MAKE_VOICE_CALLS_VIDEO_CALLS_AND_SEND_TEXT_MESSAGES_USING_PS"
+msgstr "Nije moguće uputiti glasovne pozive, video pozive i poslati tekstualne poruke koristeći %s."
 
-msgid "IDS_QP_POP_TURN_OFF_WI_FI_TO_USE_TETHERING"
-msgstr "Isključi Wi-Fi da bi koristio/la vezivanje"
+msgid "IDS_ST_TPOP_SELECT_SIM_CARD_FOR_OUTGOING_VOICE_CALLS_VIDEO_CALLS_AND_TEXT_MESSAGES"
+msgstr "Izaberi SIM karticu za odlazne glasovne pozive, video pozive i tekstualne poruke."
 
-msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
-msgstr "Wi-Fi i mobilna pristupna tačka se ne mogu uključiti istovremeno. Isključi mobilnu pristupnu tačku?"
+msgid "IDS_ST_TPOP_OUTGOING_VOICE_CALLS_VIDEO_CALLS_AND_TEXT_MESSAGES_WILL_BE_MADE_USING_THE_PS_SIM_CARD"
+msgstr "Odlazni glasovni pozivi i video pozivi će biti obavljeni i tekstualne poruke će biti razmenjene korišćenjem %s SIM kartice."
+
+msgid "IDS_ST_SK_OK"
+msgstr "OK"
 
-msgid "IDS_ASCAST_HEADER_SCREEN_MIRRORING"
-msgstr "Preslikavanje ekrana"
+msgid "IDS_ST_SK_NO"
+msgstr "Ne"
 
-msgid "IDS_QP_HEADER_REPLACE_QUICK_SETTING_BUTTON"
-msgstr "Zameni dugme za brzo podešavanje"
+msgid "IDS_ST_POP_UNABLE_TO_INCREASE_BRIGHTNESS_FURTHER_BECAUSE_OF_PHONE_OVERHEATING"
+msgstr "Nije moguće povećati osvetljenje, telefon se pregreva."
 
-msgid "IDS_QP_HEADER_ADD_QUICK_SETTING_BUTTON"
-msgstr "Dodaj dugme za brzo podešavanje"
+msgid "IDS_ST_NPBODY_NO_SERVICE"
+msgstr "Nema usluga"
+
+msgid "IDS_ST_NPBODY_EMERGENCY_CALLS_ONLY_ABB"
+msgstr "Samo pozivi u hitnim slučajevima"
 
-msgid "IDS_QP_POP_YOU_WILL_NO_LONGER_BE_ABLE_TO_USE_APPLICATIONS_SUCH_AS_INTERNET_NOTI_MSG"
-msgstr "Nećeš moći više da koristiš aplikacije kao što su Internet i e-pošta putem mobilnih mreža. Nastaviti?"
+msgid "IDS_ST_HEADER_OUTDOOR"
+msgstr "Napolju"
 
-msgid "IDS_QP_BUTTON2_SCREEN_N_MIRRORING"
-msgstr "Screen\nMirroring"
+msgid "IDS_ST_BUTTON2_WI_FI_NTETHERING"
+msgstr "Wi-Fi\nveziva."
 
-msgid "IDS_COM_BODY_BUTTON_T_TTS"
-msgstr "Taster"
+msgid "IDS_ST_BUTTON2_WI_FI_ABB"
+msgstr "Wi-Fi"
 
-msgid "IDS_QP_BUTTON2_GPS"
+msgid "IDS_ST_BUTTON2_TORCH_ABB"
+msgstr "Lampa"
+
+msgid "IDS_ST_BUTTON2_POWER_NSAVING"
+msgstr "Ušteda\nenergije"
+
+msgid "IDS_ST_BUTTON2_MOBILE_NDATA"
+msgstr "Mobilni\npodaci"
+
+msgid "IDS_ST_BUTTON2_GPS_ABB"
 msgstr "GPS"
 
-msgid "IDS_QP_BUTTON_NOTIFICATION"
-msgstr "Obavešt."
+msgid "IDS_ST_BUTTON2_FLIGHT_NMODE"
+msgstr "Avionski\nrežim"
+
+msgid "IDS_ST_BUTTON2_BLUETOOTH_ABB"
+msgstr "Bluetooth"
+
+msgid "IDS_ST_BUTTON2_AUTO_NROTATE"
+msgstr "Autom.\nrotiraj"
+
+msgid "IDS_ST_BODY_SIM_2"
+msgstr "SIM 2"
+
+msgid "IDS_ST_BODY_SIM_1"
+msgstr "SIM 1"
+
+msgid "IDS_ST_BODY_SCANNING_FOR_MOBILE_NETWORK_ING_ABB"
+msgstr "Traži se mobilna mreža..."
+
+msgid "IDS_ST_BODY_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
+msgstr "Ubaci SIM karticu da bi mogao/la da koristiš mrežne usluge."
+
+msgid "IDS_ST_BODY_ALWAYS_ASK_ABB"
+msgstr "Uvek pitaj"
+
+msgid "IDS_SCP_BODY_UNABLE_TO_CONNECT_TO_MOBILE_NETWORKS_WHILE_FLIGHT_MODE_IS_ENABLED_CONNECT_TO_A_WI_FI_NETWORK_INSTEAD_OR_DISABLE_FLIGHT_MODE_AND_TRY_AGAIN"
+msgstr "Povezivanje na mobilne mreže nije moguće kada je omogućen Avionski režim. Umesto toga, poveži se na Wi-Fi mrežu ili onemogući Avionski režim i pokušaj ponovo."
 
-msgid "IDS_COM_BUTTON_AGREE"
-msgstr "Slažem se"
+msgid "IDS_COM_BODY_SEARCHING"
+msgstr "Pretraga"
 
-msgid "IDS_COM_BUTTON_DISAGREE"
-msgstr "Ne slažem se"
+msgid "IDS_QP_TPOP_UNABLE_TO_OPEN_PS"
+msgstr "Nije moguće otvoriti %s."
 
-msgid "IDS_ST_BODY_GPS_LOCATION_USE_CONTROLLED_BY_APPLICATIONS_MSG"
-msgstr "Korišćene aplikacije kontrolišu GPS lokaciju i korišćenje podataka o lokaciji"
+msgid "IDS_QP_OPT_OUTDOORS_M_OUTDOOR_MODE_ABB"
+msgstr "Napolju"
 
-msgid "IDS_ST_HEADER_USER_CONSENT"
-msgstr "Saglasnost korisnika"
+msgid "IDS_QP_BUTTON2_PRIVATE_NMODE_ABB"
+msgstr "Privatni\nrežim"
 
index 79ba763..10d8b62 100755 (executable)
--- a/po/sv.po
+++ b/po/sv.po
-msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
-msgstr "Meddelanden"
+msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
+msgstr "Det går inte att aktivera både Wi-Fi och Mobile AP samtidigt. Avaktivera Mobile AP?"
+
+msgid "IDS_TASKMGR_BUTTON_CLEAR_ALL"
+msgstr "Rensa allt"
+
+msgid "IDS_IDLE_SBODY_TAP_HERE_TO_DISABLE_SAFE_MODE_ABB"
+msgstr "Tryck här = inakt. säkert läge."
 
-msgid "IDS_WIFI_BODY_ALLSHARE_CAST"
-msgstr "AllShare Cast"
+msgid "IDS_IDLE_POP_UNABLE_TO_LAUNCH_PS"
+msgstr "Kan inte starta %s."
 
-msgid "IDS_CALL_POP_CALLING_EMERG_ONLY"
+msgid "IDS_IDLE_MBODY_EMERGENCY_CALLS_ONLY"
 msgstr "Endast nödsamtal"
 
-msgid "IDS_QP_BUTTON_ROTATION"
-msgstr "Rotation"
+msgid "IDS_IDLE_BODY_SEARCHING_ING"
+msgstr "Söker..."
 
-msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
-msgstr "Meddelanden (%d)"
+msgid "IDS_IDLE_BODY_NO_SIM"
+msgstr "Inget SIM"
 
-msgid "IDS_QP_BUTTON_VIBRATION"
-msgstr "Vibration"
+msgid "IDS_IDLE_BODY_NO_SERVICE"
+msgstr "Ej service"
 
-msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
-msgstr "Ljud och vibration"
+msgid "IDS_IDLE_BODY_INVALID_SIM_CARD"
+msgstr "Ogiltigt SIM-kort."
 
-msgid "IDS_QP_TAB4_AUTO_ROTATION"
-msgstr "Auto-rotering"
+msgid "IDS_IDLE_BODY_EMERGENCY_CALLS_ONLY"
+msgstr "Endast nödsamtal."
 
-msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
-msgstr "Roteringslås"
+msgid "IDS_QP_OPT_OUTDOORS_ABB"
+msgstr "Utomhus"
 
-msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
-msgstr "Masslagringsläge"
+msgid "IDS_QP_MBODY_SAFE_MODE_ENABLED"
+msgstr "Säkert läge aktiverat"
 
-msgid "IDS_QP_BUTTON_DISABLE"
-msgstr "Inaktivera"
+msgid "IDS_QP_HEADER_NOTIFICATIONS_HPD_ABB"
+msgstr "Aviseringar (%d)"
 
-msgid "IDS_QP_BUTTON_ENABLE"
-msgstr "Aktivera"
+msgid "IDS_QP_HEADER_CLEAR_ALL_ABB"
+msgstr "Rensa allt"
 
-msgid "IDS_COM_POP_UNSUPPORTED"
-msgstr "Stöds inte"
+msgid "IDS_QP_BUTTON_NOTIFICATION"
+msgstr "Meddelande"
 
-msgid "IDS_COM_SK_DISMISS"
-msgstr "Stäng"
+msgid "IDS_QP_BUTTON_ALWAYS_ASK_ABB"
+msgstr "Fråga alltid"
 
-msgid "IDS_COM_POP_PELASE_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
-msgstr "Sätt in SIM-kort för att få tillgång till nätverkstjänster"
+msgid "IDS_QP_BUTTON2_WI_FI"
+msgstr "Wi-Fi"
 
-msgid "IDS_COM_BODY_DO_NOT_ASK_AGAIN"
-msgstr "Fråga inte igen"
+msgid "IDS_QP_BUTTON2_VIBRATE"
+msgstr "Vibrera"
 
-msgid "IDS_QP_POP_INSERT_SIM_CARD_AND_RESTART_DEVICE_TO_USE_TETHERING"
-msgstr "Sätt i ett SIM-kort och starta om enheten för att använda Internetdelning"
+msgid "IDS_QP_BUTTON2_U_POWER_NSAVING_ABB"
+msgstr "U-energi-\nspar."
 
-msgid "IDS_QP_POP_CONNECTING_VIA_PACKET_DATA_MAY_INCUR_ADDITIONAL_CHARGES_CONTINUE_Q"
-msgstr "Anslutning via paketdata kan medföra ytterligare kostnader. Vill du fortsätta?"
+msgid "IDS_QP_BUTTON2_TETHERING"
+msgstr "Internet-delning"
 
-msgid "IDS_QP_BODY_AUTO"
-msgstr "Auto"
+msgid "IDS_QP_BUTTON2_SOUND_ABB"
+msgstr "Ljud"
 
-msgid "IDS_QP_TAB_POWER_SAVING"
-msgstr "Energisparläge"
+msgid "IDS_QP_BUTTON2_SOUND"
+msgstr "Ljud"
 
-msgid "IDS_QP_TAB_TETHERING"
-msgstr "Internetdelning"
+msgid "IDS_QP_BUTTON2_PRIVATE_MODE"
+msgstr "Sekre-\ntessläge"
 
-msgid "IDS_QP_TAB_MOBILE_DATA"
-msgstr "Mobil data"
+msgid "IDS_QP_BUTTON2_POWER_N_SAVING"
+msgstr "Energi-\nsparläge"
 
-msgid "IDS_QP_TAB_DRIVING_MODE"
-msgstr "Billäge"
+msgid "IDS_QP_BUTTON2_MUTE_ABB"
+msgstr "Tyst"
 
-msgid "IDS_COM_POP_UNABLE_TO_CONNECT_TO_MOBILE_NETWORK_WHILE_FLIGHT_MODE_IS_ENABLED_MSG"
-msgstr "Det går inte att ansluta till mobila nätverk eftersom Flygläge är aktiverat. Anslut till ett Wi-Fi-nätverk istället eller inaktivera Flygläge och gör ett nytt försök"
+msgid "IDS_QP_BUTTON2_MOBILE_DATA"
+msgstr "Mobil-\ndata"
 
-msgid "IDS_QP_POP_WI_FI_TETHERING_CONSUMES_MORE_BATTERY_POWER_AND_INCREASES_YOUR_DATA_USAGE_CONTINUE_Q"
-msgstr "Vid användning av Wi-Fi-internetdelning förbrukas mer batteri och dataanvändningen ökar. Fortsätta?"
+msgid "IDS_QP_BUTTON2_LOCATION_ABB"
+msgstr "Plats"
 
-msgid "IDS_QP_POP_DISABLE_TETHERING_TO_USE_WI_FI"
-msgstr "Inaktivera Internetdelning för att använda Wi-Fi"
+msgid "IDS_QP_BUTTON2_FLIGHT_N_MODE"
+msgstr "Flyg-\nläge"
 
-msgid "IDS_QP_POP_TO_ENABLE_POWER_SAVING_MODE_ENABLE_AT_LEAST_ONE_RELEVANT_FUNCTION"
-msgstr "Aktivera minst en relevant funktion för att aktivera energisparläget"
+msgid "IDS_QP_BUTTON2_BLUETOOTH"
+msgstr "Bluetooth"
 
-msgid "IDS_QP_POP_TURN_OFF_WI_FI_TO_USE_TETHERING"
-msgstr "Stäng av Wi-Fi för att använda internetdelning"
+msgid "IDS_QP_BUTTON2_AUTO_ROTATE"
+msgstr "Autorotera"
 
-msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
-msgstr "Det går inte att aktivera både Wi-Fi och Mobile AP samtidigt. Avaktivera Mobile AP?"
+msgid "IDS_QP_BUTTON2_ASSISTIVE_NLIGHT"
+msgstr "Hjälp-\nljus"
 
-msgid "IDS_ASCAST_HEADER_SCREEN_MIRRORING"
-msgstr "Screen Mirroring"
+msgid "IDS_QP_BODY_PM_ABB"
+msgstr "EM"
 
-msgid "IDS_QP_HEADER_REPLACE_QUICK_SETTING_BUTTON"
-msgstr "Ersätt snabbinställningsknappen"
+msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
+msgstr "Aviseringar"
+
+msgid "IDS_QP_BODY_AM_ABB"
+msgstr "FM"
+
+msgid "IDS_ST_TPOP_UNABLE_TO_MAKE_VOICE_CALLS_VIDEO_CALLS_AND_SEND_TEXT_MESSAGES_USING_PS"
+msgstr "Det går inte att ringa röstsamtal, videosamtal eller skicka SMS med %s."
+
+msgid "IDS_ST_TPOP_SELECT_SIM_CARD_FOR_OUTGOING_VOICE_CALLS_VIDEO_CALLS_AND_TEXT_MESSAGES"
+msgstr "Välj ett SIM-kort för utgående röstsamtal, videosamtal och SMS."
 
-msgid "IDS_QP_HEADER_ADD_QUICK_SETTING_BUTTON"
-msgstr "Lägg till snabbinställningsknapp"
+msgid "IDS_ST_TPOP_OUTGOING_VOICE_CALLS_VIDEO_CALLS_AND_TEXT_MESSAGES_WILL_BE_MADE_USING_THE_PS_SIM_CARD"
+msgstr "Utgående röstsamtal, videosamtal och SMS görs från SIM-kort %s."
 
-msgid "IDS_QP_POP_YOU_WILL_NO_LONGER_BE_ABLE_TO_USE_APPLICATIONS_SUCH_AS_INTERNET_NOTI_MSG"
-msgstr "Du kommer inte längre att kunna använda program som Internet och e-post via mobilnätverk. Fortsätta?"
+msgid "IDS_ST_SK_OK"
+msgstr "OK"
 
-msgid "IDS_QP_BUTTON2_SCREEN_N_MIRRORING"
-msgstr "Screen\nMirroring"
+msgid "IDS_ST_SK_NO"
+msgstr "Nej"
 
-msgid "IDS_COM_BODY_BUTTON_T_TTS"
-msgstr "Knapp"
+msgid "IDS_ST_POP_UNABLE_TO_INCREASE_BRIGHTNESS_FURTHER_BECAUSE_OF_PHONE_OVERHEATING"
+msgstr "Det går inte att öka ljusstyrkan mer på grund av risk för överhettning."
+
+msgid "IDS_ST_NPBODY_NO_SERVICE"
+msgstr "Endast nödsamtal"
+
+msgid "IDS_ST_NPBODY_EMERGENCY_CALLS_ONLY_ABB"
+msgstr "Endast nödsamtal"
 
-msgid "IDS_QP_BUTTON2_GPS"
+msgid "IDS_ST_HEADER_OUTDOOR"
+msgstr "Utomhus"
+
+msgid "IDS_ST_BUTTON2_WI_FI_NTETHERING"
+msgstr "Wi-Fi\nInternetd"
+
+msgid "IDS_ST_BUTTON2_WI_FI_ABB"
+msgstr "Wi-Fi"
+
+msgid "IDS_ST_BUTTON2_TORCH_ABB"
+msgstr "Ficklampa"
+
+msgid "IDS_ST_BUTTON2_POWER_NSAVING"
+msgstr "En.-\nsparläge"
+
+msgid "IDS_ST_BUTTON2_MOBILE_NDATA"
+msgstr "Mobil-\ndata"
+
+msgid "IDS_ST_BUTTON2_GPS_ABB"
 msgstr "GPS"
 
-msgid "IDS_QP_BUTTON_NOTIFICATION"
-msgstr "Meddelande"
+msgid "IDS_ST_BUTTON2_FLIGHT_NMODE"
+msgstr "Flyg-\nläge"
+
+msgid "IDS_ST_BUTTON2_BLUETOOTH_ABB"
+msgstr "Bluetooth"
+
+msgid "IDS_ST_BUTTON2_AUTO_NROTATE"
+msgstr "Auto-\nrotera"
+
+msgid "IDS_ST_BODY_SIM_2"
+msgstr "SIM 2"
+
+msgid "IDS_ST_BODY_SIM_1"
+msgstr "SIM 1"
+
+msgid "IDS_ST_BODY_SCANNING_FOR_MOBILE_NETWORK_ING_ABB"
+msgstr "Söker efter mobilnät ..."
+
+msgid "IDS_ST_BODY_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
+msgstr "Sätt in SIM-kort för att få tillgång till nätverkstjänster."
+
+msgid "IDS_ST_BODY_ALWAYS_ASK_ABB"
+msgstr "Fråga alltid"
+
+msgid "IDS_SCP_BODY_UNABLE_TO_CONNECT_TO_MOBILE_NETWORKS_WHILE_FLIGHT_MODE_IS_ENABLED_CONNECT_TO_A_WI_FI_NETWORK_INSTEAD_OR_DISABLE_FLIGHT_MODE_AND_TRY_AGAIN"
+msgstr "Det går inte att ansluta till mobilnät eftersom Flygläge är aktiverat. Anslut till ett Wi-Fi-nätverk istället eller inaktivera Flygläge och gör ett nytt försök."
 
-msgid "IDS_COM_BUTTON_AGREE"
-msgstr "Godkänn"
+msgid "IDS_COM_BODY_SEARCHING"
+msgstr "Söker"
 
-msgid "IDS_COM_BUTTON_DISAGREE"
-msgstr "Samtycker inte"
+msgid "IDS_QP_TPOP_UNABLE_TO_OPEN_PS"
+msgstr "Kan inte öppna %s."
 
-msgid "IDS_ST_BODY_GPS_LOCATION_USE_CONTROLLED_BY_APPLICATIONS_MSG"
-msgstr "GPS-position och användning av dina positionsdata hanteras av programmet som används"
+msgid "IDS_QP_OPT_OUTDOORS_M_OUTDOOR_MODE_ABB"
+msgstr "Utomhus"
 
-msgid "IDS_ST_HEADER_USER_CONSENT"
-msgstr "Användarmedgivande"
+msgid "IDS_QP_BUTTON2_PRIVATE_NMODE_ABB"
+msgstr "Privat\nläge"
 
index 6262ad6..8446c05 100755 (executable)
-msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
-msgstr "Bildirimler"
+msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
+msgstr "Hem Wi-Fi hem de Mobil AP aynı anda etkinleştirilemez. Mobil AP devre dışı bırakılsın mı?"
 
-msgid "IDS_WIFI_BODY_ALLSHARE_CAST"
-msgstr "AllShare Cast"
+msgid "IDS_TASKMGR_BUTTON_CLEAR_ALL"
+msgstr "Tümünü sil"
 
-msgid "IDS_CALL_POP_CALLING_EMERG_ONLY"
-msgstr "Yalnızca acil aramalar"
+msgid "IDS_IDLE_SBODY_TAP_HERE_TO_DISABLE_SAFE_MODE_ABB"
+msgstr "Gvnli mdu kptmk içn brya dknun."
+
+msgid "IDS_IDLE_POP_UNABLE_TO_LAUNCH_PS"
+msgstr "%s öğesi başlatılamıyor."
+
+msgid "IDS_IDLE_MBODY_EMERGENCY_CALLS_ONLY"
+msgstr "Sadece acil aramalar"
+
+msgid "IDS_IDLE_BODY_SEARCHING_ING"
+msgstr "Aranıyor..."
+
+msgid "IDS_IDLE_BODY_NO_SIM"
+msgstr "SIM yok"
+
+msgid "IDS_IDLE_BODY_NO_SERVICE"
+msgstr "Servis yok"
 
-msgid "IDS_QP_BUTTON_ROTATION"
-msgstr "Döndürme"
+msgid "IDS_IDLE_BODY_INVALID_SIM_CARD"
+msgstr "SIM kart geçersiz."
 
-msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
+msgid "IDS_IDLE_BODY_EMERGENCY_CALLS_ONLY"
+msgstr "Yalnızca acil aramalar."
+
+msgid "IDS_QP_OPT_OUTDOORS_ABB"
+msgstr "Açk hava"
+
+msgid "IDS_QP_MBODY_SAFE_MODE_ENABLED"
+msgstr "Güvenli mod etkin"
+
+msgid "IDS_QP_HEADER_NOTIFICATIONS_HPD_ABB"
 msgstr "Bildirimler (%d)"
 
-msgid "IDS_QP_BUTTON_VIBRATION"
+msgid "IDS_QP_HEADER_CLEAR_ALL_ABB"
+msgstr "Tümünü sil"
+
+msgid "IDS_QP_BUTTON_NOTIFICATION"
+msgstr "Bildirim"
+
+msgid "IDS_QP_BUTTON_ALWAYS_ASK_ABB"
+msgstr "Her zaman sor"
+
+msgid "IDS_QP_BUTTON2_WI_FI"
+msgstr "Wi-Fi"
+
+msgid "IDS_QP_BUTTON2_VIBRATE"
 msgstr "Titreşim"
 
-msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
-msgstr "Ses ve titreşim"
+msgid "IDS_QP_BUTTON2_U_POWER_NSAVING_ABB"
+msgstr "Ultra güç\ntasarrufu"
 
-msgid "IDS_QP_TAB4_AUTO_ROTATION"
-msgstr "Otomatk döndürme"
+msgid "IDS_QP_BUTTON2_TETHERING"
+msgstr "Bağlantı"
 
-msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
-msgstr "Döndürme kilidi"
+msgid "IDS_QP_BUTTON2_SOUND_ABB"
+msgstr "Ses"
 
-msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
-msgstr "Yığın depolama modu"
+msgid "IDS_QP_BUTTON2_SOUND"
+msgstr "Ses"
 
-msgid "IDS_QP_BUTTON_DISABLE"
-msgstr "Devre dışı"
+msgid "IDS_QP_BUTTON2_PRIVATE_MODE"
+msgstr "Özel mod"
 
-msgid "IDS_QP_BUTTON_ENABLE"
-msgstr "Etkin"
+msgid "IDS_QP_BUTTON2_POWER_N_SAVING"
+msgstr "Güç\ntasarrufu"
 
-msgid "IDS_COM_POP_UNSUPPORTED"
-msgstr "Desteklenmiyor"
+msgid "IDS_QP_BUTTON2_MUTE_ABB"
+msgstr "Sessiz"
 
-msgid "IDS_COM_SK_DISMISS"
-msgstr "Durdur"
+msgid "IDS_QP_BUTTON2_MOBILE_DATA"
+msgstr "Mobil\nveri"
 
-msgid "IDS_COM_POP_PELASE_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
-msgstr "Şebeke servislerine erişmek için SIM kartını takın"
+msgid "IDS_QP_BUTTON2_LOCATION_ABB"
+msgstr "Konum"
 
-msgid "IDS_COM_BODY_DO_NOT_ASK_AGAIN"
-msgstr "Tekrar sorma"
+msgid "IDS_QP_BUTTON2_FLIGHT_N_MODE"
+msgstr "Uçuş\nmodu"
 
-msgid "IDS_QP_POP_INSERT_SIM_CARD_AND_RESTART_DEVICE_TO_USE_TETHERING"
-msgstr "Bağlantıyı kullanmak için SIM kartı takın ve cihazı tekrar başlatın"
+msgid "IDS_QP_BUTTON2_BLUETOOTH"
+msgstr "Bluetooth"
 
-msgid "IDS_QP_POP_CONNECTING_VIA_PACKET_DATA_MAY_INCUR_ADDITIONAL_CHARGES_CONTINUE_Q"
-msgstr "Paket verisi kanalıyla bağlanmak ek ücretlere neden olabilir devam edilsin mi?"
+msgid "IDS_QP_BUTTON2_AUTO_ROTATE"
+msgstr "Otomatk döndür"
 
-msgid "IDS_QP_BODY_AUTO"
-msgstr "Otomatik"
+msgid "IDS_QP_BUTTON2_ASSISTIVE_NLIGHT"
+msgstr "Yardımcı\nışık"
 
-msgid "IDS_QP_TAB_POWER_SAVING"
-msgstr "Güç tasarrufu"
+msgid "IDS_QP_BODY_PM_ABB"
+msgstr "PM"
 
-msgid "IDS_QP_TAB_TETHERING"
-msgstr "Bağlantı"
+msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
+msgstr "Bildirimler"
 
-msgid "IDS_QP_TAB_MOBILE_DATA"
-msgstr "Mobil veri"
+msgid "IDS_QP_BODY_AM_ABB"
+msgstr "AM"
 
-msgid "IDS_QP_TAB_DRIVING_MODE"
-msgstr "Sürüş modu"
+msgid "IDS_ST_TPOP_UNABLE_TO_MAKE_VOICE_CALLS_VIDEO_CALLS_AND_SEND_TEXT_MESSAGES_USING_PS"
+msgstr "%s kullanılarak sesli arama, görüntülü arama yapılamıyor ve metin mesajı gönderilemiyor."
 
-msgid "IDS_COM_POP_UNABLE_TO_CONNECT_TO_MOBILE_NETWORK_WHILE_FLIGHT_MODE_IS_ENABLED_MSG"
-msgstr "Uçuş modu etkinken, mobil ağlara bağlanamıyor. Bunun yerine Wi-Fi ağına bağlanın veya mobil veriyi devre dışı bırakın ve tekrar deneyin"
+msgid "IDS_ST_TPOP_SELECT_SIM_CARD_FOR_OUTGOING_VOICE_CALLS_VIDEO_CALLS_AND_TEXT_MESSAGES"
+msgstr "Giden sesli aramalar, görüntülü aramalar ve metin mesajları için SIM kart seçin."
 
-msgid "IDS_QP_POP_WI_FI_TETHERING_CONSUMES_MORE_BATTERY_POWER_AND_INCREASES_YOUR_DATA_USAGE_CONTINUE_Q"
-msgstr "Wi-Fi bağlantısı daha fazla pil gücü tüketir ve veri kullanımınızı arttırır. Devam edilsin mi?"
+msgid "IDS_ST_TPOP_OUTGOING_VOICE_CALLS_VIDEO_CALLS_AND_TEXT_MESSAGES_WILL_BE_MADE_USING_THE_PS_SIM_CARD"
+msgstr "Giden sesli aramalar, görüntülü aramalar ve metin mesajları, %s SIM kart kullanılarak yapılacak."
 
-msgid "IDS_QP_POP_DISABLE_TETHERING_TO_USE_WI_FI"
-msgstr "Wi-Fi'yi kullanmak için bağlanmayı devre dışı bırakın"
+msgid "IDS_ST_SK_OK"
+msgstr "Tamam"
 
-msgid "IDS_QP_POP_TO_ENABLE_POWER_SAVING_MODE_ENABLE_AT_LEAST_ONE_RELEVANT_FUNCTION"
-msgstr "Güç tasarrufu modunu etkinleştirmek için en az bir uygun fonksiyonu etkinleştirin"
+msgid "IDS_ST_SK_NO"
+msgstr "Hayır"
 
-msgid "IDS_QP_POP_TURN_OFF_WI_FI_TO_USE_TETHERING"
-msgstr "Bağlanmayı kullanmak için Wi-Fi'yi kapatın"
+msgid "IDS_ST_POP_UNABLE_TO_INCREASE_BRIGHTNESS_FURTHER_BECAUSE_OF_PHONE_OVERHEATING"
+msgstr "Aşırı ısınmadan dolayı ekran parlaklığı arttırılamaz."
 
-msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
-msgstr "Hem Wi-Fi hem de Mobil AP aynı anda etkinleştirilemez. Mobil AP devre dışı bırakılsın mı?"
+msgid "IDS_ST_NPBODY_NO_SERVICE"
+msgstr "Servis yok"
+
+msgid "IDS_ST_NPBODY_EMERGENCY_CALLS_ONLY_ABB"
+msgstr "Yalnızca acil aramalar"
 
-msgid "IDS_ASCAST_HEADER_SCREEN_MIRRORING"
-msgstr "Ekran Yansıtma"
+msgid "IDS_ST_HEADER_OUTDOOR"
+msgstr "Dış mekan"
 
-msgid "IDS_QP_HEADER_REPLACE_QUICK_SETTING_BUTTON"
-msgstr "Hızlı ayar düğmesini değiştir"
+msgid "IDS_ST_BUTTON2_WI_FI_NTETHERING"
+msgstr "Wi-Fi\nint. pyl."
 
-msgid "IDS_QP_HEADER_ADD_QUICK_SETTING_BUTTON"
-msgstr "Hızlı ayar düğmesi ekle"
+msgid "IDS_ST_BUTTON2_WI_FI_ABB"
+msgstr "Wi-Fi"
 
-msgid "IDS_QP_POP_YOU_WILL_NO_LONGER_BE_ABLE_TO_USE_APPLICATIONS_SUCH_AS_INTERNET_NOTI_MSG"
-msgstr "Artık İnternet ve E-posta gibi uygulamaları mobil ağlar üzerinden kullanamayacaksınız. Devam edin?"
+msgid "IDS_ST_BUTTON2_TORCH_ABB"
+msgstr "Fener"
 
-msgid "IDS_QP_BUTTON2_SCREEN_N_MIRRORING"
-msgstr "Ekran\nYansıtma"
+msgid "IDS_ST_BUTTON2_POWER_NSAVING"
+msgstr "Güç\ntasarrufu"
 
-msgid "IDS_COM_BODY_BUTTON_T_TTS"
-msgstr "Düğme"
+msgid "IDS_ST_BUTTON2_MOBILE_NDATA"
+msgstr "Mobil\nveri"
 
-msgid "IDS_QP_BUTTON2_GPS"
+msgid "IDS_ST_BUTTON2_GPS_ABB"
 msgstr "GPS"
 
-msgid "IDS_QP_BUTTON_NOTIFICATION"
-msgstr "Bildirim"
+msgid "IDS_ST_BUTTON2_FLIGHT_NMODE"
+msgstr "Uçuş\nmodu"
+
+msgid "IDS_ST_BUTTON2_BLUETOOTH_ABB"
+msgstr "Bluetooth"
+
+msgid "IDS_ST_BUTTON2_AUTO_NROTATE"
+msgstr "Oto.\ndöndür"
+
+msgid "IDS_ST_BODY_SIM_2"
+msgstr "SIM 2"
+
+msgid "IDS_ST_BODY_SIM_1"
+msgstr "SIM 1"
+
+msgid "IDS_ST_BODY_SCANNING_FOR_MOBILE_NETWORK_ING_ABB"
+msgstr "Mobil ağ taranıyor..."
+
+msgid "IDS_ST_BODY_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
+msgstr "Şebeke servislerine erişmek için SIM kartını takın."
+
+msgid "IDS_ST_BODY_ALWAYS_ASK_ABB"
+msgstr "Her zaman sor"
+
+msgid "IDS_SCP_BODY_UNABLE_TO_CONNECT_TO_MOBILE_NETWORKS_WHILE_FLIGHT_MODE_IS_ENABLED_CONNECT_TO_A_WI_FI_NETWORK_INSTEAD_OR_DISABLE_FLIGHT_MODE_AND_TRY_AGAIN"
+msgstr "Uçuş modu etkinken mobil ağlara bağlanılamaz. Bunun yerine bir Wi-Fi ağına bağlanın veya Uçuş modunu devre dışı bırakıp tekrar deneyin."
 
-msgid "IDS_COM_BUTTON_AGREE"
-msgstr "Onayla"
+msgid "IDS_COM_BODY_SEARCHING"
+msgstr "Aranıyor"
 
-msgid "IDS_COM_BUTTON_DISAGREE"
-msgstr "Onaylama"
+msgid "IDS_QP_TPOP_UNABLE_TO_OPEN_PS"
+msgstr "%s açılamıyor."
 
-msgid "IDS_ST_BODY_GPS_LOCATION_USE_CONTROLLED_BY_APPLICATIONS_MSG"
-msgstr "GPS konumu ve konum verinizin kullanımı kullandığınız uygulamalar tarafından kontrol edilir"
+msgid "IDS_QP_OPT_OUTDOORS_M_OUTDOOR_MODE_ABB"
+msgstr "Açk hava"
 
-msgid "IDS_ST_HEADER_USER_CONSENT"
-msgstr "Kullanıcı izni"
+msgid "IDS_QP_BUTTON2_PRIVATE_NMODE_ABB"
+msgstr "Özel\nmod"
 
index 777a149..5321f52 100755 (executable)
--- a/po/uk.po
+++ b/po/uk.po
-msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
-msgstr "Сповіщення"
+msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
+msgstr "Мережі Wi-Fi та Mobile AP не можна активувати одночасно. Вимкнути Mobile AP?"
+
+msgid "IDS_TASKMGR_BUTTON_CLEAR_ALL"
+msgstr "Очистити все"
 
-msgid "IDS_WIFI_BODY_ALLSHARE_CAST"
-msgstr "AllShare Cast"
+msgid "IDS_IDLE_SBODY_TAP_HERE_TO_DISABLE_SAFE_MODE_ABB"
+msgstr "Натис.тут, щоб вимк.безпеч.реж."
 
-msgid "IDS_CALL_POP_CALLING_EMERG_ONLY"
+msgid "IDS_IDLE_POP_UNABLE_TO_LAUNCH_PS"
+msgstr "Неможливо запустити %s."
+
+msgid "IDS_IDLE_MBODY_EMERGENCY_CALLS_ONLY"
 msgstr "Лише екстрені виклики"
 
-msgid "IDS_QP_BUTTON_ROTATION"
-msgstr "Обертан."
+msgid "IDS_IDLE_BODY_SEARCHING_ING"
+msgstr "Пошук..."
+
+msgid "IDS_IDLE_BODY_NO_SIM"
+msgstr "Відсутня SIM-карта"
+
+msgid "IDS_IDLE_BODY_NO_SERVICE"
+msgstr "Немає мережі"
+
+msgid "IDS_IDLE_BODY_INVALID_SIM_CARD"
+msgstr "Збій SIM-картки."
 
-msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
+msgid "IDS_IDLE_BODY_EMERGENCY_CALLS_ONLY"
+msgstr "Лише екстрені виклики."
+
+msgid "IDS_QP_OPT_OUTDOORS_ABB"
+msgstr "На вул."
+
+msgid "IDS_QP_MBODY_SAFE_MODE_ENABLED"
+msgstr "Безпечний режим увімкнено"
+
+msgid "IDS_QP_HEADER_NOTIFICATIONS_HPD_ABB"
 msgstr "Сповіщення (%d)"
 
-msgid "IDS_QP_BUTTON_VIBRATION"
+msgid "IDS_QP_HEADER_CLEAR_ALL_ABB"
+msgstr "Очист. всі"
+
+msgid "IDS_QP_BUTTON_NOTIFICATION"
+msgstr "Сповіщення"
+
+msgid "IDS_QP_BUTTON_ALWAYS_ASK_ABB"
+msgstr "Завжд.запитувати"
+
+msgid "IDS_QP_BUTTON2_WI_FI"
+msgstr "Wi-Fi"
+
+msgid "IDS_QP_BUTTON2_VIBRATE"
 msgstr "Вібрація"
 
-msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
-msgstr "Ð\97вÑ\83к Ñ\96 Ð²Ñ\96бÑ\80аÑ\86Ñ\96Ñ\8f"
+msgid "IDS_QP_BUTTON2_U_POWER_NSAVING_ABB"
+msgstr "Реж.макÑ\81.\nенеÑ\80г."
 
-msgid "IDS_QP_TAB4_AUTO_ROTATION"
-msgstr "Ð\90вÑ\82ообеÑ\80Ñ\82."
+msgid "IDS_QP_BUTTON2_TETHERING"
+msgstr "Ð\9fÑ\80ивâ\80\99Ñ\8fзка"
 
-msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
-msgstr "Ð\91лок. Ð¾Ð±ÐµÑ\80Ñ\82аннÑ\8f"
+msgid "IDS_QP_BUTTON2_SOUND_ABB"
+msgstr "Ð\97вÑ\83к"
 
-msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
-msgstr "Режим Ð½Ð°ÐºÐ¾Ð¿Ð¸Ñ\87Ñ\83ваÑ\87а"
+msgid "IDS_QP_BUTTON2_SOUND"
+msgstr "Ð\97вÑ\83к"
 
-msgid "IDS_QP_BUTTON_DISABLE"
-msgstr "Ð\92имкнÑ\83Ñ\82и"
+msgid "IDS_QP_BUTTON2_PRIVATE_MODE"
+msgstr "Ð\9eÑ\81обиÑ\81Ñ\82. Ñ\80ежим"
 
-msgid "IDS_QP_BUTTON_ENABLE"
-msgstr "УвÑ\96мкнÑ\83Ñ\82и"
+msgid "IDS_QP_BUTTON2_POWER_N_SAVING"
+msgstr "Ð\95неÑ\80го\nзбеÑ\80еженнÑ\8f"
 
-msgid "IDS_COM_POP_UNSUPPORTED"
-msgstr "Ð\9dе Ð¿Ñ\96дÑ\82Ñ\80имÑ\83Ñ\94Ñ\82Ñ\8cÑ\81Ñ\8f"
+msgid "IDS_QP_BUTTON2_MUTE_ABB"
+msgstr "Ð\92имкнÑ\83Ñ\82и\nзвÑ\83к"
 
-msgid "IDS_COM_SK_DISMISS"
-msgstr "Ð\92Ñ\96дÑ\85илиÑ\82и"
+msgid "IDS_QP_BUTTON2_MOBILE_DATA"
+msgstr "Ð\9cобÑ\96лÑ\8cнÑ\96\nданÑ\96"
 
-msgid "IDS_COM_POP_PELASE_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
-msgstr "Щоб Ð¾Ñ\82Ñ\80имаÑ\82и Ð´Ð¾Ñ\81Ñ\82Ñ\83п Ð´Ð¾ Ð¿Ð¾Ñ\81лÑ\83г Ð¼ÐµÑ\80ежÑ\96, Ð²Ñ\81Ñ\82авÑ\82е SIM-каÑ\80Ñ\82кÑ\83"
+msgid "IDS_QP_BUTTON2_LOCATION_ABB"
+msgstr "Ð\93еоданÑ\96"
 
-msgid "IDS_COM_BODY_DO_NOT_ASK_AGAIN"
-msgstr "Ð\9dадалÑ\96 Ð½Ðµ Ð·Ð°Ð¿Ð¸Ñ\82Ñ\83ваÑ\82и"
+msgid "IDS_QP_BUTTON2_FLIGHT_N_MODE"
+msgstr "Ð\91ез\nзвâ\80\99Ñ\8fзкÑ\83"
 
-msgid "IDS_QP_POP_INSERT_SIM_CARD_AND_RESTART_DEVICE_TO_USE_TETHERING"
-msgstr "Вставте SIM-картку та перезавантажте пристрій, щоб скористатися прив'язкою"
+msgid "IDS_QP_BUTTON2_BLUETOOTH"
+msgstr "Bluetooth"
 
-msgid "IDS_QP_POP_CONNECTING_VIA_PACKET_DATA_MAY_INCUR_ADDITIONAL_CHARGES_CONTINUE_Q"
-msgstr "Ð\9fÑ\96дклÑ\8eÑ\87еннÑ\8f Ð· Ð²Ð¸ÐºÐ¾Ñ\80иÑ\81Ñ\82аннÑ\8fм Ð¿Ð°ÐºÐµÑ\82ниÑ\85 Ð´Ð°Ð½Ð¸Ñ\85 Ð¼Ð¾Ð¶Ðµ Ð¿Ð¾Ñ\82Ñ\80ебÑ\83ваÑ\82и Ð´Ð¾Ð´Ð°Ñ\82ковоÑ\97 Ð¾Ð¿Ð»Ð°Ñ\82и. Ð\9fÑ\80одовжиÑ\82и?"
+msgid "IDS_QP_BUTTON2_AUTO_ROTATE"
+msgstr "Ð\90вÑ\82ообеÑ\80Ñ\82аннÑ\8f"
 
-msgid "IDS_QP_BODY_AUTO"
-msgstr "Ð\90вÑ\82о"
+msgid "IDS_QP_BUTTON2_ASSISTIVE_NLIGHT"
+msgstr "Ð\94опом.\nпÑ\96дÑ\81вÑ\96Ñ\87."
 
-msgid "IDS_QP_TAB_POWER_SAVING"
-msgstr "Енергозбереження"
+msgid "IDS_QP_BODY_PM_ABB"
+msgstr "PM"
 
-msgid "IDS_QP_TAB_TETHERING"
-msgstr "Ð\9fÑ\80ивâ\80\99Ñ\8fзка"
+msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
+msgstr "СповÑ\96Ñ\89еннÑ\8f"
 
-msgid "IDS_QP_TAB_MOBILE_DATA"
-msgstr "Мобільні дані"
+msgid "IDS_QP_BODY_AM_ABB"
+msgstr "AM"
 
-msgid "IDS_QP_TAB_DRIVING_MODE"
-msgstr "Режим Ð\97а ÐºÐµÑ\80мом"
+msgid "IDS_ST_TPOP_UNABLE_TO_MAKE_VOICE_CALLS_VIDEO_CALLS_AND_SEND_TEXT_MESSAGES_USING_PS"
+msgstr "Ð\9dеможливо Ð·Ð´Ñ\96йÑ\81нÑ\8eваÑ\82и Ð³Ð¾Ð»Ð¾Ñ\81овÑ\96 Ð²Ð¸ÐºÐ»Ð¸ÐºÐ¸, Ð²Ñ\96деовиклики Ñ\82а Ð½Ð°Ð´Ñ\81илаÑ\82и SMS-повÑ\96домленнÑ\8f Ð·Ð° Ð´Ð¾Ð¿Ð¾Ð¼Ð¾Ð³Ð¾Ñ\8e %s."
 
-msgid "IDS_COM_POP_UNABLE_TO_CONNECT_TO_MOBILE_NETWORK_WHILE_FLIGHT_MODE_IS_ENABLED_MSG"
-msgstr "Ð\9dеможливо Ð¿Ñ\96дклÑ\8eÑ\87иÑ\82иÑ\81Ñ\8f Ð´Ð¾ Ð¼Ð¾Ð±Ñ\96лÑ\8cноÑ\97 Ð¼ÐµÑ\80ежÑ\96 Ñ\83 Ñ\80азÑ\96 Ð²Ð²Ñ\96мкненого Ñ\80ежимÑ\83 Ð±ÐµÐ· Ð·Ð²'Ñ\8fзкÑ\83. Ð\9fÑ\96дклÑ\8eÑ\87Ñ\96Ñ\82Ñ\8cÑ\81Ñ\8f Ð´Ð¾ Ð¼ÐµÑ\80ежÑ\96 Wi-Fi Ð°Ð±Ð¾ Ð²Ð¸Ð¼ÐºÐ½Ñ\96Ñ\82Ñ\8c Ñ\80ежим Ð±ÐµÐ· Ð·Ð²'Ñ\8fзкÑ\83 Ñ\82а Ñ\81пÑ\80обÑ\83йÑ\82е Ñ\89е Ñ\80аз"
+msgid "IDS_ST_TPOP_SELECT_SIM_CARD_FOR_OUTGOING_VOICE_CALLS_VIDEO_CALLS_AND_TEXT_MESSAGES"
+msgstr "Ð\92ибеÑ\80Ñ\96Ñ\82Ñ\8c SIM-каÑ\80Ñ\82Ñ\83 Ð´Ð»Ñ\8f Ð·Ð´Ñ\96йÑ\81неннÑ\8f Ð²Ð¸Ñ\85Ñ\96дниÑ\85 Ð³Ð¾Ð»Ð¾Ñ\81овиÑ\85 Ð²Ð¸ÐºÐ»Ð¸ÐºÑ\96в, Ð²Ñ\96деовикликÑ\96в Ñ\96 Ð½Ð°Ð´Ñ\81иланнÑ\8f SMS-повÑ\96домленÑ\8c."
 
-msgid "IDS_QP_POP_WI_FI_TETHERING_CONSUMES_MORE_BATTERY_POWER_AND_INCREASES_YOUR_DATA_USAGE_CONTINUE_Q"
-msgstr "Ð\9fÑ\80ив'Ñ\8fзка Wi-Fi Ð²Ð¸ÐºÐ¾Ñ\80иÑ\81Ñ\82овÑ\83Ñ\94 Ð±Ñ\96лÑ\8cÑ\88е Ð·Ð°Ñ\80Ñ\8fдÑ\83 Ð°ÐºÑ\83мÑ\83лÑ\8fÑ\82оÑ\80а Ñ\82а Ð·Ð±Ñ\96лÑ\8cÑ\88Ñ\83Ñ\94 Ð²Ð¸ÐºÐ¾Ñ\80иÑ\81Ñ\82аннÑ\8f Ð´Ð°Ð½Ð¸Ñ\85. Ð\9fÑ\80одовжиÑ\82и?"
+msgid "IDS_ST_TPOP_OUTGOING_VOICE_CALLS_VIDEO_CALLS_AND_TEXT_MESSAGES_WILL_BE_MADE_USING_THE_PS_SIM_CARD"
+msgstr "Ð\97а Ð´Ð¾Ð¿Ð¾Ð¼Ð¾Ð³Ð¾Ñ\8e SIM-каÑ\80Ñ\82и %s Ð±Ñ\83де Ð·Ð´Ñ\96йÑ\81нено Ð²Ð¸Ñ\85Ñ\96днÑ\96 Ð³Ð¾Ð»Ð¾Ñ\81овÑ\96 Ð²Ð¸ÐºÐ»Ð¸ÐºÐ¸, Ð²Ñ\96деовиклики Ñ\82а Ð½Ð°Ð´Ñ\96Ñ\81лано SMS-повÑ\96домленнÑ\8f."
 
-msgid "IDS_QP_POP_DISABLE_TETHERING_TO_USE_WI_FI"
-msgstr "Ð\92имкнÑ\96Ñ\82Ñ\8c Ð¿Ñ\80ив'Ñ\8fзкÑ\83, Ñ\89об Ñ\81коÑ\80иÑ\81Ñ\82аÑ\82иÑ\81Ñ\8f Wi-Fi"
+msgid "IDS_ST_SK_OK"
+msgstr "Ð\9eÐ\9a"
 
-msgid "IDS_QP_POP_TO_ENABLE_POWER_SAVING_MODE_ENABLE_AT_LEAST_ONE_RELEVANT_FUNCTION"
-msgstr "Щоб Ð²Ð²Ñ\96мкнÑ\83Ñ\82и Ñ\80ежим ÐµÐ½ÐµÑ\80гозбеÑ\80еженнÑ\8f, Ñ\83вÑ\96мкнÑ\96Ñ\82Ñ\8c Ð¿Ñ\80инаймнÑ\96 Ð¾Ð´Ð½Ñ\83 Ð²Ñ\96дповÑ\96днÑ\83 Ñ\84Ñ\83нкÑ\86Ñ\96Ñ\8e"
+msgid "IDS_ST_SK_NO"
+msgstr "Ð\9dÑ\96"
 
-msgid "IDS_QP_POP_TURN_OFF_WI_FI_TO_USE_TETHERING"
-msgstr "Ð\92имкнÑ\96Ñ\82Ñ\8c Wi-Fi, Ñ\89об Ñ\81коÑ\80иÑ\81Ñ\82аÑ\82иÑ\81Ñ\8f Ð¿Ñ\80ив'Ñ\8fзкоÑ\8e"
+msgid "IDS_ST_POP_UNABLE_TO_INCREASE_BRIGHTNESS_FURTHER_BECAUSE_OF_PHONE_OVERHEATING"
+msgstr "Ð\9dеможливо Ð·Ð±Ñ\96лÑ\8cÑ\88Ñ\83ваÑ\82и Ñ\8fÑ\81кÑ\80авÑ\96Ñ\81Ñ\82Ñ\8c Ð´Ð°Ð»Ñ\96 Ñ\87еÑ\80ез Ð¿ÐµÑ\80егÑ\80Ñ\96в Ñ\82елеÑ\84онÑ\83."
 
-msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
-msgstr "Мережі Wi-Fi та Mobile AP не можна активувати одночасно. Вимкнути Mobile AP?"
+msgid "IDS_ST_NPBODY_NO_SERVICE"
+msgstr "Немає служби"
+
+msgid "IDS_ST_NPBODY_EMERGENCY_CALLS_ONLY_ABB"
+msgstr "Лише екстрені виклики"
 
-msgid "IDS_ASCAST_HEADER_SCREEN_MIRRORING"
-msgstr "Ð\94Ñ\83блÑ\8eваннÑ\8f ÐµÐºÑ\80анÑ\83"
+msgid "IDS_ST_HEADER_OUTDOOR"
+msgstr "Ð\9dа Ð²Ñ\83лиÑ\86Ñ\96"
 
-msgid "IDS_QP_HEADER_REPLACE_QUICK_SETTING_BUTTON"
-msgstr "Ð\97амÑ\96ниÑ\82и ÐºÐ½Ð¾Ð¿ÐºÑ\83 Ñ\83Ñ\81Ñ\82ановок Ð¿Ð°Ð½ÐµÐ»Ñ\96 Ñ\88видкого Ð´Ð¾Ñ\81Ñ\82Ñ\83пÑ\83"
+msgid "IDS_ST_BUTTON2_WI_FI_NTETHERING"
+msgstr "Ð\9fÑ\80ивâ\80\99Ñ\8fз.\nWi-Fi"
 
-msgid "IDS_QP_HEADER_ADD_QUICK_SETTING_BUTTON"
-msgstr "Додати кнопку швидкого доступу до установок"
+msgid "IDS_ST_BUTTON2_WI_FI_ABB"
+msgstr "Wi-Fi"
 
-msgid "IDS_QP_POP_YOU_WILL_NO_LONGER_BE_ABLE_TO_USE_APPLICATIONS_SUCH_AS_INTERNET_NOTI_MSG"
-msgstr "Ð\91Ñ\96лÑ\8cÑ\88е Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð±Ñ\83де Ð²Ð¸ÐºÐ¾Ñ\80иÑ\81Ñ\82овÑ\83ваÑ\82и Ñ\82акÑ\96 Ð¿Ð¾Ñ\81лÑ\83ги, Ñ\8fк Ð´Ð¾Ñ\81Ñ\82Ñ\83п Ð´Ð¾ Ð\86нÑ\82еÑ\80неÑ\82Ñ\83 Ñ\82а Ð¾Ð±Ð¼Ñ\96н Ð¿Ð¾Ð²Ñ\96домленнÑ\8fми Email Ñ\87еÑ\80ез Ð¼Ð¾Ð±Ñ\96лÑ\8cнÑ\96 Ð¼ÐµÑ\80ежÑ\96. Ð\9fÑ\80одовжиÑ\82и?"
+msgid "IDS_ST_BUTTON2_TORCH_ABB"
+msgstr "Ð\9bÑ\96Ñ\85Ñ\82аÑ\80"
 
-msgid "IDS_QP_BUTTON2_SCREEN_N_MIRRORING"
-msgstr "Ð\94Ñ\83блÑ\8eв.\nекÑ\80ана"
+msgid "IDS_ST_BUTTON2_POWER_NSAVING"
+msgstr "Ð\95неÑ\80го-\nзбеÑ\80еж."
 
-msgid "IDS_COM_BODY_BUTTON_T_TTS"
-msgstr "Ð\9aнопка"
+msgid "IDS_ST_BUTTON2_MOBILE_NDATA"
+msgstr "Ð\9cобÑ\96лÑ\8cнÑ\96\nданÑ\96"
 
-msgid "IDS_QP_BUTTON2_GPS"
+msgid "IDS_ST_BUTTON2_GPS_ABB"
 msgstr "GPS"
 
-msgid "IDS_QP_BUTTON_NOTIFICATION"
-msgstr "Сповіщення"
+msgid "IDS_ST_BUTTON2_FLIGHT_NMODE"
+msgstr "Реж. без\nзв’язку"
+
+msgid "IDS_ST_BUTTON2_BLUETOOTH_ABB"
+msgstr "Bluetooth"
+
+msgid "IDS_ST_BUTTON2_AUTO_NROTATE"
+msgstr "Автообе-\nртання"
+
+msgid "IDS_ST_BODY_SIM_2"
+msgstr "SIM 2"
+
+msgid "IDS_ST_BODY_SIM_1"
+msgstr "SIM 1"
+
+msgid "IDS_ST_BODY_SCANNING_FOR_MOBILE_NETWORK_ING_ABB"
+msgstr "Пошук мобільної мережі..."
+
+msgid "IDS_ST_BODY_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
+msgstr "Щоб отримати доступ до послуг мережі, вставте SIM-карту."
+
+msgid "IDS_ST_BODY_ALWAYS_ASK_ABB"
+msgstr "Завжди запитувати"
+
+msgid "IDS_SCP_BODY_UNABLE_TO_CONNECT_TO_MOBILE_NETWORKS_WHILE_FLIGHT_MODE_IS_ENABLED_CONNECT_TO_A_WI_FI_NETWORK_INSTEAD_OR_DISABLE_FLIGHT_MODE_AND_TRY_AGAIN"
+msgstr "Неможливо підключитися до мобільних мереж, якщо ввімкнено режим без зв’язку. Підключіться натомість до мережі Wi-Fi або вимкніть режим без зв’язку та спробуйте ще раз."
 
-msgid "IDS_COM_BUTTON_AGREE"
-msgstr "Ð\97годен"
+msgid "IDS_COM_BODY_SEARCHING"
+msgstr "Ð\9fоÑ\88Ñ\83к"
 
-msgid "IDS_COM_BUTTON_DISAGREE"
-msgstr "Не погодитися"
+msgid "IDS_QP_TPOP_UNABLE_TO_OPEN_PS"
+msgstr "Неможливо запустити програму %s."
 
-msgid "IDS_ST_BODY_GPS_LOCATION_USE_CONTROLLED_BY_APPLICATIONS_MSG"
-msgstr "Ð\9aеÑ\80Ñ\83ваннÑ\8f GPS-Ñ\80озÑ\82аÑ\88Ñ\83ваннÑ\8fм Ñ\96 Ð²Ð¸ÐºÐ¾Ñ\80иÑ\81Ñ\82аннÑ\8fм Ð´Ð°Ð½Ð¸Ñ\85 Ð¿Ñ\80о Ñ\80озÑ\82аÑ\88Ñ\83ваннÑ\8f Ð·Ð´Ñ\96йÑ\81нÑ\8eÑ\94Ñ\82Ñ\8cÑ\81Ñ\8f Ð·Ð° Ð´Ð¾Ð¿Ð¾Ð¼Ð¾Ð³Ð¾Ñ\8e Ð¿Ñ\80огÑ\80ами, Ñ\8fка Ð²Ð¸ÐºÐ¾Ñ\80иÑ\81Ñ\82овÑ\83Ñ\94Ñ\82Ñ\8cÑ\81Ñ\8f Ð²Ð°Ð¼Ð¸"
+msgid "IDS_QP_OPT_OUTDOORS_M_OUTDOOR_MODE_ABB"
+msgstr "Ð\9dа Ð²Ñ\83л."
 
-msgid "IDS_ST_HEADER_USER_CONSENT"
-msgstr "Ð\97года ÐºÐ¾Ñ\80иÑ\81Ñ\82Ñ\83ваÑ\87а"
+msgid "IDS_QP_BUTTON2_PRIVATE_NMODE_ABB"
+msgstr "Ð\9eÑ\81обиÑ\81Ñ\82.\nÑ\80ежим"
 
index 5370e7a..1725911 100755 (executable)
--- a/po/uz.po
+++ b/po/uz.po
-msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
-msgstr "Bildirishnoma"
+msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
+msgstr "Bir vaqtning o‘zida Wi-Fi va Mobile APni faollashtirib bo‘lmaydi. Mobile AP o‘chirilsinmi?"
 
-msgid "IDS_WIFI_BODY_ALLSHARE_CAST"
-msgstr "AllShare Cast"
+msgid "IDS_TASKMGR_BUTTON_CLEAR_ALL"
+msgstr "Barini tozala"
 
-msgid "IDS_CALL_POP_CALLING_EMERG_ONLY"
-msgstr "Faqat favqulodda qo‘ng‘iroqlar"
+msgid "IDS_IDLE_SBODY_TAP_HERE_TO_DISABLE_SAFE_MODE_ABB"
+msgstr "Xavfsiz rjm o‘ch. u-n teging."
 
-msgid "IDS_QP_BUTTON_ROTATION"
-msgstr "Aylant."
+msgid "IDS_IDLE_POP_UNABLE_TO_LAUNCH_PS"
+msgstr "%sni ishga tushirib bo‘lmaydi."
 
-msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
-msgstr "Eslatmalar (%d)"
+msgid "IDS_IDLE_MBODY_EMERGENCY_CALLS_ONLY"
+msgstr "Faqat favqulodda qo‘ng‘ir"
 
-msgid "IDS_QP_BUTTON_VIBRATION"
-msgstr "Vibrats"
+msgid "IDS_IDLE_BODY_SEARCHING_ING"
+msgstr "Qidirilmoqda..."
 
-msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
-msgstr "Ovoz & vibratsiya"
+msgid "IDS_IDLE_BODY_NO_SIM"
+msgstr "SIM-karta yo‘q"
 
-msgid "IDS_QP_TAB4_AUTO_ROTATION"
-msgstr "Avto. aylantirish"
+msgid "IDS_IDLE_BODY_NO_SERVICE"
+msgstr "Xizmat yo‘q"
 
-msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
-msgstr "Aylantirish bloki"
+msgid "IDS_IDLE_BODY_INVALID_SIM_CARD"
+msgstr "Noto‘g‘ri SIM-karta."
 
-msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
-msgstr "Katta hajmli xot. rejimi"
+msgid "IDS_IDLE_BODY_EMERGENCY_CALLS_ONLY"
+msgstr "Faqat favqulodda qo‘ng‘iroqlar."
 
-msgid "IDS_QP_BUTTON_DISABLE"
-msgstr "O‘chirish"
+msgid "IDS_QP_OPT_OUTDOORS_ABB"
+msgstr "Tashqari"
 
-msgid "IDS_QP_BUTTON_ENABLE"
-msgstr "Yoqish"
+msgid "IDS_QP_MBODY_SAFE_MODE_ENABLED"
+msgstr "Xavfsiz rejim yoqildi"
 
-msgid "IDS_COM_POP_UNSUPPORTED"
-msgstr "Qo‘llab-quvvatlanmaydigan"
+msgid "IDS_QP_HEADER_NOTIFICATIONS_HPD_ABB"
+msgstr "Bildir-nomalar (%d)"
 
-msgid "IDS_COM_SK_DISMISS"
-msgstr "O‘tkazish"
+msgid "IDS_QP_HEADER_CLEAR_ALL_ABB"
+msgstr "Bar. tozal"
 
-msgid "IDS_COM_POP_PELASE_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
-msgstr "Tarmoq xizmatlariga kirish uchun SIM-karta kiriting"
+msgid "IDS_QP_BUTTON_NOTIFICATION"
+msgstr "Bildir-noma"
 
-msgid "IDS_COM_BODY_DO_NOT_ASK_AGAIN"
-msgstr "Boshqa so‘ralmasin"
+msgid "IDS_QP_BUTTON_ALWAYS_ASK_ABB"
+msgstr "Doim so‘ralsin"
 
-msgid "IDS_QP_POP_INSERT_SIM_CARD_AND_RESTART_DEVICE_TO_USE_TETHERING"
-msgstr "Bog‘lanishdan foydalanish uchun, SIM-kartani kiriting va qurilmani qayta ishga tushiring"
+msgid "IDS_QP_BUTTON2_WI_FI"
+msgstr "Wi-Fi"
 
-msgid "IDS_QP_POP_CONNECTING_VIA_PACKET_DATA_MAY_INCUR_ADDITIONAL_CHARGES_CONTINUE_Q"
-msgstr "Paketli ma’lumot orqali ulanish uchun qo‘shimcha to‘lov olinishi mumkin. Davom ettirilsinmi?"
+msgid "IDS_QP_BUTTON2_VIBRATE"
+msgstr "Vibra-\ntsiya"
 
-msgid "IDS_QP_BODY_AUTO"
-msgstr "Avtomatik"
+msgid "IDS_QP_BUTTON2_U_POWER_NSAVING_ABB"
+msgstr "U. quvvat\ntejash"
 
-msgid "IDS_QP_TAB_POWER_SAVING"
-msgstr "Quvvat tejash"
+msgid "IDS_QP_BUTTON2_TETHERING"
+msgstr "Bog‘lanish"
 
-msgid "IDS_QP_TAB_TETHERING"
-msgstr "Bog‘lash"
+msgid "IDS_QP_BUTTON2_SOUND_ABB"
+msgstr "Ovoz"
 
-msgid "IDS_QP_TAB_MOBILE_DATA"
-msgstr "Mobile data"
+msgid "IDS_QP_BUTTON2_SOUND"
+msgstr "Ovoz"
 
-msgid "IDS_QP_TAB_DRIVING_MODE"
-msgstr "Mashina rejimi"
+msgid "IDS_QP_BUTTON2_PRIVATE_MODE"
+msgstr "Maxfiy rejim"
 
-msgid "IDS_COM_POP_UNABLE_TO_CONNECT_TO_MOBILE_NETWORK_WHILE_FLIGHT_MODE_IS_ENABLED_MSG"
-msgstr "Uchish rejimi yoqilganda, mobil tarmoqlarga ulanib bo‘lmaydi. Uning o‘rniga Wi-Fi tarmoqqa ulaning yoki Uchish rejimini yoqing va qayta urinib ko‘ring"
+msgid "IDS_QP_BUTTON2_POWER_N_SAVING"
+msgstr "Quvvat\ntejash"
 
-msgid "IDS_QP_POP_WI_FI_TETHERING_CONSUMES_MORE_BATTERY_POWER_AND_INCREASES_YOUR_DATA_USAGE_CONTINUE_Q"
-msgstr "Wi-Fi bog‘lanish ko‘proq batareya quvvatini sarflaydi va ma’lumot ishlatilishini oshiradi. Davom ettirilsinmi?"
+msgid "IDS_QP_BUTTON2_MUTE_ABB"
+msgstr "Ovozni\no‘chir"
 
-msgid "IDS_QP_POP_DISABLE_TETHERING_TO_USE_WI_FI"
-msgstr "Wi-Fidan foydalanish uchun bog‘lanishni o‘chiring"
+msgid "IDS_QP_BUTTON2_MOBILE_DATA"
+msgstr "Mobil\ninternet"
 
-msgid "IDS_QP_POP_TO_ENABLE_POWER_SAVING_MODE_ENABLE_AT_LEAST_ONE_RELEVANT_FUNCTION"
-msgstr "Quvvat tejash rejimini yoqish uchun kamida bitta mos funksiyani yoqing"
+msgid "IDS_QP_BUTTON2_LOCATION_ABB"
+msgstr "Joylashuv"
 
-msgid "IDS_QP_POP_TURN_OFF_WI_FI_TO_USE_TETHERING"
-msgstr "Bog‘lanishdan foydalanish uchun Wi-Fini o‘chiring"
+msgid "IDS_QP_BUTTON2_FLIGHT_N_MODE"
+msgstr "Parvoz\nrejimi"
 
-msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
-msgstr "Bir vaqtning o‘zida Wi-Fi va Mobile APni faollashtirib bo‘lmaydi. Mobile AP o‘chirilsinmi?"
+msgid "IDS_QP_BUTTON2_BLUETOOTH"
+msgstr "Bluetooth"
 
-msgid "IDS_ASCAST_HEADER_SCREEN_MIRRORING"
-msgstr "Screen Mirroring"
+msgid "IDS_QP_BUTTON2_AUTO_ROTATE"
+msgstr "Avtomatik aylantir"
 
-msgid "IDS_QP_HEADER_REPLACE_QUICK_SETTING_BUTTON"
-msgstr "Tezkor sozlash tugmasini almashtirish"
+msgid "IDS_QP_BUTTON2_ASSISTIVE_NLIGHT"
+msgstr "Yordam\nchiroq"
 
-msgid "IDS_QP_HEADER_ADD_QUICK_SETTING_BUTTON"
-msgstr "Tezkor sozlash tugmasini qo‘shish"
+msgid "IDS_QP_BODY_PM_ABB"
+msgstr "PM"
 
-msgid "IDS_QP_POP_YOU_WILL_NO_LONGER_BE_ABLE_TO_USE_APPLICATIONS_SUCH_AS_INTERNET_NOTI_MSG"
-msgstr "Mobil tarmoqlar orqali Internet va E-pochta kabi ilovalardan foydalana olmaysiz. Davom ettirilsinmi?"
+msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
+msgstr "Bildirishnoma"
+
+msgid "IDS_QP_BODY_AM_ABB"
+msgstr "AM"
+
+msgid "IDS_ST_TPOP_UNABLE_TO_MAKE_VOICE_CALLS_VIDEO_CALLS_AND_SEND_TEXT_MESSAGES_USING_PS"
+msgstr "%s yordamida ovozli, video qo‘ng‘iroqlarni amalga oshirib va matnli xabarlarni yuborib bo‘lmaydi."
+
+msgid "IDS_ST_TPOP_SELECT_SIM_CARD_FOR_OUTGOING_VOICE_CALLS_VIDEO_CALLS_AND_TEXT_MESSAGES"
+msgstr "Chiquvchi ovozli, video qo‘ng‘iroqlar va matnli xabarlar uchun SIM-kartani tanlang."
 
-msgid "IDS_QP_BUTTON2_SCREEN_N_MIRRORING"
-msgstr "Screen\nMirroring"
+msgid "IDS_ST_TPOP_OUTGOING_VOICE_CALLS_VIDEO_CALLS_AND_TEXT_MESSAGES_WILL_BE_MADE_USING_THE_PS_SIM_CARD"
+msgstr "Chiquvchi ovozli qo‘ng‘iroqlar, video qo‘ng‘iroqlar va matnli xabarlar %s SIM-karta yordamida amalga oshiriladi."
 
-msgid "IDS_COM_BODY_BUTTON_T_TTS"
-msgstr "Tugma"
+msgid "IDS_ST_SK_OK"
+msgstr "OK"
 
-msgid "IDS_QP_BUTTON2_GPS"
+msgid "IDS_ST_SK_NO"
+msgstr "Yo‘q"
+
+msgid "IDS_ST_POP_UNABLE_TO_INCREASE_BRIGHTNESS_FURTHER_BECAUSE_OF_PHONE_OVERHEATING"
+msgstr "Telefon qizib ketgani sababli yorqinlikni ko‘paytirib bo‘lmaydi."
+
+msgid "IDS_ST_NPBODY_NO_SERVICE"
+msgstr "Xizmat yo‘q"
+
+msgid "IDS_ST_NPBODY_EMERGENCY_CALLS_ONLY_ABB"
+msgstr "Faqat favqulodda qo‘ng‘iroqlar"
+
+msgid "IDS_ST_HEADER_OUTDOOR"
+msgstr "Tashqari"
+
+msgid "IDS_ST_BUTTON2_WI_FI_NTETHERING"
+msgstr "Wi-Fi\nbog‘lash"
+
+msgid "IDS_ST_BUTTON2_WI_FI_ABB"
+msgstr "Wi-Fi"
+
+msgid "IDS_ST_BUTTON2_TORCH_ABB"
+msgstr "Fonar"
+
+msgid "IDS_ST_BUTTON2_POWER_NSAVING"
+msgstr "Quvvat\ntejash"
+
+msgid "IDS_ST_BUTTON2_MOBILE_NDATA"
+msgstr "Mobil\nma’lumot"
+
+msgid "IDS_ST_BUTTON2_GPS_ABB"
 msgstr "GPS"
 
-msgid "IDS_QP_BUTTON_NOTIFICATION"
-msgstr "Bildir-noma"
+msgid "IDS_ST_BUTTON2_FLIGHT_NMODE"
+msgstr "Parvoz\nrejimi"
+
+msgid "IDS_ST_BUTTON2_BLUETOOTH_ABB"
+msgstr "Bluetooth"
+
+msgid "IDS_ST_BUTTON2_AUTO_NROTATE"
+msgstr "Avto\naylantir"
+
+msgid "IDS_ST_BODY_SIM_2"
+msgstr "SIM 2"
+
+msgid "IDS_ST_BODY_SIM_1"
+msgstr "SIM 1"
+
+msgid "IDS_ST_BODY_SCANNING_FOR_MOBILE_NETWORK_ING_ABB"
+msgstr "Mobil tarmoq qidirilmoqda..."
+
+msgid "IDS_ST_BODY_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
+msgstr "Tarmoq xizmatlariga kirish uchun SIM-karta kiriting."
+
+msgid "IDS_ST_BODY_ALWAYS_ASK_ABB"
+msgstr "Doim so‘ralsin"
+
+msgid "IDS_SCP_BODY_UNABLE_TO_CONNECT_TO_MOBILE_NETWORKS_WHILE_FLIGHT_MODE_IS_ENABLED_CONNECT_TO_A_WI_FI_NETWORK_INSTEAD_OR_DISABLE_FLIGHT_MODE_AND_TRY_AGAIN"
+msgstr "Parvoz rejimi yoqilganda, mobil tarmoqlarga ulanib bo‘lmaydi. Uning o‘rniga Wi-Fi tarmoqqa ulaning yoki Parvoz rejimini o‘chiring va qayta urinib ko‘ring."
 
-msgid "IDS_COM_BUTTON_AGREE"
-msgstr "Roziman"
+msgid "IDS_COM_BODY_SEARCHING"
+msgstr "Qidirilmoqda"
 
-msgid "IDS_COM_BUTTON_DISAGREE"
-msgstr "Rozi emas"
+msgid "IDS_QP_TPOP_UNABLE_TO_OPEN_PS"
+msgstr "%sni ochib bo‘lmayapti."
 
-msgid "IDS_ST_BODY_GPS_LOCATION_USE_CONTROLLED_BY_APPLICATIONS_MSG"
-msgstr "GPS joylashuvi va Sizning joylashuvingiz ma’lumotidan foydalanish Siz ishlatayotgan ilovalar orqali nazorat qilinadi"
+msgid "IDS_QP_OPT_OUTDOORS_M_OUTDOOR_MODE_ABB"
+msgstr "Tashqari"
 
-msgid "IDS_ST_HEADER_USER_CONSENT"
-msgstr "Foydalanuvchi roziligi"
+msgid "IDS_QP_BUTTON2_PRIVATE_NMODE_ABB"
+msgstr "Maxfiy\nrejim"
 
index c254aec..352aa70 100755 (executable)
-msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
-msgstr "通知"
+msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
+msgstr "Wi-Fi和移动接入无法同时启动。取消移动接入?"
+
+msgid "IDS_TASKMGR_BUTTON_CLEAR_ALL"
+msgstr "全部清除"
+
+msgid "IDS_IDLE_SBODY_TAP_HERE_TO_DISABLE_SAFE_MODE_ABB"
+msgstr "轻敲此处以禁用安全模式"
+
+msgid "IDS_IDLE_POP_UNABLE_TO_LAUNCH_PS"
+msgstr "无法启动 %s。"
+
+msgid "IDS_IDLE_MBODY_EMERGENCY_CALLS_ONLY"
+msgstr "仅限紧急呼叫"
+
+msgid "IDS_IDLE_BODY_SEARCHING_ING"
+msgstr "正在搜索..."
+
+msgid "IDS_IDLE_BODY_NO_SIM"
+msgstr "无 SIM 卡"
 
-msgid "IDS_WIFI_BODY_ALLSHARE_CAST"
-msgstr "AllShare Cast"
+msgid "IDS_IDLE_BODY_NO_SERVICE"
+msgstr "无服务"
 
-msgid "IDS_CALL_POP_CALLING_EMERG_ONLY"
-msgstr "仅限紧急通话"
+msgid "IDS_IDLE_BODY_INVALID_SIM_CARD"
+msgstr "SIM 卡无效"
 
-msgid "IDS_QP_BUTTON_ROTATION"
-msgstr "转动"
+msgid "IDS_IDLE_BODY_EMERGENCY_CALLS_ONLY"
+msgstr "仅限紧急呼叫"
 
-msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
+msgid "IDS_QP_OPT_OUTDOORS_ABB"
+msgstr "户外"
+
+msgid "IDS_QP_MBODY_SAFE_MODE_ENABLED"
+msgstr "安全模式已启用"
+
+msgid "IDS_QP_HEADER_NOTIFICATIONS_HPD_ABB"
 msgstr "通知 (%d)"
 
-msgid "IDS_QP_BUTTON_VIBRATION"
+msgid "IDS_QP_HEADER_CLEAR_ALL_ABB"
+msgstr "全部清除"
+
+msgid "IDS_QP_BUTTON_NOTIFICATION"
+msgstr "通知"
+
+msgid "IDS_QP_BUTTON_ALWAYS_ASK_ABB"
+msgstr "总是询问"
+
+msgid "IDS_QP_BUTTON2_WI_FI"
+msgstr "Wi-Fi"
+
+msgid "IDS_QP_BUTTON2_VIBRATE"
 msgstr "振动"
 
-msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
-msgstr "声音和振动"
+msgid "IDS_QP_BUTTON2_U_POWER_NSAVING_ABB"
+msgstr "超级\n省电"
 
-msgid "IDS_QP_TAB4_AUTO_ROTATION"
-msgstr "自动旋转"
+msgid "IDS_QP_BUTTON2_TETHERING"
+msgstr "网络共享"
 
-msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
-msgstr "旋转锁定"
+msgid "IDS_QP_BUTTON2_SOUND_ABB"
+msgstr "声音"
 
-msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
-msgstr "大容é\87\8få­\98å\82¨æ¨¡å¼\8f"
+msgid "IDS_QP_BUTTON2_SOUND"
+msgstr "声é\9f³"
 
-msgid "IDS_QP_BUTTON_DISABLE"
-msgstr "ç¦\81ç\94¨"
+msgid "IDS_QP_BUTTON2_PRIVATE_MODE"
+msgstr "ç§\81å¯\86模å¼\8f"
 
-msgid "IDS_QP_BUTTON_ENABLE"
-msgstr "启动"
+msgid "IDS_QP_BUTTON2_POWER_N_SAVING"
+msgstr "省电\n模式"
 
-msgid "IDS_COM_POP_UNSUPPORTED"
-msgstr "不支持"
+msgid "IDS_QP_BUTTON2_MUTE_ABB"
+msgstr "静音"
 
-msgid "IDS_COM_SK_DISMISS"
-msgstr "解除"
+msgid "IDS_QP_BUTTON2_MOBILE_DATA"
+msgstr "移动\n数据"
 
-msgid "IDS_COM_POP_PELASE_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
-msgstr "插入SIM卡以访问网络服务"
+msgid "IDS_QP_BUTTON2_LOCATION_ABB"
+msgstr "位置"
 
-msgid "IDS_COM_BODY_DO_NOT_ASK_AGAIN"
-msgstr "不再询问"
+msgid "IDS_QP_BUTTON2_FLIGHT_N_MODE"
+msgstr "飞行\n模式"
 
-msgid "IDS_QP_POP_INSERT_SIM_CARD_AND_RESTART_DEVICE_TO_USE_TETHERING"
-msgstr "插入 SIM 卡并重启设备以使用网络共享"
+msgid "IDS_QP_BUTTON2_BLUETOOTH"
+msgstr "蓝牙"
 
-msgid "IDS_QP_POP_CONNECTING_VIA_PACKET_DATA_MAY_INCUR_ADDITIONAL_CHARGES_CONTINUE_Q"
-msgstr "通过分组数据连接可能产生额外费用。继续?"
+msgid "IDS_QP_BUTTON2_AUTO_ROTATE"
+msgstr "自动旋转"
 
-msgid "IDS_QP_BODY_AUTO"
-msgstr "è\87ªå\8a¨"
+msgid "IDS_QP_BUTTON2_ASSISTIVE_NLIGHT"
+msgstr "è¾\85å\8a©\nå\85\89"
 
-msgid "IDS_QP_TAB_POWER_SAVING"
-msgstr "省电模式"
+msgid "IDS_QP_BODY_PM_ABB"
+msgstr "PM"
 
-msgid "IDS_QP_TAB_TETHERING"
-msgstr "网络分享"
+msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
+msgstr "通知"
 
-msgid "IDS_QP_TAB_MOBILE_DATA"
-msgstr "移动数据"
+msgid "IDS_QP_BODY_AM_ABB"
+msgstr "AM"
 
-msgid "IDS_QP_TAB_DRIVING_MODE"
-msgstr "驾驶模式"
+msgid "IDS_ST_TPOP_UNABLE_TO_MAKE_VOICE_CALLS_VIDEO_CALLS_AND_SEND_TEXT_MESSAGES_USING_PS"
+msgstr "无法使用 %s 拨打语音通话、视频通话和发送短信"
 
-msgid "IDS_COM_POP_UNABLE_TO_CONNECT_TO_MOBILE_NETWORK_WHILE_FLIGHT_MODE_IS_ENABLED_MSG"
-msgstr "é£\9eè¡\8c模å¼\8få\90¯ç\94¨æ\97¶æ\97 æ³\95è¿\9eæ\8e¥è\87³ç§»å\8a¨ç½\91ç»\9cã\80\82è¿\9eæ\8e¥è\87³ Wi-Fi ç½\91ç»\9cï¼\8cæ\88\96ç¦\81ç\94¨é£\9eè¡\8c模å¼\8f并é\87\8dè¯\95"
+msgid "IDS_ST_TPOP_SELECT_SIM_CARD_FOR_OUTGOING_VOICE_CALLS_VIDEO_CALLS_AND_TEXT_MESSAGES"
+msgstr "é\80\89æ\8b©ç\94¨äº\8eæ\8e¥æ\94¶è¯­é\9f³é\80\9aè¯\9dã\80\81è§\86é¢\91é\80\9aè¯\9då\92\8cç\9f­ä¿¡ç\9a\84 SIM å\8d¡"
 
-msgid "IDS_QP_POP_WI_FI_TETHERING_CONSUMES_MORE_BATTERY_POWER_AND_INCREASES_YOUR_DATA_USAGE_CONTINUE_Q"
-msgstr "Wi-Fi 网络共享消耗更多电池电力并增加您的数据使用量。是否继续?"
+msgid "IDS_ST_TPOP_OUTGOING_VOICE_CALLS_VIDEO_CALLS_AND_TEXT_MESSAGES_WILL_BE_MADE_USING_THE_PS_SIM_CARD"
+msgstr "将使用 %s SIM 卡拨出语音通话、视频通话和发送短信。"
 
-msgid "IDS_QP_POP_DISABLE_TETHERING_TO_USE_WI_FI"
-msgstr "ç¦\81ç\94¨ç½\91ç»\9cå\85±äº«ä»¥ä½¿ç\94¨ Wi-Fi"
+msgid "IDS_ST_SK_OK"
+msgstr "ç¡®å®\9a"
 
-msgid "IDS_QP_POP_TO_ENABLE_POWER_SAVING_MODE_ENABLE_AT_LEAST_ONE_RELEVANT_FUNCTION"
-msgstr "若要启用节电模式,至少启用一个相关功能"
+msgid "IDS_ST_SK_NO"
+msgstr ""
 
-msgid "IDS_QP_POP_TURN_OFF_WI_FI_TO_USE_TETHERING"
-msgstr "关闭 Wi-Fi 以使用网络共享"
+msgid "IDS_ST_POP_UNABLE_TO_INCREASE_BRIGHTNESS_FURTHER_BECAUSE_OF_PHONE_OVERHEATING"
+msgstr "由于电话过热,无法再增加亮度。"
 
-msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
-msgstr "Wi-Fi和移动接入无法同时启动。取消移动接入?"
+msgid "IDS_ST_NPBODY_NO_SERVICE"
+msgstr "无服务"
+
+msgid "IDS_ST_NPBODY_EMERGENCY_CALLS_ONLY_ABB"
+msgstr "仅限紧急呼叫"
 
-msgid "IDS_ASCAST_HEADER_SCREEN_MIRRORING"
-msgstr "Screen Mirroring"
+msgid "IDS_ST_HEADER_OUTDOOR"
+msgstr "户外"
 
-msgid "IDS_QP_HEADER_REPLACE_QUICK_SETTING_BUTTON"
-msgstr "替换快捷设置按钮"
+msgid "IDS_ST_BUTTON2_WI_FI_NTETHERING"
+msgstr "Wi-Fi\n网络共享"
 
-msgid "IDS_QP_HEADER_ADD_QUICK_SETTING_BUTTON"
-msgstr "添加快捷设置按钮"
+msgid "IDS_ST_BUTTON2_WI_FI_ABB"
+msgstr "Wi-Fi"
 
-msgid "IDS_QP_POP_YOU_WILL_NO_LONGER_BE_ABLE_TO_USE_APPLICATIONS_SUCH_AS_INTERNET_NOTI_MSG"
-msgstr "æ\82¨å°\86æ\97 æ³\95继续é\80\9aè¿\87移å\8a¨ç½\91ç»\9c使ç\94¨äº\92è\81\94ç½\91å\92\8cç\94µå­\90é\82®ä»¶ç­\89åº\94ç\94¨ç¨\8båº\8fã\80\82æ\98¯å\90¦ç»§ç»­ï¼\9f"
+msgid "IDS_ST_BUTTON2_TORCH_ABB"
+msgstr "æ\89\8bç\94µç­\92"
 
-msgid "IDS_QP_BUTTON2_SCREEN_N_MIRRORING"
-msgstr "屏幕\n镜像"
+msgid "IDS_ST_BUTTON2_POWER_NSAVING"
+msgstr "省电"
 
-msgid "IDS_COM_BODY_BUTTON_T_TTS"
-msgstr "æ\8c\89é\92®"
+msgid "IDS_ST_BUTTON2_MOBILE_NDATA"
+msgstr "移å\8a¨æ\95°æ\8d®"
 
-msgid "IDS_QP_BUTTON2_GPS"
+msgid "IDS_ST_BUTTON2_GPS_ABB"
 msgstr "GPS"
 
-msgid "IDS_QP_BUTTON_NOTIFICATION"
-msgstr "通知"
+msgid "IDS_ST_BUTTON2_FLIGHT_NMODE"
+msgstr "飞行\n模式"
+
+msgid "IDS_ST_BUTTON2_BLUETOOTH_ABB"
+msgstr "蓝牙"
+
+msgid "IDS_ST_BUTTON2_AUTO_NROTATE"
+msgstr "自动旋转"
+
+msgid "IDS_ST_BODY_SIM_2"
+msgstr "SIM2"
+
+msgid "IDS_ST_BODY_SIM_1"
+msgstr "SIM1"
+
+msgid "IDS_ST_BODY_SCANNING_FOR_MOBILE_NETWORK_ING_ABB"
+msgstr "正在扫描移动网络..."
+
+msgid "IDS_ST_BODY_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
+msgstr "插入 SIM 卡以访问网络服务。"
+
+msgid "IDS_ST_BODY_ALWAYS_ASK_ABB"
+msgstr "总是询问"
+
+msgid "IDS_SCP_BODY_UNABLE_TO_CONNECT_TO_MOBILE_NETWORKS_WHILE_FLIGHT_MODE_IS_ENABLED_CONNECT_TO_A_WI_FI_NETWORK_INSTEAD_OR_DISABLE_FLIGHT_MODE_AND_TRY_AGAIN"
+msgstr "飞行模式启用时无法连接至移动网络。改为连接至 Wi-Fi 网络或禁用飞行模式并重试。"
 
-msgid "IDS_COM_BUTTON_AGREE"
-msgstr "同意"
+msgid "IDS_COM_BODY_SEARCHING"
+msgstr "正在搜索"
 
-msgid "IDS_COM_BUTTON_DISAGREE"
-msgstr "不同意"
+msgid "IDS_QP_TPOP_UNABLE_TO_OPEN_PS"
+msgstr "无法打开 %s"
 
-msgid "IDS_ST_BODY_GPS_LOCATION_USE_CONTROLLED_BY_APPLICATIONS_MSG"
-msgstr "GPS位置和您的位置数据的使用由您使用的应用程序来控制"
+msgid "IDS_QP_OPT_OUTDOORS_M_OUTDOOR_MODE_ABB"
+msgstr "户外"
 
-msgid "IDS_ST_HEADER_USER_CONSENT"
-msgstr "ç\94¨æ\88·å\90\8cæ\84\8f"
+msgid "IDS_QP_BUTTON2_PRIVATE_NMODE_ABB"
+msgstr "ç§\81å¯\86\n模å¼\8f"
 
index 3b78724..696a93d 100755 (executable)
-msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
-msgstr "通知"
+msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
+msgstr "Wi-Fi和Mobile AP不可同時啟動。關閉Mobile AP嗎?"
+
+msgid "IDS_TASKMGR_BUTTON_CLEAR_ALL"
+msgstr "全部清除"
+
+msgid "IDS_IDLE_SBODY_TAP_HERE_TO_DISABLE_SAFE_MODE_ABB"
+msgstr "輕觸此處以停用安全模式。"
+
+msgid "IDS_IDLE_POP_UNABLE_TO_LAUNCH_PS"
+msgstr "無法啟動 %s。"
+
+msgid "IDS_IDLE_MBODY_EMERGENCY_CALLS_ONLY"
+msgstr "僅可撥打緊急電話"
+
+msgid "IDS_IDLE_BODY_SEARCHING_ING"
+msgstr "正在搜尋..."
+
+msgid "IDS_IDLE_BODY_NO_SIM"
+msgstr "無 SIM 卡"
 
-msgid "IDS_WIFI_BODY_ALLSHARE_CAST"
-msgstr "AllShare Cast"
+msgid "IDS_IDLE_BODY_NO_SERVICE"
+msgstr "無服務"
 
-msgid "IDS_CALL_POP_CALLING_EMERG_ONLY"
+msgid "IDS_IDLE_BODY_INVALID_SIM_CARD"
+msgstr "SIM 卡無效"
+
+msgid "IDS_IDLE_BODY_EMERGENCY_CALLS_ONLY"
 msgstr "只限緊急通話"
 
-msgid "IDS_QP_BUTTON_ROTATION"
-msgstr "旋轉"
+msgid "IDS_QP_OPT_OUTDOORS_ABB"
+msgstr "戶外"
+
+msgid "IDS_QP_MBODY_SAFE_MODE_ENABLED"
+msgstr "安全模式已啟用"
+
+msgid "IDS_QP_HEADER_NOTIFICATIONS_HPD_ABB"
+msgstr "通知 (%d)"
+
+msgid "IDS_QP_HEADER_CLEAR_ALL_ABB"
+msgstr "全部清除"
+
+msgid "IDS_QP_BUTTON_NOTIFICATION"
+msgstr "通知"
+
+msgid "IDS_QP_BUTTON_ALWAYS_ASK_ABB"
+msgstr "總是詢問"
 
-msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
-msgstr "通知(%d)"
+msgid "IDS_QP_BUTTON2_WI_FI"
+msgstr "WiFi"
 
-msgid "IDS_QP_BUTTON_VIBRATION"
+msgid "IDS_QP_BUTTON2_VIBRATE"
 msgstr "震動"
 
-msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
-msgstr "è\81²é\9f³å\92\8cé\9c\87å\8b\95"
+msgid "IDS_QP_BUTTON2_U_POWER_NSAVING_ABB"
+msgstr "è\85ç´\9a\nç\9c\81é\9b»"
 
-msgid "IDS_QP_TAB4_AUTO_ROTATION"
-msgstr "自動旋轉"
+msgid "IDS_QP_BUTTON2_TETHERING"
+msgstr "網絡共享"
 
-msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
-msgstr "旋轉鎖定"
+msgid "IDS_QP_BUTTON2_SOUND_ABB"
+msgstr "聲音"
 
-msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
-msgstr "大容量儲存裝置模式"
+msgid "IDS_QP_BUTTON2_SOUND"
+msgstr "聲音"
 
-msgid "IDS_QP_BUTTON_DISABLE"
-msgstr "關閉"
+msgid "IDS_QP_BUTTON2_PRIVATE_MODE"
+msgstr "私人模式"
 
-msgid "IDS_QP_BUTTON_ENABLE"
-msgstr "啟用"
+msgid "IDS_QP_BUTTON2_POWER_N_SAVING"
+msgstr "省電\n模式"
 
-msgid "IDS_COM_POP_UNSUPPORTED"
-msgstr "不支援"
+msgid "IDS_QP_BUTTON2_MUTE_ABB"
+msgstr "靜音"
 
-msgid "IDS_COM_SK_DISMISS"
-msgstr "解除"
+msgid "IDS_QP_BUTTON2_MOBILE_DATA"
+msgstr "流動\n數據"
 
-msgid "IDS_COM_POP_PELASE_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
-msgstr "請插入 SIM 卡以存取服務"
+msgid "IDS_QP_BUTTON2_LOCATION_ABB"
+msgstr "位置"
 
-msgid "IDS_COM_BODY_DO_NOT_ASK_AGAIN"
-msgstr "ä¸\8då\86\8dè©¢å\95\8f"
+msgid "IDS_QP_BUTTON2_FLIGHT_N_MODE"
+msgstr "é£\9bè¡\8c\n模å¼\8f"
 
-msgid "IDS_QP_POP_INSERT_SIM_CARD_AND_RESTART_DEVICE_TO_USE_TETHERING"
-msgstr "插入 SIM 卡並重新啟動裝置以使用網絡共用"
+msgid "IDS_QP_BUTTON2_BLUETOOTH"
+msgstr "藍牙"
 
-msgid "IDS_QP_POP_CONNECTING_VIA_PACKET_DATA_MAY_INCUR_ADDITIONAL_CHARGES_CONTINUE_Q"
-msgstr "透過分組數據連接可能會產生額外費用。要繼續嗎?"
+msgid "IDS_QP_BUTTON2_AUTO_ROTATE"
+msgstr "自動旋轉"
 
-msgid "IDS_QP_BODY_AUTO"
-msgstr "è\87ªå\8b\95"
+msgid "IDS_QP_BUTTON2_ASSISTIVE_NLIGHT"
+msgstr "è¼\94å\8a©\nç\87\88"
 
-msgid "IDS_QP_TAB_POWER_SAVING"
-msgstr "省電模式"
+msgid "IDS_QP_BODY_PM_ABB"
+msgstr "下午"
 
-msgid "IDS_QP_TAB_TETHERING"
-msgstr "網絡共享"
+msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
+msgstr "通知"
 
-msgid "IDS_QP_TAB_MOBILE_DATA"
-msgstr "流動數據"
+msgid "IDS_QP_BODY_AM_ABB"
+msgstr "上午"
 
-msgid "IDS_QP_TAB_DRIVING_MODE"
-msgstr "駕駛模式"
+msgid "IDS_ST_TPOP_UNABLE_TO_MAKE_VOICE_CALLS_VIDEO_CALLS_AND_SEND_TEXT_MESSAGES_USING_PS"
+msgstr "無法使用 %s 撥打語音通話、視像通話及發送文字訊息。"
 
-msgid "IDS_COM_POP_UNABLE_TO_CONNECT_TO_MOBILE_NETWORK_WHILE_FLIGHT_MODE_IS_ENABLED_MSG"
-msgstr "é£\9bè¡\8c模å¼\8få\95\9fç\94¨æ\99\82ç\84¡æ³\95é\80£æ\8e¥è\87³æµ\81å\8b\95網絡ã\80\82è«\8bé\80£æ\8e¥ Wi-Fi ç¶²çµ¡æ\88\96å\81\9cç\94¨é£\9bè¡\8c模å¼\8f並é\87\8d試"
+msgid "IDS_ST_TPOP_SELECT_SIM_CARD_FOR_OUTGOING_VOICE_CALLS_VIDEO_CALLS_AND_TEXT_MESSAGES"
+msgstr "é\81¸æ\93\87ç\94¨æ\96¼æ\92¥å\87ºèª\9eé\9f³é\80\9a話ã\80\81è¦\96å\83\8fé\80\9a話è\88\87ç\99¼é\80\81æ\96\87å­\97è¨\8aæ\81¯ç\9a\84 SIM å\8d¡ã\80\82"
 
-msgid "IDS_QP_POP_WI_FI_TETHERING_CONSUMES_MORE_BATTERY_POWER_AND_INCREASES_YOUR_DATA_USAGE_CONTINUE_Q"
-msgstr "Wi-Fi 網絡共用會消耗更多電力並增加您的數據使用量。繼續嗎?"
+msgid "IDS_ST_TPOP_OUTGOING_VOICE_CALLS_VIDEO_CALLS_AND_TEXT_MESSAGES_WILL_BE_MADE_USING_THE_PS_SIM_CARD"
+msgstr "將使用 %s SIM 卡撥打語音通話、視像通話及發送文字訊息。"
 
-msgid "IDS_QP_POP_DISABLE_TETHERING_TO_USE_WI_FI"
-msgstr "停用網絡共享以使用 Wi-Fi"
+msgid "IDS_ST_SK_OK"
+msgstr "確定"
 
-msgid "IDS_QP_POP_TO_ENABLE_POWER_SAVING_MODE_ENABLE_AT_LEAST_ONE_RELEVANT_FUNCTION"
-msgstr "若要啟用省電模式,請至少啟用一項相關功能"
+msgid "IDS_ST_SK_NO"
+msgstr ""
 
-msgid "IDS_QP_POP_TURN_OFF_WI_FI_TO_USE_TETHERING"
-msgstr "關閉 Wi-Fi 以使用網絡共享"
+msgid "IDS_ST_POP_UNABLE_TO_INCREASE_BRIGHTNESS_FURTHER_BECAUSE_OF_PHONE_OVERHEATING"
+msgstr "無法進一步提高亮度,因為手機過熱。"
 
-msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
-msgstr "Wi-Fi和Mobile AP不可同時啟動。關閉Mobile AP嗎?"
+msgid "IDS_ST_NPBODY_NO_SERVICE"
+msgstr "無服務"
 
-msgid "IDS_ASCAST_HEADER_SCREEN_MIRRORING"
-msgstr "Screen Mirroring"
+msgid "IDS_ST_NPBODY_EMERGENCY_CALLS_ONLY_ABB"
+msgstr "僅可撥打緊急電話"
 
-msgid "IDS_QP_HEADER_REPLACE_QUICK_SETTING_BUTTON"
-msgstr "取代快速設定按鈕"
+msgid "IDS_ST_HEADER_OUTDOOR"
+msgstr "戶外"
 
-msgid "IDS_QP_HEADER_ADD_QUICK_SETTING_BUTTON"
-msgstr "加入快速設定按鈕"
+msgid "IDS_ST_BUTTON2_WI_FI_NTETHERING"
+msgstr "Wi-Fi\n網絡共享"
 
-msgid "IDS_QP_POP_YOU_WILL_NO_LONGER_BE_ABLE_TO_USE_APPLICATIONS_SUCH_AS_INTERNET_NOTI_MSG"
-msgstr "您無法再透過流動網絡使用如互聯網和電子郵件等的應用程式。繼續嗎?"
+msgid "IDS_ST_BUTTON2_WI_FI_ABB"
+msgstr "Wi-Fi"
 
-msgid "IDS_QP_BUTTON2_SCREEN_N_MIRRORING"
-msgstr "Screen\nMirroring"
+msgid "IDS_ST_BUTTON2_TORCH_ABB"
+msgstr "手電筒"
 
-msgid "IDS_COM_BODY_BUTTON_T_TTS"
-msgstr "按鈕"
+msgid "IDS_ST_BUTTON2_POWER_NSAVING"
+msgstr "省電"
 
-msgid "IDS_QP_BUTTON2_GPS"
+msgid "IDS_ST_BUTTON2_MOBILE_NDATA"
+msgstr "流動數據"
+
+msgid "IDS_ST_BUTTON2_GPS_ABB"
 msgstr "GPS"
 
-msgid "IDS_QP_BUTTON_NOTIFICATION"
-msgstr "通知"
+msgid "IDS_ST_BUTTON2_FLIGHT_NMODE"
+msgstr "飛行\n模式"
+
+msgid "IDS_ST_BUTTON2_BLUETOOTH_ABB"
+msgstr "藍牙"
+
+msgid "IDS_ST_BUTTON2_AUTO_NROTATE"
+msgstr "自動旋轉"
+
+msgid "IDS_ST_BODY_SIM_2"
+msgstr "SIM 2"
+
+msgid "IDS_ST_BODY_SIM_1"
+msgstr "SIM 1"
+
+msgid "IDS_ST_BODY_SCANNING_FOR_MOBILE_NETWORK_ING_ABB"
+msgstr "正在掃描流動網絡..."
+
+msgid "IDS_ST_BODY_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
+msgstr "插入 SIM 卡以存取網絡服務。"
+
+msgid "IDS_ST_BODY_ALWAYS_ASK_ABB"
+msgstr "總是詢問"
+
+msgid "IDS_SCP_BODY_UNABLE_TO_CONNECT_TO_MOBILE_NETWORKS_WHILE_FLIGHT_MODE_IS_ENABLED_CONNECT_TO_A_WI_FI_NETWORK_INSTEAD_OR_DISABLE_FLIGHT_MODE_AND_TRY_AGAIN"
+msgstr "飛行模式啟用時無法連接至流動網絡。改為連接至 Wi-Fi 網絡或停用飛行模式並重試。"
 
-msgid "IDS_COM_BUTTON_AGREE"
-msgstr "同意"
+msgid "IDS_COM_BODY_SEARCHING"
+msgstr "正在搜尋"
 
-msgid "IDS_COM_BUTTON_DISAGREE"
-msgstr "不同意"
+msgid "IDS_QP_TPOP_UNABLE_TO_OPEN_PS"
+msgstr "無法開啟 %s。"
 
-msgid "IDS_ST_BODY_GPS_LOCATION_USE_CONTROLLED_BY_APPLICATIONS_MSG"
-msgstr "GPS 位置和位置數據的使用由您使用的應用程式控制"
+msgid "IDS_QP_OPT_OUTDOORS_M_OUTDOOR_MODE_ABB"
+msgstr "戶外"
 
-msgid "IDS_ST_HEADER_USER_CONSENT"
-msgstr "ç\94¨æ\88¶è´\8aæ\88\90"
+msgid "IDS_QP_BUTTON2_PRIVATE_NMODE_ABB"
+msgstr "ç§\81人\n模å¼\8f"
 
diff --git a/po/zh_SG.po b/po/zh_SG.po
deleted file mode 100755 (executable)
index 536080e..0000000
+++ /dev/null
@@ -1,123 +0,0 @@
-msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
-msgstr "通知"
-
-msgid "IDS_WIFI_BODY_ALLSHARE_CAST"
-msgstr "AllShare Cast"
-
-msgid "IDS_CALL_POP_CALLING_EMERG_ONLY"
-msgstr "仅限紧急通话"
-
-msgid "IDS_QP_BUTTON_ROTATION"
-msgstr "转动"
-
-msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
-msgstr "通知 (%d)"
-
-msgid "IDS_QP_BUTTON_VIBRATION"
-msgstr "振动"
-
-msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
-msgstr "声音和振动"
-
-msgid "IDS_QP_TAB4_AUTO_ROTATION"
-msgstr "自动旋转"
-
-msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
-msgstr "旋转锁定"
-
-msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
-msgstr "大容量存储模式"
-
-msgid "IDS_QP_BUTTON_DISABLE"
-msgstr "关闭"
-
-msgid "IDS_QP_BUTTON_ENABLE"
-msgstr "启动"
-
-msgid "IDS_COM_POP_UNSUPPORTED"
-msgstr "不支持"
-
-msgid "IDS_COM_SK_DISMISS"
-msgstr "解除"
-
-msgid "IDS_COM_POP_PELASE_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
-msgstr "要使用网络服务须先插入SIM卡"
-
-msgid "IDS_COM_BODY_DO_NOT_ASK_AGAIN"
-msgstr "不再询问"
-
-msgid "IDS_QP_POP_INSERT_SIM_CARD_AND_RESTART_DEVICE_TO_USE_TETHERING"
-msgstr "插入 SIM 卡并重启设备以使用网络共享"
-
-msgid "IDS_QP_POP_CONNECTING_VIA_PACKET_DATA_MAY_INCUR_ADDITIONAL_CHARGES_CONTINUE_Q"
-msgstr "通过分组数据连接可能产生额外费用。继续?"
-
-msgid "IDS_QP_BODY_AUTO"
-msgstr "自动"
-
-msgid "IDS_QP_TAB_POWER_SAVING"
-msgstr "省电"
-
-msgid "IDS_QP_TAB_TETHERING"
-msgstr "网络分享"
-
-msgid "IDS_QP_TAB_MOBILE_DATA"
-msgstr "移动数据"
-
-msgid "IDS_QP_TAB_DRIVING_MODE"
-msgstr "驾驶模式"
-
-msgid "IDS_COM_POP_UNABLE_TO_CONNECT_TO_MOBILE_NETWORK_WHILE_FLIGHT_MODE_IS_ENABLED_MSG"
-msgstr "飞行模式启用时无法连接至移动网络。连接至WLAN网络,或禁用飞行模式并重试"
-
-msgid "IDS_QP_POP_WI_FI_TETHERING_CONSUMES_MORE_BATTERY_POWER_AND_INCREASES_YOUR_DATA_USAGE_CONTINUE_Q"
-msgstr "WLAN网络共享消耗更多电池电力并增加您的数据使用量。是否继续?"
-
-msgid "IDS_QP_POP_DISABLE_TETHERING_TO_USE_WI_FI"
-msgstr "禁用网络共享以使用 Wi-Fi"
-
-msgid "IDS_QP_POP_TO_ENABLE_POWER_SAVING_MODE_ENABLE_AT_LEAST_ONE_RELEVANT_FUNCTION"
-msgstr "若要启用节电模式,至少启用一个相关功能"
-
-msgid "IDS_QP_POP_TURN_OFF_WI_FI_TO_USE_TETHERING"
-msgstr "关闭 Wi-Fi 以使用网络共享"
-
-msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
-msgstr "Wi-Fi和移动AP无法同时启动。取消移动AP?"
-
-msgid "IDS_ASCAST_HEADER_SCREEN_MIRRORING"
-msgstr "屏幕镜像"
-
-msgid "IDS_QP_HEADER_REPLACE_QUICK_SETTING_BUTTON"
-msgstr "替换快捷设置按钮"
-
-msgid "IDS_QP_HEADER_ADD_QUICK_SETTING_BUTTON"
-msgstr "添加快捷设置按钮"
-
-msgid "IDS_QP_POP_YOU_WILL_NO_LONGER_BE_ABLE_TO_USE_APPLICATIONS_SUCH_AS_INTERNET_NOTI_MSG"
-msgstr "您将无法继续通过移动网络使用互联网和电子邮件等应用程序。是否继续?"
-
-msgid "IDS_QP_BUTTON2_SCREEN_N_MIRRORING"
-msgstr "屏幕\n镜像"
-
-msgid "IDS_COM_BODY_BUTTON_T_TTS"
-msgstr "按钮"
-
-msgid "IDS_QP_BUTTON2_GPS"
-msgstr "GPS"
-
-msgid "IDS_QP_BUTTON_NOTIFICATION"
-msgstr "通知"
-
-msgid "IDS_COM_BUTTON_AGREE"
-msgstr "同意"
-
-msgid "IDS_COM_BUTTON_DISAGREE"
-msgstr "不同意"
-
-msgid "IDS_ST_BODY_GPS_LOCATION_USE_CONTROLLED_BY_APPLICATIONS_MSG"
-msgstr "GPS位置和您的位置数据的使用由使用的应用程序来控制"
-
-msgid "IDS_ST_HEADER_USER_CONSENT"
-msgstr "用户同意"
-
index 4f50dfa..b4a1d98 100755 (executable)
-msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
-msgstr "通知"
+msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
+msgstr "Wi - Fi和行動AP不能在同一時間被啟動。停用行動AP?"
+
+msgid "IDS_TASKMGR_BUTTON_CLEAR_ALL"
+msgstr "全部清除"
+
+msgid "IDS_IDLE_SBODY_TAP_HERE_TO_DISABLE_SAFE_MODE_ABB"
+msgstr "輕觸此處以停用安全模式。"
+
+msgid "IDS_IDLE_POP_UNABLE_TO_LAUNCH_PS"
+msgstr "無法啟動 %s。"
+
+msgid "IDS_IDLE_MBODY_EMERGENCY_CALLS_ONLY"
+msgstr "僅可撥打緊急電話"
+
+msgid "IDS_IDLE_BODY_SEARCHING_ING"
+msgstr "正在搜尋..."
+
+msgid "IDS_IDLE_BODY_NO_SIM"
+msgstr "無 SIM 卡"
+
+msgid "IDS_IDLE_BODY_NO_SERVICE"
+msgstr "無服務"
 
-msgid "IDS_WIFI_BODY_ALLSHARE_CAST"
-msgstr "AllShare Cast"
+msgid "IDS_IDLE_BODY_INVALID_SIM_CARD"
+msgstr "SIM 卡無效"
 
-msgid "IDS_CALL_POP_CALLING_EMERG_ONLY"
+msgid "IDS_IDLE_BODY_EMERGENCY_CALLS_ONLY"
 msgstr "僅限緊急通話"
 
-msgid "IDS_QP_BUTTON_ROTATION"
-msgstr "æ\97\8bè½\89"
+msgid "IDS_QP_OPT_OUTDOORS_ABB"
+msgstr "æ\88¶å¤\96"
 
-msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
+msgid "IDS_QP_MBODY_SAFE_MODE_ENABLED"
+msgstr "已啟用安全模式"
+
+msgid "IDS_QP_HEADER_NOTIFICATIONS_HPD_ABB"
 msgstr "通知 (%d)"
 
-msgid "IDS_QP_BUTTON_VIBRATION"
+msgid "IDS_QP_HEADER_CLEAR_ALL_ABB"
+msgstr "全部清除"
+
+msgid "IDS_QP_BUTTON_NOTIFICATION"
+msgstr "通知"
+
+msgid "IDS_QP_BUTTON_ALWAYS_ASK_ABB"
+msgstr "每次詢問"
+
+msgid "IDS_QP_BUTTON2_WI_FI"
+msgstr "WiFi"
+
+msgid "IDS_QP_BUTTON2_VIBRATE"
 msgstr "震動"
 
-msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
-msgstr "è\81²é\9f³è\88\87é\9c\87å\8b\95"
+msgid "IDS_QP_BUTTON2_U_POWER_NSAVING_ABB"
+msgstr "è\85ç\9c\81é\9b»"
 
-msgid "IDS_QP_TAB4_AUTO_ROTATION"
-msgstr "自動旋轉"
+msgid "IDS_QP_BUTTON2_TETHERING"
+msgstr "網路共享"
+
+msgid "IDS_QP_BUTTON2_SOUND_ABB"
+msgstr "音效"
 
-msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
-msgstr "旋轉鎖定"
+msgid "IDS_QP_BUTTON2_SOUND"
+msgstr "聲音"
 
-msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
-msgstr "大容量儲存裝置模式"
+msgid "IDS_QP_BUTTON2_PRIVATE_MODE"
+msgstr "私密模式"
 
-msgid "IDS_QP_BUTTON_DISABLE"
-msgstr "停用"
+msgid "IDS_QP_BUTTON2_POWER_N_SAVING"
+msgstr "省電\n模式"
 
-msgid "IDS_QP_BUTTON_ENABLE"
-msgstr "啟用"
+msgid "IDS_QP_BUTTON2_MUTE_ABB"
+msgstr "靜音"
 
-msgid "IDS_COM_POP_UNSUPPORTED"
-msgstr "不支援"
+msgid "IDS_QP_BUTTON2_MOBILE_DATA"
+msgstr "行動\n數據"
 
-msgid "IDS_COM_SK_DISMISS"
-msgstr "關閉"
+msgid "IDS_QP_BUTTON2_LOCATION_ABB"
+msgstr "位置"
 
-msgid "IDS_COM_POP_PELASE_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
-msgstr "請插入 SIM 卡以存取網路服務"
+msgid "IDS_QP_BUTTON2_FLIGHT_N_MODE"
+msgstr "飛航\n模式"
 
-msgid "IDS_COM_BODY_DO_NOT_ASK_AGAIN"
-msgstr "不再詢問"
+msgid "IDS_QP_BUTTON2_BLUETOOTH"
+msgstr "藍牙"
 
-msgid "IDS_QP_POP_INSERT_SIM_CARD_AND_RESTART_DEVICE_TO_USE_TETHERING"
-msgstr "插入 SIM 卡並重新啟動裝置以使用網路共享"
+msgid "IDS_QP_BUTTON2_AUTO_ROTATE"
+msgstr "自動旋轉"
 
-msgid "IDS_QP_POP_CONNECTING_VIA_PACKET_DATA_MAY_INCUR_ADDITIONAL_CHARGES_CONTINUE_Q"
-msgstr "透過數據傳輸連線可能會產生額外費用。要繼續嗎?"
+msgid "IDS_QP_BUTTON2_ASSISTIVE_NLIGHT"
+msgstr "輔助\n燈光"
 
-msgid "IDS_QP_BODY_AUTO"
-msgstr "自動"
+msgid "IDS_QP_BODY_PM_ABB"
+msgstr "下午"
 
-msgid "IDS_QP_TAB_POWER_SAVING"
-msgstr "省電"
+msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
+msgstr "通知"
 
-msgid "IDS_QP_TAB_TETHERING"
-msgstr "網路共享"
+msgid "IDS_QP_BODY_AM_ABB"
+msgstr "上午"
 
-msgid "IDS_QP_TAB_MOBILE_DATA"
-msgstr "行動數據"
+msgid "IDS_ST_TPOP_UNABLE_TO_MAKE_VOICE_CALLS_VIDEO_CALLS_AND_SEND_TEXT_MESSAGES_USING_PS"
+msgstr "無法使用 %s 撥打語音通話、視訊通話與傳送文字簡訊。"
 
-msgid "IDS_QP_TAB_DRIVING_MODE"
-msgstr "é§\95é§\9b模å¼\8f"
+msgid "IDS_ST_TPOP_SELECT_SIM_CARD_FOR_OUTGOING_VOICE_CALLS_VIDEO_CALLS_AND_TEXT_MESSAGES"
+msgstr "é\81¸æ\93\87ç\94¨æ\96¼æ\92¥å\87ºèª\9eé\9f³é\80\9a話ã\80\81è¦\96è¨\8aé\80\9a話è\88\87å\82³é\80\81æ\96\87å­\97ç°¡è¨\8aç\9a\84 SIM å\8d¡ã\80\82"
 
-msgid "IDS_COM_POP_UNABLE_TO_CONNECT_TO_MOBILE_NETWORK_WHILE_FLIGHT_MODE_IS_ENABLED_MSG"
-msgstr "å\95\9fç\94¨é£\9bè\88ªæ¨¡å¼\8fæ\99\82ç\84¡æ³\95é\80£æ\8e¥è¡\8cå\8b\95網路ã\80\82è«\8bé\80£æ\8e¥ Wi-Fi ç¶²è·¯æ\88\96å\81\9cç\94¨é£\9bè\88ªæ¨¡å¼\8få\86\8dé\87\8d試"
+msgid "IDS_ST_TPOP_OUTGOING_VOICE_CALLS_VIDEO_CALLS_AND_TEXT_MESSAGES_WILL_BE_MADE_USING_THE_PS_SIM_CARD"
+msgstr "å°\87使ç\94¨ %s SIM å\8d¡æ\92¥å\87ºèª\9eé\9f³é\80\9a話ã\80\81è¦\96è¨\8aé\80\9a話è\88\87å\82³é\80\81æ\96\87å­\97è¨\8aæ\81¯ã\80\82"
 
-msgid "IDS_QP_POP_WI_FI_TETHERING_CONSUMES_MORE_BATTERY_POWER_AND_INCREASES_YOUR_DATA_USAGE_CONTINUE_Q"
-msgstr "Wi-Fi 網路共享會消耗更多電力並增加您的資料用量。繼續嗎?"
+msgid "IDS_ST_SK_OK"
+msgstr "確定"
 
-msgid "IDS_QP_POP_DISABLE_TETHERING_TO_USE_WI_FI"
-msgstr "å\81\9cç\94¨ç¶²è·¯å\85±äº«ä»¥ä½¿ç\94¨ Wi-Fi"
+msgid "IDS_ST_SK_NO"
+msgstr "å\90¦"
 
-msgid "IDS_QP_POP_TO_ENABLE_POWER_SAVING_MODE_ENABLE_AT_LEAST_ONE_RELEVANT_FUNCTION"
-msgstr "若要啟用省電模式,請至少啟用一項相關功能"
+msgid "IDS_ST_POP_UNABLE_TO_INCREASE_BRIGHTNESS_FURTHER_BECAUSE_OF_PHONE_OVERHEATING"
+msgstr "無法增加螢幕亮度,因為手機過熱。"
 
-msgid "IDS_QP_POP_TURN_OFF_WI_FI_TO_USE_TETHERING"
-msgstr "關閉 Wi-Fi 以使用網路共享"
+msgid "IDS_ST_NPBODY_NO_SERVICE"
+msgstr "無服務"
 
-msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
-msgstr "Wi - Fi和行動AP不能在同一時間被啟動。停用行動AP?"
+msgid "IDS_ST_NPBODY_EMERGENCY_CALLS_ONLY_ABB"
+msgstr "僅可撥打緊急通話"
 
-msgid "IDS_ASCAST_HEADER_SCREEN_MIRRORING"
-msgstr "Screen Mirroring"
+msgid "IDS_ST_HEADER_OUTDOOR"
+msgstr "室外"
 
-msgid "IDS_QP_HEADER_REPLACE_QUICK_SETTING_BUTTON"
-msgstr "取代快速設定按鈕"
+msgid "IDS_ST_BUTTON2_WI_FI_NTETHERING"
+msgstr "Wi-Fi\n網路共享"
 
-msgid "IDS_QP_HEADER_ADD_QUICK_SETTING_BUTTON"
-msgstr "新增快速設定按鈕"
+msgid "IDS_ST_BUTTON2_WI_FI_ABB"
+msgstr "Wi-Fi"
 
-msgid "IDS_QP_POP_YOU_WILL_NO_LONGER_BE_ABLE_TO_USE_APPLICATIONS_SUCH_AS_INTERNET_NOTI_MSG"
-msgstr "æ\82¨ç\84¡æ³\95å\86\8dé\80\8fé\81\8eè¡\8cå\8b\95網路使ç\94¨å¦\82網é\9a\9b網路å\92\8cé\9b»å­\90é\83µä»¶ç­\89ç\9a\84æ\87\89ç\94¨ç¨\8bå¼\8fã\80\82ç¹¼çº\8cå\97\8eï¼\9f"
+msgid "IDS_ST_BUTTON2_TORCH_ABB"
+msgstr "æ\89\8bé\9b»ç­\92"
 
-msgid "IDS_QP_BUTTON2_SCREEN_N_MIRRORING"
-msgstr "Screen\nMirroring"
+msgid "IDS_ST_BUTTON2_POWER_NSAVING"
+msgstr "省電"
 
-msgid "IDS_COM_BODY_BUTTON_T_TTS"
-msgstr "按鍵"
+msgid "IDS_ST_BUTTON2_MOBILE_NDATA"
+msgstr "行動數據"
 
-msgid "IDS_QP_BUTTON2_GPS"
+msgid "IDS_ST_BUTTON2_GPS_ABB"
 msgstr "GPS"
 
-msgid "IDS_QP_BUTTON_NOTIFICATION"
-msgstr "通知"
+msgid "IDS_ST_BUTTON2_FLIGHT_NMODE"
+msgstr "飛航模式"
+
+msgid "IDS_ST_BUTTON2_BLUETOOTH_ABB"
+msgstr "藍牙"
+
+msgid "IDS_ST_BUTTON2_AUTO_NROTATE"
+msgstr "自動旋轉"
+
+msgid "IDS_ST_BODY_SIM_2"
+msgstr "SIM 2"
+
+msgid "IDS_ST_BODY_SIM_1"
+msgstr "SIM 1"
+
+msgid "IDS_ST_BODY_SCANNING_FOR_MOBILE_NETWORK_ING_ABB"
+msgstr "正在掃描行動網路..."
+
+msgid "IDS_ST_BODY_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
+msgstr "請插入 SIM 卡以存取網路服務。"
+
+msgid "IDS_ST_BODY_ALWAYS_ASK_ABB"
+msgstr "每次詢問"
+
+msgid "IDS_SCP_BODY_UNABLE_TO_CONNECT_TO_MOBILE_NETWORKS_WHILE_FLIGHT_MODE_IS_ENABLED_CONNECT_TO_A_WI_FI_NETWORK_INSTEAD_OR_DISABLE_FLIGHT_MODE_AND_TRY_AGAIN"
+msgstr "啟用飛航模式時無法連接行動網路。請改為連接至 Wi-Fi 或停用飛航模式並重試。"
 
-msgid "IDS_COM_BUTTON_AGREE"
-msgstr "同意"
+msgid "IDS_COM_BODY_SEARCHING"
+msgstr "正在搜尋"
 
-msgid "IDS_COM_BUTTON_DISAGREE"
-msgstr "不同意"
+msgid "IDS_QP_TPOP_UNABLE_TO_OPEN_PS"
+msgstr "無法開啟 %s。"
 
-msgid "IDS_ST_BODY_GPS_LOCATION_USE_CONTROLLED_BY_APPLICATIONS_MSG"
-msgstr "GPS定位和你的位置資料將被你的用應程式使用"
+msgid "IDS_QP_OPT_OUTDOORS_M_OUTDOOR_MODE_ABB"
+msgstr "戶外"
 
-msgid "IDS_ST_HEADER_USER_CONSENT"
-msgstr "ç\94¨æ\88¶å\90\8cæ\84\8f"
+msgid "IDS_QP_BUTTON2_PRIVATE_NMODE_ABB"
+msgstr "é\9a±ç§\81\n模å¼\8f"
 
index c151cfd..94d883b 100755 (executable)
@@ -1,19 +1,22 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ * Copyright (c) 2009-2015 Samsung Electronics Co., Ltd All Rights Reserved
  *
- * Licensed under the Flora License, Version 1.1 (the "License");
+ * 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 <sys/stat.h>
 #include <fcntl.h>
 #include <unistd.h>
@@ -29,7 +32,8 @@
 #define MAXFILELEN     1048576 /* 32000 */
 #define LOGFILE "/tmp/quickpanel.log"
 
-void debug_printf(char *fmt, ...) {
+void debug_printf(char *fmt, ...)
+{
        va_list ap;
        FILE *fd = 0;
        char buf[LINEMAX] = { 0, };
@@ -86,8 +90,9 @@ void debug_printf(char *fmt, ...) {
                                        execl("/bin/rm", "rm", "-f", LOGFILE, (char *) 0);
                                }
                                /* system("rm -rf "LOGFILE); */
-                       } else
+                       } else {
                                fclose(fd);
+                       }
                }
        }
 }
index 350928b..ff22b00 100755 (executable)
@@ -1,19 +1,21 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ * Copyright (c) 2009-2015 Samsung Electronics Co., Ltd All Rights Reserved
  *
- * Licensed under the Flora License, Version 1.1 (the "License");
+ * 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 __QUICKPANEL_DEBUG_UTIL_H_
 #define __QUICKPANEL_DEBUG_UTIL_H_